Vision par ordinateurIA générativeApprendre l'IAIngénierie IAVision par ordinateurIA générativeApprendre l'IA
Vision par ordinateur6 min de lecture

Guider Stable Diffusion avec vos images

Personnaliser la génération de texte en image avec l’inversion textuelle. Si vous ne connaissez pas encore ce modèle, commencez par mon article sur pause.

Guider Stable Diffusion avec vos images
Sommaire

Les modèles de texte en image comme DALLE ou Stable Diffusion sont vraiment cool et nous permettent de générer des images extraordinaires avec un simple input textuel. Mais ne serait-ce pas encore plus cool de leur donner une photo de vous et de leur demander de la transformer en peinture ? Imaginez pouvoir envoyer n’importe quelle image d’un objet, d’une personne ou même de votre chat, puis demander au modèle de la transformer dans un autre style, comme vous transformer en cyborg ou dans votre style artistique préféré, ou encore vous ajouter à une nouvelle scène.

Exemple visuel tiré de Guider Stable Diffusion avec vos images

En gros, ce serait génial d’avoir une version de DALLE capable de photoshoper nos images au lieu de produire des générations aléatoires. Un DALLE personnalisé qui rendrait la génération beaucoup plus simple à contrôler, puisque « une image vaut mille mots ». Ce serait comme avoir un modèle DALLE aussi personnalisé et addictif que l’algorithme de TikTok.

Eh bien, c’est précisément ce sur quoi des chercheurs de l’Université de Tel-Aviv et de NVIDIA ont travaillé. Ils ont développé une approche pour conditionner les modèles de texte en image, comme Stable Diffusion que j’ai présenté la semaine dernière, avec quelques images afin de représenter n’importe quel objet ou concept au moyen des mots que vous enverrez avec vos images. Elle transforme l’objet de vos images d’input en tout ce que vous voulez.

Exemple visuel tiré de Guider Stable Diffusion avec vos images

Exemples tirés de l’article.

Bien sûr, les résultats demandent encore du travail, mais il s’agit seulement du premier article à s’attaquer à une tâche aussi extraordinaire, qui pourrait révolutionner l’industrie du design. Comme le dirait un fantastique collègue YouTuber : imaginez seulement les résultats après deux autres articles.

Alors, comment pouvons-nous prendre une poignée de photos d’un objet et générer une nouvelle image à partir d’un input conditionné par du texte afin d’ajouter les détails de style ou de transformation ?

Pour répondre à cette question complexe, regardons ce que Rinon Gal et son équipe ont conçu. Les images d’input sont encodées dans ce qu’ils appellent un pseudo-mot, que vous pouvez ensuite utiliser dans votre génération textuelle. D’où le nom de l’article, « une image vaut un mot ». Mais comment obtiennent-ils ce pseudo-mot, et de quoi s’agit-il ?

Ils commencent avec trois à cinq images d’un objet précis. Ils utilisent également un modèle de texte en image préentraîné, à droite dans l’image ci-dessous. Dans ce cas, ils utilisent la diffusion latente, le modèle que j’ai présenté il n’y a même pas une semaine, qui accepte n’importe quel type d’input, comme des images ou du texte, et génère de nouvelles images à partir de ceux-ci. Vous pouvez le voir comme un DALLE plus cool et open source.

Exemple visuel tiré de Guider Stable Diffusion avec vos images

Vue d’ensemble du modèle. À droite se trouve le générateur fixe et préentraîné de X en image, et à gauche l’encodeur de texte à entraîner. Image tirée de l’article.

Vous avez donc vos images d’input et le modèle de base qui génère des images conditionnées par des inputs comme du texte ou d’autres images. Mais que faites-vous avec vos 3–5 images de l’objet ? Et comment contrôlez-vous les résultats du modèle avec assez de précision pour que votre objet apparaisse dans les générations ?

Tout se passe pendant le processus d’entraînement de votre deuxième modèle : l’encodeur de texte, à gauche dans l’image ci-dessus. Vous utilisez votre modèle générateur d’images préentraîné et fixe, la diffusion latente dans ce cas, qui est déjà capable de prendre une image et de la reconstruire. Vous voulez apprendre à votre encodeur de texte à faire correspondre votre pseudo-mot à vos images encodées, autrement dit aux représentations tirées de vos cinq images. Vous fournissez donc vos images au réseau générateur d’images et entraînez votre encodeur de texte en sens inverse pour découvrir quel faux mot, ou pseudo-mot, représenterait le mieux toutes vos images encodées.

Exemple visuel tiré de Guider Stable Diffusion avec vos images

En gros, il faut découvrir comment représenter correctement votre concept dans le même espace où se déroule le processus de génération d’images décrit dans mon article sur Stable Diffusion. Ensuite, vous en extrayez un faux mot pour guider les générations futures. De cette façon, vous pouvez injecter votre concept dans n’importe quelle génération future et ajouter quelques mots pour conditionner encore davantage la génération avec le même modèle de texte en image préentraîné. Vous entraînez donc simplement un petit modèle à comprendre où se trouvent vos images dans l’espace latent afin de les convertir en un faux mot à utiliser dans le modèle ordinaire de génération d’images. Vous n’avez pas besoin de toucher au modèle générateur d’images, et ce n’est pas rien quand on considère à quel point son entraînement coûte cher !

Et voilà ! C’est ainsi que vous pouvez apprendre à un modèle semblable à DALLE à générer des variations d’images de votre objet préféré ou à effectuer de puissants transferts de style.

Exemple visuel tiré de Guider Stable Diffusion avec vos images

Exemples tirés de l’article.

Bien sûr, il ne s’agit que d’une vue d’ensemble de cette nouvelle méthode qui s’attaque à une tâche très, très intéressante. Je vous invite à lire leur article, accessible par le lien ci-dessous, pour mieux comprendre l’approche et ses défis.

C’est une tâche très complexe qui présente encore beaucoup de limites, comme le temps nécessaire pour comprendre un tel concept sous la forme d’un faux mot, soit environ 2 heures. Le modèle n’est pas encore capable de comprendre complètement le concept, mais il en est sacrément proche. Nous devons aussi considérer les nombreux risques liés à l’accès à un tel produit. Imaginez pouvoir créer l’embedding du concept d’une personne précise et générer n’importe quoi qui l’implique. C’est assez effrayant, et ce type de technologie est à nos portes. J’aimerais connaître votre opinion dans les commentaires ou en discuter sur notre serveur Discord.

Merci d’avoir lu, et on se retrouve la semaine prochaine avec un autre article extraordinaire !

Références

►Article : Gal, R., Alaluf, Y., Atzmon, Y., Patashnik, O., Bermano, A.H., Chechik, G. and Cohen-Or, D., 2022. An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion. https://arxiv.org/pdf/2208.01618v1.pdf
►Code : https://textual-inversion.github.io/
►Mon infolettre (une nouvelle application de l’IA expliquée chaque semaine dans vos emails !) : /fr/newsletter/

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Qu’est-ce que l’inversion textuelle ?

L’inversion textuelle apprend un nouvel embedding textuel qui représente un sujet ou un concept visuel précis à partir d’images d’exemple.

Comment personnalise-t-elle Stable Diffusion ?

Le token appris peut être inséré dans de nouveaux prompts afin de générer le sujet dans différents styles ou différentes scènes.

Pourquoi utiliser un token appris plutôt qu’une longue description ?

Un seul embedding peut capturer des détails visuels difficiles à énumérer avec exactitude au moyen de mots ordinaires.

Quels exemples peut-on personnaliser ?

Un petit ensemble d’images peut représenter un objet, une personne, un animal de compagnie ou un style visuel distinctif.

L’inversion textuelle réentraîne-t-elle tout le modèle de génération d’images ?

Non. Elle optimise un embedding compact tout en laissant le modèle de diffusion sous-jacent pratiquement inchangé.