Tutoriels de Pythonia
Guides, IA, tutos et newsletter pour devenir une bête en programmation


Mis à jour le March 7, 2023, 12:10 p.m.
Dans cet article, nous allons voir comment intégrer notre modèle d'IA pour la génération d'images créé avec Stable Diffusion et PyTorch dans la bibliothèque Tkinter pour ajouter de l'interactivité avec un utilsateur.
1- Premier script de stable diffusion
2- Input de l'utilisateur
Si vous n'avez pas customtkinter entrez la ligne de commande suivante pour l'installer ds votre env virtuel:pip install customtkinter==0.3
pip install customtkinter==0.3
# Importer les modules
import tkinter as tk
import customtkinter as ctk
from diffusers import StableDiffusionPipeline
from torch import autocast
import torch
import os
# Initialisation et definition de la taille de la fenetre
app = tk.Tk()
app.geometry("400x240")
# Notre précedent code mis comme une fonction
def create():
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
with autocast("cuda"):
image = pipe(input1).images[0]
image.save(f"{input1}.png")
print(f"Votre image est sauvegardée ici: {os.getcwd()}")
Notre appli prendra une phrase que rentrera l'utilisateur et la recuperera quand on cliquera sur le bouton "Génerer". On reprend notre code précédent et on en fait une fonction. On pourra intégrer cette fonction a un bouton.
# Créons le bouton en question
button = ctk.CTkButton(master=app, text="Générer", command=create)
button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
Vous devriez obtenir le résultat suivant:
Si vous cliquer sur le bouton vous devriez obtenir une nouvelle image:
j'ai obtenu ceci:
Maintenant, nous aimerions pouvoir créer une image à partir de n'importe quelle phrase que l'utilisateur rentrera, il nous faut donc un champ de texte pour commencer.
Le voici:
# input qui acceptera la phrase
prompt = ctk.CTkEntry(height= 40, width=380,
text_color="black",
fg_color='white')
prompt.place(x=10,y=10)
Voyons ce que ça donne:
Super!!!!
Maintenant on veut récupérer ce qui est écrit et le passer dans la fonction. On recupère notre phrase grace à get().
def create():
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
# on recupere la phrase de l'utilisateur ici
phrase_utilisateur=prompt.get()
with autocast("cuda"):
image = pipe(phrase_utilisateur).images[0]
image.save(f"{phrase_utilisateur}.png")
print(f"Votre image est sauvegardée ici: {os.getcwd()}")
Le code complet donne:
import tkinter as tk
import customtkinter as ctk
from diffusers import StableDiffusionPipeline
from torch import autocast
import torch
import os
app = tk.Tk()
app.geometry("400x240")
app.title('De Texte à Image')
# input qui acceptera la phrase de l'utilisateur
prompt = ctk.CTkEntry(height= 40, width=380,
text_color="black",
fg_color='white')
prompt.place(x=10,y=10)
def create():
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
# on recupere la phrase de l'utilisateur ici
phrase_utilisateur=prompt.get()
with autocast("cuda"):
image = pipe(phrase_utilisateur).images[0]
image.save(f"{phrase_utilisateur}.png")
print(f"Votre image est sauvegardée ici: {os.getcwd()}")
# Bouton pour la génération de l'image
button = ctk.CTkButton(master=app, text="Générer", command=create)
button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
# loop pour lancer l'application
app.mainloop()
Et voilà, nous arrivons à la fin de ce tutoriel captivant ! J'espère que vous avez trouvé ces informations utiles et qu'elles vous ont aidé à approfondir vos connaissances sur stable diffusion!

Aucun commentaire pour ce tutoriel.
Soyez le premier à réagir !