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.