Intersection over Union (IoU)
Die Schnittmenge über Vereinigungsmenge (IoU) bewertet, wie stark sich ein vorhergesagter Begrenzungsrahmen mit dem tatsächlichen überschneidet, auf einer Skala von 0 bis 1. Formel, Python-Code, Schwellenwerte und IoU-basierte Verluste.
Die Schnittmenge über Vereinigung (IoU) misst, wie stark sich zwei Bereiche überschneiden: die gemeinsame Fläche geteilt durch die Gesamtfläche, die sie zusammen abdecken. Der Wert reicht von 0 für Bereiche, die sich nicht berühren, bis 1 für identische Bereiche. In der Statistik ist dieselbe Größe als Jaccard-Index bekannt. Bei der Objekterkennung vergleicht IoU einen vorhergesagten Begrenzungsrahmen mit dem markierten tatsächlichen Rahmen. Anhand der IoU wird entschieden, ob eine Vorhersage als korrekt gilt, welche doppelten Vorhersagen entfernt werden und wie Rahmenvorhersagen trainiert werden.
So wird IoU berechnet#
IoU = Schnittfläche / Vereinigungsfläche. Die Vereinigungsfläche ist die Fläche von Rahmen A plus die Fläche von Rahmen B minus deren Schnittfläche, sodass der gemeinsame Bereich nur einmal gezählt wird. Bei zwei achsenparallelen Rahmen im Eckpunktformat ist die Schnittfläche selbst ein Rechteck, das von den inneren Kanten der beiden Rahmen begrenzt wird. Überschneiden sich die Rahmen nicht, wird dessen Breite oder Höhe auf null gesetzt.
# Boxes as [x1, y1, x2, y2] in pixels
label = [100, 100, 200, 200]
pred = [110, 110, 210, 210]
# Intersection rectangle, clamped to zero when the boxes do not overlap
w = max(0, min(label[2], pred[2]) - max(label[0], pred[0]))
h = max(0, min(label[3], pred[3]) - max(label[1], pred[1]))
intersection = w * h
# Union counts the overlap only once
area_label = (label[2] - label[0]) * (label[3] - label[1])
area_pred = (pred[2] - pred[0]) * (pred[3] - pred[1])
union = area_label + area_pred - intersection
print(f"IoU = {intersection} / {union} = {intersection / union:.3f}")Das Skript gibt IoU = 8100 / 11900 = 0.681 aus. Wird ein 100 Pixel großer Rahmen in jede Richtung um 10 Pixel verschoben, sinkt die Überlappung auf 90 × 90 Pixel und die Vereinigungsfläche steigt auf 11.900. Eine Verschiebung um 10 % kostet somit fast ein Drittel des Werts. Da beide Flächen gemeinsam skaliert werden, ist IoU maßstabsunabhängig: Dieselbe relative Abweichung ergibt bei einem 20 Pixel großen Vogel und einem 2.000 Pixel großen Lkw denselben Wert. Ein fester Pixelabweichung schadet daher kleinen Objekten am meisten. Eine seitliche Verschiebung um ein Pixel senkt IoU bei einem 20 Pixel großen Rahmen auf 0.905 und bei einem 200 Pixel großen Rahmen auf 0.990.
IoU-Schwellenwerte bei der Auswertung#
Ein Auswertungsschwellenwert macht aus IoU eine Ja-oder-Nein-Entscheidung. Eine Vorhersage ist ein richtig-positives Ergebnis, wenn ihre Klasse übereinstimmt und ihre IoU mit einem noch nicht zugeordneten tatsächlichen Rahmen den Schwellenwert erreicht. Andernfalls ist sie ein falsch-positives Ergebnis. Der PASCAL-VOC-Benchmark verwendete den Wert 0,5 – eine lockerere Grenze, als es zunächst klingt: Zwei gleich große Rahmen, die seitlich um ein Drittel ihrer Breite versetzt sind, haben eine IoU von genau 0,5. Der COCO-Benchmark mittelt die Ergebnisse über zehn Schwellenwerte von 0,50 bis 0,95. So belohnt die mittlere durchschnittliche Präzision (mAP) die genaue Lokalisierung.
IoU beim Training und in der Nachverarbeitung#
- Verlustfunktionen für Rahmenregression: Detektoren trainieren Rahmenkoordinaten mit 1 − IoU oder einer Variante davon, da ein Verlust auf Rohkoordinaten einen Fehler von 10 Pixeln bei kleinen und großen Rahmen gleich behandelt. Bei einer einfachen IoU gibt es keinen Gradienten, wenn sich die Rahmen nicht überschneiden. Daher ergänzt Generalized IoU (GIoU) eine Strafkomponente anhand des kleinsten Rahmens, der beide umschließt. Distance-IoU und Complete IoU (DIoU, CIoU) ergänzen Terme für den Abstand der Mittelpunkte und das Seitenverhältnis. YOLO26 trainiert seinen Rahmenvorhersagekopf mit einem CIoU-Verlust und verwendet CIoU auch, um während des Trainings festzulegen, welche Vorhersagen den einzelnen markierten Objekten zugeordnet werden.
- Nichtmaximumunterdrückung (NMS): Bei der Inferenz wird ein Rahmen als Duplikat behandelt und entfernt, wenn seine IoU mit einem höher bewerteten Rahmen derselben Klasse einen Schwellenwert überschreitet.
- Objektverfolgung: Tracker wie ByteTrack verwenden die IoU zwischen bestehenden Tracks und neuen Erkennungen als Zuordnungskosten von Bild zu Bild.
IoU für andere Formen#
Dasselbe Verhältnis gilt für alle Paare von Bereichen. Bei der Segmentierung wird die Masken-IoU anhand von Pixelmengen berechnet: Die Instanzsegmentierung verwendet sie, um vorhergesagte Masken den Labels zuzuordnen, und Benchmarks für die semantische Segmentierung geben ihren Mittelwert über die Klassen als mIoU an. Für gedrehte Rahmen sind ein Polygonschnitt oder eine Gaußsche Näherung wie ProbIoU erforderlich. Bei der 3D-Erkennung wird IoU zwischen Quadern berechnet – entweder im vollständigen 3D-Raum oder anhand der Überlappung ihrer Grundflächen in der Vogelperspektive.
IoU im Vergleich zu verwandten Metriken#
- Dice-Koeffizient: das Doppelte der Schnittfläche geteilt durch die Summe der beiden Flächen. Er ordnet Vorhersagen genauso wie IoU, da Dice = 2 × IoU / (1 + IoU). Er wird häufig bei der medizinischen Bildsegmentierung verwendet.
- Genauigkeit: der Anteil korrekter Klassenvorhersagen, der nichts darüber aussagt, wo sich ein Rahmen befindet.
- mAP: eine Zusammenfassung auf Erkennungsebene, die auf IoU-Schwellenwerten aufbaut und Lokalisierung, Präzision und Trefferquote über alle Klassen hinweg kombiniert.
Die Beziehung zum Dice-Koeffizienten ermöglicht auch eine Umrechnung der Schwellenwerte: Eine IoU von 0,5 entspricht einem Dice-Wert von 0,667 und eine IoU von 0,9 einem Dice-Wert von 0,947.










