À retenir
- La diffusion latente rend la génération d’images moins coûteuse en effectuant une grande partie du débruitage dans une représentation comprimée plutôt que directement sur les pixels.
- L’espace latent est puissant parce qu’il conserve la structure visuelle importante tout en rendant la génération plus rapide et plus pratique.
- En contrepartie, la compression, les prompts, les données et les choix d’échantillonnage déterminent toujours ce que le modèle peut ou ne peut pas produire.
Qu’ont en commun tous les nouveaux modèles d’images ultrapuissants comme DALLE, Imagen ou Midjourney ? En plus de leurs coûts de calcul élevés, de leur très long entraînement et de tout l’engouement qu’ils suscitent, ils reposent tous sur le même mécanisme : la diffusion.
Les modèles de diffusion ont récemment atteint l’état de l’art pour la plupart des tâches liées aux images, y compris la génération texte-image avec DALLE, mais aussi bien d’autres tâches de génération comme l’inpainting, le transfert de style et la superrésolution.
Ils ont quelques désavantages. Ils travaillent de façon séquentielle sur l’image entière, ce qui rend l’entraînement et l’inférence coûteux. Voilà pourquoi il faut des centaines de GPU pour entraîner un tel modèle et pourquoi vous devez attendre quelques minutes avant d’obtenir vos résultats.
Il n’est donc pas surprenant que seules les plus grandes entreprises, comme Google et OpenAI, publient ces modèles.
Mais que sont-ils exactement ? J’ai présenté les modèles de diffusion dans quelques articles, que je vous invite à lire pour mieux les comprendre. Rapidement, ce sont des modèles itératifs qui reçoivent du bruit aléatoire en input. Ce bruit peut être conditionné par un texte ou une image, ce qui le rend moins aléatoire. Le modèle apprend de façon itérative à retirer ce bruit en découvrant quels paramètres lui appliquer pour arriver à une image finale. Les modèles de diffusion de base partent donc d’un bruit aléatoire de la taille de l’image et apprennent à lui ajouter encore plus de bruit jusqu’à pouvoir revenir à une vraie image.

Processus de diffusion appliqué à un transfert de style d’image à image (croquis en input, vraie image en output).
C’est possible parce que le modèle a accès aux vraies images pendant l’entraînement et peut apprendre les bons paramètres en leur appliquant ce bruit de façon itérative, jusqu’à ce qu’elles deviennent du bruit complet et méconnaissable. Lorsque le bruit obtenu à partir de toutes les images nous convient, c’est-à-dire lorsqu’il est semblable et provient d’une distribution similaire, nous sommes prêts à utiliser notre modèle à l’envers. Nous lui fournissons un bruit semblable dans l’ordre inverse et nous nous attendons à obtenir une image similaire à celles utilisées pendant l’entraînement.

Le principal problème est donc que nous travaillons directement avec les pixels et de grands inputs comme les images.
Comparaison des résultats avec DALLE 2. Image tirée de l’article scientifique.
Voyons comment corriger ce problème de calcul tout en conservant la même qualité de résultats, comme dans cette comparaison avec DALLE.
Comment rendre ces puissants modèles de diffusion efficaces sur le plan du calcul ? En les transformant en modèles de diffusion latente. Robin Rombach et ses collègues ont intégré l’approche de diffusion que nous venons de voir à une représentation comprimée de l’image plutôt qu’à l’image elle-même, puis ils se sont attaqués à la reconstruction de l’image. Ils ne travaillent donc plus dans l’espace des pixels, c’est-à-dire avec des images ordinaires.
Travailler dans un espace comprimé permet non seulement de générer des résultats plus rapidement et plus efficacement, puisque les données sont beaucoup plus petites, mais aussi de combiner différentes modalités. Comme les inputs sont encodés, nous pouvons fournir n’importe quel type d’input au modèle, comme des images ou du texte. Il apprend à encoder ces inputs dans le même sous-espace que celui utilisé par le modèle de diffusion pour générer une image. Oui, tout comme CLIP, un seul modèle peut utiliser du texte ou des images pour guider les générations.

Vue d’ensemble de l’architecture de diffusion latente. Image tirée de l’article scientifique.
Voici à quoi ressemble le modèle complet. Nous partons de notre image initiale X et nous l’encodons dans un espace très dense en information appelé espace latent, Z. Le processus ressemble beaucoup à celui d’un GAN. Un modèle encodeur reçoit l’image et en extrait l’information la plus pertinente dans un sous-espace, ce qui peut être vu comme une réduction de résolution. Il réduit sa taille tout en conservant le plus d’information possible.
Nous sommes maintenant dans l’espace latent avec notre input condensé. Nous faisons ensuite la même chose avec nos inputs de conditionnement, qu’il s’agisse de texte, d’images ou d’autre chose, puis nous les fusionnons avec la représentation actuelle de l’image à l’aide de l’attention, que j’ai décrite dans une autre vidéo. Ce mécanisme d’attention apprend la meilleure façon de combiner l’input et les inputs de conditionnement dans l’espace latent. Il ajoute donc aux modèles de diffusion l’attention, une caractéristique des Transformers. Ces inputs fusionnés deviennent le bruit initial du processus de diffusion.
Nous avons ensuite le même modèle de diffusion que celui présenté dans mon article sur Imagen, mais toujours dans ce sous-espace.
Enfin, nous reconstruisons l’image avec un décodeur, que vous pouvez voir comme l’étape inverse de notre encodeur initial. Il part de cet input modifié et débruité dans l’espace latent pour construire une image finale en haute résolution. En gros, il augmente la résolution du résultat.

Images créées avec Stable Diffusion.
Et voilà ! C’est ainsi que nous pouvons utiliser les modèles de diffusion pour une grande variété de tâches comme la superrésolution, l’inpainting et même la génération texte-image avec le récent modèle Stable Diffusion open source, grâce au processus de conditionnement. Le tout est beaucoup plus efficace et permet d’exécuter les modèles sur vos GPU plutôt que d’en exiger des centaines.
Vous avez bien lu. Pour tous les développeurs, et même pour toute personne qui souhaite expérimenter et faire fonctionner son propre modèle texte-image ou de synthèse d’images sur ses propres GPU, ou simplement dans une application, tous les liens et le code sont accessibles avec des modèles préentraînés !
Si vous utilisez le modèle, partagez avec moi vos essais, vos idées, vos résultats et tout votre feedback ! J’aimerais beaucoup en discuter.
Bien sûr, ce n’était qu’un aperçu du modèle de diffusion latente. Je vous invite à lire l’excellent article scientifique lié ci-dessous pour en apprendre davantage sur le modèle et son approche.
Références
►Rombach, R., Blattmann, A., Lorenz, D., Esser, P. and Ommer, B., 2022. High-resolution image synthesis with latent diffusion models. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 10684–10695), https://arxiv.org/pdf/2112.10752.pdf
►Code de la diffusion latente : https://github.com/CompVis/latent-diffusion
►Code de Stable Diffusion (texte-image fondé sur la diffusion latente) : https://github.com/CompVis/stable-diffusion
►Essayez-le vous-même : https://huggingface.co/spaces/stabilityai/stable-diffusion
►Application Web : https://stabilityai.us.auth0.com/u/login?state=hKFo2SA4MFJLR1M4cVhJcllLVmlsSV9vcXNYYy11Q25rRkVzZaFur3VuaXZlcnNhbC1sb2dpbqN0aWTZIFRjV2p5dHkzNGQzdkFKZUdyUEprRnhGeFl6ZVdVUDRZo2NpZNkgS3ZZWkpLU2htVW9PalhwY2xRbEtZVXh1Y0FWZXNsSE4
FAQ
Qu’est-ce qu’un modèle de diffusion latente ?
Un modèle de diffusion latente génère des images en débruitant une représentation latente comprimée, puis en la décodant pour retrouver des pixels.
Pourquoi utiliser l’espace latent pour la diffusion ?
L’espace latent rend la génération plus efficace parce que le modèle travaille sur une représentation plus petite qui conserve l’information visuelle importante.
Quelle est la différence entre la diffusion latente et la diffusion sur les pixels ?
La diffusion sur les pixels débruite directement l’espace de l’image. La diffusion latente débruite un espace comprimé, ce qui est généralement plus rapide et moins coûteux.
Pourquoi la diffusion latente a-t-elle compté pour les modèles texte-image ?
Elle a rendu la génération d’images de grande qualité assez pratique pour être déployée à plus grande échelle et finir par rejoindre beaucoup plus d’utilisateurs et d’outils.
Que devraient vérifier les builders dans les outputs de diffusion latente ?
Vérifiez les détails, les artéfacts, le respect du prompt, l’identité, le style, les contraintes de licence et la fiabilité de l’image générée pour le cas d’usage.


