Ich bin ziemlich verwirrt darüber, wie ich die AP- oder mAP-Werte berechnen kann, da es anscheinend einige verschiedene Methoden gibt. Ich möchte speziell die AP / mAP-Werte für die Objekterkennung erhalten.
Alles was ich sicher weiß ist:
Rückruf = TP / (TP + FN), Präzision = TP / (TP + FP)
Zum Beispiel, wenn ich nur 1 Klasse zum Auswerten habe und 500 Testbilder sage. Jedes Testbild kann eine andere Anzahl von Vorhersagen haben (Begrenzungsrahmenvorschläge), aber jedes Bild hat nur einen Grundwahrheitsbegrenzungsrahmen.
Bild 1: [Klasse, Wahrscheinlichkeit, x1, y1, x2, y2], [Klasse, Wahrscheinlichkeit, x3, y3, x4, y4], [Klasse, Wahrscheinlichkeit, x5, y5, x6, y6], [Klasse, Wahrscheinlichkeit, x7, y7, x8, y8], ...
Bild 2: [Klasse, Wahrscheinlichkeit, x1, y1, x2, y2], [Klasse, Wahrscheinlichkeit, x3, y3, x4, y4], ...
. . . (und so weiter)
* Nur ein Beispiel, ich habe das erfunden
Ich weiß, dass wir, um TP zu erhalten, die IOUs jeder Vorhersage finden und diejenigen über einem ausgewählten Schwellenwert wie 0,5 zählen müssen (wenn wir mehrere Vorhersagen mit IOUs über dem Schwellenwert haben, zählen wir nur einmal und behandeln die anderen als FP?).
Hier verwirrt es mich:
Würde das TP + FP = Anzahl der Vorhersagen für jedes Bild sein?
Da alle Testbilder keine Negative haben, ist TP + FN = 500?
Wird es pro Bild oder pro Klasse berechnet?
Könnte mir jemand eine Schritt-für-Schritt-Anleitung geben, um den AP / mAP anhand meines Beispiels zu erhalten? Ich finde, der zweideutigste Teil ist, ob wir es pro Bild oder pro Klasse machen (dh 500 Bilder auf einmal).
Die meisten Leitfäden / Papiere, die ich gefunden habe, sind sehr auf das Abrufen von Informationen ausgerichtet. Würde mich über Hilfe dabei freuen.
* Hinweis: Ich teste es an einem benutzerdefinierten Datensatz. Ich weiß, dass PASCAL VOC einen Code dafür hat, aber ich möchte den Code selbst schreiben, angepasst an meine eigenen Daten.
quelle
Antworten:
Ich denke, die akzeptierte Antwort weist den falschen Weg zur Berechnung von mAP. Denn selbst für jede Klasse ist der AP das durchschnittliche Produkt. In meine Antwort werde ich weiterhin die Interpretation der IOU aufnehmen, damit die Anfänger keine Schwierigkeiten haben, sie zu verstehen.
Index des Objekts, des Vertrauens, der Grundwahrheit
Begrenzungsrahmen 1, 0,8, 1
Begrenzungsrahmen 1, 0,7, 1
Begrenzungsrahmen 2, 0,1, 0
Begrenzungsrahmen 3, 0,9, 1
Und dann müssen Sie sie nach dem Vertrauen von hoch nach niedrig einstufen. Anschließend müssen Sie nur noch die PR-Kurve wie gewohnt berechnen und 11 interpolierte Präzisionsergebnisse an diesen 11 Rückrufpunkten ermitteln, die [0, 0,1, ..., 1] entsprechen. (Die detailliert berechneten Methoden finden Sie hier ) Erwähnenswert Für mehrere Erkennungen eines einzelnen Begrenzungsrahmens, z. B. des Begrenzungsrahmens 1 in meinem Beispiel, werden wir ihn höchstens einmal als richtig und alle anderen als falsch betrachten. Dann durchlaufen Sie 20 Klassen und berechnen deren Durchschnitt. Dann bekommst du deinen mAP.
Außerdem drehen wir diese Methode vorerst ein wenig, um unseren mAP zu finden. Anstatt 10 Rückrufpunkte zu verwenden, verwenden wir die wahre Zahl K einer bestimmten Klasse und berechnen die interpolierte Präzision. dh [0,1 / K, 2 / K ...]
quelle
Auf diese Weise berechnen PASCOL-VOC 2012 und MS-COCO mAP, Pseudocode wie folgt:
Um AP zu erhalten, müssen Sie zuerst die PR-Kurve glätten und dann die Fläche unter der Kurve berechnen. Um mAP zu erhalten, wiederholen Sie die obigen Schritte für alle Klassen und mitteln Sie sie.
Referenz:
Python-Version der PASCOL VOC 2012-Evaluierungsmetrik: https://github.com/Cartucho/mAP
Original PASCOL VOC 2012 Toolkit (in MATLAB): https://github.com/Cartucho/mAP
Original MSCOCO: http://cocodataset.org/#detection-eval
quelle
AP = TP/(TP+FP)
ist falsch. StattdessenPrecision = TP/(TP+FP)
.Victor Lavrenkos Vorlesung "Evaluation 12: Mean Average Precision" enthält eine Folie, in der sehr deutlich erklärt wird, was Average Precision (AP) und Mean Average Precision (mAP) für den Fall des Abrufs von Dokumenten sind:
So wenden Sie die Folie auf die Objekterkennung an: relevantes Dokument = vorhergesagter Begrenzungsrahmen, dessen IoU gleich oder über einem bestimmten Schwellenwert liegt (normalerweise 0,5).
IoU = Schnittpunkt über Union, siehe Bild unten für eine visuelle Definition:
Beispiel für eine IoU-Berechnung an einem tatsächlichen Bild:
( Bildquelle )
Zu Ihrer Information: Mittlere durchschnittliche Präzision gegen mittleren wechselseitigen Rang
quelle
Obwohl @ User1915 die Antwort selbst gefunden hat, möchte ich etwas für Interessierte hinterlassen.
Hier ist meine Antwort auf die obigen Fragen:
Ja. ( Da die Anzahl der TP begrenzt ist, erhalten Sie umso weniger Genauigkeit, je mehr Vorhersagen Sie getroffen haben. )
Ja. ( Da es nur eine Grundwahrheitsbox pro Bild gibt )
Pro Klasse.
Siehe den Beitrag von @ User1915 oben.
quelle