Aller au contenu
Interview de Pierre Asahi Raveneau ce soir sur Twitch ! Interview de Pierre Asahi Raveneau ce soir sur Twitch !

J’ai codé une IA ! ( Retour sur l'IA encreuse )


Recommended Posts

Les tests

Maintenant faisons une série de tests avec les principaux modèles de contrôle.
Je vous montrerai une autre fois comment installer tout ça. 

On va séparer ça en 2 parties, personnage et décor, parce que certains modèles de contrôle sont plus adaptés à l’un ou à l’autre

Les personnages

Commençons par les personnages. 
Pour nos tests on va se choisir un modèle de diffusion qui va nous permettre de générer un personnage bien connu : ce bon vieux Dark Vador ! 
C’est l’occasion de vous présenter une autre plateforme de partage de modèles : CivitAI. https://civitai.com/

CivitAI, qu’est-ce que c’est ? Tout comme Hugging Face, il s’agit d’une plateforme d’hébergement et de téléchargement de modèles d’IA que les membres du site upload bénévolement. Ce sont essentiellement des versions customisées de Stable Diffusion. On peut y trouver des modèles généralistes aux modèles ultra spécialisés improbables en passant par des modèles conçus pour un ou des styles particuliers.

Quelques exemples : 

Des chiottes pour garçons dans les universités japonaises… Si si ! Ça existe ! Ne me demandez pas ce que le concepteur de ce modèle a prévu de faire avec, j’ai pas envie de savoir. x)
https://civitai.com/models/9592/boys-restroom-in-a-japanese-high-school

Un modèle pour transformer Poutine en clown (prout à la censure de Dall-E). 

https://civitai.com/models/568/putin-clown

Et des TONNES de modèles de waifu !

image.jpeg.371dbdf3fc1e69079cb0b4682a204c70.jpeg

On peut dire qu’il y a une communauté qui a trouvé satisfaction dans l'émergence des IA. Ça doit être les mêmes qui uploadent des modèles 3D chez DAZ… *tousse*

En tout cas, les auteurs de visual novels amateurs doivent être HEU-REUX ! x) 

Ceci étant dit, en prenant le temps de fouiner un peu, on peut trouver des modèles graphiquement intéressants. 
En voici quelques-uns que j’ai testés.

https://civitai.com/models/4384/dreamshaper (Digital painting)
https://civitai.com/models/1462/pulp-art-diffusion (Peinture rétro type couverture de magasines pulp)
https://civitai.com/models/1122/rachel-walker-style-watercolor (Aquarelle)
https://civitai.com/models/4998/vivid-watercolors (Aquarelle et couleurs flashy)
https://civitai.com/models/9928/alloldrpgarts11990s (Un des modèles de noir et blanc que j’ai trouvés)

Revenons à notre test. Dans le cas présent, j’ai utilisé un modèle très spécialisé. Il sert à générer des Dark Vador : https://civitai.com/models/13780/dark-lord-vador

L’image d’entrée qui servira à contraindre la pose de Dark Vador sera mon habituelle photo de mon body kun.

image.jpeg.09ccfb5650724d1895ed543b44c36b8d.jpeg

Canny

Le filtre de Canny (https://fr.wikipedia.org/wiki/Filtre_de_Canny) est un filtre de traitement d’image classique (pas de machine learning derrière) et il permet de détecter les contours et les arêtes dans une image.
En filtrant ma photo avec cet algorithme, ça donne le lineart tout crénelé ci-dessous à gauche.

image.jpeg.939085c3917410bef57825af0c47f1fb.jpegimage.jpeg.fbfd8671943c9d18fd27c4723af312e9.jpeg

Ci-dessus à droite, vous pouvez voir le résultat après avoir passé le lineart dans Stable Diffusion combiné au modèle ControlNet de type Canny.
Le point positif, c’est que le lineart est assez scrupuleusement respecté.
Le point négatif, c’est que son respect du lineart est aussi son point faible. x)
On a bien la pose voulue, mais la cape est absente puisqu’elle n’est pas présente dans le lineart et Vador ressemble plus à une figurine qu’autre chose puisque Stable Diffusion a essayé de reproduire les articulations du body-kun. Le sabre-laser reproduit trop exactement le katana et le casque semble essayer de se loger dans la silhouette de la tête. 

HED (Holistically-Nested Edge Detection)

Le filtre HED fait grosso-modo la même chose que le filtre Canny (détecter les contours et les arêtes d’une image) à la différence qu’il est basé sur du deep learning (comme les filtres neuronaux d’Adobe) et qu’il fournit une hiérarchisation des détails. Les objets ont des contours épais, les détails ont des contours plus fins.
En passant ma photo dans ce filtre, ça me donne l’espèce de croquis ci-dessous à gauche.

image.jpeg.b6ac76b8acc0fe6736b07df1b986b933.jpegimage.jpeg.065c3a3a75f8cb7386219fea4b37e801.jpeg

Ci-dessus à droite, vous pouvez voir le résultat après avoir passé le lineart dans Stable Diffusion combiné au modèle ControlNet de type HED.
Bon, globalement, j’en tire les mêmes conclusions que pour Canny. En fait, d’après mes bancs de tests, selon le photo d’entrée et le sujet qu’on veut générer, l’un ou l’autre fonctionnera mieux. Il faut tester les 2. 

Alors ça, c’était la première fois que je testais cet algo, mais en fouinant dans mes vieux TP d’école d’ingé sur le traitement d’image et en refaisant une batterie de tests, j’ai trouvé que le croquis d’entrée on pouvait l’obtenir en bidouillant un vieux filtre de Sobel (https://fr.wikipedia.org/wiki/Filtre_de_Sobel), donc pas de machine learning. C’est plus rapide, plus économe en ressources, plus propre et injecté dans Stable Diffusion ça fonctionne tout aussi bien !

image.jpeg.7ccccb9e6372ff4b92dd734e88621082.jpegimage.jpeg.3a881047e6e200960a64011af689ecb0.jpeg

Depth

Cet algorithme là est basé sur filtre neuronal qui fait une estimation de la profondeur de votre photo d’entrée. C’est un peu comme la passe Mist de Blender, sauf que là où elle est exacte et paramétrable dans Blender, avec ce filtre neuronal, c’est au p’tit bonheur la chance.
Sur ma photo, ça donne l’image ci-dessous à gauche.
Notez que comme le filtre tente d’évaluer la profondeur de l’environnement, le personnage apparaît assez plat et qu’il y a donc une perte d’informations.

image.jpeg.d6f99719bf5a2c54c6e53c4193583586.jpegimage.jpeg.e495a5b0a3a3d13e3f30dda6143f9a15.jpeg

Une fois que l’image de profondeur a été injectée dans Stable Diffusion, ça donne l’image ci-dessus à droite.
On a encore des défauts similaires au cas Canny et HED parce que l’IA tente de suivre la silhouette. Mais comme le personnage de l’image de profondeur est plat, on perd tous les détails des doigts et les informations de raccourcis notamment sur son avant bras droit, du coup, sur le résultat final, cette partie est complètement pétée. 

Normal

Cet algorithme est aussi basé sur le filtre neuronal qui fait une estimation de la profondeur de la photo d’entrée, sauf qu’on ajoute un second filtre derrière pour en tirer une normal map. Cette étape, c’est du traitement d’image classique sans machine learning. A partir du moment où on dispose d’une height map ou d’une depth map, la normal map se déduit en calculant le gradient sur l’axe x puis sur l’axe y. 

Comme la normal map est calculée sur la base de la map de profondeur précédente, elle souffre des mêmes manques d’informations.

image.jpeg.a190bb2200eb4e22b97b4466bc10e20b.jpegimage.jpeg.88cd75133903c95661138d07708cdde0.jpeg

Heu…

Mais kesskilafé ?

image.jpeg.e9de0fdb10572066af12b4dd27770960.jpegimage.jpeg.1146c983b633934b505396571570c299.jpeg

image.jpeg.560a7a56af50fd990aa15aadaa955bb8.jpegimage.jpeg.d8aa3f4ec7278958079ad7f88813d454.jpeg

image.jpeg.501a01fd908a212864297f4f4e26a590.jpeg

Je crois que mon ordi est en train de me dire “Maman ! J’ai pas compris !”
Bon, on va laisser tomber l’algo basé sur les normal maps. 

Openpose

Alors celui-là, il est très populaire, il suscite beaucoup de fantasmes quant à sa puissance, mais en vérité… Si vous aimez le body horror, c’est un très bon jouet !
Pour moi il est à réserver à ceux qui ne savent pas dessiner du tout. x) 
Cet algo repose sur un autre filtre neuronal, Open Pose (https://github.com/CMU-Perceptual-Computing-Lab/openpose), dont le principe est de repérer les principales articulations d’un sujet humanoïde sur une photo. Ça donne l’image ci-dessous à gauche.
D’avance, ça sent les problèmes ! Car comme vous le voyez, y’a pas les mains, et quand on ne fournit pas d’information sur les mains, ça ne se passe jamais bien. 8D

image.jpeg.7f5eb6733d0459805ac8cb52c3b95eff.jpegimage.jpeg.a410ae787c61a11c837fbd6ec361ed87.jpeg

Quand on passe ce bonhomme fil de fer dans Stable Diffusion, ça donne l’image ci-dessus à droite.
Vous notez le plus gros point faible… Et bien comme il n’y a pas d’info sur les mains, l’IA est complètement paumée sur ce point et le sabre laser, elle sait pas quoi en faire. Le raccourci sur l’avant bras droit de Vador, elle ne le comprend pas non plus. Voilà, ça c’est avec une pose et un cadrage bâteau. Je vous laisse imaginer avec des mises en scène plus exotiques.
Le point positif, c’est que l’IA n’essaie plus de reproduire les contours exacts du body kun dont les articulations. Du coup, la cape est présente aussi. 

Scribble

Scribble, c’est un algorithme qui accepte en entrée n’importe quelle croquis (du moment qu’il est inversé en mode blanc sur noir), qu’il soit fait à la main ou en passant une photo dans le filtre Canny ou dans le filtre HED.
Ici, j’ai fait un essai avec le résultat du filtre Canny.

image.jpeg.939085c3917410bef57825af0c47f1fb.jpegimage.jpeg.c0a0a40c216d7004a0520af282ee2539.jpeg

Point positif, il suit plutôt bien la pose mais sans afficher les articulations type figurine.
Point négatif, il a du mal avec les mains et les raccourcis… Et puis il me colle des sabres laser partout… ¬¬ La cape est manquante aussi. 

Bon, voilà pour les personnages.
Il y a de l’idée, on peut mieux contrôler le résultat, mais il y a encore un paquet de trucs tout cassés.
Pour obtenir les résultats bluffants que certains affichent sur Internet, il va falloir aller plus loin et mettre un peu les mains dans le cambouis. 

Les décors

Pour les décors, on va essayer d’un côté un environnement de nature et de l’autre un environnement architectural.

image.jpeg.4329682cbf6d990b54a84dfdf008a1be.jpegimage.jpeg.af25612d09d3bc9c601ff61bda90af69.jpeg

Images téléchargées sur Pexels (https://www.pexels.com/fr-fr/photo/photographie-de-cascades-entre-les-arbres-788200/, https://www.pexels.com/fr-fr/photo/bateau-gris-et-marron-voyageant-sur-une-riviere-artificielle-586687/).

Canny

Les entrées

image.jpeg.f88e2c317852695a65b95c808e4f1590.jpegimage.jpeg.589d9d46da3542ae6f438eeb21179432.jpeg

Les sorties

image.jpeg.b4745b2067c1a57b2699b58e5d2e3e82.jpegimage.jpeg.e6555e3f3cbf0f728cb87d770c909e5f.jpeg

J’ai fait pas mal d'essais avec diverses photos de nature et globalement, ça donne des résultats vraiment sympa. Pour les décors de nature, l’algo Canny me semble idéal et j’ai une idée de workflow à tester. 

HED

Les entrées

image.jpeg.1459f9677b86db47d3218a57ee6ce83a.jpegimage.jpeg.689adc340b667fee43ab79d204d8bf34.jpeg

Les sorties

image.jpeg.33d36f3073521f5f68e9764e918383a2.jpegimage.jpeg.e47ed32f7a5c46f53334d27733fdb8a7.jpeg

MLSD

Cet algorithme là, nous l’avons pas encore vu avec Dark Vador, et pour cause, il est spécifiquement pour les décors architecturaux ou d’intérieur présentant de la perspective. 

Le modèle de préprocessing extrait les lignes droites qu’il trouve dans la photo d’entrée avant d’envoyer le résultat en entrée de Stable Diffusion et de ControlNet.

image.jpeg.a369baee54cf39c11d30e0f0266f82bf.jpegimage.jpeg.003db1bcbcfcee29bd3c86b430b883d1.jpeg

Depth

Les entrées

image.jpeg.0faad93aa646594cad5be1bc00c3394f.jpegimage.jpeg.adda5b9f07ddb82e8199664b9dc2154c.jpeg

Le modèle d’estimation me semble assez paumé par rapport à la photo dans le cas de la jungle avec la chute d’eau. On aura sûrement un résultat qui correspond peu à la photo d’origine. 

Les sorties

image.jpeg.f76df9ffacfe7eb6b37391cb976d5dde.jpegimage.jpeg.e78bc81149c6cf62484adf4040f6b472.jpeg

Comme prévu, pour la jungle, le résultat ne correspond pas vraiment à la photo d’origine, en revanche, il prend bien en compte la profondeur estimée. Avec une map de profondeur correcte il y a sûrement moyen d’en tirer quelque chose d’intéressant.

Normal

Les entrées

image.jpeg.295d016146a6b409a411f93944f2df7a.jpegimage.jpeg.25783613850cb65e389f65d224bf3175.jpeg

Très peu d’info visibles. Je m’attends à ce que cet algo soit inadapté aux décors.

Les sorties

image.jpeg.f6204b48de201c3b86a66fb95144d6c0.jpegimage.jpeg.46f38d8fe83f2ad6c1e9528d9bf61ec4.jpeg

Sans surprise, comme il n’y a quasi pas d’info en entrée, Stable Diffusion improvise complètement sur la base du prompt.
Cet algo n’est pas concluant parce que l’accumulation de l’estimation de la profondeur puis des normales lors du preprocessing perd énormément d’informations sur la photo d’origine. Il va falloir tester une autre solution pour réellement tester le potentiel de l’algo. 

Scribble

Les entrées

image.jpeg.f88e2c317852695a65b95c808e4f1590.jpegimage.jpeg.589d9d46da3542ae6f438eeb21179432.jpeg

On reprend les mêmes entrées que pour Canny.

Les sorties

image.jpeg.27a166d7f01cf4e325f36e897b705184.jpegimage.jpeg.78c2de57ae9563ba707e4aec177c99b2.jpeg

Pour le décor de nature, comme Scribble a tendance à prendre plus de liberté que Canny et que l’image d’entrée est très bruitée, Stable Diffusion a tendance à improviser. Sur le décor architectural, comme l’image d’entrée est moins bruitée, la perspective globale est mieux conservée. 

Premier bilan

Pour résumer ce premier banc de test, globalement, ControlNet porte bien son nom et apporte un moyen de maîtriser davantage la composition de l’image finale.
Certains modèles de contrôle sont plus adaptés à certaines situations que d’autres.
Pour les personnages, il y a toujours des difficultés avec les mains et certains raccourcis, mais ça dégrossit le travail.
Pour les décors de nature ça fonctionne globalement très bien, mais c’est facile parce que c’est ce qui demande le moins d’exactitude.
Pour les décors architecturaux, ça permet de globalement bien imposer la perspective. Ça marche bien sur les bâtiments proches, mais plus les bâtiments apparaissent petits plus l’IA est paumée et ne comprend plus la perspective. Il faut dire que les images d’entrée sont des approximations et que les zones très détaillées deviennent un gloubiboulga incompréhensible si elles ne disparaissent pas carrément au pré-traitement.

Modifié par Suisei
Mise en page
  • J'aime 1

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

Le cheat code de l’artiste

Bon, c’est bien joli de travailler à partir d’une photo de référence, mais vous avez bien remarqué que les images intermédiaires calculées (détection des contours, depth map, normal map…) sont très approximatives et que dans le cas des modèles de contrôle les plus précis (Canny, HED), l’image finale suit trop (?) le lineart d’entrée (et dans les autres cas, elle est toujours un peu paumée). 

Comment qu’on fait pour résoudre ça ? 

Reprenons le schéma de fonctionnement du début avec une petite modification.

image.jpeg.91504626cbee2d352c63820bb0ed3746.jpeg

Bon, vous avez compris, le procédé fonctionne en 2 étapes séparées : la transformation de la photo, puis, la génération de l’image par le modèle de diffusion. 

Ça veut dire qu’on peut tout simplement court-circuiter la première étape en envoyant directement au modèle ControlNet une image déjà proprement formatée.
Par exemple, dans le cas de Canny, HED, MLSD et scribble, on peut tout simplement envoyer un vrai dessin fait à la mano au modèle de diffusion.
Dans le cas de la depth map ou de la normal map on peut la générer à partir d’une scène 3D simpliste modélisée dans Blender. 

Cette méthode va permettre d’obtenir des résultats bien plus maîtrisés ! 😄 

Reprenons nos tests, mais cette fois en zappant la première étape. 

Par dessus la photo de mon body kun j’ai fait un croquis de Dark Vador que j’ai ensuite repassé en vectoriel pour être sûre de toujours avoir la même épaisseur de trait partout.

image.jpeg.4255cc2afbd1e614f8c7aa1b9ba91014.jpeg

J’ai ensuite envoyé mon lineart manuel directement en entrée du modèle de diffusion contraint par le controlNet Canny.

image.jpeg.42a00395fbfa567c6a776a2d25f0a672.jpeg

On a quand même vachement moins l’impression d’avoir affaire à une figurine cette fois ! C’est loin d’être parfait, mais c’est intéressant.

J’ai aussi fait un petit essai avec l’algorithme Scribble et le même dessin d’entrée.

image.png.2e0d7625cdba2f888b27dc26395b0904.png

L’anatomie est quand même un peu moins cassée avec Canny. 

Voici les résultats d’un petit banc de test avec cette méthode.

image.jpeg.9e6df50b89ec55b064e98a3b83a3cd12.jpeg

Bon, c’est bien, on maîtrise mieux le résultat qu’avec un prompt tout seul. On peut imposer une compo, la pose d’un perso, son design… 

Mais vous admettrez qu’il y a encore une sacrée couille dans le potage. 8D
Si on peut contrôler le tracé de l’image, il y a quand même quelque chose qui part encore bien en sucette : les couleurs et les lumières.
Stable Diffusion ne sait clairement pas quoi faire de l’information sabre laser, il m’en met partout, dans tous les sens, voir même rend des parties du corps de Dark Vador elles-même lumineuses et les résultats peuvent se montrer parfois… saugrenus. 

Comment qu’on fait pour résoudre ce problème ?

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

Image vers image et ControlNet

Jusque là, nous avons utilisé ControlNet avec le mode texte vers image, mais on peut aussi l’utiliser avec le mode image vers image.
Voici le schéma à nouveau modifié. 

image.jpeg.f131c9add624eaabd5f9880485af44c6.jpeg

Désormais, nous avons deux images d’entrée : celle de ControlNet qu’on utilisait déjà avant, mais aussi l’image d’entrée de Stable Diffusion du mode image vers image. C’est cette seconde image qui servira à imposer la palette de couleurs. 

Pour illustrer le fonctionnement, on va faire un petit essai. Je vais prendre un dessin pour l’entrée de ControlNet et une image qui n’a rien à voir pour l’entrée de Stable Diffusion pour bien voir comment chacune des image influence le résultat. 

Prompt : portrait of a woman with long black hair

A gauche, une version vectorisée d’un de mes dessins réalisés pour le challenge numéro 15, à droite, une photo de bougie random.

image.jpeg.7800fafd4127ba54b69922c2e6acc672.jpegimage.jpeg.02fa177059c7d750342bd76a30568db0.jpeg

Étant donné qu’on se trouve dans le mode image vers image, on dispose de l’option de force de la transformation. Plus la valeur de cette option est basse, plus le résultat est fidèle à l’image d’entrée de Stable Diffusion et plus cette valeur est élevée, plus le résultat transformé en suivant les contraintes de l’image d’entrée de ControlNet. 

Voici un échantillon de résultats avec des valeurs de force différentes.

image.jpeg.f8a921d1b14238034443d7cb68523a89.jpegimage.jpeg.f97c5a6380387f467b0e6cf3b251e8ac.jpeg

image.jpeg.532380d33d615528b7bdcebed5450191.jpegimage.jpeg.8164beb1b2b3ebb07d614aa757f7a882.jpeg

image.jpeg.f0ba125c0876d15a26e4750167a670f8.jpegimage.jpeg.5ab3ba944296057981de6c6421db2e52.jpeg

Une autre série de tests avec le même dessin et un dégradé peint à l’arrache.

image.jpeg.7800fafd4127ba54b69922c2e6acc672.jpegimage.jpeg.c1c02dafbc9b069f079ae2a616601b5c.jpeg

Et les résultats :

image.jpeg.ea0a1c2a8f47b726acfbd4d4d10f5d62.jpegimage.jpeg.91231bd79f74e31a41d763300764b8ed.jpeg

image.jpeg.46c2b948da79a5c9d5dd39758269fd1c.jpegimage.jpeg.55a89fe68267db996ee2d56db588879f.jpeg

image.jpeg.607b87a2a2594da648b3ff7cdba76260.jpegimage.jpeg.0f8c4b43dbedb84570c50c46383a4b1a.jpeg

J’ai exagéré avec mes images d’entrée qui jouent le rôle de palette de couleur, mais vous noterez que ça fonctionne : le dessin impose les formes, l’image d’entrée du mode image vers image impose les couleurs. 

Bon, et si on faisait un essai avec notre Dark Vador ? 🙂

Je reprends le même dessin d’entrée qu’avant et je l’associe à une petite peinture que j’ai réalisée rapidement sur Procreate (une petite heure environ, j’aurais peut-être pu faire quelque chose d’encore moins fini).

image.jpeg.a7a1995bdba9bbdf47279e00726c60fc.jpegimage.jpeg.b5eb7c06b64a5c3370d9a591dd29e09e.jpeg

Et voici un échantillon des résultats que j’ai obtenus avec divers modèles et diverses forces de filtrage.

image.jpeg.411f674ae0d1695d2c15fc88cc2e43f4.jpeg

C’est tout de même vachement mieux sans être parfait. L’IA est encore paumée avec les petits détails tels que les mains, mais au moins elle ne nous colle plus de sabres laser n’importe où et surtout là où on ne lui a pas demandé.
Il y a moyen d’utiliser les IA comme un assistant de finition pour travailler plus vite. 

C’est bien joli tout ça, mais c’est encore loin de faire des illustrations finies satisfaisantes. 

Essayons d’aller plus loin.

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

Proposition de workflow

Comme pour l’affiche de Vidau’Bulles que je vous avais présentée il y a quelques mois, on va partir sur l’idée de filtrer l’image petits morceaux par petits morceaux et de remonter le tout. 

On va partir de l’une des images générées, celle-ci :

image.png.21a30c97cc6d1e09f3485b38a498e2fe.png

Je l’agrandis un bon coup à l’aide d’un modèle open source qui est utilisable via cette interface : https://replicate.com/jingyunliang/swinir
Ou en l’installant en local, chez soi, si on sait bricoler avec Python. 

Je découpe certaines parties de l’image que je veux retravailler. Comme ceci.

image.jpeg.d7940e59fd1ac9f53e6675e614cd4747.jpeg

J’ai aussi découpé mon lineart de la même façon.

image.jpeg.a8756a995309ece83a3521aacf85fffd.jpeg

J’ai aussi découpé quelques morceaux du body kun pour en tirer des cartes de profondeur avec ce modèle là : https://replicate.com/cjwbw/midas

image.jpeg.e8abf1c4069eb1b5627a169f612d8bfb.jpeg

Corriger les mains avec des cartes de profondeur est une technique couramment utilisée chez les utilisateurs de Stable Diffusion. 

Bras : darth vader arm, open hand

image.jpeg.75e82f0a49d0ebeff211dbc869dde31d.jpeg

Main : darth vader hand, open hand, glove

image.jpeg.82702b16ef56add93504477db308fbcf.jpeg

Les mains, c’est toujours délicat, mais en faisant vraiment un gros plan et en faisant plusieurs essais on peut obtenir des résultats à peu près correct qu’on pourra combiner. 

Casque : portrait of darth vader, helmet, mask

image.jpeg.f6ec57a88e360d93e36a44a97dcb5f7c.jpeg

Le casque, ça marche bien, mais les différents modèles semblent avoir un mal fou avec le masque.
Du coup, j’ai fait un gros plan supplémentaire sur le masque.

Masque : darth vader mask

image.jpeg.9c9740ac21f490f5917c3c925bc5a118.jpeg

Bras qui tient le sabre laser : darth vader arm, hand holding light saber

image.jpeg.4f8c8cb6e2fc8cde27869048a4335e99.jpeg

Main qui tient le sabre laser : darth vader hand holding light saber

Alors là, comme le manche du sabre laser était très imprécis et se limitait à un cylindre, pour améliorer le rendu, j’ai récupéré un sabre laser sur sketchfab et j’en ai tiré un lineart avec le grease pencil dans Blender. 

Le modèle 3D est téléchargeable ici : https://sketchfab.com/3d-models/darth-vaders-light-saber-0193bbb4294e489a88ac88c84030443a

image.jpeg.a6a10e17d19ba3bc0c59cd869561c4b8.jpeg

image.jpeg.050988e38597fce213128c55555a2e95.jpeg

Les résultats :

image.jpeg.7c27ebf02b613a0b74e36fea939ed80a.jpeg

Mouais… La main c’est pas ça. ¬¬ Mais il y a quelques manches qu’on va pouvoir récupérer.

Jambe arrière : darth vader leg, boot

image.jpeg.5a54287798047be5d7a75a391d31f6b4.jpeg

Hum… Y’a quelques trucs très… Chelou… Je vous laisse inspecter la mosaïque de plus près. ¬¬ 

Jambe avant : darth vader leg, boot

Bon, je sais pas c’qu’il a foutu ce coup-ci, mais il a eu un mal fou à me sortir correctement le motif matelassé de la combinaison de Dark Vador. 😕 Va falloir bricoler en combinant plusieurs images..

image.jpeg.6b3b758c4a35f15fac24677770b9afb7.jpeg

Tronc : darth vader bust

image.jpeg.7019557eda0d04273e59fc7badbc0c22.jpeg

Cape : large black silk drape

image.jpeg.28ccf96ab07bf12eb92e99aa98ebb5f4.jpeg

Ensuite, j’ai monté les images qui me paraissaient pertinentes dans Affinity Photo et ça donne ce gloubiboulga.

image.jpeg.88150a37b046f81406a4e4af5d551dac.jpeg

Et oui, y’a du boulot en perspective. 

J’ai peint des masques pour ne plus voir les bords carrés et j’ai utilisé des calques de réglage et quelques coups de pinceaux pour harmoniser à peu près les couleurs.

image.jpeg.5649c9032014ffeee72b6bbd3a817ae0.jpeg

Et j’ai envoyé tout ça dans Procreate pour faire un gros paintover.

image.jpeg.6875163456b054af1eea9dc641f8770c.jpeg

Les pièces électroniques étant encore très vitriolées et nécessitant des retouches lourdes, j’ai finalement regénéré des images avec Stable Diffusion en zoomant sur ces pièces pendant que je faisais mon paintover sur le reste dans Procreate. 

electronic panel with luminous buttons and LEDs

image.jpeg.cdd874d2705db18eeb7b306de7353144.jpeg

electronic box with luminous buttons and LEDs

image.jpeg.30e28bf6465469ad30f109be5f0b4b1b.jpeg

image.jpeg.d24bc155d04115c8f1360b1522ec2ffc.jpeg

Je les ai intégrés à leur tour et voilà, ENFIN, le résultat final. x)

image.jpeg.6355afd6d655bb2571ac6ea2ad1d1b72.jpeg

Bon…
Ben…

C’est du photobahsing ce procédé, hein, ni plus, ni moins.

Pour l’instant ma méthode n’est pas rapide. Ça aurait été peut-être aussi vite de tout faire à la main. J’ai pas chronométré.
Je tâtonne encore et lance des générations en trop grande quantité pour couvrir une large gamme de valeurs des paramètres. Ça a un coût en temps.
Je pense qu’avec tous les bancs de tests je devrais pouvoir, à l’avenir, cibler un peu plus mes valeurs de paramètres et générer moins d’images (il devrait y avoir moyen de diviser le nombre de générations par 2 ou 3) pour travailler plus vite. 

Cela dit, cela m’a quand même permis d’obtenir des textures et des effets de matière que je n’aurais peut-être pas eu la patience de soigner aussi bien à main levée (les gros digital painting de plusieurs dizaines d’heures, c’est pas ce que je préfère).

Et j’ai appris des choses aussi : outre le fait que j’ai une meilleure idée de la fourchette d’utilisation pertinente des paramètres, j’ai constaté qu’un lineart bien soigné pouvait aider l’efficacité des générations (là je l’ai fait à l’arrache) et qu’il ne fallait vraiment pas hésiter à zoomer très fort sur les petits éléments et les générer séparément avec des prompts simples.

Bref, je ferai probablement d’autres tests, mais je m’efforcerai de faire des compo plus recherchées et moins banales que celle-là. Faudra que je teste sur des environnements aussi. 

Moralité : Le travail reste le seul moyen d’obtenir des images maîtrisées. Sinon c’est pochette surprise avec salade de doigts et personnages vitriolés.

  • J'aime 1

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

D’autres bancs de test

j’ai mis plusieurs mois avant de revenir poster quelque chose ici sur le sujet, ceci s’explique par le fait que j’ai réalisé une grosse tripoter de bancs de test. Une très très grosse (sûrement trop au point que ça ressemble plus à une collectionnite autistique qu’à un banc de test). Le premier banc de test automatisé que je vous avais proposé, c’est de la petite bière à côté. x) 

Le premier des nouveaux bancs de test, je l’ai fait quand j’ai découvert ControlNet mais que je ne savais pas encore qu’on pouvait l’appliquer au mode image vers image il est donc focalisé sur le mode texte vers image.
Il contient des sujets et des modèles variés.
J’ai testé une astuce pour en tirer des illustrations en noir et blanc… Pas très convaincant. x) 

https://suiseipark.com/Demos/AI/controlNet/index.html

Ensuite, quand j’ai découvert qu’il était possible de faire du image vers image avec ControlNet, j’ai testé pour voir si on pouvait utiliser cette technique pour texturer, casser un rendu 3D, sans pour autant perdre la forme des objets de l’image. 

https://suiseipark.com/Demos/AI/ImgToImg-Primitives/index.html

Et la réponse est oui !
Voici un petit échantillon.

image.jpeg.db265f64c13e8f98525de80bdcd09cff.jpeg

Puis au fur et à mesure que des idées de workflow me sont venues en tête, je me suis décidée à faire un banc de test par thème pour voir les modèles les plus adaptés selon le type de sujet que je voulais rendre ou le type de style.
Ces bancs de test comprennent du texte vers image et du image vers image et ceci avec ou sans ControlNet. 

Pour les décors naturels : 
https://suiseipark.com/Demos/AI/nature/index.html

Pour les personnages : 
https://suiseipark.com/Demos/AI/characters/index.html

Pour les asset de jeux vidéo : 
https://suiseipark.com/Demos/AI/gameItems/index.html

Pour les mains : 
https://suiseipark.com/Demos/AI/hands/index.html

Même s’il y a déjà de très nombreuses images, notez que ces bancs de test sont encore incomplets (à mon sens) et que je continuerai de les enrichir. Il manque aussi celui sur les décors architecturaux que je n’ai pas encore commencé. 

Comme je me sens plus à l’aise et plus efficace pour faire mes brouillons et mes recherches au tradi, j’ai poussé l’idée jusqu’à faire passer en entrée des dessins réalisés avec du bic, des feutres à l’eau ou encore des Promarkers. J’ai pas encore testé le pastel gras, mais c’est dans un coin de ma tête. 

Bref ! Loin de me faire poser le crayon, mes recherches pour intégrer l’IA dans mes workflow m’incitent plutôt à revenir carrément au tradi ! x) 

Voici quelques extraits des bancs de test. 

Un arbre au bic pour voir si on peut en tirer un noir et blanc sympa

Dessin original :

image.jpeg.95ed6997f33b080e7aa61f54fd7ea8ab.jpeg

Sorties :

image.jpeg.4f5066b1911f6743691ec2a5b78f98ee.jpeg

Un arbre au bic et au feutre à l’eau que j’ai passé en niveau de gris pour voir comment ça pouvait influencer les modèles noir et blanc.

Dessin original

image.jpeg.f14c73820c0d1296a919f13241d62025.jpeg

Sorties :

image.jpeg.9592a3a3ff56d181032d82eeadc8f599.jpeg

Des trucs au bic et aux feutres à l’eau de supermarché

Dessin original :

image.jpeg.7e87904842a1c84846c253994013ceb3.jpeg

Sorties :

image.jpeg.41828f15933c20bbd2e32d0a0a4a3dbc.jpeg

Dessins originaux (items de jeu)

image.jpeg.feb241ec4d6502ab8ea2bbb2f3d1faec.jpeg

Sorties :

image.jpeg.64aa4dcddd042f5364457bdf0255757a.jpeg

Des trucs fluo à coup de Stabilo Boss

Dessin original :

image.jpeg.a3a258da02b0a1dd41d68fceb5523857.jpeg

Sorties :

image.jpeg.27599d38be7dd2e62f3ea6c35c4dffa2.jpeg

Je trouve qu’en plus ça donne des idées de variantes de palette intéressantes. 

Des trucs aux Promarkers

Dessin original :

image.jpeg.627ad4e60b21b36601f56092dcdc8a37.jpeg

Sorties :

image.png.8529ec68ac6ccd0fa0b5c2d6b0e12cba.png

Dessin original :

image.jpeg.fb4dc38a3823558baeb07cee5f2fa716.jpeg

Sorties :

image.jpeg.9a857192e6c1fa81e9d4057c55a2c2f2.jpeg

 

Conclusion

Bon, et bien voilà, c’est la fin de cette nouvelle tripotée de tests. 

Que conclure ? 

Et bien que les nouvelles possibilités ouvertes par ControlNet m’ont motivée à renouveler mon matos tradi… 

Vous avez bien lu ! 8D 

Mes dernières expériences me confortent dans l’approche que j’avais déjà abordée il y a quelques mois : utiliser les IA comme un super filtre Photoshop, un assistant de finition.
On peut s’en servir pour générer des textures à utiliser pour du photobashing ou dans la 3D. J’ai vaguement commencé des tests en ce sens. 

Du coup, comment j’envisage ma démarche artistique à l’avenir ? 
Et bien voir si j’arrive à passer moins de temps sur les finitions avec ces astuces et consacrer ce temps économisé à bosser les fondamentaux plus à fond (dessin, compo, théorie des couleurs… ), à réfléchir davantage mes compo et les styles que j’ai envie de développer.
Et comme en plus ça marche très bien pour filtrer du tradi tout ça, j’en profite même pour revenir à mes vieilles techniques d’adolescente à savoir ses bons vieux feutres à l’eau !

image.jpeg.c35084e648aa7881dfeea71cb07f7f88.jpeg

Ne jamais sous estimer le matériel d’écolier. Jamais ! 

Et mentalement, me replonger dans cette époque sans pression, ça me fait un bien fou ! 

Bon, c’est intéressant pour des illustrations abouties qui exigent un gros travail de finition ou pour des assets de jeu, mais pour la BD qui nécessite un travail moins fini, de produire très vite, de la cohérence d’une case à l’autre et pire encore quand il s’agit d’un style plutôt typé ligne claire, là ça ne marche pas du tout.
Il y en a qui ont essayé, ils ont eu des problèmes (vous connaissez la suite du sketch ? ).
Le temps de multiplier les essais et d’en sélectionner un qui convienne (s’il y en a un qui convient ! ) j’ai largement le temps de finir le travail au jus de coude (IA incultes même pas fichues de savoir ce qu’est un klingon ou un cardassien).
Mes exercices d’anatomie quotidiens et la 3D restent mes meilleurs alliés. 

Et puis depuis le temps que je gribouille, même s’il est pas révolutionnaire, j’ai quand même un petit style bien perso. Et comme chuis inconnue et bien c’est absolument impossible de le reproduire. Ni de près, ni de loin, ni Midjourney, ni Stable Diffusion, ni Dall-E… 

… 

Va falloir que je fabrique mon propre modèle spécialisé dans mon style… 

Pour la suite de l’investigation, voici ce que je prévois : 
-Reparler de ma petite IA d’encrage, parce que ce projet là aussi progresse ! 😄
-Enfin me secouer les puces pour développer ma propre interface d’intégration de Stable Diffusion adaptée à mon workflow typé photobashing.
-Étudier la question de la création de son propre modèle customisé de Stable Diffusion.
-Créer d’autres filtres neuronaux (comme y disent chez Adobe).
-Surveiller l’évolution de Stable Diffusion XL. 

Pour finir, je vous envoie quelques liens de tutos et d’actu histoire que vous puissiez vous aussi surveiller l’évolution du bouzin.

Les subreddit où les utilisateurs de Stable Diffusion échangent sur les divers aspects techniques : 
https://www.reddit.com/r/StableDiffusionInfo/
https://www.reddit.com/r/StableDiffusion/

Quelques chaînes Youtube spécialisées : 
https://www.youtube.com/@aiandpixels/videos (En Français)
https://www.youtube.com/@ArtificialisCode/videos (En Français)
https://www.youtube.com/@Aitrepreneur (En Anglais)

Au final, en explorant tous ces tutos et les échanges de ces communautés, il est amusant de constater que les “artistes IA” qui souhaitent faire un travail un tant soit peu sérieux se retrouvent obligés de mettre les mains dans Photoshop, dans Blender et même dans le code Python pour réussir à faire ce qu’ils veulent. (MidJourney, c’est joli, mais c’est la pochette surprise à chaque fois. On maîtrise rien. Et ça sait toujours pas faire d’interaction entre personnages.) Ils sont obligés d’apprendre de vraies compétences en fin de compte.
La technologie a encore besoin de mûrir parce que je les vois régulièrement demander sur Reddit si telle ou telle fonctionnalité existe et souvent, ce n’est pas encore le cas. Ils se sentent donc encore limités par l’existant. 

L’art du prompt, ça va 5 minutes, mais c’est insuffisant. En tout cas ça remplit pas mes cahiers des charges à moi.

Moralité : continuez de bosser vos fondamentaux. Vous allez en avoir besoin. 😛 

Modifié par Suisei
Ajout d'une info
  • J'aime 4
  • Merci ! 1

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

  • Suisei changed the title to J’ai codé une IA ! ( ControlNet )

Encore un sacré boulot et un compte rendu topissime ('vient de revoir Kung Fu Panda, désolée 😆). Grand, GRAND merci à toi !
J'avoue que j'ai eu le sentiment d'être au pays des ovnis en me baladant sur civitai.com, en me demandant "mais en fait c'est quoi, ces modèles, on télécharge des images ? des prompts ? gne ?".

En tout cas, ton cheminement et tes conclusions à ce jour sont surprenants, c'est assez rigolo de finir par revenir au tradi et ressortir ses feutres 😄 .

Encore chapeau pour cette super analyse !!

  • J'aime 2

La vie est une bande-dessinée !

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello ! 

Merci @mymdessine, c’est toujours un plaisir de partager mes petites découvertes. 😄 
Ouais, en effet, quand on découvre le monde de Stable Diffusion, c’est pas évident de s’y retrouver. x)
Sur civitai, on trouve majoritairement des modèles à télécharger. Il faut ensuite les installer dans une interface graphique comme Automatic1111 (la plus populaire en ce moment) ou ComfyUI (qui gagne de plus en plus de terrain).
La difficulté, c’est qu’il y a en de plusieurs types. Il y en a qui sont complets et peuvent être utilisés tout seul, d’autres qui doivent être utilisés en combinaison avec un modèle de base. Bref ! Pas étonnant que MidJourney reste plus populaire malgré ses limites. La liberté de Stable Diffusion s'acquiert au prix d’une courbe d’apprentissage assez raide. 

@Laurence Veron-Dor, Je n’ai toujours pas réussi à faire fonctionner Automatic1111 sur Linux, mais j’ai réussi avec une autre interface (qui me plait davantage à titre personnel) : ComfyUI. 

ComfyUI est beaucoup plus permissif sur les numéros de version de Python et des modules Python. 

J’en profite pour proposer un petit tuto d’installation à tout le monde.

ComfyUI

Si vous êtes habitués à Blender et son système nodal, vous ne serez pas dépaysés. En effet, ComfyUI propose un système nodal.
Ça ressemble à ça :

image.jpeg.ea075f0c75a3332edbb506c07e0cd190.jpeg

Alors pourquoi un système nodal ?
Et bien parce que Stable Diffusion permet de faire des choses plus complexes que simplement générer une image à partir d’un prompt : on peut contraindre la génération avec des options supplémentaires comme ControlNet, passer les image d’entrée par des pré-traitement, passer les images de sortie par des post-traitements… En fait, les possibilités sont à peu près infinies.
L’idée est donc de programmer tout un workflow en fonction de ses besoins. 

Sous Windows

Sous Windows, c’est simple, il y a un exécutable portable à télécharger sur cette page :
https://github.com/comfyanonymous/ComfyUI

Vous allez trouver une archive du nom de ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z dans votre dossier de téléchargements. 
Ouvrez la avec votre logiciel de désarchivage préféré (Express Zip par exemple).

Vous obtiendrez un dossier  ComfyUI_windows_portable_nvidia_cu118_or_cpu à l’intérieur duquel vous trouverez un dossier ComfyUI_windows_portable à l’intérieur duquel vous trouverez 2 lanceurs : run_cpu.bat et run_nvidia_gpu.bat

image.jpeg.123f4348c8ec94c22172b3530806b695.jpeg

Si vous avez une carte graphique NVIDIA récente, double cliquez sur run_nvidia_gpu.bat, sinon, double cliquez sur run_cpu.bat.
Une console DOS va s’ouvrir et va vous proposer d’ouvrir un lien. Cliquez sur votre navigateur préféré dans la liste des programmes proposés. 

Et voilà ! Une interface avec quelques nœuds par défaut s’ouvre dans votre navigateur.

image.jpeg.ea075f0c75a3332edbb506c07e0cd190.jpeg

Notez que comme pour Automatic1111, les modèles ne sont pas fournis il vous faut donc les télécharger et les installer vous-même.

Vous pouvez en télécharger sur HuggingFace ou civitai.

Vous pouvez, par exemple, télécharger le modèle de base de la version 1.5 de Stable Diffusion, ici : https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main

Et télécharger le fichier v1-5-pruned-emaonly.ckpt

image.jpeg.d76dc4f20bb79386cd81f0e888a787ba.jpeg

Ensuite, dans le dossier ComfyUI_windows_portable où vous avez trouvé les 2 lanceurs, il y a un dossier models qui contient un dossier checkpoints. C’est ici qu’il faut déposer les modèles de type ckpt.

image.jpeg.c64984280834a44ab27fce2398a1e64c.jpeg

Sous Linux

Sous Linux il faut mettre un peu plus les mains dans le cambouis, mais c’est pas méchant.

On va partir de zéro dans le cas où vous êtes novice. 

Vous commencez par ouvrir une fenêtre de terminal. 

Si vous n’avez pas installé Python, entrez cette commande : 

sudo apt-get install python3.10

Ceci installera la dernière version disponible de python 3.10. Ça fera l’affaire.

Ensuite, il faut installer le gestionnaire de version git avec cette commande : 

sudo apt install git-all

Au cas où vous voudriez travailler sur plusieurs projets python qui exigent des versions de modules différentes, il va falloir que vous puissiez créer des environnements virtuels.
Pour cela il faut installer l’utilitaire virtualenv avec cette commande : 

pip install virtualenv

Maintenant, vous pouvez vous positionner dans le dossier où vous voulez installer ComfyUI avec une commande de cette forme : 

cd chemin/de/mon/dossier

Il faut récupérer le code source de ComfyUI avec cette commande : 

git clone https://github.com/comfyanonymous/ComfyUI.git

Vous avez dû récupérer un dossier nommé ComfyUI.
Entrez dedans avec la commande qui suit : 

cd ComfyUI

Créez un environnement virtuel venv : 

virtualenv venv

Activez le (il faudra faire cette commande à chaque fois que vous voudrez lancer ComfyUI) : 

source venv/bin/activate

Ensuite, on installe les modules python nécessaires avec ces 2 commandes : 

pip install torch torchvision torchaudio
pip install -r requirements.txt

Et enfin vous pouvez lancer ComfyUI avec cette commande

python main.py

Si vous n’avez pas de carte graphique NVIDIA assez récente, utilisez cette commande : 

python main.py cpu

Un message vous indique une URL à entrer dans la barre d’adresse de votre navigateur préféré : 

http://127.0.0.1:8188

Et voilà !

image.jpeg.55eee449d09f300ff4f1667311f3dc0a.jpeg

Comme sur Windows, les modèles ne sont pas fournis, il vous faudra donc les télécharger et les installer vous même. 
Dans le dossier ComfyUI, vous pouvez trouver le dossier models qui contient le dossier checkpoints où il vous faut déposer les modèles de type ckpt.

image.jpeg.c5b361053797d10308c35e0b314eca88.jpeg

C’est supposé fonctionner sur Mac aussi avec une installation quasi identique à Linux, mais j’ai rencontré un bug à la con au lancement. J’ai pas le courage de passer des heures à débuguer ça à l'instant. J’y reviendrai peut-être plus tard. 

Utiliser ComfyUI

Je n’ai pas été au-delà des nœuds proposés par défaut étant donné que je code ma propre interface adaptée à mes besoins. 
Du coup, je vous propose une chaîne Youtube qui a fait quelques tutos sur cette interface pour que vous puissiez tester un peu plus le bidule. 

 

Péguy Diffuser

Bon, j’en parle vite fait, ça y est, mon petit projet d’interface graphique pour Stable Diffusion est en cours de développement.
Le premier jet de l’interface est fonctionnel. Maintenant il faut que je la branche à Stable Diffusion. Le boulot le plus délicat sera sans doute de rendre ça installable par n’importe qui sur son ordi perso. 

Voilà ce à quoi ça ressemble (je changerai sûrement le design pour quelque chose de sombre puisque c’est la norme actuellement) :

image.thumb.jpeg.227aee898f26ede66accd75ef44597ea.jpeg

L’idée est de pouvoir appliquer facilement le workflow que je vous ai déjà présenté : avec un système de calques et la possibilité de découper des petits carrés dans les images pour filtrer de petits morceaux et de pouvoir exporter les résultats dans un fichier psd qu’on aura juste à ouvrir dans son éditeur d’image préféré pour le retoucher et repeindre par dessus.
A terme je vais essayer de faire en sorte qu’on puisse déjà dessiner et peindre un peu directement dedans. 

Voilà voilà pour aujourd’hui ! Bonne soirée tout le monde ! 😄 

 

  • J'aime 2

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

  • Suisei changed the title to J’ai codé une IA ! ( ComfyUI )
  • 4 weeks later...

En effet merci de continuer à tester tout ça pour voir où ça peut mener. C'est super intéressant ! Je trouve que tes avis personnels rajoutent vraiment un plus à chaque fois.

  • J'aime 2

Formateur sur DPS et co-fondateur avec les cochons fondateurs de DigitalPainting.school, également la personne qui doit supporter Léonardus quotidiennement. A votre service.

Partager ce message


Lien à poster
Partager sur d’autres sites

  • 6 months later...

Hello, la compagnie ! 

Je viens vous donner quelques nouvelles de mes recherches et expérimentations sur le thème de l’IA. 

Comme promis, je reviens sur ma petite IA d’encrage. 

Pour rappel, il s’agit d’un modèle d’IA que je code et entraîne moi-même avec mes propres dessins dans le but d’avoir un automate qui transforme mes crayonnés en dessins encrés. 

La dernière fois que je vous en ai parlé, voici ce que ce projet était capable de faire. 

Image d’entrée

image.jpeg.b3f3b865baa00a88e43bc6e339aa5b51.jpeg

Image de sortie

image.jpeg.a192e136cc82643c9f1d51663fb34b5a.jpeg

Pas encore exploitable. Il y a encore beaucoup de traces et des traits de construction qui trainent. 
Par ailleurs, à l’époque, le programme ne comportait qu’un seul modèle d’IA qui n’était capable de filtrer l’image que par petites tuiles de 512 pixels par 512 pixels.

En gros, l’image d’entrée était découpée en petite tuiles, comme ceci :

image.png.c14e1b521698223fbc1b5f292950cc5e.png

Chaque petite tuile était filtrée indépendamment des autres par le modèle d’IA, comme ceci :

image.png.1a2dff962ef74ca24d6c3e7b8ea31037.png

Et pour finir, le programme réassemblait toutes les tuiles pour donner l’image finale.

Le problème avec cette méthode, c’est que l’IA n’a pas de vision d’ensemble de l’image et que lorsqu’une ligne se balade sur plusieurs tuiles elle peut avoir des changements d’épaisseur brutaux sur les frontières entre les tuiles.

image.jpeg.354fca04e04f96ed9058288d2d34e7eb.jpeg

Pour résoudre ce problème, j’ai cherché des solutions pour pouvoir traiter l’image dans son ensemble quelque soit sa taille alors qu’un modèle d’IA n’accepte qu’un seul format en entrée et sachant que plus les images traitées sont grandes, plus les modèles sont gros, plus ils sont longs à entraîner. 

Voici comment j’ai procédé pour améliorer mon IA.

Amélioration des données

En ce qui concerne les traits de constructions et autres traces qui traînent, là, ce n’était pas le modèle qu’il fallait modifier, mais les données d’entraînement. 
A force d’essais, j’ai constaté que le fait d’inclure les à-plat de noir et les textures perturbait plus l’IA qu’elle ne l’aidait. Elle ne savait pas trop si dans une surface couverte de crayon elle devait faire un à-plat ou repasser chaque grain de carbone et laisser libre les petites zones moins couvertes.

Comme ceci par exemple.

image.jpeg.7a0831e94519b1f8b3a7ac6f0ab850a0.jpeg

Et du coup, ça l’encourageait aussi à repasser les traits de construction. 

J’ai donc renoncé à prendre en compte les à-plat et les textures sachant que de nos jours, dans les logiciels comme Clip Studio Paint et consort, il y a des outils très puissants et rapides pour faire du remplissage automatique et qu’il y a des tas de brushes fantastiques pour faire de la texture. 
Le nouveau projet d’IA se contente donc de mettre au propre le lineart (ce qui est la partie la plus longue à faire à la main).

Au final, j’ai viré de mes données d’entraînement toutes les images qui contenaient des à-plat et des textures. 

Amélioration du modèle

Là, pour le coup, j’ai bien fait de beaucoup bidouiller avec Stable Diffusion parce que ça m’a permis d’apprendre une chose importante : une IA n’est pas obligée de ne comporter qu’un seul modèle. Elle peut en avoir plusieurs qui remplissent chacun un rôle différent.
L’autre chose que j’ai apprise, c’est qu’on n’est pas obligé de n’envoyer qu’une seule image en entrée. On peut en empiler plusieurs qui contiennent des informations différentes. 

Forte de ces nouvelles connaissances, j’ai donc construit une nouvelle architecture composée de plusieurs modèles pour mon IA.

Voici le schéma de l’architecture actuelle. (N'hésitez pas à cliquer dessus pour voir en grand.)

image.jpeg.5d6f4ea85e079f8faff6fc5885e4593f.jpeg

1 : Pré-Traitement

Il s’agit d’un programme de traitement d’image ordinaire qui formate l’image d’entrée pour qu’elle soit utilisable par les modèles d’IA.
Il applique un contraste, ajoute des marges pour que l’image soit un carré et la redimensionne en 2 versions : une de 512x512 pixels, l’autre de 1024x1024 pixels.

2 : Premier modèle

Le premier modèle d’IA prend le crayonné de 512x512 pixels en entrée et effectue un premier nettoyage.
Il fournit en sortie une image de même taille. 

3 : Premier upscaler

Vous noterez qu’il prend en entrée 2 images : celle générée par le premier modèle, mais aussi le crayonné de 512x512 pixels qu’on a déjà mis en entrée du premier modèle.
Alors pourquoi je fais ça ?
Et bien parce qu’il y a une perte d’information dans le passage du premier modèle qui pourrait faire perdre énormément de détails tout au bout du pipeline. L’ajouter en entrée du modèle suivant permet de conserver ces détails en mémoire. C’est une méthode employée au sein même de certains réseaux de neurones.
L’image fournie en sortie du premier upscaler fait 1024x1024 pixels.

4 : Affinement

Ce modèle effectue un nettoyage et fournit une image de même taille qu’en entrée.
Il prend en entrée l’image de sortie du premier upscaler ainsi que le crayonné de taille 1024x1024 pixels.

5 : Second upscaler

Ce modèle effectue un deuxième agrandissement et fournit une image de 2048x2048 pixels.
Il prend en entrée l’image de sortie du nettoyeur de l’étape 4 ainsi que le crayonné de taille 1024x1024 pixels.

Voilà où en est actuellement mon architecture. Elle n’est pas encore tout à fait complète. Je souhaite ajouter d’autres étapes de nettoyage et d’agrandissement et un postprocessing, mais les résultats ne sont pas probants pour l’instant et je souhaite essayer d’améliorer la qualité des modèles déjà existants avant en enrichissant les données avec de nouveaux dessins. 

Voilà ce que ma nouvelle architecture est capable de faire actuellement.

image.jpeg.9e904be86bb59e2ccfd42b8d805d5d0d.jpeg

C’est encore loin d’être parfait, mais c’est beaucoup plus propre ! 

Pour l’instant je n’estime toujours pas cette IA assez quali pour réellement encrer mes dessins.
Ceci étant dit, je lui ai tout de même trouvé un usage en l’état. C’est très bien comme automate de nettoyage de scan de crayonné pour ensuite en imprimer une copie pour faire une colo tradi dessus, ce que j’ai fait pour le Secret Santa 2023.

image.jpeg.86ff52fffabcfed7392355e222cdcd80.jpegimage.jpeg.0ae1f54dae5691c190ff1eccbc2c0152.jpeg

image.jpeg.831d6a45ace62e9c1d3cd91b29278f97.jpeg

Bon, là c’était un niveau de gris que j’ai utilisé comme calque de colo indirecte ensuite, mais vous voyez l’idée.

Pour l’heure, étant donné que j’ai réduit la quantité de données d’entraînement en enlevant les à-plat et les textures, je pense que la prochaine étape pour améliorer ce projet va être de continuer de faire des dessins et de les encrer à la mimine pour enrichir les données. x) 

Petite parenthèse sur Stable Diffusion XL

J’avais dit que je surveillerai cette nouvelle version de Stable Diffusion. Je l’ai testée et la review va être vite vue : décevante. x) 

Le point positif : 

Le modèle de base de SDXL donne des images plus quali que SD 1.5 et SD 2.1 avec une plus grande variété de styles, mais les points positifs s’arrêtent là. 

Les points négatifs : 

  • Les modèles sont plus gros, ils occupent donc plus de mémoire et réclament plus de ressources à l’exécution. 
  • Les taux de transformation en mode Image to Image ne fonctionne pas de façon linéaire et agit de façon complètement folklorique à partir d’une certaine valeur, ce qui empêche les réglages fins. 
  • Très peu de modèles ControlNet sont disponibles comparé à SD 1.5.
  • Les modèles customisés sont moins nombreux et moins diversifiés.

Le point neutre : 

Les modèles customisés de SDXL ne sont ni mieux ni moins bien que ceux de SD 1.5.

Moralité, j'ai mis SDXL à la poubelle et une majorité d’utilisateurs de Stable Diffusion reste encore sur SD 1.5. 

Il y a une v3 de Stable Diffusion qui est sur le point de sortir ainsi que Stable Cascade supposé être plus rapide. Je vais continuer de surveiller tout ça. 

Voilà voilà ! 

La prochaine fois je vous présenterai un usage détourné de Stable Diffusion que j’ai inclus dans un workflow classique de digital painting pour m’assister dans certaines tâches répétitives. En gros, ça fonctionne comme les filtres artistiques de Photoshop mais en plus élaboré et plus diversifié. 

Bonne journée à tous ! :D 

  • J'aime 1
  • Merci ! 2

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

  • Suisei changed the title to J’ai codé une IA ! ( Retour sur l'IA encreuse )

Mon petit retour d'expérience sur les IA si ça peut en aider certains :

MIDJOURNEY : c'est la premier app que je testais il y a plus d'un an. 
En pleine controverse sur les IA, je voulais savoir de quoi on parlait exactement.
J'étais bien sur impressionné par la performance technologique, mais très déçu par le manque de contrôle sur l'image finale.
En gros le "text to image" c'est pas pour moi qui souhaite matérialiser MON idée au plus prêt de MA vision.
Je veux contrôler la composition, le design, la pause, etc... je veux explorer et approfondir ma vision et pas recevoir une "interprétation de la machine"
J'y ai quand même vu l'opportunité dans le cadre de mon projet de character design WUNDERLAND-1940  de générer de la matière à photoshoper pour mes backgrounds.
Un tache secondaire fastidieuse qui s'en retrouvait du coup bien simplifiée, me laissant plus de temps pour travailler sur l'essentiel.

STABLE DIFFUSION
Honnêtement j'ai juste passé le stade de l'install....et j'ai réalisé à quel point c'est un système qui demande vraiment de "mettre les mains dans le cambouis" pour obtenir des résultats intéressants...
J'ai abandonné car j'ai découvert :

VIZCOM
une révélation! 
Place au "image to image" and même au "draw to image" (meme si honnêtement le draw se fera plutôt dans photoshop avant de balancer dans Vizcom).
Fini des histoires de prompts qui ne sont plus essentiels mais juste additionnels.
L'application se destine plus précisément au design de produits (voitures, baskets...), mais peut etre complètement utilisée pour tout autres sujets.
On donne une input bcp plus précise et contrôlée de ce qu'on veut, et l'IA va traiter et upgrader graphiquement à la manière d'un filtre photoshop.
La aussi par contre il ne faut pas s'imaginer qu'on va réaliser quelquechose de "fini" directement dans l'app, >> c'est à combiner avec un gros boulot de photoshop.
On génère là aussi de la matière > puis photoshop pour assembler/composer/affiner > puis re vizcom pour affiner > puis photoshop pour finaliser.

J'ai passé 80% de mon temps dans le mode "Refine" qui donne du photo realisme.
Sert particulièrement pour les personnages, leur colorisation, les vêtements (superbes drapés!!).
Génial pour explorer plein de variantes en donnant plus ou moins de liberté à l'IA.
Beaucoup moins fort pour les décors/paysages... que j'ai du coup tenté d'envoyer dans :

MAGNIFIC.AI
image to image.
je suis mitigé. Des résultat inégaux selon les sujets.
Bof pour les personnages.
Très efficaces pour les décors.
Par contre là on est vraiment plus dans l'amélioration d'une image plutôt qu'une création.
Au final quelques jolis résultats mais tres franchement bien trop cher pour ce que c'est.

LEONARDO
J'ai donc tenté Léonardo (au lieu de repartir sur MidJourney) que je n'avais pas encore testé pour essayer d'améliorer les résultats de Vizcom  pour moins cher que Magnific.ai.
Le résultat est vraiment pas mal.
Là ou on sent que la database de Vizcom est tres "asiatique" et "moderne", Léonardo ramène un traitement plus Occidental et moins marqué par une temporalité moderne. Ce que je trouvais nécessaire pour mon projet qui s'inscrit en pleine WW2.

Aujourd'hui je suis donc dans un process de 70% Photoshop + 25% Vizcom + 5% Leonardo.
Cela me permet d'avoir un contrôle complet de mes personnages, leur pose, leur design,...avec un rendu au delà de mon niveau de digital painting.

 

image.png

  • J'aime 2

CHALLENGE #14 : WIP forum​​​​​​​ Participation 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis pas sur que c'était le bon endroit pour poster ça 😅   J'aurai peut etre du faire un post dédié à part vu l'orientation que prends ta démarche vers une IA encreuse!!

Mais je suis curieux de savoir si tu as essayé Vizcom?

Sur la base de ton croquis 

image.png.328f66a2e00ccc93c015c55d5ee417ef.png

un première passe de "rendering" donne ça

image.png.f3d7b40afd011128cbfa6e20e8512f95.png

et en  5 minutes d'inpainting pour rajouter l'eau et refine pour le realisme ça donne ça 

image.png.72bed3f10e8057b093cdbdf91aaf4053.png

 

Des bases intéressantes pour du paintover 🙂

 

 

 

  • J'aime 1

CHALLENGE #14 : WIP forum​​​​​​​ Participation 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello @3-1415 ! 

Y'a pas de soucis. C'est bien que tu partages ton expérience aussi que ce soit ici ou dans un autre sujet. :classic_biggrin: Comme ça je me sens pas toute seule à explorer les possibilités et les limites de cette techno. x)
En tout cas, je partage les mêmes exigences que toi : la pochette surprise du mode text to image ne me convient pas. Je veux aussi contrôler et contraindre l'IA avec mon idée, pas l'inverse. Dans tous les projets de ce niveau d'exigence, l'IA ne pourra servir, au mieux, que d'assistant pour accélérer/améliorer certaines tâches répétitives, mais c'est tout.

Pour te répondre, non, je n'ai pas testé Vizcom, tout simplement parce que je suis en train de développer un projet concurrent basé sur Stable Diffusion sous forme d'application à utiliser en local et que mes petits scripts Python le font déjà sans interface.

Voilà à quoi ça ressemble actuellement. Du Photoshop like en gros.

image.png.2284a5ee51b9d851465f71ef2e87b95a.png

Misère ! J'ai oublié de préciser que je voulais un mec...

J'ai envie d'être indépendante d'un service en ligne et de pouvoir disposer de la diversité de l'écosystème Stable Diffusion (modèles customisés/spécialisés plus adaptés à mon style ou au projet, fonctionnalités diverses, modes de contrôle divers). 

Il me reste à développer la possibilité de dessiner un croquis directement dedans (on peut déjà importer un croquis fait ailleurs), corriger quelques petits bugs à droite à gauche et surtout, sûrement le plus galère, rendre ça facile à installer pour le grand public afin de pouvoir distribuer une première version. 

Bref ! L'idée, c'est d'intégrer Stable Diffusion dans une appli qui ressemble vraiment à un logiciel de dessin et de ne pas embêter les utilisateurs avec un énième service/abonnement. 
Par contre, ça exigera une config assez costaude. Les modèles de Stable Diffusion réclament beaucoup de RAM et de VRAM. 

  • J'aime 2
  • Merci ! 1

TGCM Comics (Plateforme BD en cours de développement) : https://tgcm-comics.blogspot.com
Site : https://www.suiseipark.com
Discord : https://discord.gg/ZMyu2Ky 

"To boldly go where no man has gone before"

Partager ce message


Lien à poster
Partager sur d’autres sites

Impressionnant!!! 😮

Et alléchant!!! Un Vizcom avec l'écosystème stable diff derrière!!

En tout cas je suis à ta disposition si tu veux échanger, connaitre mon retour d'expe sur Vizcom (il y a bcp à dire...en tres bien et en moins bien comme l'ergonomie)...et pkoi pas tester quand tu auras besoin 😄

 

 

 

 

CHALLENGE #14 : WIP forum​​​​​​​ Participation 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Merci à toutes les 2 pour vos tests et vos retours sur vos projets. Bravo @Suiseipour tout ton travail de développement, c'est cool.

De mon côté, pas trop eu le temps de m'occuper de tout ça, et pour ce qui est ducodage, mon niveau est trop faible, mais je reste à l'écoute.

En particulier, ce que je recherche, c'est des générateurs d'images ou de textes gratuits qui ne nécessitent pas de se connecter, afin de pouvoir faire des essais avec des collègiens à mon boulot.

Personnellement, je trouve plus sympa de faire moi-même les choses, que ce soit le DP ou la 3D, même si c'est de moindre qualité. D'une part parce que le processus créatif et "manuelle" m'intéresse, mais aussi parce que je veux que ça soit ce que j'ai en tête et pas ce que la machine me propose. Donc le plus de contrôle possible, comme l'évoque @3-1415.

Là où l'IA peut vraiment être utile, c'est pour des parties moins créatives, comme l'encrage, effectivement, encore qu'il y a plusieurs façons d'encrer, ça reste très personnel, non ?

Si j'ai bien compris @Suisei, tes modèles sont des encrages que tu as réalisés toi-mêrme ?

Pour la 3D, ce serait plutôt des choses comme le rigging, sous Blender. Il ya déjà des outils, mais je ne crois pas que ce soit à base d'IA.

Modifié par Laurence Veron-Dor

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Créer...