Vous avez très certainement vu passer des articles et images sur la génération d'illustrations par IA (ou AI en anglais). Ce n'est, en l'occurrence pas de l'Intelligence Artificielle mais bien un calcul algorithmique dans une base de données mais l'important, c'est que tout à chacun peut à présent générer des images à la fois de très haute qualité ET réalistes sans trop de problème.
On va vous parler ici de Stable Diffusion (SD) qui a le gros avantage de s'installer sur votre ordinateur au lieu que vous deviez passer par un site web ou un serveur discord séparé. L'avantage en question est que, du coup, il n'est pas censuré ! Dans les solutions externes, vous êtes limités à plusieurs niveaux : censure sur le contenu, choix des réglages, choix de la base de données, quantité de rendus,....
Tous ces problèmes sautent en cas de l'utilisation d'un script en local. Et cerise sur le gâteau : c'est totalement gratuit ! Les solutions externes sont fréquemment payantes et limitent, du surcroit, le nombre de générations que vous pouvez faire par mois. Quand on sait qu'il faut généralement de nombreux essais pour parvenir au résultat désiré, c'est gênant....
Avant de commencer, une précision importante :
NON, les IA ne vont pas remplacer les artistes et ce, pour plusieurs raisons :
- les solutions de génération d'images par mots-clés ont de grosses difficultés à maintenir une continuité (ou cohérence) entre les images d'un même set, en particulier dans le cas de personnage original. Il y aura toujours des variations qui renderont une utilisation commerciale délicate
- certaines parties des images doivent, la plupart du temps, être retouchées afin d'être montrables. On pense par exemple aux mains qui sont souvent déformées.
- c'est simple de demander une femme en maillot de bain à la place, c'est bien plus compliqué de demander une pose particulière dans la mer mais pas trop loin du bord avec un ballon dans les mains et avec un orage qui s'approche par le nord pendant qu'un surfeur arrive droit sur elle ...
- il est quasi impossible de réaliser des cross-overs sur une même image (par exemple Jibril et Albedo ensemble)
- tout le monde n'aime pas le dessin numérique
Les dessinateurs humains seront toujours nécessaires et c'est très bien :-) . Il s'agit ici d'un outil qui permet d'épauler un artiste et de d'aider les personnes ne sachant pas dessiner à visualier ce qu'elles veulent. Il sera, par exemple, plus facile pour un artiste de savoir ce que souhaite le client si celui-ci peut lui fournir un apperçu visuel au lieu de vagues consignes. Un outil peut toujours être utilisé de plusieurs manières...
Ceci étant dit, voici ce que nous proposons. SD est la solution la plus populaire. Il est certes un peu compliqué à installer et à configurer à la base mais on va vous expliquer. Il a surtout l'avantage d'avoir une grande communauté qui contribue sans arrêt avec des nouveaux modèles, des plugins, des astuces, .... Il est possible de l'installer sur Windows, Mac (pas les modèles Intel) ou Linux (je n'ai pas testé perso mais il parait que ça marche). Vous aurez besoin de 8GB de RAM au minimum (16GB recommandé) et d'une carte graphique dédiée (=ne fonctionnera pas sur un petit ordi portable à 500.-- ! ).
Il faut aussi avoir de la place libre sur votre disque dur : environ 20GB !
![sd](https://www.kissui.moe/j/images/sd.png)
Pour commencer, il faut savoir que SD en lui-même n'a pas d'interface graphique mais pas de panique, il en existe une très bien appelée AUTOMATIC1111 qui vous permettra de l'utiliser facilement (une fois que vous aurez compris les différents boutons !).
Autre chose bon à savoir : SD est open source. Cela signifie qu'il est libre de droits et que tout le monde peut non seulement l'utiliser mais l'améliorer aussi selon ses besoins. Le code source (la base, ce qui permet de le faire fonctionner) est public et donc, du coup, gratuit.
A présent, nous devons parler des modèles : il s'agit de gros fichiers (de 4 à 15GB !) qui contiennent pleins d'images de références en fonction du thème du modèle. Cela peut être un personnage en particulier, un bâtiment, un style graphique ou autre. En général, on distingue les modèles réalistes des modèles "anime". Les premier ont pour vocation de produire des images prochent de vraies photographies alors que les seconds préfèrent le style manga/animés.
Ces modèles font office de base de données dans lesquels SD va puiser des infos pour remplir vos requêtes. Par exemple, si vous demandez une jeune fille en train de dessiner à un bureau, il va chercher des parties équivalentes dans les photos de référence et assembler tout ça en une seule image cohérente (du moins, la plupart du temps....). Vous pouvez trouver un large choix de modèles sur le site https://civitai.com/ (attention, ce site contient certaines images érotiques mais elles sont floutées par défaut...).
Installation pour Windows :
- Installer GIT. Il faut télécharger le programme et lancer l'installeur. Vous pouvez les options par défaut (appuyez sur NEXT).
![git](https://www.kissui.moe/j/images/git.png)
- Installer Python: prenez la bonne version ! Vous cherchez probablement la version 64bits si vous avez un ordinateur récent. Il faut par ailleurs prendre la 3.10.10 car AUTOMATIC1111 n'est pas encore compatible avec les plus récentes. Là aussi, il suffit de lancer l'installeur et de passer les différentes étapes avec les options par défaut. Faites juste attention que l'option "Add python.exe to PATH" soit cochée.
![python](https://www.kissui.moe/j/images/python.png)
- créer un dossier vide à l'endroit ou vous voulez installer le programme et ses dépendances.
ça se complique un brin ensuite !
- ouvrez le terminal (aussi appellé "invite de commandes") et rendez-vous dans le dossier créé précédemment en utilisant la commande "cd". Vous pouvez taper "cd " (notez l'espace après cd) et tirez le dossier concerné dans la fenête noire du terminal. Appuyez sur entrée.
- une fois que vous êtes dans le bon dossier (vous pouvez le voir en lisant ce qui est marqué au début de la ligne où le pointeur clignote), tapez cette commande "git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git" et appuyez sur entrée. Le programme va s'installer dans le dossier choisi. Patientez jusqu'à ce que plus rien ne bouge dans la fenêtre.
- Une fois l'opération terminée, vous trouverez un dossier nommé "stable-diffusion-webui" dans votre dossier cible.
- copiez le modèle téléchargé précédemment sur civitai dans le dossier "models/Stable-diffusion" qui est dans "stable-diffusion-webui".
- revenez dans le dossier "stable-diffusion-webui" et double-cliquez sur le fichier intitulé "webui-user.bat" --> cela va ouvrir une fenêtre de terminal (noire). Ne la fermez pas ! Elle doit rester ouverte pour toute la durée d'utilisation du programme.
- la fin de l'installation va se dérouler automatiquement et prendra quelques minutes. Vous allez voir défiler des lignes de texte. Vous devrez lancer à le fichier bat à chaque utilisation du programme mais c'est seulement la première fois qu'il installe les dépendances nécessaires donc les fois suivantes, il se chargera plus rapidement.
- Une fois terminé (vous le saurez car il ne fera plus rien pendant plusieurs minutes), le programme va vous dire que vous pouvez utiliser l'interface graphique à votre adresse locale. En générale, c'est "http://127.0.0.1:7860" mais ça peut être différent si vous avez une configuration réseau particulière.
- entrez l'adresse locale dans votre navigateur préféré et vous êtes prêts à lancer votre première requête !
Note : le système a besoin de Python, s'il n'est pas installé correctement ou si ce n'est pas la bonne version, ça ne fonctionnera pas ! Vous pouvez contrôler votre version en tapant "python --version" dans le terminal.
Installation pour Mac
- ouvrez le terminal (applications-->utilitaires-->Terminal)![terminal app](https://www.kissui.moe/j/images/terminal-app.png)
![terminal app](https://www.kissui.moe/j/images/terminal-app.png)
- installez homebrew en tapant ça dans le terminal : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)". Vous allez certainement voir une clé qui vous demande votre mot de passe administrateur (si vous ne savez pas ce que c'est, vous ne devriez pas aller plus loin....). Appuyez ensuite sur entrée et homebrew va s'installer. C'est un outil qui permet d'installer toute sortes de scripts sur son ordinateur. Si vous n'êtes pas sûr de l'avoir installé, tapez "brew -v".
- installez python en tapant "brew install cmake protobuf rust git wget" toujours dans le terminal. Il va travailler un moment, laissez le faire. Il y a des versions plus récentes de python mais AUTOMATIC1111 ne les acceptent pas encore.
- créer un dossier du nom de votre choix et tapez "cd " (notez l'espace après cd) puis glissez le dossier dans la fenêtre du terminal pour y rendre
- installez SD en tapant "git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui" et appuyez sur entrée. Le programme va s'installer dans le dossier choisi. Patientez jusqu'à ce que plus rien ne bouge dans la fenêtre.
![terminal](https://www.kissui.moe/j/images/terminal.png)
- copiez le modèle téléchargé précédemment sur civitai dans le dossier "models/Stable-diffusion" qui est dans "stable-diffusion-webui".
A présent, vous pouvez démarrer le programme mais contrairement à la version windows, vous ne pouvez pas juste double cliquer sur un fichier, vous devez aller dans le terminal.
- tapez "cd " et glissez le dossier stable-diffusion-webui dans la fenêtre (il s'est installé dans le dossier que vous avez choisir juste avant)
- tapez "./webui.sh" et appuyez sur entrée.
- la fin de l'installation va se dérouler automatiquement et prendra quelques minutes. Vous allez voir défiler des lignes de texte. Vous devrez lancer à le fichier sh à chaque utilisation du programme (via le terminal, pas directement) mais c'est seulement la première fois qu'il installe les dépendances nécessaires donc les fois suivantes, il se chargera plus rapidement.
- Une fois terminé (=plus rien ne bouge à l'écran pendant un moment), le programme va vous dire que vous pouvez utiliser l'interface graphique à votre adresse locale. En générale, c'est "http://127.0.0.1:7860" mais ça peut être différent si vous avez une configuration réseau particulière.
- entrez l'adresse locale dans votre navigateur préféré et vous êtes prêts à lancer votre première requête !
Si vous voyez cette erreur dans la fenêtre terminal : error: xcrun: error: invalid active developer path tapez "xcode-select --install" pour installer les lignes de commande Xcode.
Note : SD étant optimisé pour des processeurs Intel (qu'on trouve dans les PC), il sera potentiellement moins performant sur les processeurs M1/M2 d'Apple bien que ces derniers soient plus puissants de base.
Utilisation du programme
Cette fois c'est installé mais vous n'avez pas encore fini ! Il reste quelques réglages à faire. Heureusement, cela ne prend pas longtemps mais encore faut-il savoir à quoi sert tel ou tel bouton.... Une fois le programme lancé, vous verrez ceci dans votre navigateur web (si vous avez été à la bonne adresse) :
![sd1](https://www.kissui.moe/j/images/sd1.png)
Prompt désigne la requête que vous voulez effectuer... en anglais! Notez ce que vous voulez voir, par exemple le personnage (en le décrivant), sa position, le décor, .... Chaque terme (ou ensemble de terme) doit être séparé par une virgule. Négative prompt c'est la même chose mais pour ce que ne voulez PAS voir dans l'image. La partie délicate est donc de trouvez les bons mots et de les mettre au bon endroit (comme en amour en fait 😂 ). Des paranthèses ( ) autour d'un terme indique au programme qu'il doit y prêter d'avantage d'attention afin de les faire plus ressortir dans l'image de résultat (ou moins !).
Là où c'est marqué DDIM c'est le moteur de rendu. Personnellement, j'utilise toujours celui-ci car je trouve qu'il donne de meilleurs résultats mais c'est vraiment propre à chacun.
Sampling steps c'est le nombre de passages sur l'image par le programme. En fait, il construit les résultats en "empilant" des couches les unes sur les autres et en les modifiants au fur et à mesure. Plus il y a de passages, plus cela prendra long à générer et plus le résultat sera différent. Notez que "différent" ne veut pas dire "mieux".... 24 est un bon chiffre pour commencer, quitte à refaire la même génération à plus haut passage une fois que vous aurez identifié les bons mots clés.
Vous pouvez également modifier la taille de sortie de l'image, De base, il est en 512:512 mais je préfère personnellement le format 16:9 portrait afin de pouvoir plus facilement utiliser les images ailleurs ultérieurement. Plus le programme aura de place (de pixels), plus il essayera de bourrer des trucs à l'intérieur de l'image et donc plus ça prendra de temps (et plus ce sera potentiellement chaotique).
Par ailleurs, générer d'office de larges images consommera plus de RAM et à un moment donné, il refusera purement et simplement de fonctionner si vous mettez ce réglage trop haut. Il est préférable de générer en petite résolution et d'utiliser ensuite le menu extra pour upsacler (on en parle juste après).
Batch vous permet de générer plusieurs images à la fois avec les mêmes réglages. Il faut savoir que pour une même requête (et mêmes réglages), deux générations seront potentiellement très différentes l'une de l'autre car le système fonctionne à base de "seed". C'est un nombre aléatoire (sauf si on le fixe à l'avance) qui fait varier les résultats possibles.
En d'autres termes, si vous laissez le champ seed sur -1 (qui signifie automatique), chaque image sera différente de la précédente. Par contre, si vous indiquez celui d'une autre image, vous aurez toujours la même chose, à supposer bien sûr que vous gardiez exactement les mêmes requêtes et réglages. C'est ce système qui permet de faire de léger changements (par exemple exclure un élément indésirable de l'image) d'une image qu'on apprécie. Cela assure aussi une certaine cohérence des résultats d'une requête à l'autre mais il reste très compliqué à faire des personnages identique dans deux poses différentes.
![sd3](https://www.kissui.moe/j/images/sd3.png)
Le bouton vert à droite sert à récupérer automatiquement la seed de la précédente image.
Le gros bouton Generate sert, vous l'aurez deviné, à générer une image avec les réglages décidés. Les boutons juste en dessous ne sont pas directement utiles. Vous en utiliserez un lors de l'ajout de plugins, appelés LORA, Lycoris ou autre mais ce sera l'objet d'un prochain article. Enfin, le gros en dessous contiendra le résultat obtenu sur lequel vous pourrez cliquez pour l'agrandir.
A titre d'exemple, voici ce que donne la requête suivante :
(desk), inside, fan, amateur, shed, ((pen)), (paper), (computer), brush,1girl, (((drawing))), (sketch), smile, red_hairs, purple_eyes,(((sitting))),chair,
![00002 62569468](https://www.kissui.moe/j/images/00002-62569468.png)
A noter que pour obtenir des meilleurs résultats, on ajoute en général ces mots en début de requête :
(masterpiece), (((looking down))) (best quality),(highres), (extremely detailed artwork),
sinon, le programme a étrangement tendance à bâcler le boulot 😅 Pour chaque sortie, il génère un fichier PNG avec la seed utilisée. Vous les trouverez dans le dossier "output" du dossier de base, réparti dans des sous-dossier par date.
Dans l'exemple ci-dessus, la requête n'était pas très détaillée : juste une fille qui dessine dans une pièce. Les seules caractéristiques physiques qui ont été indiquées sont la couleur des cheveux et des yeux. Le programme a donc décidé de lui-même quelle apparence lui donner et comment insérer ça dans un milieu cohérent. C'est de ce genre de choix qui vient le terme "intelligence artificielle" car on n'a jamais dit au programme qu'on voulait une jeune femme avec un ruban bleu autour du cou et une peinture de lilas en fond.
Vous noterez aussi que, bien que "computer" ait été indiqué, il n'y a pas d'ordinateur sur cette image. C'est parce que le programme ne va pas toujours respecté à la lettre votre requête; il l'interprète ! Cela va donc l'amener à ignorer certaines parties de la requête. Par ailleurs, si vous entrez des informations contradictoires (par exemple sous l'eau *et* dans l'espace), le résultat pourrait devenir incohérent.... en fait il peut même le devenir avec une requête tout à fait normale mais dans ces cas là, il suffit de relancer la génération avec une autre seed et ça devrait aller. Au pire, changez un peu vos mots clé.
Par ailleurs, il faut savoir que si on donnait exactement la même requêtes, les mêmes paramètres et la même seed mais que l'on changeait de modèle (par exemple un modèle photo-réaliste alors qu'ici c'est un modèle de type anime qui a été utilisé), le résultat serait là aussi totalement différent car il puise dans la base de données sélectionnée pour faire correspondre les mots fournis avec les bouts d'images. Si la base est différente, le résultat le sera aussi.
Voilà pour les fonctions de bases du txt2img, il y à encore les questions des plugins à aborder mais cet article est déjà suffisamment long comme ça 😅.
Dans le menu img2img vous trouverez sensiblement les mêmes réglages mais il y a en plus les fonctions inpaint et outpaint dont on vous parlera dans un autre article. Le menu PNGinfo récupère les règlages d'une photo (pour autant qu'elle n'est pas été modifiée par un autre programme entretemps). Vous pouvez essayer avec l'image ci-dessus.
Checkpoint Merger vous permet de fusionner deux modèles afin de mélanger les caractéristiques des deux et train sert si vous voulez absolument créer votre propre modèle (ce dont je doute). Dans un premier temps,il n'est pas nécessaire de toucher les réglages (settings) ou les extensions mais nous en parlerons dans le prochain article.
Avant de terminer, on aimerait vous parler du menu Extras. Celui vous permet d'agrandir n'importe quelle image (y compris les photos réelles ! ) sans AUCUNE perte de qualité ! C'est assez incroyable. Alors oui, sur une photo cela changera légèrement l'aspect car il va la redessiner entièrement mais sur une image générée, on ne voit pas de différence !
![sd2](https://www.kissui.moe/j/images/sd2.png)
Ainsi, on pourra augmenter par 4x (ou + !) une image générée en 512 pixesl qu'on aimerait utiliser comme affiche ou fond d'écran. Plusieurs méthode d'agrandissement vous sont proposées, à vous de voir laquelle est la mieux à votre avis. Vous pouvez aussi en combiner deux (comme c'est le cas sur l'image).
SD proposer vraiment UN TAS de possibilités et il faut du temps pour bien comprendre l'impact de tel ou tel réglage. Nous vous recommandons de faire des essais et de voir le résultat. Vous saurez ensuite quels sont les meilleurs pour votre propre utilisation.
C'est un programme très puissant qui peut vous ouvrir des portes mais attention : cela ne remplace par pour autant un(e) dessinateur professionnel ! Ils seront toujours nécessaires, ne serait-ce que pour leur plus grande flexiblité de composition et la qualité de leur travail. SD n'est qu'un complément.
Ce tutoriel compte déjà plus de 3'000 mots donc on va s'arrêter là pour l'instant. Si vous être parvenu jusqu'ici : BRAVO ! Vous pouvez maintenant librement générer vos rêves les plus fous ! Faites juste attention à éviter la surchauffe de votre ordinateur ^^
On reparlera de fonctions plus avancées dans un autre article.
EDIT : cliquez ici pour la deuxième partie !
A la prochaine !
Sources :
google/reddit
Essai/erreurs persos xD