De píxeles a palabras: generación de texto condicionada a imágenes

Marta Solano, Javier Lorenzo y Fernando Domínguez

1. INTRODUCCIÓN

¿Puede una máquina mirar una fotografía y mirarla como lo haría una persona? Este es el reto del image captioning: la generación automática de texto que describa el contenido visual de una imagen de forma natural y coherente. El problema exige que el sistema comprenda simultáneamente la escena visual y produzca lenguaje gramaticalmente correcto y semánticamente relevante.

Más allá de la elegancia técnica, el image captioning tiene impacto directo: alimenta herramientas de accesibilidad para personas con discapacidad visual, mejora la búsqueda semántica de imágenes y sirve de base para sistemas de preguntas y respuestas visuales (VQA).

Este blog compara experimentalmente cuatro paradigmas de image captioning sobre MS-COCO: un sistema de recuperación (CLIP), dos versiones de BLIP-1 (Base y Large, con y sin fine-tuning) y BLIP-2 con OPT-2.7B. El objetivo es entender qué gana —y qué pierde— cada enfoque frente a los demás.

2. ESTADO DEL ARTE

El image captioning ha evolucionado de pipelines artesanales de detección de objetos a modelos end-to-end preentrenados sobre cientos de millones de pares imagen–texto.

NIC / “Show and Tell” [1] estableció la plantilla: un encoder CNN (GoogLeNet) proyecta la imagen en un vector de características que inicializa un decoder LSTM, el cual genera la descripción token a token. Entrenado sobre MS-COCO, NIC superó todos los métodos anteriores y demostró que una única red neuronal podía aprender estructura visual y lingüística de forma conjunta.

CLIP [2] adoptó un enfoque radicalmente diferente: entrena un encoder de imagen y uno de texto en un espacio de embeddings compartido mediante una pérdida contrastiva sobre 400 M de pares imagen–texto de internet. CLIP no genera texto; permite captioning por recuperación: dada una imagen, recupera la caption más similar de un pool de candidatos.

BLIP [3] unificó comprensión y generación con una arquitectura MED (Multimodal mixture of Encoder–Decoder) que aplica tres objetivos conjuntos: alineamiento contrastivo (ITC), clasificación de coherencia par imagen–texto (ITM) y modelado del lenguaje autorregresivo (LM). La clave fue CapFilt: un captioner sintetiza descripciones para imágenes web ruidosas; un filtro las limpia; los datos depurados re-entrenan el modelo en un bucle de bootstrapping.

BLIP-2 [4] congela tanto el encoder de imagen como el LLM preentrenados, y los conecta con un ligero Q-Former (≈188 M parámetros) que destila la información visual más relevante en query tokens aprendibles prepuestos al LLM como prompt visual.

3. FUNDAMENTOS MATEMÁTICOS

El image captioning se formula como un problema probabilístico: dada una imagen I y una secuencia de palabras S, el modelo aprende la distribución:

p(S|I)=t=1Tp(wt|I,w<t)p(S \mid I) = \prod_{t=1}^{T} p(w_t \mid I, w_{<t})

Cada palabra se genera condicionada por la imagen y las palabras anteriores. El entrenamiento maximiza la probabilidad de la caption correcta mediante pérdida autorregresiva:

=t=1Tlogp(wt|I,w<t)\mathcal{L} = -\sum_{t=1}^{T} \log \, p(w_t \mid I, w_{<t})

Los Transformers multimodales utilizan mecanismos de atención para relacionar regiones visuales y texto:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

CLIP emplea aprendizaje contrastivo, alineando embeddings de imagen y texto mediante similitud coseno:

sim(zi,zt)=ziztzizt\text{sim}(z_i, z_t) = \frac{z_i \cdot z_t}{\|z_i\| \|z_t\|}

BLEU y ROUGE-L evalúan similitud textual frente a referencias humanas, mientras que CLIPScore mide alineación semántica directamente en el espacio multimodal de embeddings.

4. DESARROLLO

Implementamos y evaluamos cuatro enfoques de image captioning sobre MS-COCO utilizando PyTorch y HuggingFace Transformers. Todos los modelos reciben imágenes RGB como entrada y generan descripciones textuales condicionadas al contenido visual.

Las arquitecturas evaluadas fueron:

  • Enfoque por recuperación (CLIP): proyección conjunta de embeddings de imagen y texto en un espacio compartido para recuperar la caption más similar mediante similitud coseno.
  • Enfoque generativo base (BLIP-1 Base): generación autorregresiva token a token mediante un decoder Transformer multimodal.
  • Enfoque generativo avanzado (BLIP-1 Large): versión de mayor capacidad evaluada con Beam Search (k=5) y posteriormente ajustada mediante fine-tuning.
  • Enfoque multimodal con LLM (BLIP-2 OPT-2.7B): encoder visual congelado conectado a un modelo de lenguaje mediante el módulo Q-Former.

Como estrategia de inferencia se compararon dos métodos de decodificación: greedy decoding, que selecciona el token más probable en cada paso, y Beam Search, que mantiene varias secuencias candidatas simultáneamente para generar captions más fluidas. Para el fine-tuning eficiente se empleó LoRA [5], una técnica de adaptación de bajo rango aplicada sobre las proyecciones Q y V del Q-Former, reduciendo drásticamente el número de parámetros entrenables.

5. MATERIALES

Dataset: Se empleó MS-COCO 2014 [6], un conjunto de datos ampliamente utilizado en tareas de descripción de imágenes que contiene 82.783 imágenes de escenas cotidianas, cada una anotada con 5 descripciones textuales generadas por humanos. Para garantizar la reproducibilidad de los experimentos, se fijó random.seed(42) y se muestrearon 10 imágenes del split de entrenamiento para la evaluación comparativa.

Fine-tuning: El modelo BLIP-1 Large fue ajustado utilizando 5.000 pares imagen-descripción del conjunto de entrenamiento, durante 500 pasos de optimización con el algoritmo AdamW (lr = 5×10⁻⁵) y precisión mixta AMP para reducir el consumo de memoria.

Modelos evaluados: Todos los modelos fueron obtenidos del repositorio oficial de Salesforce[7]:

  • CLIP ViT-B/32: openai/clip-vit-base-patch32
  • BLIP-1 Base: Salesforce/blip-image-captioning-base
  • BLIP-1 Large: Salesforce/blip-image-captioning-large
  • BLIP-2 OPT-2.7B: Salesforce/blip2-opt-2.7.b (inferencia en fp16)

El código utilizado y las imágenes empleadas en este blog están disponibles en el repositorio de GitHub [8].

Métricas de evaluación: Se emplearon cuatro métricas complementarias: BLEU (NLTK, smoothing método 1), ROUGE-L (rouge-score), CIDEr (pycocoevalcap con tokenizador PTB) y CLIPScore, esta última basada en similitud coseno y que no requiere referencias humanas. En todas ellas, valores más altos indican mejor rendimiento: mayor coincidencia con las referencias humanas en BLEU, ROUGE-L y CIDEr, y mayor coherencia semántica imagen-texto en CLIPScore.

6. RESULTADOS

La Tabla 1 recoge las puntuaciones medias obtenidas sobre las 10 imágenes de evaluación (seed = 42).

Tabla 1. Puntuaciones medias sobre las 10 imágenes de evaluación.

BLIP-2 domina en BLEU y ROUGE-L (+112% y +49% relativos) operando en modo zero-shot, aunque sus métricas CIDEr y CLIPScore no pudieron calcularse por incompatibilidades en la tokenización. CLIP obtiene el CLIPScore más alto (30,82), reflejando fuerte alineación semántica pese al bajo solapamiento con las referencias. Dentro de BLIP-1, Beam-5 mejora consistentemente sobre Greedy, mientras que el fine-tuning no aporta mejoras claras en todas las métricas.

La Figura 1 muestra una comparativa cualitativa de las descripciones generadas por cada modelo para 5 imágenes representativas del conjunto de evaluación.

Figura 1. Comparativa cualitativa de las descripciones generadas por cada modelo para 5 imágenes del conjunto de evaluación.

Se observa que BLIP-1 Base Greedy tiende a generar descripciones muy cortas y genéricas (“a fire truck”, “a clock on a pole”), mientras que los modelos con decodificación Beam-5 producen descripciones más detalladas y cercanas a las referencias humanas. BLIP-1 Large Beam-5 destaca por incluir contexto adicional relevante, como la ubicación o el entorno (“there is a fire truck driving down the street in front of a fire”).

CLIP ViT-B/32 genera descripciones con mayor riqueza léxica en algunos casos (“a single engine, two passenger plane is taking off”), aunque en otros introduce elementos incorrectos no presentes en la imagen (“a dog laying on top of a bed next to another dog” cuando hay dos perros tumbados).

El fine-tuning de BLIP-1 Large no mejora consistentemente la calidad descriptiva: en algunos casos simplifica en exceso (“a dog and a cat sleeping on a bed”) introduciendo incluso errores semánticos respecto a la imagen original.

7. DISCUSIÓN

Fine-tuning con datos insuficientes. Ajustar BLIP-1 Large con tan pocos datos redujo el rendimiento y generó descripciones incorrectas. Aproximaciones como LoRA o la congelación parcial del modelo serían más adecuadas en este escenario.

Beam Search mejora la calidad, pero no siempre las métricas. La comparativa entre BLIP-1 Base Greedy (BLEU 0,165) y Beam-5 (0,271) confirma que una decodificación más elaborada mejora las descripciones. BLEU penaliza paráfrasis válidas; ROUGE-L es más robusto ante variaciones de vocabulario.

El problema de las métricas basadas en referencias. El CLIPScore más alto de CLIP (30,82) frente a su BLEU más bajo (0,147) ilustra cómo las métricas de n-gramas penalizan descripciones semánticamente correctas pero con vocabulario distinto al de las referencias.

Limitaciones. Evaluación sobre solo 10 imágenes (alta varianza); imágenes pertenecientes al split de entrenamiento de COCO; CIDEr y CLIPScore no calculados para BLIP-2 por incompatibilidades técnicas.

8. REFERENCIAS

1. Vinyals et al. (2015). Show and Tell: A Neural Image Caption Generator. CVPR 2015. https://arxiv.org/abs/1411.4555

2. Radford et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. ICML 2021. https://proceedings.mlr.press/v139/radford21a.html

3. Li et al. (2022). BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation. ICML 2022. https://proceedings.mlr.press/v162/li22n.html

4. Li et al. (2023). BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models. ICML 2023. https://proceedings.mlr.press/v202/li23q.html

5. Hu et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2022. https://openreview.net/forum?id=nZeVKeeFYf9

6. Lin et al. (2014). Microsoft COCO: Common Objects in Context. ECCV 2014. https://link.springer.com/chapter/10.1007/978-3-319-10602-1_48

7. Salesforce. BLIP: Bootstrapping Language-Image Pre-training. GitHub, 2022. Disponible en: https://github.com/salesforce/BLIP

8. Código y recursos del blog — GitHub: https://github.com/fernandodominguezrubio/blog_pasd