Fréchet Inception Distance (FID)
La distancia de Fréchet Inception (FID) puntúa las imágenes generadas comparando las estadísticas de sus características Inception con las de fotografías reales. Cómo se calcula y se compara.
La distancia de Inception de Fréchet (FID) es una métrica que puntúa un modelo generativo de imágenes comparando las estadísticas de las imágenes generadas con las de imágenes reales. Ambos conjuntos pasan por una red Inception v3 preentrenada; las características de cada conjunto se resumen como una distribución gaussiana multivariante con una media y una covarianza, y la FID es la distancia de Fréchet entre las dos distribuciones gaussianas. Un valor más bajo es mejor, y una puntuación de cero significa que las medias y covarianzas de las características de ambos conjuntos son idénticas. En 2017, Martin Heusel y sus colegas de la Universidad Johannes Kepler de Linz presentaron la FID en el artículo GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium; en poco tiempo sustituyó a la puntuación Inception como métrica estándar para las redes generativas antagónicas (GAN) y, más adelante, para los modelos de difusión.
Cómo se calcula la FID#
- Genera una muestra grande de imágenes, normalmente 50,000, y recopila un conjunto de referencia de imágenes reales, que suele ser el conjunto de entrenamiento.
- Redimensiona todas las imágenes a 299 x 299 píxeles y pásalas por Inception v3, una red neuronal convolucional entrenada para la clasificación de imágenes en ImageNet, y conserva la salida de 2.048 dimensiones de su última capa de agrupamiento como representación vectorial de cada imagen.
- Calcula el vector de medias y la matriz de covarianza de los embeddings reales y de los embeddings generados.
- Combínalos: FID = (distancia al cuadrado entre las dos medias) + traza(C_real + C_gen - 2 x sqrt(C_real x C_gen)), donde sqrt es la raíz cuadrada de la matriz.
El primer término aumenta cuando, en promedio, las imágenes generadas difieren de las reales, por ejemplo, por una dominante de color o una mezcla de contenido incorrecta. El segundo aumenta cuando la variedad no es la adecuada, como ocurre con el colapso de modos: el fallo de las GAN en el que el generador solo produce unos pocos tipos de resultados. Por tanto, una sola cifra refleja tanto la fidelidad como la diversidad, y por eso la FID se convirtió en la puntuación predeterminada para los sistemas de texto a imagen, como Stable Diffusion.
El mismo cálculo con NumPy, usando vectores de características simulados de 64 dimensiones:
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}")El script muestra una FID de 8.78. La media desplazada aporta aproximadamente 5.8 y la menor dispersión, alrededor de 2.6; el medio punto restante se debe a que las estadísticas se estiman a partir de una muestra finita, lo que siempre eleva la FID. Para evaluaciones reales, bibliotecas como TorchMetrics FID calculan las características con los pesos originales de Inception de TensorFlow publicados junto con la métrica. Inception v3 de Torchvision, entrenada con ImageNet, tiene pesos distintos y sus puntuaciones no se pueden comparar con los resultados publicados.
Interpretar y comparar puntuaciones FID#
Los valores de FID solo son comparables si las condiciones son idénticas: el mismo conjunto de referencia, la misma resolución de imagen, el mismo número de muestras y el mismo preprocesamiento. Redimensionar imágenes con otra biblioteca o guardarlas como JPEG puede desplazar la puntuación varios puntos; este problema motivó la implementación Clean-FID. Como las muestras pequeñas inflan la puntuación, los autores originales recomiendan usar al menos 10.000 imágenes, y una puntuación calculada con 5.000 muestras no se puede comparar con otra calculada con 50.000.
Como referencia, StyleGAN2 alcanzó una FID de 2,84 con imágenes faciales de 1024 x 1024 del conjunto de datos FFHQ; en generación de texto a imagen sin entrenamiento específico con 30.000 pies de foto de MS-COCO, Imagen de Google obtuvo una puntuación de 7,27, frente a 10,39 de DALL-E 2.
Otras métricas para imágenes generativas#
- Puntuación Inception (IS): Evalúa únicamente las imágenes generadas, según la confianza y la diversidad con las que Inception las clasifica. Nunca examina datos reales, por lo que no puede detectar un modelo que produzca imágenes nítidas, pero del tipo equivocado.
- Distancia de Inception con kernel (KID): Compara las mismas características de Inception mediante un estimador de kernel no sesgado, lo que la hace más fiable con conjuntos de muestras pequeños.
- Puntuación de CLIP: Mide hasta qué punto una imagen coincide con su prompt de texto, algo que la FID no refleja; por eso, los modelos de texto a imagen suelen incluir ambas puntuaciones.
- Precisión y exhaustividad para modelos generativos: Desglosan la cifra única de la FID en fidelidad —la proporción de imágenes generadas que parecen reales— y cobertura —la proporción de la variedad real que reproduce el modelo—.
- FD-DINOv2: Calcula la misma distancia de Fréchet sobre las características de DINOv2, un transformador de visión autosupervisado. George Stein y sus colegas la propusieron en 2023, después de que un amplio estudio con participantes revelara que la FID no reflejaba la valoración de las personas sobre el realismo de las imágenes de modelos de difusión.
Los modelos de vídeo aplican la misma idea mediante la distancia de Fréchet de vídeo, y conjuntos de evaluación como VBench desglosan la calidad del vídeo en dimensiones distintas en lugar de resumirla en una sola distancia.
FID para datos de entrenamiento sintéticos#
La FID también permite filtrar datos sintéticos antes de utilizarlos para entrenar un detector. Puntuar imágenes generadas de escenas poco frecuentes, como la conducción nocturna para la visión del automóvil o defectos concretos de productos para la detección de defectos, comparándolas con fotografías reales de la cámara de despliegue, revela una brecha de dominio antes de dedicar tiempo al entrenamiento. La comprobación final es la precisión en tareas posteriores: entrena Ultralytics YOLO26 con y sin las imágenes sintéticas y compara la precisión media promedio (mAP) en las mismas imágenes reales reservadas para la prueba, en modo de validación.










