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


Mis à jour le March 7, 2023, 12:08 p.m.
Bienvenue à la partie 2 de notre guide ultime de stable diffusion! Dans cette partie, nous allons nous concentrer sur la création de notre propre script pour utiliser les outils de Hugging Face et ainsi utiliser ce modèle d'IA sur nos propres ressources. Si vous avez suivi la première partie de ce guide, vous avez maintenant uneinstallation stable de Hugging Face et êtes prêt à passer à l'étape suivante. Si ce n'est pas le cas, je vous recommande de consulter la partie 1 pour une installation correcte. Prêt à vous amuser en mettant les mains dans le code ? Alors allons-y !
1- Premier script de stable diffusion
2- Tester les prompts en français
Assurez vous d'être dans le bon répertoire. Si vous avez suivi mon tutoriel précedent faites:
cd ~
On a installé tout ce qui était nécessaire, verifions que cela fonctionne, copiez coller le code suivant dans votre
from torch import autocast
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4")
pipe = pipe.to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt, guidance_scale=7.5).images[0]
image.save("astronaut_rides_horse.png")
Brève explication du code:
1- On importe les librairies nécéssaires.
2- On crée une instance de la classe StableDiffusionPipeline en utilisant un modèle pré-entraîné stocké dans le dossier "./stable-diffusion-v1-4". Cette instance de pipeline sera utilisée pour effectuer la diffusion stable sur l'image.
3- pipe = pipe.to("cuda") : déplace le pipeline sur le GPU pour améliorer les performances de calculs.
4- prompt = "a photo of an astronaut riding a horse on mars" : définit la variable prompt, c'est le texte sur lequel va se baser l'algorithme pour créer une image
5-with autocast("cuda"): : active la fonctionnalité autocast de PyTorch pour le traitement sur le GPU.
6-image = pipe(prompt, guidance_scale=7.5).images[0] : applique la diffusion sur le prompt avec une échelle de guidage de 7,5 pour obtenir une image traitée. Nous verrons l'explications des différents paramètres un peu plus tard.
7- image.save("astronaut_rides_horse.png") : enregistre l'image traitée sous le nom de fichier "astronaut_rides_horse.png".
Attention à cette erreur fréquente:
Comment régler cette erreur bien connue de out of memory de cuda? Elle signifie que vous êtes limité par la mémoire du GPU, mais j'ai une solution pour vous: vous pouvez envisager d'utiliser le modèle en fp16 (on est en fp32). Le code suivant devrait permettre d'utiliser moins de 4 Go de VRAM (qui est la ram de votre GPU).
from torch import autocast
from diffusers import StableDiffusionPipeline
import torch # nouvelle ligne
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4",
revision="fp16", # nouvelle ligne
torch_dtype=torch.float16,) # nouvelle ligne
pipe = pipe.to("cuda")
pipe.enable_attention_slicing() # nouvelle ligne
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse_fp16.png")
Super ça fonctionne!!!!
Est-ce que ça fonctionne avec le français?
from diffusers import StableDiffusionPipeline
from torch import autocast
import torch # nouvelle ligne
pipe = StableDiffusionPipeline.from_pretrained("./stable-diffusion-v1-4",
revision="fp16", # nouvelle ligne
torch_dtype=torch.float16,) # nouvelle ligne
pipe = pipe.to("cuda")
pipe.enable_attention_slicing() # nouvelle ligne
prompt = "un extraterrestre arrivant sur terre"
with autocast("cuda"):
image = pipe(prompt).images[0]
image.save("robot_lune.png")
Il comprend le français mais ça manque encore un brin de talent. Pas mal du tout pour une calculatrice cela dit.
J'espère que cet article sur les premières images générées grâce à Stable Diffusion et PyTorch vous a permis de mieux comprendre comment utiliser ces technologies pour la création d'images. Si vous avez des questions ou des commentaires, n'hésitez pas à me contacter. Et si vous souhaitez en savoir plus sur l'utilisation de Stable Diffusion et PyTorch pour la création d'images, restez à l'écoute pour la partie 3 de cette série où nous verrons comment intégrer ce code dans la bibliothèque graphique Tkinter pour avoir une GUI à disposition. Merci de nous avoir lu et à bientôt !

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