Geração de Legendas para Imagens

Visão geral

Geração de legendas para imagens (image captioning) é a tarefa de gerar uma descrição em linguagem natural de uma imagem. Ela fica na interseção entre visão computacional (computer vision) (entender conteúdo visual) e geração de linguagem natural (natural language generation) (produzir texto fluente e relevante). Um sistema de legendagem precisa decidir o que há na imagem, o que é importante e como expressar isso de forma semelhante à humana.

A geração de legendas para imagens é um problema canônico em aprendizado multimodal (multimodal learning) e se relaciona de perto com tarefas como recuperação imagem–texto, resposta a perguntas visuais (VQA, do inglês visual question answering), e seguimento de instruções em visão-linguagem. Sistemas modernos dependem cada vez mais de modelos fundacionais visão-linguagem (vision-language foundation models) treinados em dados imagem–texto em larga escala, frequentemente usando arquiteturas inspiradas na Arquitetura Transformer.

Definição do problema

Dada uma imagem (I), queremos gerar uma sequência de tokens (y = (y_1, \dots, y_T)) formando uma legenda.

Um enquadramento probabilístico comum é:

[ \hat{y} = \arg\max_y ; p(y \mid I) ]

Usando um modelo autorregressivo (autoregressive), fatoramos:

[ p(y \mid I) = \prod_{t=1}^{T} p(y_t \mid y_{<t}, I) ]

Isso transforma a geração de legendas para imagens em um problema de aprendizado sequência a sequência (sequence-to-sequence), no qual a imagem fornece o contexto de condicionamento e o modelo prevê o próximo token dados os tokens gerados anteriormente.

O que torna a legendagem difícil?

A legendagem é desafiadora porque exige:

  • Reconhecimento visual: objetos, atributos, ações, cenas.
  • Ancoragem (grounding): ligar palavras a regiões da imagem (por exemplo, “um cachorro em um skate”).
  • Saliência (saliency): escolher o que mencionar (muitas coisas podem estar presentes).
  • Qualidade de linguagem: fluência, gramática e formulação natural.
  • Senso comum (commonsense) e pragmática (pragmatics): “um homem segurando uma raquete” implica “jogando tênis” apenas no contexto correto.

Conjuntos de dados e benchmarks

MS COCO Captions

O benchmark mais usado é o MS COCO (Common Objects in Context). O subconjunto de legendas fornece 5 legendas escritas por humanos por imagem, capturando descrições diversas.

Divisões típicas:

  • COCO 2014: ~82k imagens de treino, ~40k de validação, além de divisões de teste (frequentemente usando uma divisão de Karpathy).
  • A avaliação frequentemente usa o servidor de avaliação de legendas do COCO para testes padronizados.

Outros conjuntos de dados

  • Flickr8k / Flickr30k: conjuntos menores, frequentemente usados historicamente e para recuperação.
  • nocaps: foca em legendagem de objetos novos (novel object captioning), medindo generalização além das categorias do COCO.
  • TextCaps: legendas que dependem da leitura de texto em imagens (requer OCR).
  • Conjuntos de dados específicos de domínio (medicina, sensoriamento remoto, imagens de produtos) são comuns em cenários aplicados, mas variam bastante em qualidade e tamanho.

Abordagem clássica: codificador CNN + decodificador RNN

Por muitos anos, a solução padrão foi uma arquitetura codificador–decodificador (encoder–decoder):

  1. Uma rede neural convolucional (CNN) codifica a imagem em um vetor de características (ou um mapa de características).
  2. Uma rede neural recorrente (RNN), tipicamente uma LSTM, decodifica uma legenda condicionada a essas características.

Essa abordagem espelha a tradução automática neural (neural machine translation): a imagem é o “embedding da frase-fonte”.

Codificador: características de CNN

Uma CNN pré-treinada (por exemplo, ResNet) produz:

  • Um vetor de características globais: um único embedding para a imagem inteira.
  • Ou um mapa de características espaciais: uma grade de características por região (melhor para atenção).

Contexto relevante: Redes Neurais Convolucionais

Decodificador: modelo de linguagem LSTM

Uma LSTM (long short-term memory) recebe:

  • Um token de início <BOS>
  • A característica da imagem (frequentemente injetada no primeiro passo, ou concatenada a cada passo)
  • Palavras geradas anteriormente (forçamento do professor (teacher forcing) durante o treino)

Contexto relevante: Redes Neurais Recorrentes

Atenção: “Show, Attend and Tell”

Uma grande melhoria foi a atenção visual (visual attention), na qual o decodificador aprende a focar em diferentes regiões espaciais ao gerar cada palavra. Isso ajuda a produzir legendas mais detalhadas e melhor ancoradas.

Mecanicamente, a atenção computa pesos sobre regiões da imagem a cada passo de tempo, produzindo um vetor de contexto que condiciona a distribuição do próximo termo.

Conceito relacionado: Mecanismos de Atenção

Legendagem baseada em Transformer: codificador ViT + decodificador Transformer

À medida que transformers substituíram RNNs na modelagem de linguagem, sistemas de legendagem migraram para:

  • Codificador de visão: CNN ou Transformer de Visão (Vision Transformer, ViT) produzindo uma sequência de tokens visuais.
  • Decodificador de texto: um decodificador transformer que usa atenção cruzada (cross-attention) para atender aos tokens visuais.

Contexto relevante: Transformers de Visão, Arquitetura Transformer

Por que transformers ajudam

Transformers trazem:

  • Melhor modelagem de linguagem de longo alcance e maior fluência
  • Treinamento paralelo sobre tokens
  • Forte comportamento de escalonamento com dados e tamanho do modelo
  • Integração mais limpa com grandes modelos de linguagem pré-treinados

Padrão típico de arquitetura

  1. Imagem → tokens visuais (embeddings de patches ou características por região)
  2. Decodificador de texto gera tokens de forma autorregressiva
  3. Camadas do decodificador incluem:
    • autoatenção sobre o texto gerado
    • atenção cruzada de consultas do texto para chaves/valores da imagem

Isso é conceitualmente semelhante a transformers codificador–decodificador usados em tradução, exceto que o codificador consome tokens de visão.

Modelos fundacionais visão-linguagem modernos

Hoje, muitos sistemas de legendagem de alto desempenho derivam de modelos fundacionais visão-linguagem treinados em grandes corpora imagem–texto (frequentemente bilhões de pares). A legendagem passa a ser:

  • Uma tarefa de ajuste fino (fine-tuning) em legendas no estilo COCO, ou
  • Uma tarefa de geração via prompt (prompted generation) (“Descreva esta imagem.”)

Esses modelos podem ser treinados usando combinações de:

  • Objetivos contrastivos (estilo CLIP)
  • Correspondência imagem–texto (image–text matching)
  • Legendagem generativa / modelagem de linguagem por prefixo
  • Ajuste por instruções com supervisão humana/sintética

Tópico relacionado: Pré-treinamento Visão-Linguagem, Aprendizado Contrastivo

Famílias comuns de abordagens

1) Pré-treinamento especializado em legendagem (por exemplo, do tipo BLIP)

Modelos dessa família combinam múltiplos objetivos:

  • Alinhamento contrastivo (similaridade imagem–texto)
  • Objetivos de correspondência / classificação
  • Perda de legendagem generativa

Isso frequentemente resulta em forte desempenho tanto em legendagem quanto em recuperação, e dá suporte ao ajuste fino.

2) LLMs multimodais (codificador de visão + LLM)

Uma receita moderna comum:

  • Um codificador de visão congelado ou levemente ajustado (ViT/torre de visão do CLIP)
  • Um módulo de projeção mapeando características visuais para o espaço de embeddings da LLM
  • Um decodificador LLM pré-treinado gera legendas, responde perguntas, segue instruções

Esses modelos podem gerar diferentes estilos de legendas via prompting:

  • “Escreva uma legenda curta.”
  • “Escreva uma descrição detalhada.”
  • “Descreva a imagem para um usuário com deficiência visual.”

3) Legendagem aumentada por recuperação ou por ferramentas

Para domínios especializados, sistemas podem incorporar:

  • Reconhecimento óptico de caracteres (OCR) para imagens com muito texto
  • Detectores de objetos para ancoragem explícita
  • Bases de conhecimento externas (por exemplo, catálogos de produtos)
  • Recuperação sobre imagens/legendas similares

Objetivos de treinamento

Máxima verossimilhança (entropia cruzada) com teacher forcing

O objetivo supervisionado mais comum é a entropia cruzada (cross-entropy) em nível de token:

[ \mathcal{L} = -\sum_{t=1}^{T}\log p(y_t \mid y_{<t}, I) ]

Durante o treinamento, o decodificador condiciona nos tokens anteriores de referência (forçamento do professor), o que estabiliza a otimização.

Relacionado: Perda de Entropia Cruzada, Retropropagação

Objetivos em nível de sequência (aprendizado por reforço / otimização de métricas)

Uma incompatibilidade conhecida em legendagem é:

  • O treinamento otimiza a verossimilhança em nível de token
  • A avaliação usa métricas em nível de sequência (CIDEr, SPICE, etc.)

Para reduzir essa lacuna, alguns sistemas aplicam aprendizado por reforço (reinforcement learning) (por exemplo, self-critical sequence training) para otimizar diretamente a pontuação esperada de uma métrica (frequentemente CIDEr).

Relacionado: Aprendizado por Reforço

Objetivos de pré-treinamento em modelos fundacionais

Modelos fundacionais comumente misturam objetivos como:

  • Contrastivo: alinhar embeddings de imagem e texto (bom para recuperação e aprendizado de representações)
  • Correspondência: classificar se um par imagem–texto está correto
  • Generativo:
    • geração de legendas
    • modelagem de linguagem por prefixo (tokens visuais como um “prefixo”)
    • modelagem de linguagem mascarada condicionada na imagem

O pré-treinamento melhora a robustez e reduz a dependência de pequenos conjuntos de dados de legendas.

Estratégias de decodificação (inferência)

Na inferência, queremos uma legenda de alta probabilidade sob o modelo:

  • Decodificação gulosa (greedy decoding): escolhe o token de maior probabilidade em cada passo (rápido, às vezes sem graça).
  • Busca em feixe (beam search): mantém as (k) melhores hipóteses parciais (melhor qualidade, ainda pode ser genérica).
  • Amostragem (sampling) (top-(p), top-(k), temperatura): legendas mais diversas; frequentemente usada em cenários interativos ou criativos.

Relacionado: Busca em Feixe

Exemplo prático: legendas para uma imagem

Dada uma imagem de um cachorro pegando um frisbee em um parque:

  • Gulosa: “um cachorro está brincando com um frisbee”
  • Busca em feixe: “um cachorro pula para pegar um frisbee em um parque”
  • Amostragem (temperatura mais alta): “um cachorro brincalhão salta no ar para agarrar um frisbee sobre a grama”

Avaliação: conjuntos de dados e métricas

A avaliação de legendas é notoriamente sutil: muitas legendas diferentes podem estar corretas. Métricas padrão aproximam o julgamento humano comparando legendas geradas com múltiplas referências.

BLEU

BLEU computa precisão modificada de n-gramas (frequentemente BLEU-1 a BLEU-4), com uma penalidade por brevidade.

  • Prós: simples, historicamente comum
  • Contras: pode subvalorizar paráfrases válidas; foca em precisão

METEOR e ROUGE-L (frequentemente reportadas)

  • METEOR inclui stemming e correspondência por sinonímia; frequentemente correlaciona melhor com humanos do que BLEU.
  • ROUGE-L mede sobreposição da maior subsequência comum.

CIDEr (métrica principal do COCO)

CIDEr foi projetada para legendagem de imagens. Ela usa similaridade de n-gramas ponderada por TF-IDF entre candidata e referências, enfatizando frases informativas e distintivas.

  • Frequentemente é a métrica mais enfatizada para legendagem no COCO.
  • Incentiva legendas que combinam com a escolha de palavras humana em detalhes salientes.

SPICE (avaliação semântica)

SPICE analisa legendas em grafos semânticos de cena (objetos, atributos, relações) e compara esses grafos.

  • Prós: foca na correção semântica (“cachorro em um skate” vs “cachorro perto de um skate”)
  • Contras: depende da qualidade do parsing; pode não capturar problemas de fluência

Avaliação humana ainda importa

Métricas automáticas podem discordar das preferências humanas, especialmente para:

  • Correção de granulação fina
  • Alucinações (hallucinations) (dizer que objetos existem quando não existem)
  • Estilo e utilidade (por exemplo, para acessibilidade)
  • Legendas longas e detalhadas

Em muitas aplicações reais, avaliação humana ou avaliação baseada em tarefa (por exemplo, ajudar usuários a encontrar imagens) é crítica.

Esboço mínimo de implementação (estilo PyTorch)

Abaixo está um esboço simplificado de um gerador de legendas codificador–decodificador. Sistemas reais adicionam mascaramento, detalhes de batching, melhor tokenização (BPE) e laços de treinamento cuidadosos.

import torch
import torch.nn as nn
import torch.nn.functional as F

class CNNEncoder(nn.Module):
    def __init__(self, backbone, feat_dim):
        super().__init__()
        self.backbone = backbone  # e.g., a ResNet without final classifier
        self.proj = nn.Linear(backbone.out_dim, feat_dim)

    def forward(self, images):
        # images: (B, 3, H, W)
        feats = self.backbone(images)          # (B, D) or (B, N, D)
        feats = self.proj(feats)               # project to decoder dim
        return feats

class TransformerDecoder(nn.Module):
    def __init__(self, vocab_size, d_model=512, n_layers=6):
        super().__init__()
        self.embed = nn.Embedding(vocab_size, d_model)
        decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=8)
        self.dec = nn.TransformerDecoder(decoder_layer, num_layers=n_layers)
        self.lm_head = nn.Linear(d_model, vocab_size)

    def forward(self, input_ids, visual_tokens, tgt_mask=None):
        # input_ids: (T, B)
        # visual_tokens: (S, B, D)
        x = self.embed(input_ids)              # (T, B, D)
        h = self.dec(tgt=x, memory=visual_tokens, tgt_mask=tgt_mask)
        logits = self.lm_head(h)               # (T, B, V)
        return logits

def caption_loss(logits, target_ids, pad_id):
    # logits: (T, B, V), targets: (T, B)
    V = logits.size(-1)
    return F.cross_entropy(
        logits.view(-1, V),
        target_ids.reshape(-1),
        ignore_index=pad_id
    )

Isso captura a ideia central:

  • Codificador de visão produz tokens visuais
  • Decodificador Transformer usa atenção cruzada para gerar texto
  • O treinamento usa entropia cruzada com forçamento do professor

Aplicações práticas

A geração de legendas para imagens é útil tanto como capacidade independente quanto como componente em sistemas maiores:

  • Acessibilidade: leitores de tela descrevendo fotos para usuários com deficiência visual (frequentemente exigindo linguagem segura e sensível).
  • Busca e indexação: geração de metadados para grandes coleções de imagens (sistemas corporativos de gerenciamento de ativos digitais, bibliotecas pessoais de fotos).
  • Robótica e IA incorporada (embodied AI): converter observações visuais em linguagem para planejamento ou interação humano–robô.
  • E-commerce: descrever produtos, criar texto alternativo, atribuir características visíveis (cor, estilo).
  • Moderação de conteúdo e segurança: descrever cenas para apoiar classificadores a jusante e fluxos de revisão.
  • Rotulagem de dados: bootstrapping de rótulos textuais ou supervisão fraca para outras tarefas (com revisão humana).

Em assistentes multimodais modernos, a legendagem frequentemente se torna “descreva a imagem” como um entre muitos comportamentos acionados por prompt.

Modos de falha comuns e desafios

Alucinação

Modelos podem mencionar com confiança objetos que não estão presentes (por exemplo, “um relógio na parede” quando não há nenhum). Isso pode vir de:

  • Vieses do conjunto de dados (certas cenas correlacionam com certos objetos)
  • Dependência excessiva de priors de linguagem
  • Ancoragem fraca entre tokens de texto e regiões da imagem

Mitigações incluem melhores perdas de ancoragem, supervisão por regiões e codificadores de visão mais fortes — além de avaliação explícita para alucinação.

Viés e equidade

Modelos de legendagem podem refletir vieses nos dados de treinamento:

  • Estereótipos de gênero (“enfermeira” vs “médico”)
  • Suposições culturais
  • Sobre/sub-representação de grupos

Mitigação exige curadoria cuidadosa de dados, testes de viés e, às vezes, decodificação restrita ou pós-processamento (dependente da aplicação).

Estilo e controlabilidade

Diferentes aplicações querem diferentes legendas:

  • Curtas vs detalhadas
  • Objetivas vs subjetivas
  • Tom neutro (acessibilidade) vs tom de marketing (e-commerce)

Modelos fundacionais muitas vezes podem ser controlados por prompts, mas controlabilidade confiável pode exigir ajuste por instruções ou treinamento condicionado por estilo.

Limitações de avaliação

Otimizar para métricas pode produzir:

  • Legendas genéricas que pontuam bem, mas são pouco úteis (“uma pessoa em um cômodo”)
  • Metric hacking (sobreposição de n-gramas sem correção real)

Uma boa prática é combinar:

  • múltiplas métricas automáticas (CIDEr + SPICE + BLEU/METEOR)
  • testes direcionados (conjuntos de alucinação, objetos raros)
  • avaliação humana para sistemas em produção

Tendências atuais e boas práticas (orientação prática)

Quando ajustar fino vs usar prompt em um modelo fundacional

  • Somente prompt se você quer estilos flexíveis e tem poucos dados rotulados de legendas.
  • Ajuste fino se você precisa de:
    • terminologia específica de domínio (médico, industrial, científico)
    • formatação consistente (por exemplo, legendas estruturadas)
    • melhor ancoragem e menos alucinação em um domínio restrito

A qualidade dos dados importa mais do que você imagina

Conjuntos de dados de legendas variam em:

  • nível de detalhe (“um cachorro” vs “um cachorro marrom pegando um frisbee”)
  • estilo do anotador
  • ruído e viés

Para adaptação a domínios, um conjunto menor de legendas consistentes e de alta qualidade pode superar grandes conjuntos ruidosos.

Decodificação consciente do caso de uso

  • Use busca em feixe para legendas concisas e de alta verossimilhança.
  • Use amostragem se diversidade for valiosa (ferramentas criativas), mas monitore alucinações.
  • Considere penalidades de comprimento e penalidades de repetição (especialmente para legendas longas).

Relação com tarefas vizinhas de visão-linguagem

A geração de legendas para imagens está fortemente conectada a:

  • Recuperação imagem–texto (encontrar imagens dado texto e vice-versa), frequentemente usando aprendizado contrastivo.
  • VQA (responder perguntas ancoradas em imagens).
  • Geração de expressões referenciais (referring expression generation) (descrever um objeto para que ele possa ser identificado).
  • Legendagem densa (dense captioning) (legendas para múltiplas regiões, não apenas para a imagem inteira).

Dentro de uma pilha moderna de visão-linguagem, a legendagem frequentemente serve tanto como:

  • uma tarefa de benchmark, e
  • uma capacidade emergente de modelos generalistas multimodais que seguem instruções.

Relacionado: Aprendizado Multimodal

Resumo

A geração de legendas para imagens busca gerar descrições precisas e fluentes de imagens, combinando entendimento visual e geração de linguagem. Sistemas clássicos codificador–decodificador (CNN + LSTM com atenção) estabeleceram a abordagem padrão, enquanto sistemas modernos usam ViT + decodificadores transformer e dependem cada vez mais de modelos fundacionais visão-linguagem em larga escala. O treinamento tipicamente usa entropia cruzada (máxima verossimilhança), às vezes aumentada com otimização em nível de sequência, e a avaliação comumente se baseia em benchmarks no estilo COCO com métricas como BLEU, CIDEr e SPICE — com avaliação humana permanecendo importante para qualidade no mundo real.

Se você quiser, posso adicionar uma seção curta comparando algumas famílias representativas de modelos (por exemplo, “primeiro legendagem” vs “LLM multimodal”) ou expandir o esboço de implementação para um laço de treinamento/inferência mais completo.