Comment une IA génère-t-elle une image à partir du hasard ?

Publié par Adrien le 24/05/2024 à 06:00
Source: The Conversation sous licence Creative Commons
Restez toujours informé: suivez-nous sur Google Actualités (icone ☆)

Par Christophe Rodrigues - Enseignant-chercheur en informatique, Pôle Léonard de Vinci

Depuis une victoire face aux meilleurs joueurs humains de Go, par exemple, ou plus récemment, la prévision de la météo avec une précision jamais atteinte, les avancées des IA se poursuivent et continuent de surprendre. Un résultat encore plus déconcertant est celui de la génération d'images d'un réalisme saisissant alimentant une confusion certaine entre le vrai et le faux. Mais comment ces images sont-elles générées automatiquement ?


Une IA qui peint un tableau.
Image générée par... une IA

Les modèles de génération d'images reposent sur l'apprentissage profond, c'est-à-dire des réseaux de neurones de très grande taille pouvant atteindre plusieurs milliards de paramètres. Un réseau de neurones peut être considéré comme une fonction qui va associer à des données en entrée, des prédictions en sortie. Cette fonction est composée d'un ensemble de paramètres (des valeurs numériques) initialement aléatoires que le réseau va apprendre à fixer par apprentissage.

Pour donner un ordre de grandeur, le modèle Stable Diffusion, capable de générer des images réalistes est composé de 8 milliards de paramètres et son entraînement a coûté 600 000 dollars.

Ces paramètres, il faut les apprendre. Pour expliquer leur apprentissage, nous pouvons nous intéresser au cas plus simple de la détection d'objets à partir d'images. Une image est présentée en entrée du réseau et celui-ci doit prédire en sortie des étiquettes d'objets possibles (voiture, personne, chat...).

L'apprentissage consiste alors à trouver une bonne combinaison de paramètres permettant de prédire le plus correctement possible les objets présents dans les images. La qualité de l'apprentissage dépendra principalement de la quantité de données étiquetées, de la taille des modèles et de la puissance de calcul disponible.

Dans le cas de la génération d'images, c'est en quelque sorte le processus inverse que l'on souhaite faire: à partir d'un texte décrivant une scène, est attendue en sortie du modèle la création d'une image correspondant à cette description, ce qui est considérablement plus complexe que de prédire une étiquette.

Détruire pour créer

Dans un premier temps, oublions le texte et focalisons-nous sur l'image seule. Si générer une image est un processus complexe même pour un être humain, détruire une image (le problème inverse) est un problème trivial. Concrètement, à partir d'une image composée de pixels, changer la couleur de certains pixels aléatoirement constitue une méthode simple d'altération.

Nous pouvons présenter en entrée d'un réseau de neurones une image légèrement altérée et en sortie lui demander de prédire l'image d'origine. Nous pouvons alors entraîner le modèle à apprendre à débruiter des images, ce qui représente un premier pas vers la génération d'images. Ainsi, si l'on part d'une image fortement bruitée et que l'on réitère l'appel du modèle séquentiellement, nous obtiendrons à chaque appel une image de moins en moins bruitée jusqu'à obtenir une image entièrement débruitée.

Si nous exagérons le processus, nous pourrions alors partir d'une image composée uniquement de bruit (une neige de pixels aléatoires), autrement dit une image de rien et réitérer les appels à notre modèle "débruiteur" afin d'aboutir à une image comme illustré ci-dessous:


Illustration du processus itératif de génération des images.
Alex Nichol, Prafulla Dhariwal

Nous avons alors un processus capable de générer des images mais d'un intérêt limité car, en fonction du bruit aléatoire, il peut après plusieurs itérations aboutir à générer n'importe quoi comme image de sortie. Nous avons donc besoin d'une méthode pour guider le processus de débruitage et c'est le texte qui sera utilisé pour cette tâche.

Du bruit à l'image


r/StableDiffusion ;u/ansmo.

Pour le processus de débruitage nous avons besoin d'images, celles-ci proviennent d'internet et permettent de constituer le jeu de données d'apprentissage. Pour le texte nécessaire au guidage du débruitage, ce sont tout simplement les légendes des images trouvées sur Internet qui sont utilisées. Parallèlement à l'apprentissage du débruitage de l'image, un réseau représentant le texte est associé. Ainsi, lorsque le modèle apprend à débruiter une image, il apprend également à quels mots ce débruitage est associé. L'apprentissage terminé, nous obtenons un modèle qui à partir d'un texte descriptif et d'un bruit total va, par itération successive, éliminer le bruit pour converger vers une image collant à la description textuelle.

Le processus permet de s'affranchir d'un étiquetage manuel spécifique. Il se nourrit des millions d'images associées à leurs légendes déjà présentes sur le web. Pour finir, une image valant mille mots, en guise d'exemple, l'image ci-dessus est générée à partir du texte suivant: "fried egg flowers in the bacon garden (fleurs d'oeufs frits dans un jardin de bacon)" par le modèle Stable Diffusion.
Page générée en 0.524 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise