Nicht-Maximum-UnterdrückungNMS)
Erfahren Sie, wie Non-Maximum Suppression (NMS) doppelte Begrenzungsrahmen bei der Objekterkennung eliminiert. Entdecken Sie, wie Ultralytics native NMS bietet.
Die Nicht-Maximalunterdrückung (NMS) ist eine Nachbearbeitungstechnik, die bei der
Objekterkennung eingesetzt wird, um die Rohvorhersagen
eines Modells zu verfeinern. Wenn ein Objekterkennungsmodell ein Bild analysiert, generiert es häufig mehrere überlappende
Begrenzungsrahmen für ein einzelnes Objekt, jeweils mit einem
zugehörigen Konfidenzwert. Diese redundanten Vorhersagen
treten auf, weil das Modell möglicherweise detect in leicht unterschiedlichen Maßstäben oder Positionen detect . NMS diese Ausgabe,
indem es nur den genauesten Begrenzungsrahmen für jedes Objekt beibehält und die anderen verwirft, wodurch sichergestellt wird, dass die endgültige
Ausgabe sauber, präzise und frei von Duplikaten ist.
Wie Non-Maximum Suppression funktioniert
Der NMS arbeitet mit einer Liste von in Frage kommenden Begrenzungsrahmen und den entsprechenden Konfidenzwerten. Das Ziel
besteht darin, den besten Rahmen für ein Objekt auszuwählen und alle anderen Rahmen, die sich erheblich mit diesem überschneiden, zu unterdrücken (zu entfernen), da
es sich dabei wahrscheinlich um doppelte Erkennungen desselben Objekts handelt. Der Prozess umfasst in der Regel die folgenden Schritte:
-
Filtern: Alle Begrenzungsrahmen mit Konfidenzwerten unter einem bestimmten Schwellenwert (z. B.
0,25) werden entfernt, um schwache Vorhersagen sofort zu eliminieren.
- Sortieren: Sortieren Sie die verbleibenden Kästchen in absteigender Reihenfolge nach ihren Konfidenzwerten.
- Auswahl: Wählen Sie das Feld mit dem höchsten Konfidenzwert als gültige Erkennung aus.
-
Vergleich: Vergleichen Sie dieses ausgewählte Feld mit allen anderen verbleibenden Feldern mithilfe von
Intersection over Union (IoU), einer
Metrik, die die Überschneidung zwischen zwei Feldern misst.
-
Unterdrückung: Wenn die IoU dem ausgewählten Kasten und einem anderen Kasten einen vordefinierten Schwellenwert überschreitet
(z. B. 0,45), wird der Kasten mit der niedrigeren Punktzahl als Duplikat betrachtet und entfernt.
-
Iteration: Wiederholen Sie den Vorgang mit dem Feld mit der nächsthöchsten Punktzahl, das noch nicht unterdrückt oder
ausgewählt wurde, bis alle Felder verarbeitet sind.
Anwendungsfälle in der Praxis
NMS unverzichtbar in Szenarien, in denen Präzision von größter Bedeutung ist und doppelte Erkennungen nachgelagerte Systeme verwirren können.
-
Autonomes Fahren: In selbstfahrenden Autosystemen detect Kameras detect , andere Fahrzeuge und
Verkehrszeichen. Ein Modell könnte drei leicht unterschiedliche Kästchen für einen einzelnen Fußgänger vorhersagen. NMS , dass das
Planungssystem des Fahrzeugs nur eine Koordinate für diesen Fußgänger erhält, wodurch unregelmäßiges Bremsen oder Fehler bei der Wegplanung
verhindert werden, die durch „Phantom”-Hindernisse verursacht werden.
-
Bestandsverwaltung im Einzelhandel: Bei der Verwendung von
Computer Vision zur Zählung von Produkten in einem Regal
liegen die Artikel oft dicht beieinander. Ohne NMS könnte eine einzelne Getränkedose aufgrund sich überschneidender
Vorhersagen doppelt gezählt werden, was zu ungenauen Bestandsangaben führen würde. NMS diese Erkennungen, um sicherzustellen, dass die Bestandszählung mit der
Realität übereinstimmt.
NMS mit PyTorch
Obwohl viele moderne Frameworks NMS verarbeiten, hilft das Verständnis der Implementierung bei der Optimierung der Parameter. Das
folgende Beispiel zeigt, wie NMS der
PyTorch angewendet wird:
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.
NMS . End-to-End-Erkennung
Traditionell NMS ein obligatorischer „Aufräumschritt”, der außerhalb des Hauptneuronalen Netzwerks stattfand und die
Inferenzlatenz NMS . Das Gebiet entwickelt sich jedoch
in Richtung End-to-End-Architekturen.
-
NMS: Ein heuristischer Prozess, der eine manuelle Anpassung des IoU erfordert. Ist der
Schwellenwert zu niedrig, können gültige Objekte, die nahe beieinander liegen, übersehen werden (geringe
Erinnerungsrate). Ist er zu hoch, bleiben Duplikate erhalten (geringe
Genauigkeit).
-
End-to-End-Modelle: Modelle der nächsten Generation wie
YOLO26 sind von Grund auf als End-to-End-Modelle konzipiert. Sie lernen
während des Trainings, genau eine Box pro Objekt vorherzusagen, wodurch sie den NMS effektiv verinnerlichen. Dadurch entfällt
die Notwendigkeit einer externen Nachbearbeitung, was zu schnelleren Inferenzgeschwindigkeiten und einfacheren Bereitstellungspipelines auf der
Ultralytics führt.
Verwandte Konzepte
-
NMS: Eine
Variante, bei der überlappende Boxen nicht vollständig entfernt werden, sondern ihre Konfidenzwerte reduziert werden. Dadurch können
sich teilweise überlappende Objekte (wie Menschen in einer Menschenmenge) weiterhin erkannt werden, wenn ihre Werte nach dem
Verfall hoch genug bleiben.
-
Ankerboxen: Vordefinierte Boxformen,
die von vielen Detektoren zur Schätzung der Objektgröße verwendet werden. NMS auf die endgültigen Vorhersagen angewendet, die aus diesen Ankern verfeinert wurden.
-
Intersection over Union (IoU):
Die von NMS verwendete mathematische Formel NMS Bestimmung des Überlappungsgrades zweier Boxen, die als Entscheidungsschwelle für die
Unterdrückung dient.