L’explosion de la génération d’image par l’usage d’algorithme de diffusion, qu’ils s’agissent de Dall-e, Midjourney ou encore Stable diffusion, a soulevé des questionnements, notamment changement de paradigme dans l’élaboration d’images. En effet le langage devient l’interface, la sous couche nous permettant d’inférer (de générer) dans le modèle. Il devient l’équivalent du pinceau dans Photoshop. Le texte devient le geste.
Pour comprendre le fonctionnement de ces algorithmes, Il devient alors impératif de comprendre comment ceux-ci interprètent le texte. Ces modèles se base sur l’algorithme Clip d’Open AI ou d’autres déclinaisons, pour réinterpréter le texte — pour une phrase, un prompt, cet encodeur va tout d’abord décomposé le texte en portion de phrases puis va calculer un vecteur pour chacune de ces portions qui seront l’input pour la génération. Clip a été initialement créé chez OpenAi pour résoudre des problèmes de reconnaissance d’images. Les modèles de diffusion utilisent son composant d’encodage — qui produit des tokens depuis le texte en input, un découpage du texte pour le donner à l’algorithme. Puis il met en vecteur ces bouts de phrases, qui serviront d’input à la génération.
L’embedding — c’est à dire la mise en vecteur de terme pour une compréhension par les machines est un domaine antérieur à la création d’image par l’usage d’IA. Les algorithmes de word2vec, dérivés des premiers modèles developé par Mikolov chez Google en 2012, Le modèle calculait des vecteurs associés à chaque terme suivant leurs contextes dans des corpus d’entrainement. Si l’on se réfère au cours de linguistique générale de Ferdinand de Saussure, les modèles produisent des signes linguistiques : une association entre un signifiant — un terme, et un signifié — un vecteur. Ils produisent un outil de traduction entre notre langage naturelle et celui des machines. C’est une approche qui permet de passer d’un système mathématique discret à un système mathématique continue explique Yann LeCun[i] — les vecteurs induisent des données numériques quantifiable et comparable et les vecteurs de données similaires seront dans les mêmes champs lexicaux.
L’encodeur de Clip propose ainsi une déclinaison plus large avec une tokenisation en phrases et périphrases qui permet d’englober chaque terme dans un contexte. Cette tokenisation peut s’apparenter à ce que Saussure définit comme syntagme[ii] c’est-à-dire, « fondés sur le caractère linéaire de la langue [les termes] se rangent les uns à la suite des autres[iii] ». L’approche par syntagme permet ainsi de s’éloigner d’un traitement trop littéral “mot à mot” du Word2vec.
Cette mise en vecteur des termes produit la prompt adhenrence, ou l’adhérence au prompt. Il s’agit de la faculté de l’algorithme à produire une image proche des concepts énoncés dans le prompt. C’est une donnée plus ou moins mesurable, mais intimement lié à la computation des modèles. Ainsi les modèles Lightning ou turbo, par leurs générations rapides, auront tendance à s’éloigner de l’intitulé du prompt.
Les modèles XL, 1.5 et 2 utilise Clip pour la mise en vecteur de leurs prompt, mais leurs modèles contemporains comme Flux ou Stable 3 utilisent l’encodeur de T5 XXL développé par google. Ce modèle d’encodage est plus lourd, plus profond et produit des vecteurs embeddings plus large, environs 8 fois plus de données[iv]

L’expérimentation produite veut mettre en exergue cette génération. On produit dans un premier lieu une liste de prompts. Chaque prompt se découpe en plusieurs partie : le sujet, la lumière, les détails photographiques (— on reste sur des représentations photographiques), puis d’une part nous calculons l’embedding du prompt et de l’autre nous générons une image.
Ensuite, nous reprenons l’ensemble de embedding pour réduire leurs dimensions en utilisant un algorithme de PCA. Cet algorithme depuis l’ensemble des vecteurs en cherche l’essence — les composants principaux, pour construire une nouvelle représentation plus petite.
Depuis une réduction à deux dimensions nous pouvons ainsi cartographier les représentations : celles proches sur la carte sont ainsi proche en terme d’embedding et donc ont une sémantique proche pour le modèle génératif. On voit des clusters se former suivant les différentes thématiques, ce sont donc les sujets qui structurent l’espace.

Vous pouvez ainsi accéder à ces différentes cartographies, elles sont d’ordre expérimentales et donc pas spécialement optimisées. j’ai produit deux cartographies avec les modèles basés sur clip avec RealVisXL Lightning et JuggernaultXL. Puis j’ai produit une seconde cartographie en utilisant Flux dev v1. La répartition des visuels avec Flux — et donc l’encodeur T5 — parait ainsi plus chaotique, est-ce qu’il s’agit d’un trop grande simplification des vecteurs par notre volonté de représentation ou une erreur intrinsèque au code ?
Dans ces expérimentations, on se retrouve par une volonté de représentation à simplifier des données — Il y aurait peut-être d’autre façon d’avoir des comparatifs entre prompts par diverses méthodes déjà employé dans les domaines comme la matrice de distance, les similarité cosinus ou encore d’autres méthodes comparative.
Aussi la comparaison entre les deux encodeurs pourrait paraître trompeuse. L’adhérence au prompt, sa faculté à « comprendre » et reproduire ce que l’on lui écrit, n’est pas pousser dans ces retranchements : les prompts sont basique et très bien interprétés par les deux encodeurs, il faudrait pouvoir produire un système de creation de prompts plus complexe qui montrerait les limites de CLIP.
J’ai aussi publié les scripts nécessaire à l’élaboration de ces cartographies sur github.
[i] Informatique et sciences numériques – Leçon inaugurale, Collège de France, 4 février 2016
[ii] F. De Saussure, Cours de Linguistique Générale, Payot&Rivages, s. l., 2016, p. 231
[iii] Ibid., p. 230
[iv] Clip encode ses embedding en 512 dimensions et T5 XXL en 4096 dimensions