L'Art doit-il être difficile? Et a quel point?

Il y a quelques semaines, une nouvelle forme d'art-IA est apparue sur Reddit et a rapidement inondé tous les réseaux sociaux. Un intense débat s’est alors ouvert sur la question de savoir si les images générées par l’IA peuvent être considérées comme de l’art. Ne suffit-il pas que le public ne puisse s’empêcher de les regarder ou qu’il en commente les moindres détails ? Probablement pas, puisque c'est fréquent pour des paysages que personne ne qualifie d’art pour autant. L'art ne concerne jamais un sujet, qu'il s'agisse d'une personne ou d'un paysage. L'art consiste à capturer de la beauté et à la rejeter au visage du public. Que cela soit agréable pour celui qui produit ou pour celui qui reçoit semble optionnel. Mais un véritable processus créatif est nécessaire.

Mais où fixer la limite ? Si la recette se limitait à une liste de mots-clés et un clic, le compte n’y serait certainement pas. La seule façon de le savoir semblait d’essayer nous-mêmes, et c’est précisément ce que nous avons fait.

Artiste : Ugleh

Lorsqu’on se lance dans cette aventure, on découvre rapidement que l’outil nécessaire n’est pas fourni clé-en-main. Il faut l’assembler. Et comme pour une cuisine IKEA, ce n’est jamais aussi simple que ça en a l’air si c’est votre première fois.

Il existe deux blocs principaux dans la structure, Stable Diffusion et ControlNet. Et pour chacun d'eux, vous pouvez choisir des pièces pour façonner votre générateur selon vos attentes.

Stable Diffusion

Stable Diffusion est une suite de modèles permettant de générer des images à l'aide d'une technique appelée diffusion. En termes extrêmement simplifiés, la diffusion consiste à prendre une base constituée de pixels quasi-aléatoires et à en affiner les détails à chaque étape. Cette technique sous-tend également les modèles DALL-E d’OpenAi. Mais ceux de Stable Diffusion sont très différents : il ont été développés conjointement par l'Université Ludwig Maximilian de Munich et la startup Runway en 2022 et ont été immédiatement mis à disposition en open-source alors que les modèles d’OpenAi ne sont accessibles que par API. L'open source signifie que de nombreux modèles sont directement dérivés de Stable Diffusion, à un point tel qu’il est parfois difficile de savoir qui doit être crédité et de quoi. Certains des services d'IA générative les plus connus aujourd'hui sont basés sur la Stable Diffusion, dont l'emblématique Midjourney pour l'art-IA.

Midjourney est un service que nous utilisons beaucoup pour PITTI (les couvertures de la plupart des articles et blogs que nous écrivons sur ce site ont été réalisées avec Midjourney) mais pour ce projet, nous avons dû revenir aux bases. Certes, pas les bases les plus basiques puisque nous avons utilisé une interface utilisateur, mais il s’agissait tout de même de télécharger les modèles bruts de Stable Diffusion à partir de HuggingFace et d’y passer quelques prompts. Tout cela peut se faire en local avec un appareil suffisamment puissant (pour nous, un Macbook Pro M2 Pro 16 Go) et nous avons utilisé l'interface utilisateur Automatic1111. Sans interface utilisateur, vous devez mémoriser tous les paramètres possibles, et écrire manuellement les valeurs de ceux que vous souhaitez utiliser.

De plus, les prompts n'impliquent pas seulement ce que vous voulez représenter (positive prompts) mais aussi ce que vous ne voulez pas voir (negative prompts, en ajoutant des multiplicateurs pour signifier ce que vous ne voulez vraiment pas voir). C’est nécessaire pour éviter que le modèle ne parte dans de mystérieux délires. Et malgré ces précautions, les résultats semblent parfois complètement aléatoires.

Dans l'ensemble, l'expérience utilisateur est épouvantable, et le premier enseignement que nous avons tiré n'a absolument aucun rapport avec l'objectif initial de l'expérience : un énorme respect est dû à Midjourney. Tant pour leur finetuning que pour l’expérience utilisateur : malgré quelques frustrations dues à la modération, leurs modèles sont relativement fiables et beaucoup plus simples à utiliser. Les résultats de Midjourney sont d’une qualité incomparable a ceux des mêmes prompts dans un modèle brut de Stable Diffusion. Et Midjourney est rapide. Enfin, l'un des avantages de Discord, que Midjourney utilise comme interface utilisateur, est le flux constant de prompts d'utilisateurs avec les images résultantes. Cela facilite beaucoup l'apprentissage des astuces pour obtenir le résultat souhaité, ou simplement pour trouver de l'inspiration. Acquérir ces connaissances pour Stable Diffusion nécessite de passer des heures sur Reddit, sans ne jamais savoir si les chefs-d'œuvre publiés ont été précédés de 25, 100 ou 1000 tentatives non concluantes.

Nous vous épargnerons ici tous nos échecs, croyez-nous sur parole lorsque nous disons que la courbe d'apprentissage n’a rien d’une pente douce. Il semble improbable que quiconque puisse totalement apprivoiser les modèles bruts grâce aux prompts, tout au mieux pouvez-vous augmenter la fréquence des résultats se rapprochant de ce que vous souhaitiez. Une fois que vous êtes “chanceux” suffisamment souvent, vous pouvez considérer que votre machine de fusion-génération dispose d’un moteur fonctionnel. Vous pouvez alors vous concentrer sur le volant, ControlNet.

ControlNet

ControlNet est un autre type de modèle, complémentaire de Stable Diffusion. Il pilote le processus de diffusion, le forçant à prendre certaines formes. Les formes peuvent être une pose corporelle, les bordures d'un objet ou même des positions dans la profondeur du champ. Nous n'allons pas prétendre pouvoir expliquer pourquoi cela fonctionne ; nous nous sommes simplement concentrés sur la façon de le faire fonctionner, ce qui est plutot bien expliqué ici si vous voulez apprendre.

Comme pour les modèles de Stable Diffusion, il existe de nombreux modèles ControlNet. Cet écosystème est très compliqué et, pour être franc, assez inquiétant parfois : si vous gardez un œil sur le terminal pendant l'exécution du modèle, vous verrez peut-être que l'activation d'un paramètre peut déclencher le chargement d'un autre modèle depuis un espace GitHub tiers… Nous avons pensé qu'il était important de partager cet avertissement dans le cadre de cet article, même si cela ne nous a pas dissuadé d'approfondir les aspects pratiques qui permettent ces spirales si fascinantes.

Un modèle ControlNet particulier est utilisé pour obtenir cet effet : QR Code Monster de Monster Labs. Nous avions découvert ce modèle pour la première fois en mai (mentionné ici) lorsque des Redditors ont commencé à partager des QR codes « créatifs ». Depuis, les utilisateurs ont réalisé qu'ils pouvaient faire bien plus que des QR codes.

Au-delà de la dimension esthétique des formes géométriques, l'effet de fusion nous semblait extrêmement prometteur pour le branding, le marketing et la communication. Cette intuition s'est rapidement confirmée lorsque nous avons cherché sur Reddit des astuces pour mieux contrôler Stable Diffusion et ControlNet.

QR Code de Monster Labs sur HuggingFace

Ci-dessous une sélection d'œuvres de dobbieandrew sur Reddit.

dobbieandrew on Reddit
dobbieandrew on Reddit
dobbieandrew on Reddit
dobbieandrew on Reddit
dobbieandrew on Reddit
dobbieandrew on Reddit

À ce stade, nous avions une bonne compréhension de l'outil capable de transformer des idées en chefs-d'œuvre. Et nous avions une vision qui était validée par des personnes ayant réellement du talent. Nous étions si proches et pourtant si loin du but…

Ce que nous avons fait

Pour nos premières expériences avec Stable Diffusion, nous avons utilisé SDXL, le dernier modèle sorti par StabilityAi. Cependant, ControlNet n'est pas compatible avec SDXL (au moment de la rédaction de cet article). Nous avons donc utilisé ControlNet avec Stable Diffusion v1.5 et des dérivés de cette version. À chaque fois, nous avons utilisé des modèles SD avec safetensors.

Ce que nous avons appris, parfois dans la douleur:

  • Vous n'avez pas besoin d'apprendre la photographie, mais si vous souhaitez vous rapprocher d'un résultat crédible, vous devez apprendre certains termes techniques importants dans ce domaine afin de pouvoir décrire dans votre prompt un type de prise de vue, un angle, une profondeur de champ...
  • Parfois, le modèle de Stable Diffusion a besoin d'aide pour générer des images conformément aux instructions de ControlNet. Lorsque nous avons utilisé des prompts pour générer des images sur le thème du sport, le modèle a facilement identifié que les membres pouvaient être utilisés pour représenter les bords de nos formes. De même, dans une forêt, le modèle utilise les arbres de manière appropriée. Mais dans des cas moins évidents, des mots clés comme "lumière diffuse", "ombres", "pluie", "vapeur", "reflet dans les fenêtres"... semblaient aider.
  • L’upscaler n'a pas vraiment aidé et c’est un euphémisme. Sans jamais comprendre pourquoi, nous avons rencontré beaucoup de difficultés jusqu'à ce que nous le désactivions : la génération prenait sensiblement plus de temps et le rendu était moins bon.
  • Utilisez batch size = 1 et batch count = 1 pendant que vous effectuez des tests avec vos prompts. Une fois que vous obtenez un résultat satisfaisant et que vous pensez qu'il ne s'agit plus que d'une question de réglage des paramètres, passez à batch count = 4. Cela générera 4 images parmi lesquelles choisir.
  • L’image que vous utilisez dans ControlNet aura soit un arrière-plan blanc, soit un arrière-plan noir. Vous pouvez « inverser » ceci en sélectionnant le préprocesseur de modèle ControlNet approprié, soit « none » ou « invert (from white bg & black line)». Essayez d'imaginer le résultat que vous souhaitez obtenir pour prendre votre décision. Par exemple, si vous imaginez votre forme comme une ombre (relativement plus sombre que le reste de l'image), vous devez sélectionner le préprocesseur qui rend l'arrière-plan blanc et la forme noire.
  • Le facteur le plus important est le poids, control weight, compris entre 0 et 2. Si vous en choisissez 2, vous obtiendrez ni plus ni moins que votre forme dans une couleur ou texture différente. Trouver le bon poids nécessite souvent de nombreux essais et, d'après notre expérience, le niveau approprié se situe toujours entre 0,6 et 1,4. Si la forme souhaitée est sombre, vous avez généralement besoin d'un poids inférieur à celui d'une forme claire.
  • Nous arrêtions généralement le guidage, ending control step, avant la fin (entre 0,5 et 0,7). Sans vraiment savoir pourquoi.
  • Si vous souhaitez modifier l'image à l'aide de l'inpainting, ne le faites pas directement à partir du résultat. Allez dans l'onglet img2img et re-téléchargez le résultat à partir de là.

Au final, rien n'a été aussi amusant qu’anticipé. Le processus est extrêmement frustrant car moins de 10% des images générées sont à peu près acceptables. On obtient souvent un résultat si loin de l'idée de départ qu'il ne s'agit pas de peaufiner le prompt, il faut repartir de zéro. Et si vous travaillez en local sur un Macbook, chaque génération peut prendre plusieurs minutes. À aucun moment de nos expérimentations nous n’avons eu le sentiment d’être aux commandes, cela relevait bien plus de l’espoir que “ca sorte bien” que du “libre cours à la créativité”. Nous n'avons peut-être pas utilisé le bon modèle de Stable Diffusion, nous pourrions probablement améliorer notre taux de réussite avec un LORA, mais la conclusion générale est qu'il n'y a rien de trivial dans le processus créatif qui sous-tend ces créations. Il semble bien plus probable d’abandonner après 100 tentatives plutôt que de réaliser quelque chose d'exceptionnel par hasard.

Il est clair que la quantité de patience et de passion nécessaire pour générer un chef-d’œuvre est incroyablement élevée. Cela ne suffira probablement pas à convaincre tout le monde qu'il s'agit d'art, mais nos expérimentations ont changé la façon dont nous regardons les créations partagées sur les réseaux sociaux : nous recherchions autrefois les imperfections indiquant qu'elles ont été réalisées par l'IA, nous sommes désormais en admiration devant certains petits détails parfaits.

Sports
Nebuleuse
Jungle
Finance
Chip
Sports - Control Weight : 2
We care about your privacy so we do not store nor use any cookie unless it is stricly necessary to make the website to work
Got it
Learn more