Fréchet Inception Distance (FID)
La Fréchet Inception Distance (FID) valuta le immagini generate confrontando le statistiche delle caratteristiche Inception con quelle di foto reali. Come si calcola e si confronta.
La distanza di Fréchet Inception (FID) è una metrica che valuta un modello generativo di immagini confrontando le statistiche delle immagini generate con quelle delle immagini reali. Entrambi gli insiemi vengono elaborati da una rete Inception v3 preaddestrata; le caratteristiche di ciascun insieme sono sintetizzate come una distribuzione gaussiana multivariata con una media e una covarianza, e FID è la distanza di Fréchet tra le due gaussiane. Un valore più basso è migliore; un punteggio pari a zero significa che gli insiemi di caratteristiche hanno medie e covarianze identiche. Martin Heusel e i colleghi dell’Università Johannes Kepler di Linz introdussero FID nel 2017 nell’articolo GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium; la metrica sostituì rapidamente l’Inception Score come riferimento standard per le reti generative avversarie (GAN) e, in seguito, per i modelli di diffusione.
Come si calcola la FID#
- Genera un ampio campione di immagini, convenzionalmente 50,000, e raccogli un set di riferimento di immagini reali, di solito il set di addestramento.
- Ridimensiona ogni immagine a 299 x 299 pixel e passala attraverso Inception v3, una rete neurale convoluzionale addestrata per la classificazione delle immagini su ImageNet; conserva come embedding dell’immagine l’output a 2.048 dimensioni del suo ultimo livello di pooling.
- Calcola il vettore medio e la matrice di covarianza degli embedding reali e di quelli generati.
- Combinali: FID = (distanza al quadrato tra le due medie) + traccia(C_real + C_gen - 2 x sqrt(C_real x C_gen)), dove sqrt è la radice quadrata della matrice.
Il primo termine cresce quando le immagini generate differiscono in media da quelle reali, per esempio per una dominante cromatica o una distribuzione errata dei contenuti. Il secondo cresce quando la varietà non è corretta, come nel collasso delle modalità, un problema delle GAN in cui il generatore produce solo pochi tipi di risultati. Un unico numero riflette quindi sia la fedeltà sia la diversità, motivo per cui FID è diventato il punteggio predefinito per i sistemi text-to-image come Stable Diffusion.
Lo stesso calcolo con NumPy, su vettori di caratteristiche simulati a 64 dimensioni:
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}")Lo script stampa una FID di 8.78. La media spostata contribuisce per circa 5.8 e la dispersione più ristretta per circa 2.6; il mezzo punto rimanente deriva dalla stima delle statistiche su un campione finito, che aumenta sempre la FID. Nelle valutazioni reali, librerie come TorchMetrics FID calcolano le caratteristiche usando i pesi originali di Inception TensorFlow rilasciati insieme alla metrica. Inception v3 di ImageNet addestrata con Torchvision usa pesi diversi, quindi i suoi punteggi non sono confrontabili con i risultati pubblicati.
Interpretare e confrontare i punteggi FID#
I valori FID sono confrontabili soltanto a parità di condizioni: stesso insieme di riferimento, risoluzione delle immagini, numero di campioni e preprocessing. Ridimensionare le immagini con una libreria diversa o salvarle in JPEG può modificare il punteggio di diversi punti; è un problema che ha motivato l’implementazione Clean-FID. Poiché campioni piccoli fanno aumentare il punteggio, gli autori originali raccomandano almeno 10.000 immagini; un punteggio calcolato su 5.000 campioni non è confrontabile con uno basato su 50.000.
Per avere un riferimento, StyleGAN2 ha raggiunto un FID di 2.84 su immagini di volti da 1024 x 1024 del dataset FFHQ; nella generazione text-to-image zero-shot su 30.000 didascalie MS-COCO, Imagen di Google ha ottenuto 7.27 contro 10.39 di DALL-E 2.
Altre metriche per immagini generative#
- Inception Score (IS): Valuta soltanto le immagini generate, in base alla confidenza e alla varietà con cui Inception le classifica. Non considera mai dati reali, quindi non può rilevare un modello che genera immagini nitide ma del tipo sbagliato.
- Distanza di Inception kernel (KID): Confronta le stesse caratteristiche Inception con uno stimatore kernel non distorto, che la rende più affidabile con pochi campioni.
- Punteggio CLIP: Misura quanto un’immagine corrisponde al prompt testuale, aspetto che FID non rileva; perciò i modelli text-to-image riportano di solito entrambi.
- Precisione e richiamo per i modelli generativi: Suddividono il singolo valore FID in fedeltà, la quota di immagini generate che sembrano reali, e copertura, la quota di varietà reale riprodotta dal modello.
- FD-DINOv2: Calcola la stessa distanza di Fréchet sulle caratteristiche di DINOv2, un transformer di visione auto-supervisionato. George Stein e i colleghi lo proposero nel 2023, dopo che un ampio studio condotto con valutazioni umane aveva rilevato che FID non rifletteva il realismo attribuito dalle persone alle immagini dei modelli di diffusione.
I modelli video applicano la stessa idea con la distanza di Fréchet per i video, mentre suite come VBench scompongono la qualità video in dimensioni distinte anziché usare un’unica distanza.
FID per i dati sintetici di addestramento#
FID serve anche a selezionare i dati sintetici prima di usarli per addestrare un rilevatore. Valutare le immagini generate di scene rare, come la guida notturna per la visione automobilistica o specifici difetti di prodotto per il rilevamento dei difetti, rispetto a foto reali della fotocamera di distribuzione rivela un divario di dominio prima di investire tempo nell’addestramento. La verifica finale riguarda l’accuratezza a valle: addestra Ultralytics YOLO26 con e senza le immagini sintetiche e confronta la precisione media (mAP) sulle stesse immagini reali tenute da parte, in modalità di convalida.










