¿Por qué los modelos de imagen ignoran partes de tu prompt?

Escribes "un gato verde con un sombrero rojo sentado en una silla azul" en Stable Diffusion y obtienes un gato rojo en una silla verde sin sombrero. Los objetos están ahí, los colores están ahí, pero las vinculaciones están mal — el modelo asignó colores a los objetos equivocados, omitió un atributo completamente, y revolvió el arreglo espacial. Esto no es un fallo aleatorio. Sucede sistemáticamente porque el modelo de difusión no entiende tu prompt de la manera que tú lo haces. Ve una bolsa de conceptos visuales (gato, verde, rojo, sombrero, silla, azul) y los combina de maneras estadísticamente plausibles pero semánticamente incorrectas.

Este es el problema de alineación texto-imagen : la brecha entre lo que el usuario describió y lo que el modelo genera. Se manifiesta en varios modos de fallo específicos: vinculación de atributos incorrecta (el sombrero rojo se convierte en un gato rojo), relaciones espaciales incorrectas ("arriba" se convierte en "al lado de"), conteo de objetos incorrecto ("tres manzanas" produce dos o cinco), y renderizado de texto confuso ("un letrero que dice HOLA" produce caracteres sin sentido). Todos estos provienen de la misma causa raíz: el codificador de texto comprime el prompt en una representación que pierde estructura composicional.

Surgieron tres estrategias distintas para arreglar esto:

  • Mejores codificadores de texto: usar un codificador de texto que realmente entienda la estructura del lenguaje (T5-XXL en lugar de CLIP). Este es el enfoque de Imagen.
  • Mejores datos de entrenamiento: reescribir cada leyenda en el conjunto de entrenamiento para que el modelo aprenda de descripciones precisas y detalladas en lugar de texto alternativo ruidoso. Este es el enfoque de DALL-E 3.
  • Mejor arquitectura: cambiar cómo las características de texto e imagen interactúan dentro del eliminador de ruido (atención conjunta MMDiT en SD3/Flux, cubierto en el artículo anterior).

Este artículo cubre los dos primeros — el enfoque centrado en datos de DALL-E 3 y el enfoque centrado en el modelo de Imagen — porque representan filosofías fundamentalmente diferentes que ambas demostraron ser notablemente efectivas.

DALL-E 3: arreglar los datos de entrenamiento

El equipo de DALL-E 3 en OpenAI partió de una observación simple: los pares imagen-texto extraídos de internet son terribles. La "leyenda" de una foto impresionante de un atardecer sobre el Gran Cañón podría ser IMG_2847.jpg . Una foto detallada de producto podría tener texto alternativo diciendo "imagen". Una pintura de una mujer en vestido rojo de pie en un campo de girasoles podría estar etiquetada "bonita foto" (Betker et al., 2023) . Cuando entrenas un modelo de difusión en estos pares, el modelo aprende que descripciones vagas corresponden a imágenes detalladas. Así que cuando un usuario luego proporciona un prompt detallado y específico, el modelo no tiene señal de entrenamiento para cómo seguirlo fielmente — nunca fue entrenado en leyendas precisas.

La solución de DALL-E 3 es elegante: si las leyendas de internet son malas, reescríbelas todas . El enfoque tiene tres pasos:

Paso 1: Entrenar un modelo de descripción. OpenAI entrenó un modelo de visión-lenguaje especializado para producir leyendas altamente descriptivas y precisas para cualquier imagen. Este descriptor no solo dice "un gato" — dice "un gato atigrado verde usando un pequeño sombrero rojo tejido, sentado en una silla de madera azul en una cocina soleada, con piso de azulejo blanco y una ventana de fondo." Describe colores, posiciones, relaciones espaciales, materiales, iluminación y texto visible en la imagen.

Paso 2: Re-describir todo el dataset de entrenamiento. Ejecutar el descriptor en cada imagen del corpus de entrenamiento — miles de millones de imágenes — reemplazando el texto alternativo original ruidoso con la descripción detallada del descriptor. Esto produce un nuevo dataset de pares (imagen, descripción_detallada).

Paso 3: Entrenar el modelo de difusión en los datos re-descritos. El modelo de difusión ahora solo ve leyendas precisas y detalladas durante el entrenamiento. Nunca encuentra "IMG_2847.jpg" o "bonita foto". Cada ejemplo de entrenamiento le enseña la relación entre una descripción específica y una imagen específica.

💡 ¿Por qué funciona esto tan bien? Considera qué sucede durante el entrenamiento. Cuando cada leyenda dice exactamente qué objeto tiene qué color, el modelo recibe señal de gradiente para vincular atributos correctamente. Cuando cada leyenda describe relaciones espaciales ("el gato está SOBRE la silla, no al lado"), el modelo aprende a respetar esas preposiciones. Las habilidades composicionales emergen de datos de entrenamiento composicionales — el modelo solo puede aprender lo que las leyendas le enseñan.

Los resultados son una adherencia al prompt dramáticamente mejor en todos los modos de fallo que listamos:

  • Relaciones espaciales: "arriba", "detrás", "entre" se renderizan correctamente porque el re-descriptor siempre describe la disposición espacial.
  • Vinculación de atributos: el color, tamaño y material correctos se vinculan al objeto correcto porque las leyendas siempre emparejan atributos con sus objetos.
  • Conteo: "exactamente tres manzanas" funciona mejor porque el descriptor cuenta objetos.
  • Renderizado de texto: el texto en imágenes mejoró porque el descriptor transcribe el texto visible, dando al modelo señal de entrenamiento para las formas de caracteres.

Críticamente, esta es una solución de datos, no de arquitectura . La arquitectura del modelo DALL-E 3 es relativamente estándar — un eliminador de ruido U-Net condicionado en embeddings de texto CLIP vía atención cruzada, con un codificador T5 añadido para comprensión de texto más rica. La magia está enteramente en la calidad de los datos de entrenamiento. Esta idea — que un modelo mediocre entrenado en datos excelentes puede superar a un modelo excelente entrenado en datos mediocres — ha demostrado ser una de las ideas más impactantes en IA generativa.

Una implicación práctica: en tiempo de inferencia, DALL-E 3 en ChatGPT usa prompting mediado por LLM . El prompt corto del usuario ("un gato en una silla") primero es reescrito por GPT-4 en una descripción larga y detallada antes de enviarse al modelo de difusión. Esto cierra la brecha entre cómo los humanos escriben naturalmente los prompts (cortos y vagos) y cómo el modelo re-descrito los espera (largos y detallados). El LLM actúa como un traductor entre la intención humana y el nivel de especificidad en el que el modelo fue entrenado.

Imagen: escalar el codificador de texto

Imagen (Saharia et al., 2022) de Google Brain tomó un enfoque completamente diferente al mismo problema. En lugar de arreglar los datos de entrenamiento, Imagen preguntó: ¿qué pasaría si el propio codificador de texto fuera mucho más poderoso? ¿Qué pasaría si realmente pudiera analizar la estructura composicional de un prompt?

El experimento clave fue una comparación directa: escalar el modelo de difusión (la U-Net) vs. escalar el codificador de texto. El resultado fue inequívoco — escalar el codificador de texto mejoró la calidad de imagen y la alineación texto-imagen mucho más que escalar el eliminador de ruido . Específicamente, reemplazar el codificador de texto de CLIP (63M parámetros) con T5-XXL de Google (4.6B parámetros) mejoró dramáticamente tanto el FID (calidad de imagen) como la puntuación CLIP (alineación texto-imagen), mientras que aumentar proporcionalmente el tamaño de la U-Net produjo ganancias mucho menores. El codificador de texto era el cuello de botella .

¿Por qué un codificador de texto más grande ayuda tanto? La respuesta está en cómo se entrenaron CLIP y T5. CLIP fue entrenado en pares imagen-texto usando un objetivo contrastivo: aprender a coincidir imágenes con sus leyendas y rechazar pares no coincidentes. Esto produce un modelo que reconoce que "un panda" y una foto de un panda van juntos, pero su comprensión lingüística es superficial. CLIP codifica prompts como si fueran consultas de búsqueda de imágenes — reconoce conceptos visuales pero tiene dificultades con estructura composicional.

T5, por contraste, fue entrenado en corpus masivos de solo texto con tareas diversas de lenguaje: traducción, resumen, respuesta a preguntas, completar oraciones. Aprendió representaciones sintácticas y semánticas ricas. Considera el prompt "un panda haciendo arte latte." CLIP ve algo como una bolsa de conceptos: {panda, haciendo, latte, arte}. T5 lo analiza como una representación estructurada: SUJETO=panda, ACCIÓN=haciendo, OBJETO=arte latte. Esa comprensión estructural se propaga a través de la atención cruzada al eliminador de ruido, produciendo una imagen donde el panda realmente está realizando la acción en lugar de simplemente existir cerca de un latte.

💡 Por eso el codificador de texto de CLIP tiene dificultades con la negación ("una escena sin elefantes" frecuentemente produce elefantes) y la vinculación de atributos ("un cubo rojo y una esfera azul" podría producir un cubo azul). CLIP fue entrenado para detectar si los conceptos están presentes, no para entender sus relaciones. T5, entrenado en tareas de lenguaje que requieren comprensión composicional, maneja estos casos mucho mejor.

La arquitectura de Imagen es una cascada de tres etapas:

  • Codificador de texto T5-XXL congelado: el T5-XXL preentrenado se usa tal cual, sin ajuste fino. Sus pesos están congelados durante el entrenamiento de difusión. Las representaciones de texto son comprensión lingüística de propósito general, no adaptadas a la generación de imágenes.
  • Modelo base de difusión (64x64): un eliminador de ruido U-Net que genera una imagen de 64x64 condicionada en embeddings de texto T5 vía atención cruzada. Aquí es donde se establece la alineación texto-imagen.
  • Dos modelos de difusión de super-resolución (64 a 256 a 1024): eliminadores de ruido U-Net separados que escalan la imagen en dos pasos. Cada uno también está condicionado en embeddings de texto T5, así que el texto guía tanto la composición como el detalle fino.

Imagen también introdujo dynamic thresholding , una técnica para prevenir la saturación de color a escalas altas de guía sin clasificador. En el muestreo de difusión estándar, calculamos una imagen limpia predicha $\hat{x}_0$ en cada paso. Con guía alta (gran $w$), los valores de píxeles predichos pueden exceder el rango válido $[-1, 1]$, causando imágenes descoloridas o sobresaturadas. La solución ingenua es umbral estático — recortar a $[-1, 1]$ — pero esto pierde información y produce regiones grises planas.

Dynamic thresholding en su lugar selecciona un umbral de recorte $s$ basado en un percentil $p$ (típicamente $p = 99.5\%$) de los valores absolutos en $\hat{x}_0$ en ese paso:

$$s = \max\!\left(1,\; \text{percentile}\!\left(|\hat{x}_0|,\, p\right)\right)$$

Luego la imagen predicha se recorta y reescala:

$$\hat{x}_0 \leftarrow \text{clip}\!\left(\hat{x}_0,\, -s,\, s\right) \;/\; s$$

Recorramos lo que hace en los límites. Cuando la escala de guía es baja y los valores de $\hat{x}_0$ se comportan bien (todos dentro de $[-1, 1]$), el percentil será como máximo 1, así que $s = \max(1, \text{algo} \leq 1) = 1$. Recortar a $[-1, 1]$ y dividir por 1 no cambia nada — dynamic thresholding es invisible. Cuando la guía es alta y algunos valores se exceden a, digamos, $[-2.5, 2.5]$, el percentil 99.5 podría ser $s = 2.3$. Recortamos a $[-2.3, 2.3]$ y luego dividimos por 2.3, mapeando el rango de vuelta a aproximadamente $[-1, 1]$. La idea clave: en lugar de recortar todos los valores que se exceden exactamente a $\pm 1$ (lo que destruye las diferencias relativas entre ellos), preservamos la estructura relativa de la predicción reescalando. Las regiones brillantes se mantienen más brillantes que las regiones oscuras en lugar de ser todas aplastadas al mismo valor saturado.

El $\max(1, \ldots)$ asegura que nunca amplificamos valores. Si todas las predicciones ya están dentro de $[-1, 1]$, el umbral se mantiene en 1. Sin este piso, $s$ podría ser menor que 1 (digamos, 0.3), y dividir por 0.3 expandiría el rango, aumentando artificialmente el contraste.

import numpy as np

def dynamic_threshold(x0_pred, percentile=99.5):
    """Dynamic thresholding from Imagen (Saharia et al., 2022)."""
    s = max(1.0, np.percentile(np.abs(x0_pred), percentile))
    x0_clipped = np.clip(x0_pred, -s, s) / s
    return x0_clipped, s

# Simulate predicted x0 at different guidance scales
np.random.seed(42)
base = np.random.randn(64, 64) * 0.4  # base prediction, well-behaved

print("Dynamic thresholding at different guidance scales")
print("=" * 62)
print(f"{'Guidance w':<12} {'Max |x0|':<12} {'Threshold s':<14} {'Max after':<12}")
print("-" * 62)

for w in [1.0, 3.0, 7.5, 15.0, 30.0]:
    x0 = base * w  # higher guidance -> larger values
    x0_fixed, s = dynamic_threshold(x0, percentile=99.5)
    print(f"{w:<12.1f} {np.max(np.abs(x0)):<12.2f} {s:<14.2f} {np.max(np.abs(x0_fixed)):<12.4f}")

print()
print("At w=1.0: s=1.0 (floor), no change needed")
print("At w=30.0: s adapts to the large values, rescaling instead of hard-clipping")

Dos filosofías, un objetivo

DALL-E 3 e Imagen representan dos estrategias fundamentalmente diferentes para el mismo problema. ¿Qué palanca jalas para mejorar la comprensión del texto?

  • DALL-E 3 (centrado en datos): el modelo está bien — los datos de entrenamiento son el problema. Arregla las leyendas, y una arquitectura estándar aprenderá generación composicional.
  • Imagen (centrado en modelo): los datos están bien — el codificador de texto es demasiado débil para representar significado composicional. Usa un modelo de lenguaje que realmente entienda el lenguaje, y el eliminador de ruido recibirá señal de condicionamiento más rica.

Ambos enfoques funcionan. Y son complementarios — nada impide usar datos re-descritos detallados con un codificador de texto T5. De hecho, eso es exactamente lo que sucedió. Stable Diffusion 3 (Esser et al., 2024) y Flux (Black Forest Labs, 2024) combinan ambas ideas: usan T5-XXL como codificador de texto (lección de Imagen) y entrenan en leyendas detalladas de alta calidad (lección de DALL-E 3), más la arquitectura de atención conjunta MMDiT (la lección arquitectónica). La convergencia de las tres estrategias explica por qué SD3 y Flux mostraron un salto tan dramático en adherencia al prompt sobre sus predecesores.

Imagen 3 (Google DeepMind, 2024) probablemente combina ambos enfoques también, aunque los detalles arquitectónicos publicados son escasos. Lo que se sabe es que muestra mejoras adicionales en renderizado de texto, razonamiento espacial y detalle de grano fino — todas características de la estrategia combinada de datos + codificador.

La interacción entre los dos enfoques puede entenderse cuantitativamente. Considera la señal de condicionamiento que llega al eliminador de ruido. En una capa de atención cruzada, los tokens de imagen atienden a los tokens de texto para extraer información de condicionamiento. La calidad de esta señal depende de dos factores: (1) si el codificador de texto capturó la estructura composicional correcta, y (2) si esa estructura fue reforzada durante el entrenamiento por leyendas coincidentes.

Para hacerlo concreto, piensa en el prompt "un cubo rojo a la izquierda de una esfera azul." Podemos modelar aproximadamente la información efectiva que llega al eliminador de ruido como:

$$I_{\text{effective}} = I_{\text{encoder}}(\text{prompt}) \;\cdot\; P_{\text{training}}(\text{faithful rendering} \mid \text{caption quality})$$

El primer término es la capacidad del codificador para representar estructura composicional. Si el codificador colapsa "cubo rojo a la izquierda de esfera azul" en una bolsa no estructurada de conceptos, $I_{\text{encoder}}$ es bajo independientemente de la calidad de los datos. El segundo término es la probabilidad de que el modelo haya aprendido a renderizar fielmente descripciones estructuradas, lo cual depende de con qué frecuencia las leyendas de entrenamiento incluyeron tal estructura. Si cada leyenda de entrenamiento es "bonita imagen", el modelo tiene cero señal para vincular "rojo" con "cubo" — así que $P_{\text{training}}$ es cercano a cero independientemente de la calidad del codificador.

Imagen maximiza el primer término. DALL-E 3 maximiza el segundo. SD3 y Flux maximizan ambos. Esto explica la observación empírica de que combinar enfoques produce mejoras que son más que aditivas — un codificador fuerte en leyendas ricas es multiplicativamente mejor que cualquiera de los dos solos.

Midjourney: la caja negra

Ningún artículo sobre generación comercial de imágenes estaría completo sin mencionar Midjourney , que ha sido posiblemente el servicio de generación de imágenes más usado desde 2022. Pero a diferencia de DALL-E 3 e Imagen, Midjourney no publica casi ningún detalle arquitectónico. No hay artículo, no hay ficha de modelo, no hay descripción pública de los datos de entrenamiento, el codificador de texto o la arquitectura del eliminador de ruido.

Lo que se sabe (o se puede inferir razonablemente):

  • Basado en difusión: el refinamiento iterativo visible en el proceso de generación es consistente con difusión o flow matching.
  • Énfasis estético: el diferenciador clave de Midjourney ha sido la calidad estética consistente. Esto probablemente proviene de una curación cuidadosa de datos de entrenamiento sesgados hacia fotografía profesional y arte, posiblemente combinado con modelos de recompensa estética durante el entrenamiento o post-procesamiento.
  • Iteración rápida: Midjourney v6 (diciembre 2023) mostró un salto dramático en adherencia al prompt y renderizado de texto — mejoras consistentes con adoptar las mismas lecciones que DALL-E 3 (mejores leyendas) e Imagen/SD3 (codificadores de texto más fuertes), aunque esto es especulación.

Mencionamos Midjourney por completitud, pero la falta de investigación publicada significa que no podemos enseñar sus innovaciones específicas. La lección para una audiencia técnica es que la productización importa : curación, configuraciones predeterminadas, post-procesamiento y diseño de experiencia de usuario pueden hacer que un sistema se sienta dramáticamente mejor incluso sin una arquitectura novedosa.

Quiz

Pon a prueba tu comprensión de los enfoques de comprensión de texto en DALL-E 3 e Imagen.

¿Cuál es la innovación principal de DALL-E 3 para mejorar la adherencia al prompt?

En el artículo de Imagen, ¿qué revelaron los experimentos de escalado sobre el cuello de botella para la calidad de texto a imagen?

¿Por qué T5-XXL produce mejor condicionamiento de texto que el codificador de texto de CLIP para modelos de difusión?

¿Qué previene dynamic thresholding en Imagen y cómo funciona?