Fréchet Inception Distance (FID)
A Distância de Inception de Fréchet (FID) avalia imagens geradas comparando as estatísticas de recursos do Inception com as de fotografias reais. Como é calculada e comparada.
A distância de Inception de Fréchet (FID) é uma métrica que avalia um modelo de geração de imagens comparando as estatísticas das imagens geradas com as das imagens reais. Os dois conjuntos passam por uma rede Inception v3 pré-treinada; as características de cada conjunto são resumidas como uma distribuição gaussiana multivariada com uma média e uma covariância, e a FID é a distância de Fréchet entre as duas distribuições gaussianas. Um valor mais baixo é melhor, e uma pontuação de zero significa que os dois conjuntos de características têm médias e covariâncias idênticas. Martin Heusel e colegas da Universidade Johannes Kepler de Linz apresentaram a FID em 2017 no artigo GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium; rapidamente substituiu a pontuação Inception como métrica padrão para redes adversariais generativas (GANs) e, mais tarde, para modelos de difusão.
Como se calcula a FID#
- Gera uma amostra grande de imagens, normalmente 50 000, e reúne um conjunto de referência de imagens reais, geralmente o conjunto de treino.
- Redimensiona cada imagem para 299 x 299 píxeis e processa-a com Inception v3, uma rede neural convolucional treinada para a classificação de imagens no ImageNet; conserva a saída de 2,048 dimensões da camada final de pooling como embedding da imagem.
- Calcula o vetor médio e a matriz de covariância das incorporações reais e das incorporações geradas.
- Combina os valores: FID = (distância ao quadrado entre as duas médias) + traço(C_real + C_gen - 2 x sqrt(C_real x C_gen)), em que sqrt é a raiz quadrada da matriz.
O primeiro termo aumenta quando as imagens geradas diferem, em média, das imagens reais, por exemplo devido a uma dominante de cor ou a uma combinação de conteúdos incorreta. O segundo termo aumenta quando a variedade das imagens geradas é inadequada, como no colapso de modos, uma falha das GAN em que o gerador produz apenas alguns tipos de saída. Assim, um único valor reflete tanto a fidelidade como a diversidade, razão pela qual a FID se tornou a pontuação padrão para sistemas de texto para imagem, como o Stable Diffusion.
O mesmo cálculo em NumPy, com vetores de características simulados de 64 dimensões:
import numpy as np
rng = np.random.default_rng(0)
# Simulated 64-D feature vectors for 5,000 real and 5,000 generated images
real = rng.normal(0.0, 1.0, size=(5000, 64))
generated = rng.normal(0.3, 0.8, size=(5000, 64)) # shifted mean, less variety
# Summarize each set as a Gaussian: a mean vector and a covariance matrix
mu_r, mu_g = real.mean(axis=0), generated.mean(axis=0)
cov_r, cov_g = np.cov(real, rowvar=False), np.cov(generated, rowvar=False)
# Trace of the matrix square root of cov_r @ cov_g, via its eigenvalues
tr_covmean = np.sqrt(np.linalg.eigvals(cov_r @ cov_g)).real.sum()
# FID = squared distance between means + covariance mismatch
fid = ((mu_r - mu_g) ** 2).sum() + np.trace(cov_r) + np.trace(cov_g) - 2 * tr_covmean
print(f"FID: {fid:.2f}")O script apresenta uma FID de 8,78. A média deslocada contribui com cerca de 5,8 e a dispersão mais estreita com cerca de 2,6; o meio ponto restante resulta da estimativa das estatísticas a partir de uma amostra finita, o que aumenta sempre a FID. Para avaliações reais, bibliotecas como TorchMetrics FID calculam as características com os pesos originais da Inception do TensorFlow, disponibilizados juntamente com a métrica. A Inception v3 da Torchvision, treinada com ImageNet, tem pesos diferentes e as suas pontuações não podem ser comparadas com os resultados publicados.
Como interpretar e comparar as pontuações FID#
Os valores FID só são comparáveis em condições idênticas: mesmo conjunto de referência, resolução das imagens, número de amostras e pré-processamento. Redimensionar imagens com uma biblioteca diferente ou guardá-las como JPEG pode alterar a pontuação em vários pontos, um problema que motivou a implementação Clean-FID. Como as amostras pequenas aumentam a pontuação, os autores originais recomendam pelo menos 10,000 imagens; uma pontuação calculada com 5,000 amostras não é comparável a uma calculada com 50,000.
Para referência, o StyleGAN2 obteve uma FID de 2.84 com imagens de rostos de 1024 x 1024 do conjunto de dados FFHQ; na geração de texto para imagem sem exemplos, com mais de 30,000 legendas do MS-COCO, o Imagen da Google obteve 7.27, contra 10.39 do DALL-E 2.
Outras métricas para imagens generativas#
- Pontuação Inception (IS): Avalia apenas as imagens geradas, com base na confiança e diversidade com que o Inception as classifica. Nunca analisa dados reais, pelo que não consegue detetar um modelo que produz imagens nítidas, mas do tipo errado.
- Distância de Inception de Kernel (KID): Compara as mesmas características do Inception com um estimador de kernel não enviesado, o que a torna mais fiável para amostras pequenas.
- Pontuação CLIP: Mede até que ponto uma imagem corresponde ao respetivo prompt de texto, algo que a FID não capta; por isso, os modelos de texto para imagem costumam apresentar ambas as métricas.
- Precisão e revocação para modelos generativos: Dividem o valor único da FID em fidelidade — a proporção de imagens geradas que parecem reais — e cobertura — a proporção da variedade real reproduzida pelo modelo.
- FD-DINOv2: Calcula a mesma distância de Fréchet sobre características do DINOv2, um transformador de visão auto-supervisionado. George Stein e colegas propuseram-na em 2023, depois de um grande estudo com participantes ter concluído que a FID não refletia o realismo atribuído pelas pessoas às imagens de modelos de difusão.
Os modelos de vídeo utilizam a mesma ideia com a Distância de Fréchet para Vídeo, e conjuntos de avaliação como o VBench dividem a qualidade do vídeo em dimensões separadas, em vez de a resumirem numa única distância.
FID para dados de treino sintéticos#
A FID também avalia dados sintéticos antes de estes serem usados para treinar um detetor. Avaliar imagens geradas de cenários raros, como condução noturna para a visão automóvel ou defeitos específicos de produtos para a deteção de defeitos, em comparação com fotografias reais da câmara de implementação, revela uma diferença de domínio antes de se investir tempo no treino. A verificação final é a exatidão nas tarefas subsequentes: treina Ultralytics YOLO26 com e sem as imagens sintéticas e compara a precisão média (mAP) nas mesmas imagens reais reservadas, em modo de validação.










