Chapitre 21 · Diffusion · 9 min

Générer une image en effaçant du bruit

Stable Diffusion, DALL-E, Midjourney. Le processus inverse de débruitage, le rôle de CLIP, et pourquoi U-Net cède la place aux Transformers.

Une famille différente

Tout ce qu'on a vu jusqu'ici décrit des Transformers qui prédisent le token suivant. C'est l'architecture qui domine le langage, le code, et de plus en plus la vidéo et l'audio.

Mais quand tu tapes un prompt dans Midjourney, DALL-E ou Stable Diffusion, ce n'est pas ce qui se passe. L'image n'est pas générée pixel par pixel de gauche à droite. Elle apparaît partout en même temps, raffinée par étapes successives.

C'est l'œuvre d'une famille de modèles très différente : les modèles de diffusion.

L'idée centrale : apprendre à débruiter

Le processus de diffusion s'inspire d'une intuition presque trop simple. Si je prends une image nette et que j'y ajoute progressivement du bruit gaussien, à un moment elle devient indistinguable du bruit pur. Si j'apprends à inverser ce processus — à enlever du bruit petit à petit — alors je peux partir de bruit pur et finir avec une image nette.

Pendant l'entraînement :

  1. On prend une image du dataset
  2. On y ajoute du bruit selon un planning prédéfini (par exemple T = 1000 étapes)
  3. On entraîne un réseau à prédire le bruit qu'on a ajouté étant donné l'image bruitée et l'étape t

Le modèle apprend ainsi, pour n'importe quel niveau de bruit, à reconnaître ce qui est "vraie image" et ce qui est "bruit ajouté".

À l'inférence, on inverse : on part de pur bruit, et à chaque pas, le modèle prédit le bruit, on le soustrait, et on recommence. Après T pas, on obtient une image plausible — qui ressemble à la distribution apprise.

Essaie le débruitage

L'animation part d'une image de bruit pur et la débruite par étapes successives. Chaque pas suit le gradient appris pendant l'entraînement, guidé par l'embedding texte de CLIP. À 5 étapes, le résultat est flou ; à 50, il est net.

Joue avec le nombre d'étapes. À 5 pas, l'image reste granuleuse — le modèle n'a pas le temps de raffiner. À 50 pas, elle devient nette mais c'est dix fois plus de calcul. La plupart des samplers modernes (DDIM, DPM-Solver) atteignent une qualité quasi-optimale en 20 à 30 pas.

Diriger vers une image précise : la guidance

Le bruit pur est le même pour tous les prompts. Comment le modèle sait-il qu'on veut un coucher de soleil et pas un chien ? La réponse : on conditionne le modèle sur le texte.

Pendant l'entraînement, on fournit au réseau, en plus de l'image bruitée et de l'étape, un embedding du texte associé à l'image (souvent un encodeur de type CLIP). Le réseau apprend ainsi des prédictions de bruit conditionnées : "sachant que l'image décrit un coucher de soleil, voici à quoi ressemble le bruit".

À l'inférence, on calcule deux prédictions : une avec le prompt, une sans (ou avec un prompt vide). La technique du Classifier-Free Guidance (CFG) consiste à extrapoler dans la direction du prompt :

prediction_finale = prediction_sans_prompt + guidance × (prediction_avec_prompt − prediction_sans_prompt)

Le coefficient guidance (CFG scale) contrôle à quel point on s'éloigne du naturel pour coller au prompt. À CFG=0, le modèle ignore le texte ; à CFG=7, l'image suit fidèlement le prompt sans devenir artificielle ; au-delà de 12, elle devient sursaturée et perd ses détails fins.

Latent diffusion : faire moins de calcul

Une image 512×512 a 786 432 pixels (3 canaux × 512 × 512). Faire 1 000 pas de débruitage sur autant de pixels est très coûteux. Stable Diffusion a popularisé une astuce : travailler dans un espace latent compressé.

Avant d'entraîner le modèle de diffusion, on entraîne un autoencodeur (un VAE) qui compresse les images dans un espace latent 64×64×4 — environ 48× plus petit. La diffusion ne s'applique alors qu'à ce latent, pas aux pixels. À la fin du débruitage, on décode le latent vers l'image finale.

C'est ce qui rend Stable Diffusion exécutable sur un GPU consommateur en quelques secondes — alors qu'un modèle pixel-based équivalent demanderait un cluster.

CLIP : le pont entre texte et image

Pour conditionner sur du texte, il faut une représentation textuelle qui partage un espace avec celle des images. C'est le rôle de CLIP (Contrastive Language-Image Pretraining), entraîné par OpenAI sur 400 millions de paires image/légende.

CLIP apprend deux encodeurs — un pour les images, un pour le texte — qui produisent des embeddings dans un espace commun. Une légende et son image cible ont des embeddings proches ; une légende sans rapport est éloignée. Cet alignement permet au modèle de diffusion de comprendre des prompts textuels qu'il n'a jamais vus exactement à l'entraînement.

U-Net vs Transformer (DiT)

Pendant longtemps, l'architecture de référence pour la diffusion était le U-Net : un réseau convolutif en U, avec des skip connections qui préservent les détails fins. Stable Diffusion 1.4, 1.5 et 2 utilisent tous des U-Net.

Mais en 2022, Peebles et Xie ont proposé DiT (Diffusion Transformer) : remplacer le U-Net par un Transformer pur. Chaque "patch" de l'image est traité comme un token, avec attention complète sur tous les autres patches. Plus de pyramide convolutive, plus de skip connections — juste des blocks Transformer empilés.

Stable Diffusion 3, FLUX, Sora (vidéo) — toutes les architectures récentes ont migré vers le Transformer. Pourquoi ? Parce que les Transformers scalent mieux : on retrouve les mêmes lois d'échelle que pour le langage. Doubler le compute sur un DiT améliore les images de manière prévisible.

Le sampler : DDPM, DDIM, DPM-Solver

Le sampler est l'algorithme qui décide, à chaque pas, comment combiner la prédiction du bruit avec l'état courant pour produire le pas suivant.

SamplerPas typiquesParticularité
DDPM1000Stochastique, fidèle à l'entraînement, lent
DDIM20–50Déterministe, qualité comparable à DDPM en bien moins de pas
DPM-Solver10–25Solveur d'EDO, encore plus rapide
Euler / Heun20–30Méthodes classiques d'EDO, simples et robustes
LCM4–8Distillation latente, ultra-rapide

Le choix du sampler est l'un des leviers les plus accessibles pour ajuster vitesse vs qualité.

Pourquoi cette famille existe à côté des Transformers

On pourrait demander : pourquoi ne pas générer des images comme on génère du texte, token par token ? La réponse est subtile.

Pour le texte, l'ordre est naturel : on lit de gauche à droite, et chaque mot dépend des précédents. Pour une image, il n'y a pas d'ordre canonique. Générer pixel par pixel introduit des artefacts (les premiers pixels n'ont pas le contexte des derniers). La diffusion résout ce problème en générant toute l'image en parallèle, raffinée globalement à chaque pas.

C'est pourquoi les approches autoregressives sur les pixels (comme PixelRNN, ou le ImageGPT initial d'OpenAI) ont été abandonnées au profit de la diffusion. Le seul retour possible serait via les modèles autoregressifs sur les tokens d'image (DALL-E 1, et maintenant Chameleon de Meta) — mais ils sont encore moins performants que les diffusions sur la qualité photoréaliste.

La diffusion n'est pas un Transformer. C'est une autre façon, mathématiquement orthogonale, d'apprendre une distribution complexe — et pour les images, c'est celle qui a gagné.

Mis à jour le

Diffusion : générer une image en effaçant du bruit · Step by Token