La déferlante de l’IA a atteint le monde des fractales ! Dans le nouveau JWildfire Swan, il est en effet possible de travailler ses images avec l’IA et d’obtenir autant de variantes que l’on veut grâce à des instructions textuelles ! On peut faire communiquer JWildfire Swan via une API avec un moteur d’IA externe, en l’occurence l’affreux Automatic1111 garni de différents fichiers « safetensors », en l’occurence différentes variantes de Stable Diffusion…
Que l’IA soit !
C’est passionnant d’utiliser une application en cours de développement quand on fait partie de l’équipe de test. C’est comme habiter un logis sans eau, sans électricité, auquel ici et là il manquerait une fenêtre, un escalier… Mais le toit et les murs porteurs sont déjà en place et nous protègent des intempéries. Rien ne marche, ou tout marche, c’est selon et, pendant que le développeur s’échine à coder des millions de lignes, au fil des versions, on s’extasie des nouvelles fonctionnalités qui poussent comme des champignons…
Andreas Maschke, le programmeur de JWildfire a donc choisi d’implémenter dans son logiciel une IA du monde libre, on le comprend, c’est à dire en l’occurence Stable Diffusion. Mais hélas une version obsolète (la 3 ou ses dizaines de clones – on en est à la 3.5). De plus, plutôt que de proposer un moteur moderne (Forge ou mieux Fooocus) il a choisi Automatic 1111, une interface web dont rien que le nom fait frémir… Quand il est mentionné « Automatic » quelque-part, cela veut souvent dire que les ennuis commencent ! Et qu’il existe pire dans le genre, en non automatique ! Cette dernière WebUI est donc une des moins simples à maîtriser mais aussi celle permettant la personnalisation la plus poussée (et encore quelques milliers de réglages !), ce qui est sans doute la raison de ce choix blessant.
L’installation est effectivement un poème avec des dizaines de réglages et de dépendances à télécharger. On se croirait sur Linux ! Et on y est, en fait… Car il existe une version pour Mac, réjouissons-nous mais il ne faut pas espérer une bête appli sur laquelle il suffirait de double cliquer : ce serait trop simple, tout le monde sait le faire ! Non, là on est chez les « grands » et tout passe par le Terminal ! En effet, l’OS des Macs modernes est bâti sur une architecture Unix. Même noyau, même langage de ligne de commande « bash »…
La phase Terminal
Ouvrons donc ce satané Terminal et commençons à entre à la main du code abscons, avec sa merveilleuse syntaxe… La procédure complète à suivre est ici. A vos risques et périls. Pinokio (qui se chargeait de ce sale boulot) semble ne plus exister à l’heure où j’écris ces lignes…
Il faut commencer par installer HomeBrew. Il y en a qui auront déjà sauté par la fenêtre après moult tentatives infructueuses… Ce « brasseur maison » est une espèce d’installeur universel… Qui nous sert donc à installer, vaille que vaille, la suite des flegmons nécessaires. Et il y en a ! Pour le plaisir, voici les lignes de commandes à utiliser. Mais je suis sûr que vous le saviez déjà…
brew install cmake protobuf rust python@3.10 git wget
puis, quand l’installation a pris fin (on ne sait jamais quand – surprise !) : installons le moteur « Automatic 1111 » lui même, en clonant son « dépôt » sur GiHub.
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
Notons que chacun des fichiers à installer pèsent plusieurs Go ou dizaines de Go. Ce qui a deux conséquences : vous serez sans doute en panne d’espace sur votre disque dur (ou mou, s’il fait très chaud) et, deuxième aléa, le téléchargement est long. Très long. Très très… etc. Compter plusieurs heures en haut débit. Pour ceux qui ont l’Internet avec un pédalier, renoncez et allez jouer aux billes. Quant aux autres… Patience et longueur de temps ! C’est d’autant plus frustrant et déroutant que souvent, les instructions qui défilent sur l’écran du Terminal comme dans les films de Matrix s’interrompent et l’on ne sait plus quoi faire ! Pulvériser à la masse l’ordi bloqué ? Ou attendre ; encore ; interminablement. On se sent… Minable.
C’est tout le charme du Terminal et de la « ligne de commande ». Un fois sur deux, les instructions qu’on y entre ne sont pas reprises à l’écran et on ne sait plus si c’est du lard ou du cochon. Et gare aux fautes de frappes ! Mais c’est vrai que dans le monde Linux, on ne FAIT PAS de fautes de frappes… Dans le meilleur des cas, on dispose d’une petite barre de progression qui nous rassure sur le fait que le logiciel travaille et n’est pas gelé pour l’éternité. Dans le cas contraire, quand à bout de nerfs vous frapperez une touche, vous insérerez un simple espace avec une mise à la ligne ! Confronté au problème j’ai ainsi essayé un petit « return » agacé que le terminal a interprété comme un bête saut de ligne, n’en ayant manifestement rien d’autre à foutre. Pour repartir plus tard de plus belle, égrainant sa théorie d’instructions incompréhensibles.
Mais, tout a une fin : c’est cuit ! Si vous êtes bloqués en route, comment dire, référez-vous au manuel rédigé en coréen (la version en finnois n’est pas terminée) dont les premières instructions semblent bien être : démerdez-vous !
Nous avons donc le conteneur, il nous faut maintenant le contenant ! J’ai nommé l’IA elle-même, à savoir Stable Diffusion 3. Qui bien sûr se trouve téléchargeable ailleurs. Chez Hugging Face, cette fois ! Vous vous attendez à un bouton « download », comme d’habitude ? Que nenni ! Et c’est là que tout le vice de cette corporation de geeks se révèle (je les hais) et il me faut vous montrer sur une copie d’écran de quoi il retourne…
Une fois sur la bonne page, il faut choisir une des IA pourvue du suffixe « safetensors » (pourquoi faire simple ?) On ne télécharge pas l’archive entière (comme chez GitHub) mais un document (bon courage au débutant pour choisir !), le minuscule bouton de téléchargement (à droite du doc) menant à une autre liste, etc.
Miracle, le téléchargement démarre. En Http, donc prévoir de fréquents échecs vu que le fichier en question pèse 4,34 Go. Reste à le dezipper et l’installer dans le dossier idoine, c’est à dire à la racine où a été installé Automatic 1111, un vicieux chemin pour lequel cette copie d’écran n’est pas de trop…
Reste à lancer le bazar. Pas de double clic sur une application, même bien cachée : il n’y en a pas ! Ooooh non : pour lancer cette interface Web il faut encore et toujours utiliser le Terminal avec les commandes successives (tout le monde s’en souvient, de tête, n’est-ce pas, trois ans après… Pffff) :
cd stable-diffusion-webui ./webui.sh
Comme s’il n’y en avait qu’une ; de web UI. Misère…
Bref, par la grâce de la programmation Python, l’interface convoitée s’ouvre ! Voici Automatic1111 Web UI (lui même virtualisé par Gradio mais, ça suffit, hein ? Z’allez pas tout compliquer !)
Il faut régler le moteur sur le nouveau « safetensor » installé et relancer l’UI. Encore tout un tas de machins vont s’installer sans que vous n’y compreniez rien, c’est normal. A ce stade, votre IA est installée en local, sur GPU et fonctionne tout à fait librement et sans censure. Vous pouvez tester (des connaissances préalables concernant la génération de Txt-to-Img sont nécessaires : je ne vais pas tout recommencer). Et là, deux options : vous générez bien une image (compter entre 10 mn et 1 h), vous êtes heureux : vous pouvez danser.
Où alors, votre interface reste noire, avec un petit message dépité qui apparaît au bout d’un moment, vous avertissant que votre carte graphique n’est pas assez puissante et que vous avez donc fait tout ça pour rien ! Mais PERSONNE ne possède la carte graphique qu’il faudrait, sauf à travailler en R&D chez Google !!! Précisons que dans le même temps, Stable Diffusion 3.5, Flux et d’autres versions supérieures tournent parfaitement et rapidement et surtout sans tous ces tracas sur DrawThings. Et même sur téléphone. Passons… En effet, le plus souvent, l’image refuse d’être générée avec un petit message abscons documentant une erreur « Nans Exception »… C’est un bug. Car bien entendu les versions fournies ne fonctionnent pas ! A cause d’une version capricieuse de PyTorch et autres épices… Il faut lancer un script pour corriger cela, concocté par un certain Docteur Milanovic… Avec la commande :
sh a1111-setup.sh -f all
En mode Terminal évidemment. Ah ben oui… Bref ! Malgré tous mes efforts, le moteur SD 3, définitivement réfractaire, a fini à la poubelle, tout comme le dernier SD 3.5 (mémoire insuffisante), remplacés par ceux qui ont été testés avec JWilfire à savoir : epiCRealism, Juggernaut-X-Hyper, epiCPhotoGasm, ainsi que le v1-5-pruned-emaonly préinstallé…
Et là, miracle, ces différentes moutures de Stable Diffusion fonctionnent et plutôt rapidement… Voici, par ordre croissant de réalisme et avec les réglages de base, quelques origamis…
- v1-5-pruned-emaonly | Euler
- epiCRealism | Euler
- epiCPhotoGasm | Euler
- Juggernaut-X-Hyper | Euler
Bon, pas de quoi casser trois pattes à un canard. Ce qui est normal vu qu’il s’agit de poissons. Mais, encore une fois, ces modèles paraissent bien dépassés… Reste maintenant à relier le bazar avec JWildfire, ce qui est le but de la manœuvre. Car, encore une fois, pour générer des images IA en local, il y a beaucoup mieux avec DrawThings ! C’est là qu’intervient l’API, un bout de code qui permet de faire communiquer les deux logiciels.
Pomme de rainette et pomme d’API !
Revenons donc à notre « Automatic1111« … Au passage, j’ai craqué, et posé à une autre AI la question qui me turlupinait à propos du nom de baptême stupide de cette application. Voici la réponse : « Le nom « AUTOMATIC1111 » est à l’origine le pseudonyme du développeur qui a créé l’interface graphique web populaire pour Stable Diffusion, appelée communément « Stable Diffusion WebUI » par la communauté. Ce n’est donc pas le nom officiel du logiciel, mais celui de son auteur ». Tout est donc clair…
Bref, Andréas nous précise aussi que pour cette usine à gaz fonctionne, il faut ajouter aussi dans la ligne de commande l’argument –api. Afin d’activer l’API d’Automatic1111 pour qu’elle puisse communiquer en Http avec JWildfire. Si ça manque de sel, voici de quoi trifouiller à l’infini : je vous laisse les instructions en anglais, pour la couleur locale : « optionally change the port of AUTOMATIC1111. It was reported, that under some circumstances the default port (7860) of AUTOMATIC1111 will not make the API to work. In this case you can easily change the port by specifying the port number using the commandline: –port <port> (also in this case you have to add the –api option) ». Amen !
Heu… Chez moi la commande « port » n’est évidement pas reconnue… Patience et longueur de temps… J’ai l’impression de replonger dans le MS Dos de mes douloureux débuts avec le « Dirty Operating System »… Plein le dos ! Alors, la solution (il y a toujours une solution) : charger l’API au lancement d’Automatic1111 tout en changeant le port, ce qui donne dans la ligne de commande la version corrigée suivante :
./webui.sh --api --port 6969
C’est quand même plus intuitif qu’un double clic sur une icône, non ? Mais si ! 🙂 Effectivement, l’interface web UI s’ouvre dans le navigateur à la nouvelle adresse : https://127.0.0.1:6969/ (au lieu de 7860).
Dans JWildfire
Pour que l’API fonctionne, il faut régler les préférences de JWilfire sur le même port que celui d’Automatic1111 (ici 6969, par défaut 7860). Bien évidemment, cela ne fonctionne pas !
Parce qu’il fallait prendre la précaution (dans les préférences de Web UI) de cocher la case « Allow https:// and https:// URLs for input images in API ». Sans oublier d’appliquer ces préférences ET de relancer l’UI avec les deux gros boutons oranges prévus à cet effet… C’était pourtant simple !
On dispose alors enfin de l’interface « ai imgtoimg » ! Reste à choisir le moteur d’IA (ici Juggernaut) et d’appuyer sur « set ».
Ensuite, il suffit de se servir de l’image fractale générée comme base dans cette fenêtre d’IA et de procéder à tous les changements qui vous passent par la tête grâce aux prompts textuels et aux différents réglages.
J’ai pris pour mes premiers essais une fractale ancienne baptisée « Apophysar » qui évoquait une bouteille de parfum. Rien de plus simple que d’accentuer cet effet « bouteille » avec le prompt idoine dans l’IA.
L’avantage du couplage JWildfire / Stable Diffusion est qu’il s’agit d’un implémentation non modale, c’est à dire que la fenêtre d’AI peut rester ouverte au cours de nos explorations de fractales et fonctionner à la demande pour obtenir des variations. Quand ça nous plait, on sauve ! Ou plutôt, les images et les fichiers textes contenant tous les paramètres sont sauvegardées automatiquement dans le dossier « Images » de votre JWildfire.
Bien sûr, on peut éviter tous les désagréments vus plus haut (installation de Stable Diffusion en local) en effectuant un rendu de la fractale avant de réinjecter l’image obtenue dans un de nos moteurs d’IA distants favoris et… simples. Gratuits (Grok 3, GPT 4.o, Gemini Imagen 4…) ou payants (Midjourney 7, Flux 1, Ideogram…). Ou encore en local via Draw Things (Stable Diffusion 3.5, Flux…) Les résultats sont évidemment excellents (et rapides) comme on le voit ci-dessous. Mais la nouvelle fonction intégrée à JWildfire est un plus, pour profiter du meilleur des deux mondes…
- Grok 3
- Gemini 2.0
- GPT 4.o
- Grok 3
- Stable Diffusion 3.5 Large
- Flux Schnell
- Flux 1
- Flux Pro
Pour de bien meilleurs résultats encore (et pratiquement en temps réel) il est sans doute possible de relier JWildfire aux API des gros serveurs sur le Cloud comme Replicate, Hugging Face, FAL… mais je n’ai pas trouvé comment faire. N’oublions pas que Swan est encore en développement. Je ne doute pas qu’Andreas nous offrira bientôt cette fonctionnalité.
Voici pour finir d’autres variations de mes fractales anciennes, à la sauce IA…
- Jellyfish originale
- Avec AI
- Et plus de bleu et de violet……
- « Teknautilus » original.
- On en bave…
Avec les fonctions « random », et maintenant l’AI, on génère désormais des fractales comme on respire, repoussant l’exploration des paréidolies à l’infini. Littéralement. C’est sans fin. Et addictif. Mais comme toujours, il faut savoir séparer le bon grain de l’ivraie. Orienter, faire un choix, discriminer, ce qui est l’apanage de l’artiste ; quand on croit à l’absolu du « beau ». Mais ceci est un autre débat. A vous de jouer !
































0 commentaires