DALL-E 2 y unCLIP
Rubén Rodríguez Abril
Este artículo introduce la segunda versión del algoritmo DALL-E, presentada por Open AI en Septiembre de 2022. Su enfoque difiere grandemente del de su predecesor. Mientras que en la primera versión, un descodificador traducía los tokens producidos autorregresivamente por un transformer, DALL-E 2 hace uso de los espacios de características comunes de CLIP. Su algoritmo unCLIP genera imágenes a partir de vectores textuales de CLIP, usando para ello una “pila” de dos modelos: un “prior”, encargado de generar una representación gráfica inicial, y un descodificador de imagen, que transforma dicha representación en un gráfico definitivo.
unCLIP
La segunda versión de DALL-E se distancia significativamente del enfoque de su predecesor dentro de la misma serie. En la primera versión, un transformer ordinario (generalmente GPT-2 o GPT-3) construía autorregresivamente una cadena de tokens de imagen a partir de un prompt introducido por el usuario. Tras ello el descodificador de un VAE convertía esta cadena de tokens en la imagen de salida. En este diseño no se utilizaban espacios latentes ni espacios de representación común entre texto o imagen.
DALL-E 2, que analizamos en este artículo, se caracteriza por el uso de espacios compartidos de CLIP y por la construcción de imágenes a partir de los vectores de dicho espacio mediante el algoritmo unCLIP. La arquitectura de este último consta de tres componentes fundamentales:
-Un codificador de texto, consistente en un transformer, traduce la descripción de un usuario en una representación textual de CLIP.
-Un prior, que puede ser un modelo de difusión o autorregresivo, convierte a esta representación textual en otra de naturaleza gráfica, también en CLIP. Esta transformación se realiza dentro del espacio latente común.
-Un descodificador, generalmente de una VAE, transforma esta representación gráfica de una imagen de salida.

Figura 1. La zona situada debajo de la línea puntuada describe el funcionamiento DALL-E 2 en fase de inferencia. El codificador de texto transforma una descripción en una representación textual de CLIP. El prior convierte dicha representación textual en otra gráfica. Por último, el descodificador transforma el “embedding” gráfico en una imagen completa. Fuente: Hierarchical Text-Conditional Image Generation with CLIP Latents.
Arquitectura
Codificador de texto
Es un transformer de la serie GPT, dotado de 24 módulos y una dimensión de 1024, y cuyas capas de salida (lineal y softmax) han sido eliminadas. El token [CLS], (véase los artículos de CLIP y de BERT) del último módulo transformer es el que sirve de representación de toda la cadena de texto. Este token se convierte, tras pasar por una transformación lineal, en un vector textual de CLIP.
Prior
El vector textual debe ser transformado en otro vector de naturaleza gráfica, dentro del espacio semántico compartido de CLIP. Este proceso puede realizarse por un modelo de difusión o por un sistema autorregresivo (como un transformer), que generaría una cadena de tokens/códigos. En este último caso, la cadena de códigos resultante sería convertida a su vez en un embedding visual por un perceptrón multicapas.
El entrenamiento de los modelos CLIP está diseñado para maximizar la semejanza entre el vector representativo de una imagen y el de su descripción textual, logrando una similaridad de coseno cercana a uno. Desde de un punto de vista geométrico, esto implica que ambos vectores debería ser prácticamente idénticos.
En teoría, esto cuestiona la necesidad de la fase del prior: bastaría con introducir el vector textual de CLIP (muy cercano al vector de imagen) en el descodificador.

Figura 2: La importancia del prior. En la fila de arriba, gráficos producidos por un descodificador alimentado directamente con la cadena de texto proporcionada por el usuario. En la fila de en medio, imágenes producidas por un descodificador al que se proporciona como entrada un embedding textual de CLIP (sin intervención de prior). La fila de abajo muestra los gráficos producidos por el descodificador a partir de la salida del prior (embedding textual de imagen). Fuente: Hierarchical Text-Conditional Image Generation with CLIP Latents.
Sin embargo, la fase del prior es necesaria por las siguientes razones:
1) La cantidad de información pura o entropía que contienen los vectores gráficos es significativamente mayor a la de los vectores textuales, particularmente si la cadena de texto es corta. Piénsese en el caso de la figura 3. La entropía de su descripción (prompt) es tan sólo de 3000 bits mientras que la imagen producida por DALL-E 2 tiene una entropía estimada de unos 1,25-1,6 millones de bits, aproximadamente unas 500 veces más. La enorme diferencia entre la entropía gráfica y la lingüística se deriva de la gran cantidad de información necesaria para codificar elementos como el estilo del gráfico, los diferentes detalles de la imagen, o sus rasgos de alto o bajo nivel. Una misma descripción textual puede corresponder a múltiples posibilidades de configuración de una imagen dentro del espacio de representación de CLIP. Toda esta información extra, que no fue proporcionada por el usuario en su prompt, es inyectada en la imagen en formación por el prior y por el codificador.

Figura 3. «Una representación mítica y surrealista del Cad Goddeu, la legendaria ‘Batalla de los Árboles’ de la mitología galesa. La escena muestra un bosque encantado cobrando vida, con antiguos robles, sauces y tejos transformándose en figuras parecidas a guerreros, sus ramas retorciéndose en forma de brazos y armas. La atmósfera es tanto mística como intensa, con un cielo crepuscular envuelto en niebla e iluminado por un brillo mágico dorado. En el fondo, un poderoso druida o mago recita encantamientos, invocando a los espíritus de los árboles para unirse a la batalla. El ambiente general combina lo misterioso con lo épico, capturando la naturaleza de otro mundo de este evento mítico.»
Nota: Para calcular la entropía del texto, hemos fijado una entropía de 4,22 bits por carácter. En el caso de la entropía de la imagen, nos ceñimos a la definición de Gregory Chaitin, que la define como la cantidad de información no compresible existente en una región del espacio. Un mapa de bits de 1024×1024 píxeles alberga una información no comprimida de unos 3 megabytes (un byte por cada canal RGB de un pixel). Aplicando compresión sin pérdida (como el formato PNG) la media de compresibilidad en el caso de ilustraciones suele oscilar entre el 30-50%, de lo cual resultaría una entropía total de entre 1,25 y 1,6 MB para nuestra imagen.
2) La existencia de un prior permite crear múltiples vectores de imagen a partir de un mismo vector de texto. Tras cada etapa del proceso de difusión deba de realizarse un proceso de muestreo aleatorio, lo que introduce elementos estocásticos y entropía en el sistema.
Descodificador de imagen
La arquitectura del descodificador es exactamente la misma que en el caso de GLIDE, al que ya dedicamos en su día un artículo en esta misma serie.
Codificador de imagen
Junto con los tres elementos anteriores, en el entrenamiento de CLIP y con el objetivo de crear el espacio de representaciones común, los creadores de DALL-E 2 usaron como codificador de imágenes un transformer visual ViT-H/16, compuesto de 32 bloques de transformers y con una resolución de entrada de 256×256.
El espacio de CLIP: fuente creativa de DALL-E 2
El espacio de representaciones de CLIP y en particular el conjunto de todos los posibles embeddings de imagen es la verdadera biblioteca universal creativa desde la cual DALL-E 2 desarrolla todas sus imágenes.
La información contenida en una imagen x de DALL-E 2 se estructura en una representación latente de doble nivel (zi, xT). El latente zi encapsula la información contenida en el embedding de imagen de CLIP, que suele ser de naturaleza predominantemente semántica. Es la información procedente de la salida del prior. El segundo latente xT contiene toda la información añadida por el descodificador de imágenes y que se refieren a la textura y a los detalles de bajo nivel del gráfico en formación.
Dado que todos los vectores están normalizados, el espacio de características de CLIP puede ser concebido como una hiperesfera de radio 1 en el que cada vector de imagen zi viene representado por un punto. Este espacio, aunque discreto, presenta propiedades que lo aproximan a los espacios topológicos y diferenciables. Es posible realizar una transición entre dos imágenes mediante el trazado de una línea continua entre ellos sobre la superficie de la hiperesfera y la selección de puntos intermedios situados dentro de dicha línea. Este procedimiento se denomina interpolación y se ilustra por la figura 4.

Figura 4: Interpolaciones dentro del espacio de CLIP. Todas las imágenes se corresponden con latentes zi. En la mitad superior de la ilustración, los dos extremos muestra el cuadro de Van Gogh “Noche Estrellada” y una fotografía de dos perros respectivamente. Ambos gráficos están representados por sendos puntos dentro de la hiperesfera de CLIP. Las imágenes de en medio, estructuradas en tres filas, representan puntos intermedios en tres trayectorias posibles que conectan los dos extremos. Fuente: Hierarchical Text-Conditional Image Generation with CLIP Latents.
Gracias al espacio de CLIP, en DALLE-E 2 las imágenes ya producidas pueden ser manipuladas por medio de nuevo texto y el usuario puede sugerir al modelo cambios en las mismas. En este caso, las transiciones e interpolaciones son guiadas por medio de un vector textual.
El procedimiento es el siguiente:
-Obtención del vector textual de CLIP (zt) a partir de la nueva descripción del usuario. Este vector se compara con el vector textual de la descripción de la imagen original z0.
-Cálculo del vector de diferencia de texto (diff text) zd = norm(zt – z0).
-Realización de una rotación en el espacio latente entre el vector de imagen z0 y el vector textual zt, por medio de una función de interpolación esférica zθ = slerp (zi, zd, θ), donde θ es el argumento que determina la cantidad de rotación que va a experimentar el vector. La ilustración 5 muestra cómo progresa la transición de la imagen a medida que aumentamos la variable θ.

Figura 5: Las cuatro filas representan sendas rotaciones en la hiperesfera de CLIP, guiadas por descripciones textuales. Fuente: Hierarchical Text-Conditional Image Generation with CLIP Latents.
En todos estos casos, la agregación de la información xT a la proporcionada por el vector visual zi se realiza por el descodificador de imagen a través de un procedimiento denominado inversión DDIM.
Resultados
Las imágenes generadas por DALL-E 2 presentaron una cierta mejoría respecto a las GLIDE, tanto en realismo (evaluado por la escala FID) como en la calidad estética de las mismas (medida a través de la base de datos AVA), si bien unCLIP aun tiene ciertos problemas a la hora de asignar atributos a objetos singulares, particularmente cuando el prompt requiere atribuir dos atributos diferentes a dos objetos separados.
El progreso del algoritmo unCLIP ha generado cierta preocupación en la comunidad de desarrolladores, dado que que la calidad de las imágenes sintéticas se acerca cada vez más al de las imágenes naturales. A medida que la teoría madure es posible que las imágenes generadas por IA tengan cada vez menores trazas de su origen sintético y sea cada vez más difícil identificar dentro del ciberespacio a los datos reales de los sintéticos.