Diffusers documentation
Generación controlada
Generación controlada
Controlar las salidas generadas por los modelos de difusión ha sido un objetivo perseguido durante mucho tiempo por la comunidad y es ahora un tema de investigación activo. En muchos modelos de difusión populares, cambios sutiles en las entradas, tanto en las imágenes como en los prompts de texto, pueden alterar drásticamente las salidas. En un mundo ideal, querríamos poder controlar cómo se preservan y modifican las semánticas.
La mayoría de los ejemplos de preservación de semántica se reducen a la capacidad de mapear con precisión un cambio en la entrada a un cambio en la salida. Es decir, añadir un adjetivo a un sujeto en un prompt preserva la imagen completa, modificando únicamente el sujeto cambiado. O bien, la variación de imagen de un sujeto particular preserva la pose del sujeto.
Además, existen cualidades de las imágenes generadas que nos gustaría influir más allá de la preservación semántica. Es decir, en general, nos gustaría que nuestras salidas sean de buena calidad, sigan un estilo particular o sean realistas.
Documentaremos algunas de las técnicas que diffusers admite para controlar la generación de modelos de difusión. Gran parte de esto es investigación de vanguardia y puede ser bastante matizada. Si algo necesita aclaración o tienes una sugerencia, no dudes en abrir una discusión de GitHub o un issue de GitHub.
Proporcionamos una explicación de alto nivel sobre cómo se puede controlar la generación, así como un fragmento de los detalles técnicos. Para explicaciones más profundas sobre los aspectos técnicos, los artículos originales, a los que se enlaza desde las pipelines, son siempre la mejor referencia.
Dependiendo del caso de uso, se debe elegir una técnica en consecuencia. En muchos casos, estas técnicas se pueden combinar. Por ejemplo, se puede combinar Textual Inversion con SEGA para proporcionar una guía semántica más detallada a las salidas generadas mediante Textual Inversion.
A menos que se indique lo contrario, estas son técnicas que funcionan con modelos existentes y no requieren sus propios pesos.
- InstructPix2Pix
- Atender y Excitar
- Guía semántica
- Guía de autoatención
- Depth2Image
- Panorama MultiDiffusion
- DreamBooth
- Inversión textual
- ControlNet
- Ponderación de prompts
- Diffusión personalizada
- DiffEdit
- T2I-Adapter
- FABRIC
Para su comodidad, proporcionamos una tabla que indica qué métodos son solo de inferencia y cuáles requieren ajuste fino/entrenamiento.
| Método | Solo inferencia | Requiere entrenamiento / ajuste fino | Comentarios |
|---|---|---|---|
| InstructPix2Pix | ✅ | ❌ | Además, se puede ajustar para mejorar el rendimiento en instrucciones de edición específicas. |
| Atender y Excitar | ✅ | ❌ | |
| Guía semántica | ✅ | ❌ | |
| Guía de autoatención | ✅ | ❌ | |
| Depth2Image | ✅ | ❌ | |
| Panorama MultiDiffusion | ✅ | ❌ | |
| DreamBooth | ❌ | ✅ | |
| Inversión textual | ❌ | ✅ | |
| ControlNet | ✅ | ❌ | Un ControlNet se puede entrenar/ajustar finamente sobre una condición personalizada. |
| Ponderación de prompts | ✅ | ❌ | |
| Diffusión personalizada | ❌ | ✅ | |
| DiffEdit | ✅ | ❌ | |
| T2I-Adapter | ✅ | ❌ | |
| Fabric | ✅ | ❌ |
InstructPix2Pix
InstructPix2Pix se ajusta a partir de Stable Diffusion para admitir la edición de imágenes de entrada. Toma como entradas una imagen y un prompt que describe una edición, y devuelve la imagen editada. InstructPix2Pix se ha entrenado explícitamente para funcionar bien con prompts similares a los de InstructGPT.
Atender y Excitar
Attend and Excite permite que los sujetos en el prompt se representen fielmente en la imagen final.
Se proporcionan como entrada un conjunto de índices de tokens, que corresponden a los sujetos del prompt que deben estar presentes en la imagen. Durante el desruido, se garantiza que cada índice de token tenga un umbral mínimo de atención para al menos un parche de la imagen. Los latentes intermedios se optimizan de forma iterativa durante el proceso de desruido para reforzar la atención del token de sujeto más descuidado hasta que se supere el umbral de atención para todos los tokens de sujeto.
Al igual que Pix2Pix Zero, Attend and Excite también implica un mini bucle de optimización (dejando intactos los pesos preentrenados) en su pipeline y puede requerir más memoria que el StableDiffusionPipeline habitual.
Guía semántica (SEGA)
SEGA permite aplicar o eliminar uno o más conceptos de una imagen. También se puede controlar la intensidad del concepto. Es decir, el concepto de sonrisa se puede usar para aumentar o disminuir gradualmente la sonrisa de un retrato.
De manera similar a como la guía sin clasificador proporciona orientación mediante entradas de prompt vacías, SEGA proporciona orientación sobre prompts conceptuales. Se pueden aplicar varios de estos prompts conceptuales simultáneamente. Cada prompt conceptual puede añadir o eliminar su concepto dependiendo de si la guía se aplica de forma positiva o negativa.
A diferencia de Pix2Pix Zero o Attend and Excite, SEGA interactúa directamente con el proceso de difusión en lugar de realizar una optimización explícita basada en gradientes.
Guía de autoatención (SAG)
La guía de autoatención mejora la calidad general de las imágenes.
SAG proporciona orientación desde predicciones no condicionadas en detalles de alta frecuencia hasta imágenes totalmente condicionadas. Los detalles de alta frecuencia se extraen de los mapas de autoatención del UNet.
Depth2Image
Depth2Image se ajusta a partir de Stable Diffusion para preservar mejor la semántica en la variación de imágenes guiada por texto.
Se condiciona en una estimación de profundidad monocular de la imagen original.
MultiDiffusion Panorama
MultiDiffusion Panorama define un nuevo proceso de generación sobre un modelo de difusión preentrenado. Este proceso combina varios métodos de generación por difusión que pueden aplicarse fácilmente para generar imágenes de alta calidad y diversas. Los resultados se ajustan a los controles proporcionados por el usuario, como la relación de aspecto deseada (p. ej., panorámica) y señales de guía espacial, que van desde máscaras de segmentación estrictas hasta cajas delimitadoras. MultiDiffusion Panorama le permite generar imágenes de alta calidad en relaciones de aspecto arbitrarias (p. ej., panorámicas).
Ajuste fino de tus propios modelos
Además de los modelos preentrenados, Diffusers incluye scripts de entrenamiento para ajustar modelos con datos proporcionados por el usuario.
DreamBooth
DreamBooth ajusta el afinamiento de un modelo para enseñarle sobre un nuevo sujeto. Es decir, unas pocas fotos de una persona pueden usarse para generar imágenes de esa persona en diferentes estilos.
Inversión textual
Textual Inversion ajusta un modelo para enseñarle un concepto nuevo. Es decir, unas pocas imágenes de un estilo de arte pueden usarse para generar imágenes en ese estilo.
ControlNet
ControlNet es una red auxiliar que añade una condición adicional. Existen 8 ControlNets preentrenados canónicos entrenados con diferentes condicionamientos, como la detección de bordes, garabatos, mapas de profundidad y segmentaciones semánticas.
Pesos de los prompts
Peso del prompt es una técnica sencilla que otorga más peso de atención a ciertas partes de la entrada de texto.
Custom Diffusion
Custom Diffusion solo ajusta los mapas de atención cruzada de un modelo de difusión de texto a imagen preentrenado. También permite realizar adicionalmente Textual Inversion. Está diseñado para admitir el entrenamiento de múltiples conceptos. Al igual que DreamBooth y Textual Inversion, Custom Diffusion se utiliza para enseñar a un modelo de difusión de texto a imagen preentrenado sobre nuevos conceptos para generar salidas que involucren el o los conceptos de interés.
DiffEdit
DiffEdit permite la edición semántica de las imágenes de entrada junto con los prompts de entrada, preservando las imágenes de entrada originales en la mayor medida posible.
T2I-Adapter
T2I-Adapter es una red auxiliar que añade una condición adicional. Existen 8 adaptadores preentrenados canónicos entrenados con diferentes condicionamientos, como detección de bordes, bocetos, mapas de profundidad y segmentaciones semánticas.
Fabric
Fabric es un enfoque sin entrenamiento aplicable a una amplia gama de modelos de difusión populares, que explota la capa de autoatención presente en las arquitecturas más utilizadas para condicionar el proceso de difusión en un conjunto de imágenes de retroalimentación.
Update on GitHub