# Qu’est-ce qu’un modèle de diffusion?

Date: 2022-09-08 · Author: Robert Scales · https://guidetoartificialintelligence.com/fr/apprendre/qu-est-ce-qu-un-modele-de-diffusion/

**Answer:** Un modèle de diffusion est un système d’IA qui apprend à créer des images en apprenant à retirer du bruit. Pendant l’entraînement, il regarde des images être enfouies sous de la neige aléatoire, étape par étape, et apprend à défaire chaque étape; il peut ensuite partir de la neige pure et la nettoyer, petit à petit, jusqu’à obtenir une toute nouvelle image.

Les générateurs d’images dont tout le monde parle cette année, DALL·E 2 d’OpenAI, Imagen de Google et Stable Diffusion, tout juste publié, reposent tous sur la même idée centrale. Ils ne peignent pas une image de gauche à droite et ne l’impriment pas d’un seul coup. Ils partent d’un champ de bruit aléatoire, comme la neige d’un vieux téléviseur, et le raffinent en de nombreuses petites étapes jusqu’à ce qu’une image apparaisse.

Cette méthode s’appelle la **diffusion**, par analogie avec la façon dont une goutte d’encre se répand dans l’eau jusqu’à s’y mélanger uniformément. Les modèles apprennent à faire tourner ce processus à l’envers : du bruit uniformément mélangé jusqu’à une image structurée.

## D’où vient l’idée

L’approche existe en recherche depuis plusieurs années, mais un article de 2020 l’a rendue pratique. Jonathan Ho, Ajay Jain et Pieter Abbeel, de l’Université de Californie à Berkeley, ont montré dans *Denoising Diffusion Probabilistic Models* que la diffusion pouvait produire des images aussi bonnes que les meilleures méthodes du moment sur des jeux de test standard.

Leur montage comporte deux moitiés. Le **processus direct** est fixe et ne demande aucun apprentissage : prenez une vraie photo et ajoutez-y un peu de bruit aléatoire, puis un peu plus, sur une longue série d’étapes, jusqu’à ce qu’il ne reste rien de la photo. Le **processus inverse** est la partie qu’un réseau de neurones apprend. À chaque étape, le réseau regarde une image bruitée et estime le bruit qui a été ajouté, afin de pouvoir le soustraire. L’équipe de Ho a utilisé 1 000 étapes dans ses expériences. L’entraînement est étonnamment simple : montrer au réseau un nombre immense d’images à des niveaux de bruit aléatoires et lui demander, encore et encore, de prédire le bruit.

## Pourquoi Stable Diffusion travaille dans un espace compressé

Faire toutes ces étapes sur des images en pleine grandeur coûte cher. Robin Rombach et ses collègues de la LMU de Munich, de l’Université de Heidelberg et de Runway ML soulignent, dans leur article de décembre 2021, qu’entraîner un bon modèle de diffusion directement sur les pixels peut prendre des centaines de jours-GPU.

Leur solution est le **modèle de diffusion latente**. D’abord, un réseau distinct appelé autoencodeur apprend à comprimer une image en une grille de nombres beaucoup plus petite, une version « latente », et à reconstruire l’image complète à partir de celle-ci. Le processus de diffusion se déroule ensuite entièrement dans ce petit espace latent. Ce n’est qu’à la toute fin que le résultat est décodé en pixels. Cela réduit beaucoup le coût de calcul tout en conservant les détails fins.

Stable Diffusion est un modèle de diffusion latente. Selon la page du projet, il a été entraîné sur des images de 512 sur 512 tirées d’une partie du jeu de données LAION-5B, il possède un réseau de débruitage (un U-Net) de 860 millions de paramètres, et il peut fonctionner sur une carte graphique dotée d’au moins 10 Go de mémoire. Cette taille modeste explique en grande partie qu’il puisse tourner sur un ordinateur personnel plutôt que seulement dans un centre de données.

## Le rôle de l’encodeur de texte

Le retrait du bruit, à lui seul, produirait des images au hasard. Pour obtenir l’image demandée, le modèle doit lire votre prompt. Stable Diffusion utilise un **encodeur de texte**, un modèle distinct qui transforme les mots en nombres, appelé CLIP ViT-L/14. Il est gelé, c’est-à-dire qu’il a été entraîné au préalable et n’est plus modifié. Sa description numérique de votre prompt est transmise au réseau de débruitage à chaque étape par un mécanisme appelé attention croisée, qui permet à chaque partie de l’image de « regarder » les mots pertinents.

Le logiciel de référence emploie aussi une technique appelée guidage sans classificateur (*classifier-free guidance*). À chaque étape, le modèle fait deux estimations du bruit, l’une avec votre prompt et l’autre avec un prompt vide, puis pousse le résultat plus loin dans la direction de la version avec prompt. Un réglage appelé échelle de guidage contrôle la force de cette poussée; le script de référence utilise 7,5 par défaut.

> **À essayer :** si vous avez accès à une démo de Stable Diffusion, générez le même prompt en changeant seulement le nombre d’étapes, par exemple 10, 25 et 50, en gardant le germe (*seed*) fixe. Comparez la quantité de détails de chaque version.

## Comment le bruit devient-il une image?

Imaginez une exécution de Stable Diffusion avec le prompt « a red bicycle leaning against a stone wall » (un vélo rouge appuyé contre un mur de pierre), avec les 50 étapes du script de référence. Le tableau décrit, de façon simplifiée et à titre d’illustration, ce que vous verriez si vous décodiez le travail en cours à quelques moments du parcours :

| Étape | À quoi ressemble l’image en cours |
|---|---|
| 0 | De la neige pure, sans aucune structure |
| 10 | De douces taches de couleur : une zone chaude au centre, du gris autour |
| 20 | Des formes grossières : quelque chose qui ressemble à une roue, une bande plus sombre derrière |
| 35 | Un vélo reconnaissable contre un mur; les contours sont encore flous |
| 50 | Des rayons, une texture de brique ou de pierre, des ombres et des détails fins |

Cet ordre n’est pas une supposition. L’équipe de Ho l’a observé directement : en regardant la meilleure estimation de l’image finale par le modèle pendant l’échantillonnage, elle a vu les grandes formes apparaître d’abord et les détails en dernier. Les premières étapes décident de la composition, de l’emplacement des choses et des couleurs dominantes. Les étapes suivantes affinent les contours et ajoutent la texture.

Chaque étape est une petite correction. Le réseau regarde la représentation latente bruitée actuelle, lit le prompt au moyen de l’encodeur de texte, estime quelle partie de ce qu’il voit est du bruit et en retire une portion. Répétez cela cinquante fois, et la neige a été façonnée en une image qui correspond aux mots. Comme la neige de départ est aléatoire, un germe différent, le nombre qui fixe cette neige, donne une image différente à partir du même prompt.

## Sources

- High-Resolution Image Synthesis with Latent Diffusion Models: https://arxiv.org/abs/2112.10752v1
- Denoising Diffusion Probabilistic Models: https://arxiv.org/abs/2006.11239v1
- CompVis/stable-diffusion (README): https://github.com/CompVis/stable-diffusion
