Mean Average Precision (mAP)
Die mittlere Average Precision (mAP) bewertet Detektoren, indem die Precision über Recall, Klassen und IoU-Schwellenwerte gemittelt wird. Erfahre, wie mAP50 und mAP50-95 berechnet werden.
Die mittlere durchschnittliche Präzision (mAP) ist die gängige Evaluierungsmetrik für die Objekterkennung. Dasselbe Verfahren bewertet auch Instanzsegmentierung, Posenschätzung und orientierte Objekterkennung. Es belohnt ein Modell dafür, jedes Objekt zu finden, falsche Erkennungen zu vermeiden und jeden Begrenzungsrahmen eng um das Objekt zu legen. Alle drei Aspekte werden in einer Zahl zwischen 0 und 1 zusammengefasst, die oft als Prozentsatz angegeben wird. Die durchschnittliche Präzision (AP) ist die Fläche unter der Präzisions-Sensitivitäts-Kurve einer Klasse. mAP ist der Mittelwert der AP über alle Klassen. Die am häufigsten angegebene Variante, mAP50-95, mittelt zusätzlich über zehn Schwellenwerte für Schnittmenge durch Vereinigungsmenge (IoU).
Die Grundbausteine#
- IoU: die Überlappung zwischen einem vorhergesagten und einem gekennzeichneten Begrenzungsrahmen, zwischen 0 und 1. Eine Vorhersage zählt nur dann als richtig positiv, wenn ihre IoU mit einer noch nicht zugeordneten Kennzeichnung derselben Klasse den Schwellenwert erreicht, zum Beispiel 0.5.
- Präzision: der Anteil der richtigen Vorhersagen, TP / (TP + FP).
- Sensitivität: der Anteil der gekennzeichneten Objekte, die das Modell findet, TP / (TP + FN).
- Konfidenz: der Wert, nach dem erkannte Objekte sortiert werden. Jeder Konfidenzschwellenwert ergibt ein Präzisions-Sensitivitäts-Paar. Alle Schwellenwerte zusammen zeichnen die Präzisions-Sensitivitäts-Kurve nach.
So wird mAP berechnet#
Bei der Auswertung werden alle Erkennungen einer Klasse im gesamten Datensatz zusammengefasst und nach Konfidenz sortiert. Der Reihe nach beansprucht jede Erkennung entweder die am stärksten überlappende, noch nicht zugeordnete Kennzeichnung ihrer Klasse und zählt als richtig positiv oder zählt als falsch positiv. Jede Kennzeichnung kann nur einmal beansprucht werden. Ein zweiter Begrenzungsrahmen um ein bereits gefundenes Objekt verschlechtert daher die Präzision. Nach jedem Schritt werden Präzision und Sensitivität neu berechnet. So entsteht die Präzisions-Sensitivitäts-Kurve von der sichersten bis zur unsichersten Erkennung.
AP ist die Fläche unter dieser Kurve. Vor der Integration wird die Kurve durch ihre Hüllkurve ersetzt: den höchsten Präzisionswert, der bei jedem Sensitivitätswert oder darüber erreicht wird. Dadurch wirken sich kleine Ausschläge nicht auf den Wert aus. Bei der COCO-Auswertung wird die Hüllkurve an 101 Sensitivitätswerten von 0 bis 1 abgetastet. Beim ursprünglichen PASCAL-VOC-Benchmark waren es 11. Nicht erreichte Sensitivitätswerte tragen eine Präzision von null bei, sodass jedes übersehene Objekt die AP senkt.
import numpy as np
# One class: 8 detections sorted by confidence (1 = matched a label, 0 = false positive)
tp = np.array([1, 1, 0, 1, 0, 1, 0, 0])
num_labels = 5 # ground-truth objects of this class in the dataset
# Precision and recall after each detection in the ranked list
tp_cum = np.cumsum(tp)
precision = tp_cum / np.arange(1, len(tp) + 1)
recall = tp_cum / num_labels
# Precision envelope: best precision at this recall or any higher recall
envelope = np.maximum.accumulate(precision[::-1])[::-1]
# COCO-style AP: average the envelope at 101 recall points (0 beyond the highest recall reached)
points = np.linspace(0, 1, 101)
idx = np.searchsorted(recall, points, side="left")
ap = np.mean([envelope[i] if i < len(envelope) else 0.0 for i in idx])
print(f"Max recall: {recall[-1]:.1f}, AP: {ap:.3f}")Das Skript gibt Max recall: 0.8, AP: 0.686 aus. Eines der fünf gekennzeichneten Objekte wird nie erkannt. Daher trägt das letzte Fünftel der Sensitivitätsachse nichts zur Fläche bei, und die AP bleibt bei 0.686, obwohl die beiden sichersten Erkennungen beide richtig sind.
mAP im Vergleich zu verwandten Metriken#
- Genauigkeit teilt die Anzahl richtiger Vorhersagen durch die Gesamtzahl aller Vorhersagen. Dafür müssen auch richtig negative Ergebnisse gezählt werden. Bei einem Detektor wäre jedes leere Hintergrundfeld ein richtig negatives Ergebnis. Daher hat die Genauigkeit bei der Erkennung keine aussagekräftige Bedeutung.
- F1-Wert kombiniert Präzision und Sensitivität bei einem Konfidenzschwellenwert und beschreibt einen einzelnen Betriebspunkt, etwa den Schwellenwert, bei dem ein bereitgestelltes Modell ausgeführt wird.
- Konfusionsmatrix zählt, welche Klassen ein Detektor bei einem Schwellenwert verwechselt. Diese Einzelheiten bleiben bei einem einzelnen mAP-Wert verborgen.
mAP50, mAP75 und mAP50-95#
Da mAP ein einfacher Mittelwert über die Klassen ist, zählt eine seltene Klasse genauso viel wie eine häufige. Der IoU-Schwellenwert legt fest, wie genau eine Box sitzen muss, um als Treffer zu gelten:
- mAP50: Eine Erkennung gilt bei einem IoU-Wert von 0,5 als korrekt – die Regel aus PASCAL VOC.
- mAP75: Der Schwellenwert steigt auf 0,75 – ein strenger Test der Lokalisierungsgenauigkeit.
- mAP50-95: mAP, gemittelt über zehn Schwellenwerte von 0,50 bis 0,95 in Schritten von 0,05. COCO bezeichnet diese Zahl schlicht als „AP“, unterscheidet nicht zwischen AP und mAP und verwendet sie als primäre Metrik des Wettbewerbs.
Das Training von Ultralytics YOLO26 behält best.pt aus der Epoche mit dem höchsten Validierungswert für mAP50-95 bei, und die Validierung meldet bei jedem Lauf alle drei Varianten.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validate on the small COCO8 dataset to compute mAP
metrics = model.val(data="coco8.yaml")
# The same detections scored at three IoU thresholds
print(f"mAP50: {metrics.box.map50:.3f}")
print(f"mAP75: {metrics.box.map75:.3f}")
print(f"mAP50-95: {metrics.box.map:.3f}")Je niedriger der IoU-Schwellenwert, desto mehr Erkennungen gelten als korrekt. Daher ist mAP50 am höchsten und mAP50-95 niedriger. COCO unterteilt AP außerdem nach Objektgröße: kleine Objekte bedecken eine Fläche von weniger als 32 × 32 Pixeln, mittelgroße Objekte bis zu 96 × 96 Pixel und große Objekte mehr als das.










