Fréchet Inception Distance (FID)
Scopri come la distanza di Fréchet Inception (FID) valuta la qualità, la fedeltà e la diversità delle immagini generate dall'IA e come calcolare e interpretare i punteggi.
Fréchet Inception Distance (FID) è una metrica per confrontare immagini prodotte da un modello generativo con un set di riferimento di immagini reali. Converte entrambi i set in feature visive apprese, riassume ciascuna distribuzione di feature e misura la distanza tra di esse. Un FID inferiore indica generalmente che le immagini generate sono più simili a quelle reali sia nella qualità visiva che nella diversità, mentre un FID superiore suggerisce artefatti, variazione mancante o una discrepanza nei contenuti.
Come funziona FID#
FID valuta set di immagini anziché singole coppie di immagini. Questo lo rende utile per valutare sistemi di generative AI come le generative adversarial networks e i diffusion models.
Il calcolo segue quattro passaggi principali:
- Le immagini reali e generate passano attraverso un Inception v3 feature extractor, tipicamente preaddestrato su ImageNet.
- La rete converte ciascuna immagine in un embedding, una rappresentazione numerica delle sue caratteristiche visive di livello superiore.
- FID stima la media e la covariance matrix dei set di feature reali e generate. La media rappresenta i loro centri, mentre la covarianza descrive come le feature variano insieme.
- Combina la distanza al quadrato tra le medie con la differenza tra le matrici di covarianza. Questo calcolo include una matrix square root.
Il punteggio FID risultante non è negativo. Distribuzioni di feature identiche produrrebbero zero nel limite idealizzato, sebbene campioni finiti ed effetti numerici significhino che persino due sottoinsiemi di immagini reali possono produrre un punteggio diverso da zero.
Interpretazione di un punteggio FID#
Valori inferiori sono migliori, ma non esiste una soglia universale per un punteggio FID "buono". L'interpretazione dipende dal dataset, dalla risoluzione dell'immagine, dal numero di campioni, dalla pipeline di preprocessing e dal feature extractor. I punteggi dovrebbero essere confrontati solo quando queste condizioni sono coerenti.
FID risponde a due aspetti importanti delle immagini generate:
- Fedeltà: Immagini sfocate, texture irrealistiche, oggetti distorti e altri artefatti visivi possono allontanare le feature generate dalla distribuzione reale.
- Diversità: Output ripetitivi o il model collapse riducono la variazione delle feature, modificando la covarianza della distribuzione generata.
Tuttavia, FID non spiega perché un punteggio è cambiato. Può anche trascurare casi di errore rari ma importanti, immagini memorizzate, allineamento errato dei prompt o il dataset bias. I team dovrebbero quindi combinare FID con l'ispezione visiva, test specifici per l'applicazione e analisi dei sottogruppi.
FID rispetto alle metriche correlate#
FID viene spesso confuso con altre metriche di generazione di immagini e visione artificiale:
- Inception Score: Valuta le immagini generate senza confrontarle direttamente con le immagini di riferimento reali. FID è generalmente più informativo sulla discrepanza di distribuzione perché utilizza sia campioni reali che generati.
- Kernel Inception Distance: Confronta anche le distribuzioni delle feature ma utilizza uno stimatore basato su kernel. Può essere utile quando una stima efficiente dei campioni o non distorta è importante.
- Mean average precision: Misura se un rilevatore di oggetti classifica e localizza correttamente gli oggetti etichettati. FID valuta le distribuzioni delle immagini generate, non l'accuratezza del rilevamento.
- Somiglianza percettiva: Di solito confronta coppie di immagini corrispondenti. FID valuta invece se due raccolte hanno statistiche generali simili.
Applicazioni nel mondo reale#
Un'applicazione pratica è la valutazione di synthetic data per l'ispezione manifatturiera. Un team potrebbe generare immagini di graffi, crepe o componenti mancanti e calcolare FID rispetto a fotografie di riserva di una vera linea di produzione. Un punteggio alto può rivelare che l'illuminazione sintetica, le texture o le forme dei difetti non assomigliano alle condizioni di distribuzione. Dopo aver migliorato il generatore, il team dovrebbe comunque addestrare il proprio rilevatore e utilizzare la Ultralytics validation mode per verificare le prestazioni specifiche dell'attività.
Un secondo esempio è la generazione simulata di scenari stradali. Gli ingegneri possono creare immagini notturne, di pioggia o di nebbia per ampliare i dati di addestramento alla guida autonoma. FID può confrontare ciascuna condizione sintetica con i fotogrammi reali di quell'ambiente. Una grande distanza avverte di una discrepanza di dominio che potrebbe fare in modo che un rilevatore a valle impari sfondi irrealistici o artefatti atmosferici anziché feature stradali trasferibili.
Ultralytics Platform dataset management può aiutare i team a organizzare, ispezionare e controllare le versioni dei dataset di immagini reali e sintetiche prima dell'addestramento e della distribuzione.
Calcolo di FID in Python#
La documentata TorchMetrics FID implementation accetta batch di immagini reali e generate:
import torch
from torchmetrics.image.fid import FrechetInceptionDistance
generator = torch.Generator().manual_seed(7)
real_images = torch.randint(0, 256, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
generated_images = torch.randint(32, 224, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
fid = FrechetInceptionDistance(feature=64)
fid.set_dtype(torch.float64)
fid.update(real_images, real=True)
fid.update(generated_images, real=False)
print(f"FID: {fid.compute().item():.3f}")Questo piccolo esempio utilizza feature a 64 dimensioni per una rapida dimostrazione. I confronti di benchmark standard utilizzano tipicamente la rappresentazione predefinita a 2.048 dimensioni e molte più immagini. Per una valutazione affidabile, mantieni fissi il preprocessing e il conteggio dei campioni, riporta la configurazione esatta, ripeti le misurazioni quando possibile e completa FID con il Ultralytics model evaluation workflow quando i dati generati supportano un'attività di visione a valle.









