Diffusers documentation
Génération contrôlée
Génération contrôlée
Le contrôle des sorties générées par les modèles de diffusion est un objectif poursuivi depuis longtemps par la communauté et constitue désormais un sujet de recherche actif. Dans de nombreux modèles de diffusion populaires, des modifications subtiles des entrées, qu’il s’agisse d’images ou de prompts textuels, peuvent radicalement altérer les sorties. Dans un monde idéal, nous aimerions pouvoir contrôler la manière dont la sémantique est préservée ou modifiée.
La plupart des exemples de préservation de la sémantique se réduisent à la capacité de cartographier avec précision un changement d’entrée vers un changement de sortie. Par exemple, ajouter un adjectif à un sujet dans un prompt préserve l’image entière, ne modifiant que le sujet concerné. De même, une variation d’image d’un sujet particulier préserve la pose de ce sujet.
De plus, il existe des qualités des images générées que nous souhaitons influencer au-delà de la préservation sémantique. Autrement dit, de manière générale, nous aimerions que nos sorties soient de bonne qualité, respectent un style particulier ou soient réalistes.
Nous documenterons certaines des techniques que diffusers prend en charge pour contrôler la génération des modèles de diffusion. Une grande partie relève de la recherche de pointe et peut être assez nuancée. Si un point nécessite des éclaircissements ou si vous avez une suggestion, n’hésitez pas à ouvrir une discussion GitHub ou un ticket GitHub.
Nous fournissons une explication de haut niveau de la manière dont la génération peut être contrôlée, ainsi qu’un aperçu des aspects techniques. Pour des explications plus approfondies sur les aspects techniques, les articles originaux, liés depuis les pipelines, restent toujours les meilleures ressources.
Selon le cas d’usage, il convient de choisir la technique appropriée. Dans de nombreux cas, ces techniques peuvent être combinées. Par exemple, il est possible d’associer Textual Inversion à SEGA afin de fournir un guidage sémantique plus précis aux sorties générées à l’aide de Textual Inversion.
Sauf mention contraire, il s’agit de techniques qui fonctionnent avec des modèles existants et qui ne nécessitent pas de poids propres.
- InstructPix2Pix
- Attend and Excite
- Guidage sémantique
- Guidage par auto-attention
- Depth2Image
- MultiDiffusion Panorama
- DreamBooth
- Inversion textuelle
- ControlNet
- Pondération des prompts
- Diffusion personnalisée
- DiffEdit
- T2I-Adapter
- FABRIC
Pour votre confort, nous fournissons un tableau indiquant quelles méthodes sont réservées à l’inférence et lesquelles nécessitent un fine-tuning/entraînement.
| Méthode | Inférence uniquement | Nécessite un entraînement / un affinement | Commentaires |
|---|---|---|---|
| InstructPix2Pix | ✅ | ❌ | Peut en outre être ajusté finement pour une meilleure performance sur des instructions d'édition spécifiques. |
| Attend and Excite | ✅ | ❌ | |
| Guidage sémantique | ✅ | ❌ | |
| Guidage par auto-attention | ✅ | ❌ | |
| Depth2Image | ✅ | ❌ | |
| MultiDiffusion Panorama | ✅ | ❌ | |
| DreamBooth | ❌ | ✅ | |
| Inversion textuelle | ❌ | ✅ | |
| ControlNet | ✅ | ❌ | Un ControlNet peut être entraîné/ajusté finement sur un conditionnement personnalisé. |
| Pondération des prompts | ✅ | ❌ | |
| Diffusion personnalisée | ❌ | ✅ | |
| DiffEdit | ✅ | ❌ | |
| T2I-Adapter | ✅ | ❌ | |
| Fabric | ✅ | ❌ |
InstructPix2Pix
InstructPix2Pix est ajusté à partir de Stable Diffusion pour prendre en charge l'édition d'images d'entrée. Il prend en entrée une image et un prompt décrivant une modification, et il renvoie l'image éditée. InstructPix2Pix a été explicitement entraîné pour fonctionner bien avec des prompts de type InstructGPT.
Attend and Excite
Attend and Excite permet aux sujets de l'invite d'être fidèlement représentés dans l'image finale.
Un ensemble d’indices de jetons est fourni en entrée, correspondant aux sujets de l’invite qui doivent être présents dans l’image. Lors du débruitage, chaque indice de jeton est garanti d’atteindre un seuil minimal d’attention pour au moins un patch de l’image. Les latents intermédiaires sont optimisés itérativement au cours du processus de débruitage afin de renforcer l’attention du jeton de sujet le plus négligé, jusqu’à ce que le seuil d’attention soit atteint pour tous les jetons de sujet.
Comme Pix2Pix Zero, Attend and Excite intègre également une boucle d'optimisation miniature (les poids pré-entraînés restant inchangés) dans son pipeline et peut nécessiter plus de mémoire que le StableDiffusionPipeline habituel.
Guidage sémantique (SEGA)
SEGA permet d’appliquer ou de retirer un ou plusieurs concepts d’une image. L’intensité du concept peut également être contrôlée. Par exemple, le concept « sourire » peut être utilisé pour augmenter ou diminuer progressivement le sourire d’un portrait.
De la même manière que le guidage sans classifieur fournit un guidage via des entrées de prompt vides, SEGA fournit un guidage sur des prompts conceptuels. Plusieurs de ces prompts conceptuels peuvent être appliqués simultanément. Chaque prompt conceptuel peut soit ajouter, soit supprimer son concept, selon que le guidage est appliqué de manière positive ou négative.
Contrairement à Pix2Pix Zero ou Attend and Excite, SEGA interagit directement avec le processus de diffusion au lieu d'effectuer une optimisation explicite basée sur le gradient.
Guidage par auto-attention (SAG)
Le guidage par auto-attention améliore la qualité générale des images.
SAG fournit des orientations à partir de prédictions non conditionnées sur les détails de haute fréquence jusqu’aux images entièrement conditionnées. Les détails de haute fréquence sont extraits des cartes d’auto-attention du UNet.
Depth2Image
Depth2Image est un modèle dérivé de Stable Diffusion, affiné pour mieux préserver la sémantique lors de la variation d’images guidée par du texte.
Elle conditionne sur une estimation de profondeur monoculaire de l'image d'origine.
MultiDiffusion Panorama
MultiDiffusion Panorama définit un nouveau processus de génération sur un modèle de diffusion pré-entraîné. Ce processus combine plusieurs méthodes de génération par diffusion qui peuvent être appliquées directement pour générer des images de haute qualité et variées. Les résultats respectent les contrôles fournis par l'utilisateur, tels que le ratio d'aspect souhaité (par exemple, panorama) et les signaux de guidage spatial, allant des masques de segmentation précis aux boîtes englobantes. MultiDiffusion Panorama vous permet de générer des images de haute qualité avec des ratios d'aspect arbitraires (par exemple, des panoramas).
Affinage de vos propres modèles
En plus des modèles pré-entraînés, Diffusers propose des scripts d'entraînement pour l'ajustement fin des modèles sur des données fournies par l'utilisateur.
DreamBooth
DreamBooth ajuste finement un modèle pour lui apprendre un nouveau sujet. Par exemple, quelques photos d’une personne peuvent être utilisées pour générer des images de cette personne dans différents styles.
Inversion textuelle
Textual Inversion ajuste finement un modèle pour lui apprendre un nouveau concept. Par exemple, quelques images d’un style artistique peuvent être utilisées pour générer des images dans ce style.
ControlNet
ControlNet est un réseau auxiliaire qui ajoute une condition supplémentaire. Il existe 8 ControlNets pré-entraînés canoniques, entraînés sur différentes conditions telles que la détection de contours, les gribouillis, les cartes de profondeur et les segmentations sémantiques.
Pondération des prompts
Pondération des prompts est une technique simple qui accorde plus de poids d'attention à certaines parties de l'entrée textuelle.
Custom Diffusion
Custom Diffusion n’effectue un fine-tuning que des cartes d’attention croisée d’un modèle de diffusion texte-image pré-entraîné. Il permet également d’effectuer en complément du Textual Inversion. Il prend en charge la formation multi-concepts par conception. Comme DreamBooth et Textual Inversion, Custom Diffusion est également utilisé pour enseigner à un modèle de diffusion texte-image pré-entraîné de nouveaux concepts afin de générer des sorties impliquant le ou les concepts d’intérêt.
DiffEdit
DiffEdit permet d'effectuer des modifications sémantiques sur des images d'entrée ainsi que sur les prompts d'entrée, tout en préservant les images d'entrée d'origine dans la mesure du possible.
T2I-Adapter
T2I-Adapter est un réseau auxiliaire qui ajoute une condition supplémentaire. Il existe 8 adaptateurs pré-entraînés canoniques, entraînés sur différentes conditions telles que la détection de contours, le croquis, les cartes de profondeur et les segmentations sémantiques.
Fabric
Fabric est une approche sans entraînement applicable à une large gamme de modèles de diffusion populaires, qui exploite la couche d'auto-attention présente dans les architectures les plus utilisées pour conditionner le processus de diffusion sur un ensemble d'images de retour d'information.
Update on GitHub