Comme promis, voici la deuxième partie de notre tutorial sur le programme Stable Diffusion. Après avoir regardé comment utiliser les fonctions de base dans l'onglet "txt2img", nous allons nous intéresser à "img2img". N'hésitez pas à retourner sur la première partie du tuto si quelque chose n'est pas clair (ou venez sur discord nous demander !).
Concrètement, le premier onglet vous permet de créer des images avec du texte : prompt pour ce que vous voulez voir et negative prompt pour ce que vous ne voulez pas voir (on l'a vu dans la première partie). Le deuxième onglet fait pareil mais prendra comme référence une image de votre choix.
Par exemple, vous pouvez utiliser un croquis (ou un dessin simpliste) pour en faire une belle illustration. Il vous suffit d'indiquer au programme ce que c'est (par exemple une pomme verte) et il se chargera du reste. Voici ce que ça peut donner :
Un autre usage est de faire du "outpainting". Imaginons que vous avez une illustration en portrait et souhaitez la transformer en paysage : c'est possible ! Il faut utiliser un réglage au fond de la page dans le menu script intitulé "poor man's outpainting".
ce qui vous ouvrira un autre menu dans lequel vous pouvez indiquer de combien vous souhaitez augmenter l'image (max 256 pixels à la fois) et dans quelle direction. En général, le programme fonctionne mieux quand on le limite à une seule direction mais vous devriez faire vos propres tests car les résultats varient en fonction de l'image source. Contrôlez bien que "fill" soit sélectionné dans "masked content".
Attention à votre requête : si l'image contient une jeune fille en kimono et que vous souhaitez la représenter dans une pièce typiquement japonaise, il ne faut pas marquer "jeune fille" car sinon il va essayer d'en rajouter une autre dans l'espace à disposition (en l'occurrence de chaque côté ici). Rappelez-vous que vous devez lui indiquer ce qu'il doit mettre comme éléments dans la zone définie, pas dans toute l'image ! Ici, l'image de base (à gauche) a été agrandie de 256 pixels de chaque côté :
Les résultats sont assez aléatoires donc vous devrez beaucoup expérimenter avec différents mots clés et réglages. En l'occurrence, l'image ci-dessus a été générée en deux fois : un agrandissement à gauche et un à droite, séparément. Bien souvent, il faudra effectuer des retouches après avoir terminé l'agrandissement pour corriger un élément où rajouter quelque chose. Ici par exemple, j'aimerais rajouter une fenêtre sur la droite.
Avec la fonction Inpainting, il est possible de rajouter, modifier ou effacer une zone de votre image. On peut par exemple changer la couleur des yeux ou changer l'arrière-plan. Nous allons utiliser le sous-onglet approprié pour ce faire.
Utilisez votre souris pour recovrir la zone à modifier. Vous pouvez modifier la largeur du pinceau avec l'outil en haut à droite de l'image. Là aussi, il vous faudra entrer la requête correspondant à votre choix. Dans ce cet exemple, il faut donc entrer "window" ou similaire pour qu'il dessine une fenêtre dans l'espace que vous aurez selectionné. Voici ce que ça peut donner :
C'est donc un outil puissant mais il est assez difficile d'obtenir ce que l'on désire du premier coup. Il vous faudra certainement plusieurs essais pour obtenir le résultat escompté. Vous pouvez, là aussi, faire les modifications en plusieurs étapes : par exemple corriger une petite partie puis utiliser le résultat comme nouvelle base et corriger une autre partie et ainsi de suite.
Parlons à présent du menu "settings". Comme son nom l'indique, il contient tous les réglages possibles et imaginables pour le programme. Très honnêtement, vous n'avez pas besoin de toucher la majorité d'entre eux pour que le programme fonctionne correctement. Sur la gauche vous verrez plusieurs sous-menu. Dans le premier, "Saving images/grids", défilez jusqu'à trouver "Create a text file next to every image with generation parameters."
On vous conseille d'activer cette option comme ça, vous aurez toujours les réglages que vous avez utilisés pour chaque image générée. Cela peut être utile que vous ne vous souvenez plus et souhaitez en générer une similaire. Une autre solution est d'utiliser l'onglet "PNG info" qui donnera les mêmes informations.
Dans le sous-menu "Stable Diffusion" il y a 2 réglages intéressants. Celui qui est tout au fond de la page indique au système s'il doit utiliser le processeur (intel ou ARM = CPU) ou bien la carte graphique (= GPU) pour générer les nombres aléatoires de la seed. On l'avait mentionné dans la première partie, si on remets les mêmes réglages et le même numéro de seed, le programme regénèrera exactement la même image...... sauf si ce réglage était sur GPU et que vous n'utilisez pas la même carte graphique.
Là où ça va *vraiment* se remarquer, c'est si vous utilisez le programme sur un PC et sur un MAC avec le réglage sur GPU : ça n'aura plus rien à voir ! C'est donc un truc à savoir si on travaille sur deux systèmes différents à la fois. Si le réglage est sur CPU, entre PC il n'y aura aucune différence mais entre un PC et un MAC, il y en aura tout de même quelques unes.
Dans la même page, vous avez la rubrique VAE. Pour simplifier, la gestion des couleurs est faite par un fichier similaire aux models que vous trouvez sur civitai. C'est ainsi qu'en fonction du fichier VAE, une même requête avec les mêmes réglages aura des couleurs différentes suivant le réglage de cette page là au moment de la génération. Certains modèles ont intégrés des VAE directement dans le fichier de base, d'autre préfèrent le laisser à part.
Donc si vos rendus ont un curieux film gris par dessus, c'est que votre model n'a pas de VAE intégré et que vous n'en avez pas sélectionné un dans les réglages.
Les fichiers VAE doivent être placés dans le dossier du même nom qui se trouve dans "models".
Bien sûr, vous pouvez encore aller plus loin en modifiant certains réglages si vous le souhaitez mais pensez à bien noter ce que vous modifier pour pouvoir revenir en arrière si nécessaire.
L'onglet extensions permet d'étendre les fonctionnalités de SD, par exemple pour faire des petites vidéos (ou plutôt des suites d'images sacadées qui donnent l'illusion du mouvement) ou modifier l'interface graphique d'Automatic1111.
L'extension "controlnet" est la plus intéressante car elle permet de compléter votre requête par une position physiquer à conserver. Vous pouvez utiliser à peu près n'importe quelle photo (générée ou non) pour peu que la position du corps et des bras soit visible (et des jambes aussi si vous voulez générer un corps complet). SD va donc générer les images avec cette posture là en plus de respecter votre prompt. Cela permet de générer une série d'image avec la même position, par exemple :
Et oui, SD a souvent des soucis à générer les doigts correctement xD Mais controlnet fonctionnera si vous voulez deux personnages assis / debout donc ça peut être utile. Ici on a uniquement demandé la génération des personnages dans la requête sans autre précision, controlnet a fait le reste.
Il y a bien sûr d'autres extensions disponibles mais leur utilisation demande pas mal de temps pour les maitriser. Car plus on ajoute de variables, plus les résultats seront, eux aussi, variables... On est loin d'une situation où il suffit d'appuyer sur un bouton pour que tout fonctionne tout seul ! Mais c'est toujours mieux que rien pour ceux qui ont besoin d'aide. Faites vos propres tests et poser vos questions à la communauté (par exemple sur reddit)
Enfin, vous avez besoin de savoir ce qu'est un LoRa. Pour faire simple, c'est une manière d'influencer le rendu d'une image sans pour autant devoir toucher au model de base. Une utilisation possible est d'appliquer votre propre style graphique à votre model préféré afin de pouvoir générer un grand nombre d'images sans pour autant devoir entrainer votre propre base de données d'images.
Les LoRa sont plus rapides à entraîner et moins gros que les modèles de base. Ce sont comme des mini-modèles. Ils peuvent aussi imposer une certaine position au modèle (sans devoir utiliser controlnet), vêtir votre personnage d'habits spécifiques (par exemple un vêtement traditionnel chinois) ou générer des objets ou des immeubles. Car oui, la plupart des models sont entraînés sur des personnages, pas forcément sur des objets donc ça peut être pratique pour avoir une machine à café ou un immeuble dans votre image. Vous pouvez trouver tout un tas de LoRa sur civitai.
Il reste à dire que oui, vous pouvez mélanger deux modèles qui vont plaisent particulièrement. L'onglet checkpoint merger permet de fusionner deux modèles. Ainsi, chacun va prendre un peu des caractéristiques de l'autre. Un exemple d'utilisation et si vous avez un modèle de type anime que vous voudriez rendre juste tout petit peu plus réaliste. Vous pouvez donc lui adjointre un modèle de type réaliste pour le modifier. Ou bien, si vous prenez la peine de créer votre propre modèle avec vos propres oeuvres, vous pouvez ensuite le mélanger à un modèle plus générique. Votre style sera cependant dilué donc ça enlève de l'intérêt de faire son propre modèle...
Voilà, avec toutes ces informations, vous devriez pouvoir faire *beaucoup* de choses différentes. En réalité, même avec seulement les informations de notre premier tuto vous pouvez déjà plein de choses mais ici, nous avons poussé l'exercice un petit plus loin.... Sachant qu'il serait possible d'aller encore plus loin ! SD est un outil très puissant mais qu'il convient de maitriser.
Et surtout, faites bien plusieurs essais car la plus petite différence de réglage peut grandement modifier le rendu. Vous devrez donc forcément faire des tatonnements et des tas d'essais avant d'obtenir le résultat idéal.
Par ailleurs, tout évolue rapidement : SD est une chose mais l'interface graphique, Automatic1111, a ses propres mises à jour pour rajouter ou corriger des fonctions. Les différents modèles et LoRa eux-mêmes évoluent séparément eux aussi de même que les extensions. Vous pouvez très bien décider de ne pas faire de mise à jours, le système continuera de fonctionner très bien. Mais si vous voulez les dernières nouveautés, il faudra modifier un peu votre installation. Tout dépend de vos besoins.
On vous souhaite bien du plaisir ! N'hésitez pas à poster vos créations dans notre discord :-)