Composición de imágenes con modelos de difusión pre-entrenados

Composición de imágenes con modelos pre-entrenados de difusión

Una técnica para aumentar el control sobre las imágenes generadas por modelos de difusión de texto a imagen pre-entrenados

Una imagen generada con Stable Diffusion utilizando el método descrito en el artículo. Imagen del autor.

Los modelos de difusión de texto a imagen han logrado un rendimiento sorprendente en la generación de imágenes fotorrealistas siguiendo indicaciones de descripción de lenguaje natural. La liberación de modelos pre-entrenados de código abierto, como Stable Diffusion, ha contribuido a la democratización de estas técnicas. Los modelos de difusión pre-entrenados permiten a cualquier persona crear imágenes asombrosas sin la necesidad de una gran cantidad de potencia informática o un proceso de entrenamiento prolongado.

A pesar del nivel de control ofrecido por la generación de imágenes guiada por texto, obtener una imagen con una composición predeterminada a menudo es complicado, incluso con una extensa guía. De hecho, los modelos estándar de difusión de texto a imagen ofrecen poco control sobre los diversos elementos que se representarán en la imagen generada.

En este artículo, explicaré una técnica reciente basada en el artículo “MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation”. Esta técnica permite obtener un mayor control al colocar elementos en una imagen generada por un modelo de difusión guiado por texto. El método presentado en el artículo es más general y permite otras aplicaciones, como la generación de imágenes panorámicas, pero aquí me limitaré al caso de la composición de imágenes utilizando indicaciones de texto basadas en regiones. La principal ventaja de este método es que se puede utilizar con modelos de difusión pre-entrenados listos para usar sin la necesidad de un costoso reentrenamiento o ajuste fino.

Para complementar este artículo con código, he preparado un cuaderno de Colab sencillo y un repositorio de GitHub con la implementación del código que utilicé para generar las imágenes en este artículo. El código se basa en el flujo de trabajo para Stable Diffusion contenido en la biblioteca “diffusers” de Hugging Face, pero implementa solo las partes necesarias para su funcionamiento para que sea más sencillo y fácil de leer.

Modelos de difusión

En esta sección, recordaré algunos conceptos básicos sobre los modelos de difusión. Los modelos de difusión son modelos generativos que generan nuevos datos invirtiendo un proceso de difusión que mapea la distribución de datos a una distribución gaussiana isotrópica. Más específicamente, dado una imagen, el proceso de difusión consiste en una serie de pasos en los que se agrega una pequeña cantidad de ruido gaussiano a esa imagen. En el límite de un número infinito de pasos, la imagen con ruido será indistinguible del ruido puro muestreado de una distribución gaussiana isotrópica.

El objetivo del modelo de difusión es invertir este proceso tratando de adivinar la imagen con ruido en el paso t-1 en el proceso de difusión dado la imagen con ruido en el paso t. Esto se puede hacer, por ejemplo, entrenando una red neuronal para predecir el ruido agregado en ese paso y sustrayéndolo de la imagen con ruido.

Una vez que hemos entrenado dicho modelo, podemos generar nuevas imágenes muestreando ruido de una distribución gaussiana isotrópica y usar el modelo para invertir el proceso de difusión eliminando gradualmente el ruido.

El objetivo del modelo de difusión es aprender la probabilidad q(x(t-1)|x(t)) para todos los pasos de tiempo t. Imagen del artículo: Denoising Diffusion Probabilistic Models.

Los modelos de difusión de texto a imagen invierten el proceso de difusión tratando de alcanzar una imagen que corresponda a la descripción de una indicación de texto. Esto se hace generalmente mediante una red neuronal que, en cada paso t, predice la imagen con ruido en el paso t-1 condicionada no solo a la imagen con ruido en el paso t, sino también a una indicación de texto que describe la imagen que está tratando de reconstruir.

Muchos modelos de difusión de imágenes, incluido Stable Diffusion, no operan en el espacio de imagen original sino en un espacio latente aprendido más pequeño. De esta manera, es posible reducir los recursos computacionales requeridos con una pérdida mínima de calidad. El espacio latente se aprende generalmente a través de un autoencoder variacional. El proceso de difusión en el espacio latente funciona exactamente como antes, lo que permite generar nuevos vectores latentes a partir de ruido gaussiano. A partir de estos, es posible obtener una imagen recién generada utilizando el decodificador del autoencoder variacional.

Composición de imágenes con MultiDiffusion

Ahora vamos a explicar cómo obtener una composición de imágenes controlable utilizando el método MultiDiffusion. El objetivo es tener un mejor control sobre los elementos generados en una imagen por un modelo de difusión de texto a imagen pre-entrenado. Más específicamente, dado una descripción general para la imagen (por ejemplo, una sala de estar, como en la imagen de portada), queremos una serie de elementos, especificados a través de indicaciones de texto, que estén presentes en ubicaciones específicas (por ejemplo, un sofá rojo en el centro, una planta de interior a la izquierda y una pintura en la parte superior derecha). Esto se puede lograr proporcionando un conjunto de indicaciones de texto que describan los elementos deseados, y un conjunto de máscaras binarias basadas en regiones que especifiquen la ubicación dentro de la cual deben representarse los elementos. Como ejemplo, la imagen a continuación contiene los cuadros delimitadores para los elementos de la imagen en la imagen de portada.

Cuadros delimitadores y indicaciones utilizadas para generar la imagen de portada. Imagen del autor.

La idea principal de MultiDiffusion para la generación de imágenes controlables es combinar múltiples procesos de difusión, relativos a diferentes indicaciones especificadas, para obtener una imagen coherente y suave que muestre el contenido de cada indicación en una región predefinida. La región asociada con cada indicación se especifica mediante una máscara binaria de la misma dimensión que la imagen. Los píxeles de la máscara se establecen en 1 si la indicación debe aparecer en esa ubicación y en 0 en caso contrario.

Más específicamente, denotemos por t un paso genérico en un proceso de difusión que opera en el espacio latente. Dado los vectores latentes ruidosos en el paso de tiempo t, el modelo predecirá el ruido para cada indicación de texto especificada. A partir de estos ruidos predichos, obtenemos un conjunto de vectores latentes en el paso de tiempo t-1 (uno para cada indicación) eliminando cada uno de los ruidos predichos de los vectores latentes anteriores en el paso de tiempo t. Para obtener la entrada para el siguiente paso de tiempo en el proceso de difusión, necesitamos combinar estos diferentes vectores juntos. Esto se puede hacer multiplicando cada vector latente por la máscara de indicación correspondiente y luego tomando un promedio por píxel ponderado por las máscaras. Siguiendo este procedimiento, en la región especificada por una máscara particular, los vectores latentes seguirán las trayectorias del proceso de difusión guiadas por la indicación local correspondiente. Combinar los vectores latentes juntos en cada paso, antes de predecir el ruido, garantiza la cohesión global de la imagen generada, así como transiciones suaves entre regiones enmascaradas diferentes.

MultiDiffusion introduce una fase de arranque al comienzo del proceso de difusión para una mejor adherencia a las máscaras ajustadas. Durante estos pasos iniciales, los vectores latentes sin ruido correspondientes a diferentes indicaciones no se combinan entre sí, sino que se combinan con algunos vectores latentes con ruido correspondientes a un fondo de color constante. De esta manera, como el diseño se determina generalmente al principio del proceso de difusión, es posible obtener una mejor coincidencia con las máscaras especificadas, ya que el modelo puede enfocarse inicialmente solo en la región enmascarada para representar la indicación.

Ejemplos

En esta sección, mostraré algunas aplicaciones del método. He utilizado el modelo de difusión estable pre-entrenado 2 alojado por HuggingFace para crear todas las imágenes en esta publicación, incluida la imagen de portada.

Como se mencionó, una aplicación directa del método es obtener una imagen que contenga elementos generados en ubicaciones predefinidas.

Cuadros delimitadores. Imagen del autor.
Imagen generada utilizando los cuadros delimitadores anteriores. Imagen del autor.

El método permite especificar los estilos u otras propiedades de los elementos individuales que se representarán. Esto se puede utilizar, por ejemplo, para obtener una imagen nítida sobre un fondo borroso.

Cuadros delimitadores para fondo borroso. Imagen del autor.
Imagen generada utilizando las cajas delimitadoras anteriores. Imagen del autor.

Los estilos de los elementos también pueden ser muy diferentes, lo que lleva a resultados visuales impresionantes. Como ejemplo, la imagen a continuación se obtiene mezclando un estilo de foto de alta calidad con una pintura al estilo de van Gogh.

Cajas delimitadoras con diferentes estilos. Imagen del autor.
Imagen generada utilizando las cajas delimitadoras anteriores. Imagen del autor.

Conclusión

En esta publicación, hemos explorado un método que combina diferentes procesos de difusión para mejorar el control sobre las imágenes generadas por modelos de difusión condicionados por texto. Este método aumenta el control sobre la ubicación en la que se generan los elementos de la imagen y también permite combinar sin problemas elementos representados en diferentes estilos.

Una de las principales ventajas del procedimiento descrito es que se puede utilizar con modelos de difusión de texto a imagen pre-entrenados sin necesidad de ajuste fino, lo cual generalmente es un procedimiento costoso. Otro punto fuerte es que la generación de imágenes controlables se obtiene mediante máscaras binarias que son más simples de especificar y manejar que condicionamientos más complicados.

La principal desventaja de esta técnica es que necesita hacer, en cada paso de difusión, un pase de red neuronal por cada indicación para predecir el ruido correspondiente. Afortunadamente, estos se pueden realizar en lotes para reducir el tiempo de inferencia, pero a costa de una mayor utilización de memoria GPU. Además, a veces algunas de las indicaciones (especialmente las especificadas solo en una pequeña parte de la imagen) se descuidan o cubren un área más grande que la especificada por la máscara correspondiente. Si bien esto se puede mitigar con pasos de arranque, un número excesivo de ellos puede reducir significativamente la calidad general de la imagen, ya que hay menos pasos disponibles para armonizar los elementos juntos.

Vale la pena mencionar que la idea de combinar diferentes procesos de difusión no se limita a lo que se describe en esta publicación, sino que también se puede utilizar para otras aplicaciones, como la generación de imágenes panorámicas, como se describe en el artículo MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation.

Espero que hayas disfrutado este artículo, si deseas profundizar en los detalles técnicos puedes consultar este cuaderno de Colab y el repositorio de GitHub con la implementación del código.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

La Carrera para Regular la Inteligencia Artificial

Por qué Europa tiene ventaja sobre América y China.

Inteligencia Artificial

IA y el futuro del fútbol universitario

El panorama del atletismo universitario ha vuelto a cambiar gracias al dinero y al fútbol americano. La SEC fue la pr...

Ciencias de la Computación

Los EE. UU. están acumulando abiertamente información sucia sobre todos sus ciudadanos.

Un informe recientemente desclasificado de la Oficina del Director de Inteligencia Nacional revela que el gobierno fe...

Inteligencia Artificial

Búsqueda de Google en India ahora está impulsada por IA | Aprende cómo usarlo

Google ha desatado una innovación revolucionaria que redefinirá la forma en que los indios y japoneses exploran el va...

Inteligencia Artificial

El próximo guardia de seguridad de tu escuela podría ser un robot

Varias compañías tecnológicas han comenzado a ofrecer robots de seguridad a las escuelas de Estados Unidos.

Inteligencia Artificial

Los científicos de la computación utilizan la IA para identificar aplicaciones riesgosas

Brian Levine de la Universidad de Massachusetts Amherst y una docena de científicos informáticos han desarrollado un ...