Comment calculer le mAP pour la tâche de détection du PASCAL VOC Challenge?

22

Comment calculer la mAP (moyenne moyenne de précision) pour la tâche de détection pour les classements Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Il a dit - à la page 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Précision moyenne (AP). Pour le défi VOC2007, la précision moyenne interpolée (Salton et Mcgill 1986) a été utilisée pour évaluer à la fois la classification et la détection. Pour une tâche et une classe données, la courbe de précision / rappel est calculée à partir de la sortie classée d'une méthode. Le rappel est défini comme la proportion de tous les exemples positifs classés au-dessus d'un rang donné. La précision est la proportion de tous les exemples au-dessus de ce rang qui appartiennent à la classe positive. L'AP résume la forme de la courbe de précision / rappel, et est définie comme la précision moyenne à un ensemble de onze niveaux de rappel également espacés [0,0.1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

La précision à chaque niveau de rappel r est interpolée en prenant la précision maximale mesurée pour une méthode pour laquelle le rappel correspondant dépasse r pinterp(r) = max p(r˜):, où p (r˜) est la précision mesurée au rappel ˜r

À propos de mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Cela signifie-t-il que:

  1. Nous calculons la précision et le rappel :

    • A) Pour de nombreux différents,IoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} nous calculons les valeurs Vrai / Faux Positif / Négatif

    True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, comme indiqué ici: /datascience//a/16813/37736 puis nous calculons:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B) Ou pour de nombreux seuils différents d'algorithmes de détection, nous calculons:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    True positive = Number_of_detection with IoU > 0.5comme dit ici: /programming//a/43168882/1558037



  1. Ensuite, nous construisons une courbe de précision-rappel , comme indiqué ici: entrez la description de l'image ici

  1. Ensuite, nous calculons AP (précision moyenne) comme moyenne de 11 valeurs dePrecision aux points où Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, c.-à-d.AP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(En général, pour chaque point, par exemple 0,3, nous obtenons un MAX de précision pour le rappel <= 0,3, au lieu de la valeur de la précision à ce stade du rappel = 0,3)


  1. Et lorsque nous calculons AP uniquement pour 1 classe d'objet quelque chose sur toutes les images - nous obtenons AP (précision moyenne) pour cette classe, par exemple, uniquement pour air.

Donc AP est une intégrale (aire sous la courbe): /stats//a/157019/111998

Mais lorsque nous calculons AP pour toutes les classes d'objets sur toutes les images - nous obtenons alors mAP (précision moyenne moyenne) pour tous les 88.6jeux de données d'images, par exemple, pour R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Des questions:

  1. Est-ce vrai, et si ce n'est pas le cas, alors comment calculer le mAP pour Pascal VOC Challenge?
  2. Et laquelle des 3 formules (A, B ou C) est correcte pour calculer la précision et le rappel, au paragraphe 1?

Réponse courte:

  • mAP = AVG (AP pour chaque classe d'objets)
  • AP = AVG (précision pour chacun des 11 rappels {précision = 0, 0,1, ..., 1})
  • Courbe PR = Précision et Rappel (pour chaque seuil qui se trouve dans les boîtes liées aux prédictions)
  • Précision = TP / (TP + FP)
  • Rappel = TP / (TP + FN)
  • TP = nombre de détections avec IoU> 0,5
  • FP = nombre de détections avec IoU <= 0,5 ou détectées plus d'une fois
  • FN = nombre d'objets non détectés ou détectés avec IoU <= 0,5
Alex
la source

Réponses:

15

Pour répondre à vos questions:

  1. Oui, votre approche est bonne
  2. De A, B et C, la bonne réponse est B.

L'explication est la suivante: pour calculer la précision moyenne moyenne (mAP) dans le contexte de la détection d'objets, vous devez calculer la précision moyenne (AP) pour chaque classe, puis calculer la moyenne de toutes les classes. La clé ici est de calculer l'AP pour chaque classe, en général pour le calcul de la précision (P) et du rappel (R), vous devez définir ce qui sont: vrais positifs (TP), faux positifs (FP), vrais négatifs (TN) et faux Négatif (FN). Dans le cadre de la détection d'objets du défi Pascal VOC, voici les éléments suivants:

  • TP: sont les boîtes englobantes (BB) dont l'intersection sur l'union (IoU) avec la vérité du sol (GT) est supérieure à 0,5
  • FP: BB que l'IoU avec GT est inférieur à 0,5 également les BB qui ont IoU avec une GT qui a déjà été détectée.
  • TN: il n'y a pas de vrai négatif, l'image devrait contenir au moins un objet
  • FN: ces images étaient la méthode n'a pas réussi à produire un BB

Maintenant, chaque BB prédit a une valeur de confiance pour la classe donnée. Ainsi, la méthode de notation trie les prédictions par ordre de confiance décroissant et calcule P = TP / (TP + FP) et R = TP / (TP + FN) pour chaque rang possible k = 1 jusqu'au nombre de prédictions. Alors maintenant, vous avez un (P, R) pour chaque rang, ces P et R sont la courbe de précision de rappel "brute". Pour calculer la courbe PR interpolée pour chaque valeur de R, vous sélectionnez le P maximum qui a un R '> = R. correspondant

Il existe deux façons différentes d'échantillonner les points de la courbe PR selon le document dev devkit doc . Pour VOC Challenge avant 2010, nous sélectionnons le P maximum obtenu pour tout R '> = R, R appartenant à 0, 0,1, ..., 1 (onze points). L'AP est alors la précision moyenne à chacun des seuils de rappel. Pour VOC Challenge 2010 et après, nous sélectionnons toujours le P maximum pour tout R '> = R, tandis que R appartient à toutes les valeurs de rappel uniques (inclure 0 et 1). L'AP est alors la taille de la zone sous la courbe PR. Notez que dans le cas où vous n'avez pas une valeur de P avec rappel au-dessus de certains des seuils, la valeur de précision est 0.

Par exemple, considérons la sortie suivante d'une méthode dans la classe "Avion":

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

En outre, il n'a pas détecté de boîtes englobantes dans deux images, nous avons donc FN = 2. Le tableau précédent est le classement ordonné par la valeur de confiance des prédictions de la méthode GT = 1 signifie un TP et GT = 0 FP. Donc TP = 5 (BB1, BB2, BB5, BB8 et BB9), FP = 5. Pour le cas de rang = 3 la précision baisse car BB1 a déjà été détecté, donc même si l'objet est bien présent il compte comme un FP. .

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Compte tenu des résultats précédents: si nous utilisions la méthode avant voc2010, les valeurs de précision interpolées sont 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Alors AP = 5,5 / 11 = 0,5 pour le classe des "avions". Sinon, si nous avons utilisé le chemin depuis voc2010, les valeurs de précision interpolées sont 1, 1, 1, 0,5, 0,5, 0,5, 0 pour sept rappels uniques qui sont 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1. (0,14-0) * 1 + (0,29-0,14) * 1 + (0,43-0,29) * 0,5 + (0,57-0,43) * 0,5 + (0,71-0,57) * 0,5 + (1-0,71) * 0 = 0,5 pour la classe des "Avions".

Répétez pour chaque classe et vous obtenez le (mAP).

Plus d'informations peuvent être trouvées dans les liens suivants 1 , 2 . Vous devriez également consulter l'article: Le défi des classes d'objets visuels PASCAL: une rétrospective pour une explication plus détaillée.

feynman410
la source
1
Vous êtes les bienvenus! Oui, vous devez calculer sur toutes les images. Et GT est 1 si IoU> 0,5. Le dernier FN sera 3 pour 3 objets non détectés
feynman410
1
FN est le nombre d'images sans prédiction, FP est le nombre de détections avec IoU <= 0,5 ou détectées plus d'une fois. Voir ce pseudocode stats.stackexchange.com/a/263758/140597
feynman410
1
Désolé, votre droit est le nombre d'objets non détectés.
feynman410
1
@ feynman410 je me suis trompé, pouvez-vous s'il vous plaît nous dire où placez-vous dans la table des objets qui n'ont pas été détectés, mais qui devraient l'être? au bout du tableau? (car il n'y a pas de score pour eux)
Martin Brišiak
1
Ainsi, "Precision" et "Recall" sont calculés séparément pour chaque classe - afin de calculer AP par classe. Droite? Alors, sont-ils calculés séparément sur chaque image puis moyennés, ou sont-ils calculés sur le nombre total de détections sur toutes les images?
Quelque chose quelque chose le