Aller au contenu principal

Module 8 — Métriques de qualité : FID et inception score

Sans métrique, on ne compare pas deux modèles génératifs : on juge à l'œil, on se convainc, et le prochain venu contestera. Ce module présente les deux scores standards, le Fréchet Inception Distance et l'inception score, les remplace par la précision-rappel quand ils trompent, et rappelle pourquoi l'évaluation humaine reste indispensable.

Le décor commun : les activations d'InceptionV3

Les trois métriques reposent sur la même préparation. Un réseau InceptionV3 pré-entraîné sur ImageNet extrait, pour chaque image, un vecteur de 2 048 activations à la sortie du dernier bloc avant la classification. Ces vecteurs servent de représentation perceptuelle : deux images visuellement proches y ont des vecteurs proches.

import torch
from torchvision.models import inception_v3
from torchvision.transforms import Compose, Resize, CenterCrop, Normalize

def extracteur_inception(appareil="cuda"):
modele = inception_v3(weights="IMAGENET1K_V1", transform_input=False)
modele.fc = torch.nn.Identity() # renvoie 2048 activations
return modele.eval().to(appareil)

pretraitement = Compose([
Resize(299), CenterCrop(299),
Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

Les images sont toujours redimensionnées à 299 pixels parce que c'est la taille d'entrée d'InceptionV3. Comparer deux modèles sur des tailles différentes sans repasser par ce redimensionnement est une source classique d'erreurs de reproductibilité.

Le Fréchet Inception Distance

L'idée du FID (Heusel, 2017) est simple : on calcule les activations sur un lot d'images vraies et un lot d'images générées, on modélise chaque nuage par une gaussienne multivariée, et on mesure la distance entre les deux :

FID=μrμg2+Tr ⁣(Σr+Σg2(ΣrΣg)1/2)\mathrm{FID} = \| \mu_r - \mu_g \|^2 + \mathrm{Tr}\!\left(\Sigma_r + \Sigma_g - 2 (\Sigma_r \Sigma_g)^{1/2}\right)

μr,Σr\mu_r, \Sigma_r (respectivement μg,Σg\mu_g, \Sigma_g) sont la moyenne et la covariance des activations des vraies (respectivement générées) images. Le FID est plus bas quand les distributions se ressemblent. Sur CIFAR-10, les meilleurs modèles atteignent des scores autour de 2 ; sur ImageNet, autour de 3 à 5.

Trois précautions pratiques. D'abord, le nombre d'images compte : sous 10 000 images, le score est bruité et deux évaluations consécutives peuvent différer de 1 à 2 points. La convention est 50 000 images. Ensuite, l'ensemble de vraies images doit provenir de la même distribution que celle d'entraînement — pas le jeu de validation d'ImageNet si le modèle a été entraîné sur FFHQ. Enfin, la précision numérique de la racine matricielle est fragile : utiliser une implémentation qui gère la stabilité (par exemple pytorch-fid ou clean-fid).

FID plus bas ne veut pas dire « meilleur pour votre usage »

Le FID compare deux nuages gaussiens dans l'espace Inception. Un modèle qui produit des images très photoréalistes mais qui ignore complètement la consigne texte peut avoir un FID inférieur à un modèle qui suit la consigne avec un peu de flou. Les benchmarks de génération conditionnée par texte utilisent donc le FID couplé avec un score CLIP ou une évaluation humaine.

L'inception score et ce qu'il oublie

Le inception score (IS, Salimans, 2016), plus ancien, mesure deux choses en une :

IS=exp ⁣(Ex ⁣[KL ⁣(p(yx)  p(y))])\mathrm{IS} = \exp\!\left(\mathbb{E}_x\!\left[\mathrm{KL}\!\left(p(y \mid x)\ \|\ p(y)\right)\right]\right)

p(yx)p(y \mid x) est la distribution des classes prédites par InceptionV3 pour l'image xx, et p(y)p(y) la distribution moyenne des classes sur tous les échantillons générés. Il est plus élevé quand chaque image est reconnaissable (entropie faible sur p(yx)p(y \mid x)) et que l'ensemble des images couvre plein de classes (entropie élevée sur p(y)p(y)).

L'IS a trois défauts connus. Il ne regarde pas les vraies images : un modèle qui produit des chiens irréels mais très canins aura un bon IS. Il est borné par le nombre de classes d'ImageNet : hors des 1 000 classes ImageNet, il ne mesure plus grand-chose. Enfin, il est piégé par les artefacts que la classification InceptionV3 exploite : des textures qui trompent le classifieur sans être réalistes gonflent le score.

En 2026, l'IS est rarement rapporté seul. Le FID l'a remplacé pour la plupart des comparaisons, et sur CIFAR-10 uniquement, il reste utile comme métrique complémentaire.

Précision et rappel pour la génération

FID et IS produisent un scalaire, mais ils confondent qualité et diversité. Deux modèles avec le même FID peuvent avoir des comportements opposés : l'un produit des images très propres qui ne couvrent qu'une petite région du réel (mode collapse), l'autre produit une variété de sorties dont beaucoup sont mauvaises.

La précision-rappel générative (Kynkäänniemi, 2019) sépare ces deux quantités :

  • Précision : fraction des images générées qui tombent dans la variété des vraies images. Elle mesure la qualité perceptuelle.
  • Rappel : fraction des vraies images dont la variété est couverte par les générées. Il mesure la diversité ou couverture.

L'estimation se fait dans l'espace Inception, en calculant pour chaque image une boule autour de ses kk plus proches voisins et en testant si les points de l'autre ensemble tombent dedans. Deux nombres remplacent le scalaire du FID et rendent visible ce qu'il masque.

SituationFIDPrécisionRappel
Mode collapse propremoyenhautebas
Génération bruyante mais diversemoyenbassehaut
Bon modèlebashautehaut
Mauvais modèlehautbassebasse

C'est aujourd'hui l'outil de choix pour diagnostiquer un GAN qui donne un FID trompeur — cas fréquent en pratique.

L'évaluation humaine reste indispensable

Toutes ces métriques ont un point aveugle commun : elles opèrent dans l'espace d'InceptionV3 entraîné pour la classification. Trois pathologies passent sous leurs radars : les artefacts systématiques qu'un humain voit immédiatement (mains à six doigts des premiers diffuseurs), la cohérence sémantique entre plusieurs éléments, et la fidélité à la consigne en génération texte-image, mesurable par un score CLIP.

Aucune métrique automatique ne remplace un panel d'humains sur les décisions qui comptent. Le protocole minimal utilisé dans les papiers récents :

  • Comparaison par paires (two-alternative forced choice) : le juge voit deux images pour la même consigne et choisit la meilleure. Plus fiable qu'une note absolue.
  • Trois axes séparés : qualité perceptuelle, fidélité à la consigne, absence d'artefacts.
  • 50 juges au minimum, avec un test d'attention pour filtrer les inattentifs.
  • Ordre randomisé pour chaque juge, pour éviter les effets d'apprentissage sur des consignes proches.
Suivez FID et précision-rappel pendant l'entraînement, pas seulement à la fin

Loguer le FID à chaque époque prend quelques minutes et détecte tôt un décrochage. Ajouter précision-rappel identifie si un modèle qui garde son FID est en train de sacrifier la diversité pour la netteté. Une baisse de rappel de 10 % avec un FID stable est le signal typique d'un début de mode collapse.

En résumé

  • Le FID compare les statistiques gaussiennes des activations Inception des vraies et des générées ; il exige 50 000 images et un ensemble de référence issu de la même distribution.
  • L'inception score confond qualité et diversité en une seule mesure, ne regarde pas les vraies images et se limite aux classes d'ImageNet ; il est peu rapporté seul aujourd'hui.
  • La précision-rappel générative sépare qualité (précision) et couverture (rappel), ce qui rend un mode collapse visible là où le FID le masque.
  • Aucune métrique ne remplace une évaluation humaine par paires sur trois axes (qualité, fidélité à la consigne, artefacts) pour les décisions qui comptent.

Module suivant : comment ces mêmes idées se déclinent sur le texte et l'audio, avec des choix architecturaux qui dépendent de la modalité.