Avaliação FID, CLIP Score, Preferência Humana
Type: Build
Languages: Python
Prerequisites: Phase 8 · 01 (Taxonomy), Phase 2 · 04 (Evaluation Metrics)
Time: ~45 minutes
O problema
Um modelo gerativo é julgado em qualidade de amostra e adesão de condicionamento . Nem tem uma medida de forma fechada. Seu modelo tem que renderizar 10.000 imagens; algo tem que atribuí-las números; você tem que confiar nos números em todas as famílias de modelos, em todas as resoluções, em todas as arquiteturas. Três métricas sobreviveram ao guante 2014-2026.
- FID (Fréchet Inception Distance).Distância entre duas distribuições reais e geradas no espaço de recursos de uma rede de iniciação.
- CLIP score.A semelhança cosínea entre a incorporação de imagem CLIP de uma imagem gerada e a incorporação de texto CLIP de um prompt. Mais alto é melhor. Medidas de adesão de prompt.
- Human preference.Coloque dois modelos frente a frente no mesmo prompt, faça com que os humanos (ou um modelo de classe GPT-4) escolham o melhor, agregando para uma pontuação Elo.
Você também verá: IS (pontuação inicial, em grande parte aposentado), KID, CMMD, ImageReward, PickScore, HPSv2, MJHQ-30k. Cada corrigir para um fracasso do anterior.
O conceito
!FID, CLIP, and preference: three axes, different failure modes
Qualidade da amostra
Heusel et al. (2017). Passo:
- Extrair recursos Inception-v3 (2048-D) para N imagens reais e N geradas.
- Aplique um Gaussian a cada piscina: média de cálculo
μ_r, μ_ge covariânciaΣ_r, Σ_g- Não . - FID =
||μ_r - μ_g||² + Tr(Σ_r + Σ_g - 2 · (Σ_r · Σ_g)^0.5)- Não .
Interpretação: Distância de Fréchet entre dois Gaussianos multivariados no espaço de características.
Modos de falha:
- Biased on small N.O FID é o quadrado médio sobre a distribuição de características pequena N subestima a covariância, dá falsamente baixo FID.
- Inception-dependent.Inception-v3 foi treinado na ImageNet. Domínios longe da ImageNet (faces, arte, imagens de texto) produzem FID sem sentido. Use um extractor de recursos específico de domínio.
- Gaming.O excesso de montagem ao prévio de iniciação dá uma baixa FID sem melhoria da qualidade visual.
Ponto CLIP adesão rápida
Radford et al. (2021). Para uma imagem gerada + prompt:
clip_score = cos_sim( CLIP_image(x_gen), CLIP_text(prompt) )Uma média de 30k imagens geradas → um escala comparável entre os modelos.
Modos de falha:
- CLIP's own blind spots.O CLIP tem um raciocínio composto fraco ("um cubo vermelho em uma esfera azul" muitas vezes falha). Os modelos podem classificar bem no resultado do CLIP sem realmente seguir instruções complexas.
- Short prompt bias.As instruções curtas têm mais coincidências de imagem CLIP na natureza.
- Prompt gaming.Incluindo "alta qualidade, 4k, obra-prima" no prompt infla a pontuação CLIP sem melhorar a ligação imagem-texto.
CMMD (Jayasumana et al., 2024) corrige algumas destas: utiliza recursos CLIP em vez de Inception, discrepância máxima-média em vez de Fréchet. Melhor na detecção de diferenças de qualidade sutis.
Preferência humana a verdade fundamental
Escolha um conjunto de instruções. Gerencie com o modelo A e o modelo B. Mostre pares para os seres humanos (ou um forte juiz de LLM).
- PartiPrompts (Google)1.600 indicações diversas, 12 categorias.
- HPSv2: 107 mil anotações humanas, amplamente utilizadas como proxy automatizado.
- ImageReward137K pares de preferências de imagem rápida, licenciados pelo MIT.
- PickScore- formação em preferências de Pick-a-Pic 2.6M.
- Chatbot-Arena-style image arenas- Não .https://imagearena.ai/E outros.
Modos de falha:
- Judge variance.Os não-especialistas têm preferências diferentes das dos especialistas.
- Prompt distribution.As instruções escolhidas favorem uma família.
- LLM-judge reward hacking.O juiz GPT-4 é enganado por resultados bonitos, mas errados.
Utilização conjunta
Um relatório de avaliação da produção deve incluir:
- FID em amostras de 10 a 30 mil em relação a uma distribuição real prolongada (qualidade da amostra).
- Ponto CLIP / CMMD nas mesmas amostras versus as suas indicações (adherença).
- Taxa de vitória em uma arena cegar em relação ao modelo anterior (preferência geral).
- Análise do modo de falha: 50 saídas randomizadas, marcadas por problemas conhecidos (anatomia da mão, renderização de texto, contagem consistente de objetos).
Qualquer métrica é uma mentira. Três métricas corroboradoras + revisão qualitativa são uma alegação.
Construí-lo
code/main.pyImplementa a agregação de FID, CLIP-score-like e Elo em "vectores de características" sintéticos (usamos vectores 4D como substitutos para características de Inception).
- Calculação FID em um pequeno N e em um grande N o viés.
- "Colocação CLIP" como similaridade cosínea entre as pools de características.
- Regra de atualização de Elo a partir de um fluxo de preferências sintéticas.
Passo 1: FID em quatro linhas
pythondef fid(real_features, gen_features):
mu_r, cov_r = mean_and_cov(real_features)
mu_g, cov_g = mean_and_cov(gen_features)
mean_diff = sum((a - b) ** 2 for a, b in zip(mu_r, mu_g))
trace_term = trace(cov_r) + trace(cov_g) - 2 * sqrt_cov_product(cov_r, cov_g)
return mean_diff + trace_termPasso 2: Similaridade cosínica de estilo CLIP
pythondef clip_like(image_feat, text_feat):
dot = sum(a * b for a, b in zip(image_feat, text_feat))
norm = math.sqrt(dot_self(image_feat) * dot_self(text_feat))
return dot / max(norm, 1e-8)Passo 3: Agregação de Elo
pythondef elo_update(r_a, r_b, winner, k=32):
expected_a = 1 / (1 + 10 ** ((r_b - r_a) / 400))
actual_a = 1.0 if winner == "a" else 0.0
r_a_new = r_a + k * (actual_a - expected_a)
r_b_new = r_b - k * (actual_a - expected_a)
return r_a_new, r_b_newEncurralagens
- FID at N=1000.Os documentos que relatam baixa N FID estão a jogar.
- Comparing FID across resolutions.O tamanho de 299×299 da Inception altera a distribuição de recursos.
- Reporting one seed.Faça 3 sementes no mínimo.
- CLIP score inflation via negative prompts.Alguns canais aumentam o CLIP, ajustando o sinal de sinal.
- Elo bias from prompt overlap.Se ambos os modelos viram um prompt de referência durante o treinamento, o Elo não tem sentido.
- Human eval paid-crowd skew.Prolíficos, os anotadores MTurk tendem a ser mais jovens / amigáveis à tecnologia.
Usá-lo
Protocolo de avaliação da produção em 2026:
| Pillar | Minimum | Recommended |
|---|---|---|
| Sample quality | FID on 10k vs held-out real | + CMMD on 5k + FID on subset per category |
| Prompt adherence | CLIP score on 30k | + HPSv2 + ImageReward + VQA-style question answering |
| Preference | 200 blinded pairs vs baseline | + 2000 paired human + LLM-judge + Chatbot Arena |
| Failure analysis | 50 hand-flagged | 500 hand-flagged + automated safety classifier |
Os quatro pilares num relatório = reivindicação.
Envia-o
Salvaroutputs/skill-eval-report.md. A Skill toma um novo ponto de controlo modelo + linha de base e elabora um plano de avaliação completo: tamanhos de amostra, métricas, sondas de modo de falha, critérios de assinatura.
Exercícios
- Easy.Corra .
code/main.py. Comparar FID em N=100 vs N=1000 nas mesmas distribuições sintéticas. - Medium.Implementar CMMD a partir de características sintéticas de estilo CLIP (ver Jayasumana et al., 2024 para a fórmula).
- Hard.Replicar a configuração HPSv2: pegue 1000 pares de imagens de um subconjunto de Pick-a-Pic, ajuste o pequeno marcador baseado em CLIP nas preferências e mensure sua concordância com um conjunto mantido.
Termos-chave
| Term | What people say | What it actually means |
|---|---|---|
| FID | "Fréchet Inception Distance" | Fréchet distance of Gaussian fits to real vs gen Inception features. |
| CLIP score | "Text-image similarity" | Cosine similarity between CLIP image and text embeddings. |
| CMMD | "FID's replacement" | CLIP-feature MMD; less biased, no Gaussian assumption. |
| IS | "Inception score" | Exp KL(p(y |
| HPSv2 / ImageReward / PickScore | "Learned preference proxies" | Small models trained on human preferences; used as automatic judges. |
| Elo | "Chess rating" | Bradley-Terry aggregation of pairwise wins. |
| PartiPrompts | "The benchmark prompt set" | 1,600 Google-curated prompts across 12 categories. |
| FD-DINO | "Self-sup replacement" | FD using DINOv2 features; better for out-of-ImageNet domains. |
Nota de produção: a avaliação é também uma carga de trabalho de inferência
Para uma base SDXL de 50 passos em 10242 em um único L4, isto é ~ 11 horas de inferência de pedido único. Os orçamentos de avaliação são reais, e o enquadramento é exatamente o cenário de inferência offline (máxima o throughput, ignore o TTFT):
- Batch hard, forget latency.Avaliação offline = batch estático no maior tamanho que se encaixa na memória.
pipe(...).imagescomnum_images_per_prompt=8num H100 de 80 GB funciona 4 a 6 vezes mais rápido do que um único pedido. - Cache the real features.A extracção da função Inception (FID) ou CLIP (CLIP-score, CMMD) sobre o conjunto de referência real é executada once, armazenada como um
.npzNão recomputem por avaliação.
Para os portões de CI / regressão: executar o FID + CLIP em um subconjunto de 500 amostras por PR (~ 30 min); executar o FID + HPSv2 + Elo completo por noite.
Mais leitura
- Heusel et al. (2017). GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium (FID)Papel da FID.
- Jayasumana et al. (2024). Rethinking FID: Towards a Better Evaluation Metric for Image Generation (CMMD) CMMD.
- Radford et al. (2021). Learning Transferable Visual Models from Natural Language Supervision (CLIP)- O que é isso?
- Wu et al. (2023). HPSv2: A Comprehensive Human Preference Score HPSv2.
- Xu et al. (2023). ImageReward: Learning and Evaluating Human Preferences for Text-to-Image Generation ImageReward.
- Yu et al. (2023). Scaling Autoregressive Models for Content-Rich Text-to-Image Generation (Parti + PartiPrompts) PartiPrompts.
- Stein et al. (2023). Exposing flaws of generative model evaluation metrics Pesquisa de modo de falha.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.