Skip to content

Évaluer avec le mAP

L’accuracy suppose une seule réponse par exemple. En détection, une image peut contenir un nombre variable d’objets, chacun avec sa propre position — la question n’est plus « la bonne classe a-t-elle été prédite ? » mais « chaque objet a-t-il été localisé et classé correctement, sans doublon ni omission ? ». Il faut une métrique dédiée.

Le mAP compare les boîtes prédites aux boîtes réelles selon leur taux de recouvrement (IoU, Intersection over Union), à plusieurs seuils, puis moyenne le résultat sur toutes les classes.

from torchmetrics.detection import MeanAveragePrecision
metric = MeanAveragePrecision(backend="faster_coco_eval")
with torch.no_grad():
for images, targets in val_loader:
preds = model(list(images))
metric.update(preds, list(targets))
result = metric.compute()
print("mAP (IoU 0.5:0.95):", result["map"].item())
print("[email protected]:", result["map_50"].item())
mAP (IoU 0.5:0.95): 0.8023

Deux variantes courantes : [email protected] exige un simple recouvrement d’au moins 50 % entre boîte prédite et boîte réelle (un critère assez permissif, ici atteint parfaitement : 1.0) ; mAP (0.5:0.95) moyenne sur une plage de seuils de recouvrement bien plus stricts (de 50 % à 95 % par pas de 5 %), une mesure plus exigeante sur la précision géométrique des boîtes, où le modèle atteint tout de même 0,80.

Un [email protected] parfait mais un mAP(0.5:0.95) légèrement inférieur signifie que le modèle localise toujours la bonne région (jamais de détection totalement ratée) mais que ses boîtes ne sont pas toujours pixel-parfaites aux seuils de recouvrement les plus stricts — cohérent avec un entraînement court (3 epochs) sur un jeu de données restreint (200 images). Un entraînement plus long ou un jeu de données plus large affinerait probablement la précision géométrique des boîtes, sans nécessairement changer la capacité du modèle à identifier la bonne forme.

👉 Bilan et limites


Junior TSAFACK – 12/09/2026