Como medir 'imagem boa'?
Avaliação de geração é problema aberto. O que é "boa"? Realista? Bonita? Alinhada com o prompt? Compositional? Sem viés? Sem violações de copyright? Cada pergunta tem métrica diferente — e nenhuma sozinha resolve. A indústria converge em bateria de testes: FID + CLIP score + DPG-Bench + Arena + amostragem humana.
FID — a métrica clássica
CLIP score — alinhamento texto-imagem
import torch
from transformers import CLIPModel, CLIPProcessor
model = CLIPModel.from_pretrained('openai/clip-vit-large-patch14')
processor = CLIPProcessor.from_pretrained('openai/clip-vit-large-patch14')
inputs = processor(text=[prompt], images=[generated_image], return_tensors='pt', padding=True)
outputs = model(**inputs)
# logits_per_image é a similaridade cosseno
clip_score = outputs.logits_per_image.item()Para benchmarks publicados, use o CLIP ViT-L/14 da OpenAI como referência. Variantes (BigG, SigLIP) mudam absolute values — não compare cross-modelo sem normalizar.
DPG-Bench — compositional
Benchmark com prompts complexos categorizados em: contagem ("3 maçãs"), atributo ("uma maçã vermelha e uma azul"), relação espacial ("livro em cima da mesa"), múltiplos objetos. Avaliador automático verifica se cada constraint foi atendida.
| Modelo | DPG-Bench score (2025) | FID (COCO) |
|---|---|---|
| SD 1.5 | ~67% | ~12 |
| SDXL | ~74% | ~9 |
| SD3 | ~83% | ~7 |
| Flux.1 dev | ~85% | ~6 |
| DALL·E 3 | ~85% | ~8 |
Arena — preferência humana em escala
Imagen Arena (e similares como Genmo Arena, Pika Arena) mostram pares de imagens cegamente. Usuário escolhe a preferida. Elo score acumula. Captura beleza/preferência que métricas estatísticas perdem.
Arenas têm viés próprio: usuários técnicos votam diferente do público geral. Captura "preferência média dos votantes da arena", não verdade universal.