Par Michelange Baudoux sémanticien et blogueur le 27 Janvier 2023
Cet article est le troisième chapitre de la série “La geekosphère aveuglée par les artifices de l’IA”
Au cours de l’année 2022, les internautes ont pu voir arriver dans leurs flux de nouvelles des articles extrêmement enthousiastes à propos des synthétiseurs d’image par diffusion de bruit. Il s’agissait de réseaux de neurones d’un nouveau genre, proposés gratuitement à l’essai : d’abord Dall-E, (produit par OpenAI, la société derrière Chat GPT), puis, entre autres Stable Diffusion et Midjourney, pour citer les plus populaires.
Si vous n’avez pas encore eu l’occasion de prendre en main l’un de ces étonnants systèmes, ce serait une bonne chose d’y consacrer une heure ou deux avant de poursuivre votre lecture - vous pouvez éventuellement consulter pour ce faire mon petit guide pratique sur le sujet, qui a l’ambition de vous mettre le pied à l’étrier en quelques minutes :
Techniquement on parle de “modèles text-to-image”, et plus particulièrement de “modèles de diffusion”. Comme il n’y a pas encore vraiment d’expression française consacrée, on emploiera ici de manière interchangeable “IA d’image”, “synthétiseur d’image” et “images par diffusion” pour désigner cette classe de systèmes.
Le principe est le suivant:
- D’abord, on rassemble un corpus : on récolte sur Internet une quantité impressionnante (quelques milliards) d’images légendées.
- Ensuite, on entraîne un réseau de neurones sur ce corpus : chaque légende est représentée de manière abstraite sous la forme d’un état d’équilibre du modèle d’IA linguistique ( un système comme par exemple GPT-3, le réseau neuronal qu’on trouve au coeur de GPTChat, l’outil dont nous avons longuement parlé au chapitre 2). Cet état est associée avec un autre état d’équilibre représentant l’image décrite par la légende.
- Enfin, on utilise le réseau pour générer des images. L’utilisateur fournit une phrase quelconque (appelée “prompt”) et le réseau de neurones réagit de manière à répondre par une nouvelle image, synthétisée en direct à partir de fragments des images du corpus d’origine dont les légende présentent, selon l’IA linguistiqque, les meilleures correspondances avec le prompt.
Pour plus de détails, et des précisions sur le rôle joué par la diffusion de bruit, consultez le petit guide précité.
Maintenant, observez attentivement toutes les illustrations ci-dessous (et celles des autres chapitres de la série) en vous figurant bien, si vous ne vous en doutiez pas déjà, qu’elles ont été générées en un coup de clic à l’aide de l’une des IA précitéezs, à partir d’un simple texte de quelques lignes (”prompt”).
En effet, ces images amusantes, dépressives ou évocatrices, leurs couleurs fades ou brillantes, leurs compositions, textures, et jusqu’aux moindres de leurs détails, ont été créés avec le synthétiseur d’image la plus convivial et le plus populaire du moment : Midjourney.
Mais tout n’est pas rose au royaume de la synthèse : tout comme les textes de ChatGPT, les images synthétisées sont subtilement idiotes. Regardez encore une fois les illustrations proposées dans cet article. Elles sont truffées d’erreurs grossières (les légendes des illustrations sont d’ailleurs là pour vous mettre sur la piste) : partout, on voit des mains avec un nombre absurde de doigts, des membres incohérents, des bras de robot qui n’ont pas de sens, il y en a même un chat dont la queue est figurée par un tuyau. A première vue, rien ne saute aux yeux, mais à y regarder de plus près, on se croirait dans un rêve déviant signé Salvador… Dali.
Il a fallu au moins vingt essais pour produire chacune de nos illustrations : à chaque itération, comptez d’abord une ou deux minutes pour recevoir les résultats, ensuite un peu de travail pour relancer la machine en ajustant plus ou moins finement le texte du prompt, et finalement générer des essais en masse dans l’espoir d’obtenir un résultat pas trop biscornu (contre-exemples ci-contre) qui corresponde un tant soit peu au projet initial. Au bout du compte, produire une seule bonne images avec un service premium en ligne peut prendre plusieurs heures.
A ce tarif là, on se prend à rêver de savoir simplement utiliser un crayon et Photoshop…
Ici encore, la clé du problème tient aux caractéristiques fondamentales des IA d’image, qui se contentent par définition de synthétiser leurs résultats à partir de fragments du corpus, sélectionnés pour leur conformité avec votre prompt. Ces IA ne comprennent véritablement ni vos mots, ni le sens des résultats qu’elles vous proposent. Contrairement à vous et moi, et tout-à-fait comme ChatGPT, les synthés d’image ne construisent pas de représentation (de modèle) de la réalité indiquée par les mots que vous injectez, et ils ne disposent pas non plus de l’imaginaire conceptuel sous-jacent aux images qu’elles assemblent.
Ici comme avec ChatGPT, on a affaire à des « perroquets stochastiques » : leurs apparentes connaissances ne proviennent que de régularités statistiques qui préexistent dans leurs données d'entraînement.
Dessiner au vogelpik, sans modèle visuo-spatial
Dans l’image ci-dessus, comme dans la plupart des illustrations de cette série d’articles, les erreurs de modélisation passent d’abord inaperçues, parce que l’image propose un récit captivant et reste suffisamment cohérente dans son ensemble pour ne pas trop susciter l'incrédulité. Cependant, si on observe un tout petit peu la structure dorée dans laquelle est imbriqué le personnage, on ressent vite qu’elle n’est pas réalisable en trois dimensions. Cette structure trahit l’absence de modélisation spatiale dans le processus de synthèse. Même chose pour la lumière qui n’est pas vraiment raccord (par exemple à gauche de l’image, entre le châssis en bois et le visage juste à côté).
Et encore, avec les mêmes paramètres d’entrée, il était possible d’obtenir un résultat bien moins vraisemblable encore. Lumières, espace, personnages : l’image ci-dessous affiche de manière obscène l’absence de modèle spatial sous-jacent, comme chez les peintres surréalistes :
Voici enfin une image quasi parfaite - les erreurs, bien que très marginales, trahissent cependant toujours l’origine synthétique de l’image. C’est le genre de résultat qu’on obtient parfois, après une bonne dizaine d’itérations d’ajustement des paramètres et quelques itérations supplémentaires pour augmenter ses chances de faire mouche :
Ainsi, à force de persévérance, on peut obtenir un résultat de qualité, mais il y a aura toujours un facteur chance. Et on n’obtiendra que de manière extrêmement rare le résultat imaginé au début du processus. Au cas où vous seriez curieux, le prompt original se trouve sous l’image. On notera que ce prompt a été utilisé pour générer les trois exemples, et que les deux dernières images sont une variante de la première (la première a été réinjectée avec le prompt) ce qui donne une parenté de composition à la série.
De l’une à l’autre de ces trois versions, on n’a vraiment pas le même Léonard. En effet, à prompt équivalent, d’une itération à la suivante :
- Le personnage n’a pas deux fois le même visage.
- L’espace, la lumière, les textures et les objets sont différents.
- La disposition de la scène et le cadrage varient de manière difficilement contrôlable.
Cette inconstance, toujours dûe au même défaut de modélisation, est une limite commune à tous les systèmes actuels, et constitue un obstacle majeur à la production de séries cohérentes, qui permettraient par exemple d’illustrer des récits.
Notez que ce dernier résultat pour Léonard ne correspond pas à “house of mirrors” (palais des glaces), tel que demandé dans le prompt. Il faudrait pour y satisfaire ajuster le prompt et continuer à itérer, et donc renoncer définitivement à exploiter la version retenue, bien qu’elle soit exceptionnellement belle et cohérente.
Une galerie de styles orphelins et stériles
Relancer une itération, c’est renoncer non seulement au contenu de votre belle image mais aussi à son style. La nature nécessairement stochastique de la synthèse ne peut garantir qu’on retrouvera, lors d’une quelconque itération à venir, la même qualité de lumière, la délicate texture du bois, la composition bien centrée, le cadrage parfait du protagoniste… Plus exactement, elle garantit l’inverse : à moins d’un coup de bol, votre image est sans descendance, incapable d’évoluer de manière contrôlée, elle est à prendre ou à laisser telle quelle.
A prompt égal, d’une itération à l’autre, vous obtiendrez en général de nettes différences dans :
- L’harmonie des tons.
- L’équilibre de la composition.
- Le rendu (le grain, la touche, le modelé, le clair-obscur, la profondeur de champ…)
- L’atmosphère.
Et souvent, comme ci-dessous, on retrouve ces différences entre les productions de la même itération, dès lors inutilisables ensemble au sein de la même série :
Tout comme vous pouvez chipoter tous les boutons d’un un synthé audio et modifier le son qui en sort, il vous est possible de régler tous les paramètres d’un synthétiseur d’images et de modifier les images résultantes. La première grande différence, c’est qu’on modifie le son d’un synthé en temps réel, alors qu’avant de pouvoir observer l’effet des contrôles d’image il est conseillé de s’armer de patience, et de beaucoup de café. La seconde grande différence, c’est qu’avec un synthé audio, le long travail de mise au point d’un son permet de jouer plusieurs notes, plusieurs phrases, plusieurs morceaux… Alors qu’avec la synthèse d’image, on a beaucoup de chance si on obtient trois ou quatre images qui prennent du sens ensemble.
Créer une belle image qui tient la route n’est pas impossible, mais exige du temps et des efforts. En créer une seconde qui fait pièce à la première, demandera deux fois plus de temps et d’efforts, et la difficulté augmente exponentiellement avec chaque nouvelle image. On l’a compris, le combat est perdu d’avance : la génération de séries cohérentes, Nirvana du bricoleur neuronal, n’existe pas !
Des remèdes ou des palliatifs?
Examinons dans quelle mesure les paramètres de contrôle permettent de réduire, voire de gommer, ces problèmes de cohérence. Parce qu’il est open source, c’est Stable Diffusion qui est le plus explicite quant aux possibilités offertes, et ce projet publie sur Github, avec son code, la description fouillée des contrôles disponibles. Ci-dessous un florilège des principales options, valables pour tous les synthétiseurs d’image.
- Affinage du prompt
Le prompt est le petit bout de texte que vous injectez dans le synthétiseur, avec l’espoir qu’il donnera le résultat que vous avez en tête. Le prompt de l’image ci-dessus était :
“Mona Lisa and Frankenstein”, in the style of Leonardo da Vinci
Les synthétiseurs d’image travaillant sur base d’un corpus d’images légendées, ils ne distinguent plus ou moins forme du contenu, dans dans la mesure où les légendes des images de leur corpus établissent déjà cette distinction. Vous pouvez dès lors essayer d’appliquer à une image x n’importe quel style y, et, parfois, y parvenir. Voici une tentative de “Mona Lisa and Frankenstein”, in the style of Andy Warhol :
Suivant l’idée d’exploiter les détails des légendes pour orienter la génération, on peut spécifier en langage courant toutes les dimensions artistiques (technique, format, artiste, courant, genre…), photographiques (cadrage, pellicule, modèle d’appareil, lentilles, éclairage..), ou même directement esthétiques (effets, ambiance, composition, niveau de détails…) En langage courant, et donc les possibilités sont infinies, les guides et livres de recettes fleurissent un peu partout :
On trouve même de très amusants générateurs de prompts, qui vous permettent de combiner un nombre impressionnant de dimensions pour composer vos instructions de synthèse :
Mais les prompts élaborés, qui offrent la perspective de contrôler la synthèse, ne font malheureusement que l’orienter vers un certain domaine dans l’ensemble des possibles. Ils ne pallient pas les problèmes cités plus haut : d’une image à l’autre, le contenu comme le style restent trop peu cohérents pour permettre une exploitation professionnelle. On se perd dans le dédale des possibilités, alors qu’aucune n’offre de réelle solution.
- Inpainting et outpainting
L’inpainting consiste à fournir à l’IA une image dont on a préalablement effacé une partie, avec un prompt contenant les instructions pour la remplir.
Comme j’ai pu m’en rendre compte avec SD Studio et avec Dall-e, à condition d'être raisonnable dans la proportion de surface d'image qu’on repeint, ça marche plutôt bien, Ca s’utilise facilement et c’est remarquablement efficace pour corriger les erreurs typiques de la synthèse d’image comme les mains absurdes, les entrelacs sans logique, et les membres en trop. Pour ce type de problèmes, ça prend beaucoup moins de temps que d'attendre que l’IA génère une bonne image du premier coup.
Quelques conseils : ne pas essayer de corriger une image déjà trop ratée au départ, corriger un seul défaut à la fois, adapter le prompt au contenu spécifique de la zone à corriger, sans modifier les instructions de style.
Mais point trop n’en faut : si on apporte à son image trop de modifications successives, elle perd de sa fraîcheur esthétique, et commence à ressembler à un Frankenstein. On s’en rendra compte devant cet exemple fameux, où le décor ajouté avec Dall-e ne fonctionne pas vraiment avec le Vermeer original : perspective, lumière et style, tout s’est déglingué au fur et à mesure des itérations :
- Overpainting et hybridation
L’overpainting permet d’introduire une image comme source d’inspiration pour la génération :
Ce type de fonction de rendu a probablement un beau potentiel au sein de la panoplie déjà existante d’outils de traitement d’image, quelque part entre les filtres et les effets.
On peut également utiliser une esquisse schématique (ou un dessin d’enfant…) pour orienter la composition (image générée par Axel Fossier avec Midjourney) :
On peut peut aussi introduire plusieurs images, de manière à en obtenir un hybride plus ou moins heureux :
Ici encore, il faudra procéder avec de nombreuses itérations, pour un résultat qui demeure imprécis (observez bien les détails : la barbe de Kublai Khan, les mains du motocycliste…) et qui dévie un peu plus à chaque génération.
- Injection d’objets et de styles
Module complémentaire de Stable Diffusion, Textual Inversion permet de former une petite partie du réseau de neurones sur vos propres images et d'utiliser les résultats lors de la synthèse. L’injection d’objets est rapidement devenue populaire, d’autant qu’elle supporte l’injection de selfies.
Las, comme dans le cas des prompts affinés, l’injection ne fait qu’orienter la génération vers une certain domaine dans l’ensemble des images possibles, le hasard reste roi. D’une génération à l’autre, le contenu comme la forme restent trop incohérents pour permettre une exploitation professionnelle. Au demeurant, l’injection de style est assez divertissante, comme en atteste cette sélection de ”<moe-bius> style Mona Lisa”, générée avec l’interface Conceptualizer dans Stable Diffusion (cliquer pour agrandir) :
Chez Midjourney, on approche la question en bridant certains paramètres de la génération, et en proposant des styles tout faits, dont la vocation explicite est de servir telle ou telle clique de fans de telle ou telle série populaire. Ainsi le style “niji”, orienté vers le style graphique des mangas et des animes Japonais :
Ici non plus, on ne peut pas encore vraiment parler de maîtrise stylistique…
On le constate, depuis l’affinage du prompt jusqu’à l’injection de style, les différents outils proposés ne sont nullement une solution au problème posé en début de chapitre, à savoir celui du contrôle du contenu et du style à travers une série d’images générées. Offrant l’illusion de la maîtrise, ces outils sont juste des palliatifs aux limites intrinsèques de ces systèmes, ils ne font qu’ajouter un niveau de fausses solutions au problème de base.
Sur les chaînes Youtube de Jackass ou de Vilbrequin, on fonce en skateboard à travers des murs de gyproc, on se lance à 120 km/h en voiture sur un casse vitesse. On obtient ainsi des résultats presque aussi spectaculaires qu’en synthèse d’image, et, à peu de choses près, du même degré de précision.
Dans une spirale de buzz infernale, les synthgraphers.
Sur Facebook, sur Instagram, ou sur Github, telles ou telles images particulièrement bien réussies, somptueusement professionnelles, laissent croire que leurs auteurs maîtrisent la génération. Mais la dure réalité, c’est que personne ne se vante d’avoir trimé des nuits en vain à la poursuite d’un but initial, pour finir par ramasser, au hasard de la synthèse, quelques visuels alléchants qui, une fois mis ensemble, donnent à penser qu’ils reflètent une intention profonde et délibérée de leur créateur. Affiché partout sur le web, ce succès manifeste semble accessible, à portée de click. Alors, on se lance.
Essayant de contrôler le chaos de la synthèse, les geeks immolent leur temps libre sur les autels de Dall-e, Midjourney, Stable Diffusion, dont ils prennent et puis résilient de multiples abonnements. Secrètement, ils envisagent de louer un cloud ou de monter un serveur pour installer leur système personnel. En suivant les vestiges abandonnés derrière eux par les naufragés qui les précèdent, ils sombrent dans la funeste spirale des instruments palliatifs, aussi pitoyablement inefficaces que terriblement séduisants, avalant des kilomètres de documentation, testant une à une les facettes absurdement innombrables de tel générateur de prompt. Avec chaque nouvelle option, ils pensent réaliser du gain à la marge, en qualité et en contrôle, et s’investissent d’autant plus, tandis que les annonces des fabricants et les articles prometteurs, parfois publiés dans des médias de renom, les encouragent dans leur biais de confirmation. Errant de nouveau plug-in en nouvelle version, les internautes sont engloutis dans un labyrinthe qui s’alimente de leur propre buzz. Egarés, ils se sont donnés eux-mêmes un nom : “synthgraphers”.
Persuadés par le Zeitgeist que la tech est toujours capable de dépasser ses propres limites à coup de progrès incrémentiels, assoiffés d’utopie numérique, les Internautes s’engouffrent tambour battant dans le trou noir attentionnel du siècle. Dans l’ombre de leurs nuits sans sommeil, ils se félicitent de participer à la marche du monde, certains, puisque qu’on leur en parle partout, de l’avenir glorieux qui nous attend.
Pas plus tard qu’hier, je lisais cet intéressant commentaire sur le groupe Facebook officiel de Midjourney.
Three days ago I decided to give AI a chance. I am a graphic designer and marketing director so the thought scared me and also inspired me. I have done web coding and this feels a little like that, trying to unlock a secret code of words to find results. So many of you are doing awesome things and people outside the bubble think that this is "easy". Friends, it is not. It's very time consuming to perfect an image or a thought that is inside your head and use a series of words for a computer to respond. Keep doing great things! The world will catch up!!
Mal barré, le synthgrapher qui considère la cause de ses échecs répétés comme la raison même de persévérer, et que le reste du monde finira par comprendre. Faut vraiment être créatif ! Rassurez-vous il finira par lâcher prise : la réalité a toujours le dernier mot.
En guise de synthèse… ou pas
Les internautes “informés” entretiennent l’illusion qu’on verra bientôt le chaos inhérent à la synthèse d’image se transformer en un univers cohérent et prédictible. Ils contribuent à la perpétuation de l’incroyable buzz qu’on observe autour des solutions actuelles, solutions dont on a démontré la déficience irréductible. Or, pour bien compliquer le tableau et bien renforcer l’illusion de progrès dans lesquelles s’enferment les synthgraphers, il y a quelques belles applications, des “corner cases” moins ambitieux, pour lesquels la synthèse d’image est en train de prouver sa pertinence.
Pour commencer, quelques plug-ins pour Photoshop sont déjà disponibles pour l’inpainting et l’overpainting.
Ensuite, les synthés d’image peuvent facilement fournir certaines des photographies et illustrations qu’on trouve en banque d’image - ce secteur-là, selon toute vraisemblance, doit avoir le feu quelque part.
Par ailleurs, les IA produisent avec la même facilité des choses dont jusque-là on ne disposait pas du tout : des pastiches et des imitations. Stable Diffusion 1 reste le moins mauvais pour imiter des peintres comme Botticelli, Ingres, Monet, Hopper ou encore Hiroshige.
Et Midjourney fait très bien tout ce qui ressemble à une illustration issue de genres populaires tels que SF, heroïc fantasy, jeux videos, manga, cyberpunk, etc. Il fait aussi pas trop mal les Jocondes, du moins j’espère que vous en êtes désormais persuadés.
En outre, vous pourrez générer vous-même vos illustrations conceptuelles, comme je l’ai fait pour cet article. Du moins si vous n’êtes pas trop précis sur les contraintes de contenu, et si la cohérence stylistique entre images peut rester superficielle (attention, si vous êtes le genre de casse-pieds qui préfère les mains à cinq doigts, et qui souhaite quand même débarrasser ses visuels de leurs erreurs triviales, vous aurez besoin de l’aide d’un graphiste pour effectuer les corrections.) Il me faut à présent bien l’admettre : je me suis vraiment amusé (et beaucoup fatigué…) à produire avec Midjourney les illustrations destinées à cette série d’articles. Mais je suis également très content d’avoir trouvé un sujet pour lequel les erreurs consubstantielles à la synthèse d’image sont souhaitables…
Finalement, dans certains domaines, le délire et la dérive sont souvent ce qu’il y a de mieux, parce qu’ils permettent d’obtenir des résultats qu’on ne pourra jamais atteindre en employant des recettes bien connues et des processus contrôlés. Génération et hybridation ayant parfois des résultats heureux, on doit s’attendre à voir les synthétiseurs d’image s’implanter durablement chez les créatifs de tous poils, art directors, concepteurs publicitaires, game designers, et même designers tout court.