Composition d’image avec des modèles de diffusion pré-entraînés
Image composition with pre-trained diffusion models
Une technique pour augmenter le contrôle sur les images générées par les modèles de diffusion texte-vers-image pré-entraînés

Les modèles de diffusion texte-vers-image ont atteint des performances impressionnantes dans la génération d’images photoréalistes conformes aux descriptions en langage naturel. La publication de modèles pré-entraînés en open source, tels que Stable Diffusion, a contribué à la démocratisation de ces techniques. Les modèles de diffusion pré-entraînés permettent à quiconque de créer des images incroyables sans avoir besoin d’une puissance de calcul énorme ou d’un processus d’entraînement long.
Malgré le niveau de contrôle offert par la génération d’images guidée par le texte, obtenir une image avec une composition prédéterminée est souvent difficile, même avec des instructions détaillées. En fait, les modèles de diffusion texte-vers-image standard offrent peu de contrôle sur les différents éléments qui seront représentés dans l’image générée.
Dans cet article, je vais expliquer une technique récente basée sur l’article MultiDiffusion : Fusionner les chemins de diffusion pour une génération d’images contrôlée. Cette technique permet d’obtenir un plus grand contrôle dans le placement des éléments dans une image générée par un modèle de diffusion guidé par le texte. La méthode présentée dans l’article est plus générale et permet d’autres applications, telles que la génération d’images panoramiques, mais je me limiterai ici au cas de la composition d’image à l’aide de prompts textuels basés sur des régions. L’avantage principal de cette méthode est qu’elle peut être utilisée avec des modèles de diffusion pré-entraînés prêts à l’emploi, sans avoir besoin d’une réadaptation ou d’un ajustement coûteux.
Pour compléter cet article avec du code, j’ai préparé un simple notebook Colab et un dépôt GitHub avec l’implémentation du code que j’ai utilisé pour générer les images de cet article. Le code est basé sur le pipeline pour Stable Diffusion contenu dans la bibliothèque diffusers de Hugging Face, mais il ne met en œuvre que les parties nécessaires à son fonctionnement pour le rendre plus simple et plus facile à lire.
- Les transformations Map, Filter et CombinePerKey dans l’écriture de pipelines Apache Beam avec des exemples
- GPT privé affiner LLM sur les données d’entreprise
- Utilisez les modèles GPT pour générer des données textuelles pour l’entraînement des modèles d’apprentissage automatique.
Modèles de diffusion
Dans cette section, je rappellerai quelques faits de base sur les modèles de diffusion. Les modèles de diffusion sont des modèles génératifs qui génèrent de nouvelles données en inversant un processus de diffusion qui mappe la distribution des données à une distribution gaussienne isotrope. Plus précisément, étant donné une image, le processus de diffusion consiste en une série d’étapes ajoutant chacune une petite quantité de bruit gaussien à cette image. À l’infini, l’image bruitée sera indiscernable du bruit pur échantillonné à partir d’une distribution gaussienne isotrope.
L’objectif du modèle de diffusion est d’inverser ce processus en essayant de deviner l’image bruitée à l’étape t-1 du processus de diffusion étant donné l’image bruitée à l’étape t. Cela peut être fait, par exemple, en entraînant un réseau neuronal à prédire le bruit ajouté à cette étape et en le soustrayant de l’image bruitée.
Une fois que nous avons entraîné un tel modèle, nous pouvons générer de nouvelles images en échantillonnant du bruit à partir d’une distribution gaussienne isotrope et en utilisant le modèle pour inverser le processus de diffusion en éliminant progressivement le bruit.

Les modèles de diffusion texte-vers-image inversent le processus de diffusion en essayant d’obtenir une image qui correspond à la description d’un prompt textuel. Cela est généralement réalisé par un réseau neuronal qui, à chaque étape t, prédit l’image bruitée à l’étape t-1 conditionnée non seulement à l’image bruitée à l’étape t, mais aussi à un prompt textuel décrivant l’image qu’il essaie de reconstruire.
De nombreux modèles de diffusion d’images, y compris Stable Diffusion, n’opèrent pas dans l’espace d’image original, mais plutôt dans un espace latent appris de taille réduite. De cette manière, il est possible de réduire les ressources de calcul requises avec une perte de qualité minimale. L’espace latent est généralement appris grâce à un autoencodeur variationnel. Le processus de diffusion dans l’espace latent fonctionne exactement comme précédemment, permettant de générer de nouveaux vecteurs latents à partir du bruit gaussien. À partir de ceux-ci, il est possible d’obtenir une nouvelle image générée en utilisant le décodeur de l’autoencodeur variationnel.
Composition d’image avec MultiDiffusion
Passons maintenant à expliquer comment obtenir une composition d’image contrôlable en utilisant la méthode MultiDiffusion. L’objectif est d’obtenir un meilleur contrôle sur les éléments générés dans une image par un modèle de diffusion texte-vers-image pré-entraîné. Plus précisément, étant donné une description générale de l’image (par exemple, un salon, comme sur l’image de couverture), nous voulons qu’une série d’éléments, spécifiés par des indications textuelles, soient présents à des emplacements spécifiques (par exemple, un canapé rouge au centre, une plante d’intérieur à gauche et une peinture en haut à droite). Cela peut être réalisé en fournissant un ensemble d’indications textuelles décrivant les éléments souhaités, ainsi qu’un ensemble de masques binaires basés sur des régions spécifiant l’emplacement à l’intérieur duquel les éléments doivent être représentés. À titre d’exemple, l’image ci-dessous contient les boîtes englobantes pour les éléments de l’image de couverture.

L’idée principale de MultiDiffusion pour la génération d’images contrôlables est de combiner plusieurs processus de diffusion, relatifs à différentes indications spécifiées, pour obtenir une image cohérente et lisse montrant le contenu de chaque indication dans une région prédéterminée. La région associée à chaque indication est spécifiée par un masque binaire de la même dimension que l’image. Les pixels du masque sont définis à 1 si l’indication doit être représentée à cet emplacement et à 0 sinon.
Plus précisément, désignons par t une étape générique dans un processus de diffusion opérant dans l’espace latent. Étant donné les vecteurs latents bruités à l’étape t, le modèle prédira le bruit pour chaque indication textuelle spécifiée. À partir de ces bruits prédits, nous obtenons un ensemble de vecteurs latents à l’étape t-1 (un pour chaque indication) en retirant chacun des bruits prédits des précédents vecteurs latents à l’étape t. Pour obtenir l’entrée pour l’étape suivante du processus de diffusion, nous devons combiner ces différents vecteurs ensemble. Cela peut être réalisé en multipliant chaque vecteur latent par le masque d’indication correspondant, puis en prenant une moyenne par pixel pondérée par les masques. En suivant cette procédure, dans la région spécifiée par un masque particulier, les vecteurs latents suivront les trajectoires du processus de diffusion guidé par l’indication locale correspondante. La combinaison des vecteurs latents à chaque étape, avant de prédire le bruit, assure une cohésion globale de l’image générée ainsi que des transitions fluides entre les différentes régions masquées.
MultiDiffusion introduit une phase d’amorçage au début du processus de diffusion pour une meilleure adhérence aux masques étroits. Pendant ces premières étapes, les vecteurs latents débruités correspondant aux différentes indications ne sont pas combinés ensemble, mais sont plutôt combinés avec certains vecteurs latents bruités correspondant à un fond de couleur constante. De cette manière, comme la mise en page est généralement déterminée tôt dans le processus de diffusion, il est possible d’obtenir une meilleure correspondance avec les masques spécifiés car le modèle peut initialement se concentrer uniquement sur la région masquée pour représenter l’indication.
Exemples
Dans cette section, je vais montrer quelques applications de la méthode. J’ai utilisé le modèle de diffusion stable pré-entraîné 2 hébergé par HuggingFace pour créer toutes les images de cet article, y compris l’image de couverture.
Comme discuté, une application directe de la méthode est d’obtenir une image contenant des éléments générés à des emplacements prédéfinis.


La méthode permet de spécifier les styles, ou une autre propriété, des éléments individuels à représenter. Cela peut être utilisé, par exemple, pour obtenir une image nette sur un arrière-plan flou.


Les styles des éléments peuvent également être très différents, ce qui donne des résultats visuels époustouflants. Par exemple, l’image ci-dessous est obtenue en mélangeant un style de photo de haute qualité avec une peinture de style van Gogh.


Conclusion
Dans cet article, nous avons exploré une méthode combinant différents processus de diffusion pour améliorer le contrôle des images générées par des modèles de diffusion conditionnés par du texte. Cette méthode permet de mieux contrôler l’emplacement où les éléments de l’image sont générés et de combiner de manière transparente des éléments représentés dans différents styles.
L’un des principaux avantages de la procédure décrite est qu’elle peut être utilisée avec des modèles de diffusion texte-image pré-entraînés sans nécessiter de fine-tuning, ce qui est généralement une procédure coûteuse. Un autre point fort est que la génération d’images contrôlables est obtenue grâce à des masques binaires plus simples à spécifier et à manipuler que des conditionnements plus complexes.
Le principal inconvénient de cette technique est qu’elle nécessite, à chaque étape de diffusion, un passage de réseau neuronal par prompt pour prédire le bruit correspondant. Heureusement, ceux-ci peuvent être effectués en lots pour réduire le temps d’inférence, mais au prix d’une utilisation de mémoire GPU plus importante. De plus, parfois certains des prompts (en particulier ceux spécifiés seulement dans une petite partie de l’image) sont négligés ou ils couvrent une plus grande surface que celle spécifiée par le masque correspondant. Bien que cela puisse être atténué avec des étapes de bootstrapping, un nombre excessif d’entre elles peut réduire considérablement la qualité globale de l’image car il y a moins d’étapes disponibles pour harmoniser les éléments entre eux.
Il convient de mentionner que l’idée de combiner différents processus de diffusion ne se limite pas à ce qui est décrit dans cet article, mais peut également être utilisée pour d’autres applications, telles que la génération d’images panoramiques comme décrit dans l’article MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation.
J’espère que vous avez apprécié cet article, si vous souhaitez approfondir les détails techniques, vous pouvez consulter ce cahier Colab et le référentiel GitHub avec la mise en œuvre du code.
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Impact environnemental de l’IA générative omniprésente
- Vue probabiliste de l’Analyse en Composantes Principales
- Apprentissage par renforcement sans modèle pour le développement des processus chimiques
- Puissance des machines virtuelles de la série B d’Azure
- Outils et agents HuggingFace Transformers Pratique
- VoAGI Actualités, 12 juillet 5 cours gratuits sur ChatGPT • Le pouvoir de la sollicitation en chaîne de la pensée
- xAI La nouvelle entreprise d’IA d’Elon Musk dévoile sa mission avec le lancement de son site web