Wie berechnet man die mAP für die Erkennungsaufgabe für die PASCAL VOC Challenge?


22

Wie berechnet man den mAP (Mean Average Precision) für die Erkennungsaufgabe der Pascal VOC-Bestenlisten? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Dort heißt es - auf Seite 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Durchschnittliche Präzision (AP). Für die VOC2007-Herausforderung wurde die interpolierte Durchschnittsgenauigkeit (Salton und Mcgill 1986) verwendet, um sowohl die Klassifizierung als auch die Erkennung zu bewerten. Für eine gegebene Aufgabe und Klasse wird die Genauigkeits- / Rückrufkurve aus der eingestuften Ausgabe einer Methode berechnet. Rückruf ist definiert als der Anteil aller positiven Beispiele, die über einem bestimmten Rang stehen. Präzision ist der Anteil aller Beispiele oberhalb dieses Ranges, die aus der positiven Klasse stammen. Der AP fasst die Form der Genauigkeits- / Rückrufkurve zusammen und ist definiert als die mittlere Genauigkeit bei einem Satz von elf gleichmäßig verteilten Rückrufebenen [0,0.1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

Die Genauigkeit bei jedem Rückrufpegel r wird interpoliert, indem die für eine Methode gemessene maximale Genauigkeit genommen wird, bei der der entsprechende Rückruf r: überschreitet pinterp(r) = max p(r˜), wobei p ( r p) die gemessene Genauigkeit bei Rückruf ˜r ist

Über mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Heißt das also:

  1. Wir berechnen Präzision und Rückruf :

    • A) Für viele verschiedeneIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} berechnen wir True / False Positive / Negative Werte

    Wo True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, wie hier gesagt: /datascience//a/16813/37736 und dann berechnen wir:

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

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


  • B) Oder für viele verschiedene Schwellenwerte von Erkennungsalgorithmen berechnen wir:

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

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

    Wo True positive = Number_of_detection with IoU > 0.5wie hier gesagt: /programming//a/43168882/1558037



  1. Dann bauen wir die Precision-Recall-Kurve auf , wie hier gezeigt: Bildbeschreibung hier eingeben

  1. Dann berechnen wir AP (Average Precision) als Durchschnitt von 11 WertenPrecision an den Punkten, an denen Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, dhAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(Im Allgemeinen erhalten wir für jeden Punkt, z. B. 0,3, ein Maximum der Genauigkeit für den Rückruf <= 0,3 anstelle des Werts für die Genauigkeit an diesem Punkt. Rückruf = 0,3.)


  1. Und wenn wir AP nur für 1 Objektklasse auf allen Bildern berechnen - dann erhalten wir AP (durchschnittliche Genauigkeit) für diese Klasse zum Beispiel nur für air.

AP ist also ein Integral (Bereich unter der Kurve): /stats//a/157019/111998

Wenn wir jedoch die AP für alle Objektklassen aller Bilder berechnen, erhalten wir die mAP (mittlere durchschnittliche Genauigkeit) für alle 88.6Bilddatensätze , z. B. für R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Fragen:

  1. Ist es richtig und wenn nicht, wie wird der mAP für Pascal VOC Challenge berechnet?
  2. Und welche der drei Formeln (A, B oder C) ist für die Berechnung von Präzision und Rückruf in Absatz 1 richtig?

Kurze Antwort:

  • mAP = AVG (AP für jede Objektklasse)
  • AP = AVG (Präzision für jeden der 11 Rückrufe {Präzision = 0, 0,1, ..., 1})
  • PR-Kurve = Präzision und Rückruf (für jeden Schwellenwert, der in den gebundenen Feldern für Vorhersagen enthalten ist)
  • Präzision = TP / (TP + FP)
  • Rückruf = TP / (TP + FN)
  • TP = Anzahl der Erkennungen mit IoU> 0,5
  • FP = Anzahl der Erkennungen mit IoU <= 0,5 oder mehrmals erkannt
  • FN = Anzahl der Objekte, die nicht erkannt oder mit IoU <= 0,5 erkannt wurden

Antworten:


15

Um Ihre Fragen zu beantworten:

  1. Ja, Ihr Ansatz ist richtig
  2. Von A, B und C ist die richtige Antwort B.

Die Erklärung lautet wie folgt: Um die durchschnittliche Genauigkeit (Mean Average Precision, mAP) im Kontext der Objekterkennung zu berechnen, müssen Sie die durchschnittliche Genauigkeit (Average Precision, AP) für jede Klasse berechnen und anschließend den Mittelwert für alle Klassen berechnen. Der Schlüssel hier ist die Berechnung des AP für jede Klasse. Im Allgemeinen müssen Sie für die Berechnung von Präzision (P) und Rückruf (R) Folgendes definieren: True Positives (TP), False Positives (FP), True Negative (TN) und False Negativ (FN). In der Einstellung der Objekterkennung der Pascal VOC Challenge sind die folgenden:

  • TP: sind die Bounding Boxes (BB), bei denen der Schnittpunkt der Vereinigung (IoU) mit der Grundwahrheit (GT) über 0,5 liegt
  • FP: BB, dass die IoU mit GT unter 0,5 liegt, auch die BB, die IoU mit einer GT haben, die bereits erkannt wurde.
  • TN: Es gibt keine echten Negative, es wird erwartet, dass das Bild mindestens ein Objekt enthält
  • FN: Mit diesen Bildern konnte die Methode keine BB erzeugen

Jetzt hat jede vorhergesagte BB einen Konfidenzwert für die gegebene Klasse. Die Bewertungsmethode sortiert also die Vorhersagen nach abnehmender Konfidenzreihenfolge und berechnet die Werte P = TP / (TP + FP) und R = TP / (TP + FN) für jeden möglichen Rang k = 1 bis zur Anzahl der Vorhersagen. Nun haben Sie ein (P, R) für jeden Rang, wobei P und R die "rohe" Precision-Recall-Kurve sind. Um die interpolierte PR-Kurve für jeden Wert von R zu berechnen, wählen Sie das Maximum P mit einem entsprechenden R '> = R.

Es gibt zwei verschiedene Möglichkeiten, PR-Kurvenpunkte gemäß dem voc devkit doc abzutasten . Für die VOC-Herausforderung vor 2010 wählen wir das Maximum P, das für jedes R '> = R erhalten wird, wobei R zu 0, 0,1, ..., 1 gehört (elf Punkte). Der AP ist dann die durchschnittliche Genauigkeit bei jedem der Rückrufschwellenwerte. Für die VOC Challenge 2010 und danach wählen wir immer noch das Maximum P für jedes R '> = R, während R zu allen eindeutigen Rückrufwerten gehört (einschließlich 0 und 1). Der AP ist dann die Flächengröße unter der PR-Kurve. Beachten Sie, dass in dem Fall, dass Sie keinen Wert von P haben, bei dem der Rückruf einige der Schwellenwerte überschreitet, der Präzisionswert 0 ist.

Betrachten Sie zum Beispiel die folgende Ausgabe einer Methode in der Klasse "Airplane":

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
----------------------

Außerdem wurden in zwei Bildern keine Begrenzungsrahmen erkannt, sodass wir FN = 2 haben. Die vorige Tabelle ist der nach Vertrauenswert geordnete Wert der Vorhersagen der Methode GT = 1 bedeutet TP und GT = 0 FP. Also ist TP = 5 (BB1, BB2, BB5, BB8 und BB9), FP = 5. Für den Fall von Rang = 3 sinkt die Genauigkeit, da BB1 bereits erkannt wurde. Selbst wenn das Objekt tatsächlich vorhanden ist, zählt es als 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
----------

Ausgehend von den vorherigen Ergebnissen: Wenn wir den Weg vor voc2010 verwendet haben, sind die interpolierten Präzisionswerte 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0, 0, 0, 0. Dann ist AP = 5,5 / 11 = 0,5 für Klasse von "Flugzeugen". Andernfalls lauten die interpolierten Präzisionswerte nach voc2010 1, 1, 1, 0,5, 0,5, 0,5, 0 für sieben eindeutige Rückrufe, die 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1 sind. Dann ist AP = (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 für die Klasse der "Flugzeuge".

Wiederholen Sie dies für jede Klasse und dann haben Sie die (mAP).

Weitere Informationen finden Sie unter den folgenden Links 1 , 2 . Lesen Sie auch das Papier: Die PASCAL Visual Object Classes Challenge: Eine Retrospektive, um eine ausführlichere Erklärung zu erhalten.


1
Bitte! Ja, Sie sollten über alle Bilder hinweg rechnen. Und GT ist 1, wenn IoU> 0,5. Letzte FN wird 3 für 3 nicht erkannte Objekte sein
feynman410

1
FN ist die Anzahl der Bilder, bei denen keine Vorhersage getroffen wurde, FP ist die Anzahl der Erfassungen mit IoU <= 0,5 oder mehr als einmal. Siehe diesen Pseudocode stats.stackexchange.com/a/263758/140597
feynman410

1
Sorry, dein Recht ist die Anzahl der Objekte, die nicht erkannt werden.
Feynman410

1
@ feynman410 Ich war verwirrt. Kannst du uns bitte sagen, wo du in der Tabelle Objekte platzierst, die nicht erkannt wurden, aber sein sollten? am Ende des Tisches? (weil es kein Ergebnis für sie gibt)
Martin Brišiak

1
"Präzision" und "Rückruf" werden also für jede Klasse separat berechnet - um AP pro Klasse zu berechnen. Recht? Werden sie also für jedes Bild separat berechnet und dann gemittelt, oder werden sie über die gesamten Erkennungen aller Bilder berechnet?
EtwasEtwas

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.