Object Tracking
Beim Object Tracking werden Erkennungen über Videoframes hinweg verknüpft und jedem Objekt trotz Bewegung und Verdeckung dauerhaft dieselbe ID zugeordnet. Erfahre, wie Tracker funktionieren; dazu gibt es Code.
Objektverfolgung ist eine Aufgabe der Bildverarbeitung, bei der Objekte in aufeinanderfolgenden Videobildern lokalisiert und diese Positionen zu Bewegungsbahnen verknüpft werden. Jedes Objekt erhält dabei eine dauerhafte ID. Ein Auto, das als ID 7 ins Bild kommt, behält die ID 7, während es fährt, abbiegt und kurz hinter einem Bus verschwindet. So kann ein System es einmal zählen, seine Geschwindigkeit messen und abschätzen, wohin es fährt. Die Einzelobjektverfolgung verfolgt ein im ersten Bild ausgewähltes Ziel. Die Mehrfachobjektverfolgung (MOT), die in der Praxis am häufigsten verwendet wird, verfolgt gleichzeitig alle Objekte der relevanten Klassen.
So funktioniert Objektverfolgung#
Die meisten Mehrfachobjekt-Tracker verwenden die Verfolgung auf Grundlage von Erkennungen: Ein Modell zur Objekterkennung findet Objekte in jedem Bild, und ein Tracker verknüpft diese Erkennungen über die Zeit. Zu den Werkzeugen des Trackers gehören ein Bewegungsmodell, meist ein Kalman-Filter, die Überlappung von Begrenzungsrahmen, gemessen mit Intersection over Union (IoU), optionale Erscheinungsbild-Einbettungen aus einem Modell zur Objektwiedererkennung (Re-ID) und ein linearer Zuordnungsalgorithmus wie der ungarische Algorithmus. In jedem Bild führt der Tracker vier Schritte aus:
- Vorhersage: Unter der Annahme einer konstanten Geschwindigkeit sagt der Kalman-Filter voraus, wo der Begrenzungsrahmen jeder bestehenden Spur im neuen Bild erscheinen wird.
- Bewertung: Der Tracker erstellt anhand von IoU, Bewegung und – bei einigen Trackern – der Ähnlichkeit des Erscheinungsbilds eine Kostenmatrix zwischen vorhergesagten Spuren und neuen Erkennungen.
- Zuordnung: Der Algorithmus wählt die Eins-zu-eins-Zuordnungen mit den niedrigsten Kosten aus.
- Spuren verwalten: Zugeordnete Spuren aktualisieren ihren Zustand, nicht zugeordnete Erkennungen mit hoher Sicherheit starten neue Spuren, und nicht zugeordnete Spuren bleiben für eine bestimmte Anzahl von Bildern als „verloren“ erhalten, damit sie nach einer Verdeckung wieder aufgenommen werden können.
Der Schritt zur Verwaltung des Lebenszyklus sorgt dafür, dass IDs stabil bleiben, wenn Erkennungen für einige Bilder ausfallen:
Das Grundkonzept geht auf SORT aus dem Jahr 2016 zurück, das nur einen Kalman-Filter, IoU-Kosten und den ungarischen Algorithmus verwendete. DeepSORT ergänzte Merkmale des Erscheinungsbilds, um Identitäten nach einer Verdeckung wiederzuerkennen. ByteTrack verbesserte den Recall, indem es in einem zweiten Durchlauf auch Erkennungen mit geringer Konfidenz zuordnete, bei denen es sich häufig um teilweise verdeckte Objekte handelt. Spätere Tracker ergänzten eine Kompensation von Kamerabewegungen für bewegte Kameras und ausgefeiltere Zuordnungsregeln für Menschenmengen.
Verfolgung und Erkennung#
Ein Detektor ist zustandslos: Er verarbeitet jedes Bild unabhängig. Das Auto in Bild 1 und das Auto in Bild 2 sind daher nicht miteinander verknüpfte Erkennungen. Die Verfolgung ergänzt einen Zustand, der Identitäten von Bild zu Bild weiterführt. Darauf beruhen Zählungen, Verweildauer und Geschwindigkeitsschätzungen. Sie unterscheidet sich außerdem von der Punktverfolgung und dem optischen Fluss, bei denen einzelne Pixel oder Oberflächenpunkte verfolgt werden, ohne sie zu beschrifteten Objekten zusammenzufassen.
Der Track-Modus von Ultralytics YOLO ergänzt jede YOLO26-Erkennung, Segmentierung, Posenschätzung oder jedes Modell mit orientierten Boxen um diesen Zustand. Er bietet sechs integrierte Tracker, darunter ByteTrack, BoT-SORT und den Standard-Tracker TrackTrack:
from ultralytics import YOLO
# Load a YOLO26 detector; track() pairs it with a tracker that assigns persistent IDs
model = YOLO("yolo26n.pt")
detections, track_ids = 0, set()
for result in model.track(
"https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov", stream=True
):
detections += len(result.boxes)
if result.boxes.is_track:
track_ids.update(result.boxes.id.int().tolist())
print(f"Detections summed over all frames: {detections}")
print(f"Unique tracked objects: {len(track_ids)}")Die Anzahl eindeutiger IDs ist kleiner als die Summe der Erkennungen, weil jede ID für ein Objekt in allen Bildern steht, in denen es erscheint.
Anwendungen in der Praxis#
- Verkehrsüberwachung und Geschwindigkeitsschätzung: Die Verfolgung jedes Fahrzeugs über mehrere Bilder ermöglicht Zählungen, Analysen des Verkehrsflusses auf Fahrspurebene und Geschwindigkeitsschätzungen anhand der Strecke, die eine Spur pro Sekunde zurücklegt.
- Einzelhandelsanalysen: Ladenkameras verfolgen Kundinnen und Kunden, um Besucherzahlen, Warteschlangenlänge und Verweildauer vor Auslagen zu messen, ohne dieselbe Person doppelt zu zählen.
- Sportanalyse: Rundfunkanstalten und Trainer verfolgen Spielerinnen und Spieler sowie den Ball, um zurückgelegte Strecken, Geschwindigkeit und Mannschaftsformationen zu berechnen.
- Autonome Fahrzeuge und Robotik: Wahrnehmungssysteme verfolgen Fußgängerinnen und Fußgänger sowie Fahrzeuge, um deren Geschwindigkeiten zu schätzen und vorherzusagen, wo sie sich in der nächsten Sekunde befinden werden.
Qualität der Verfolgung messen#
Tracker werden anhand von Benchmarks wie MOT17, MOT20 für dichte Menschenmengen und DanceTrack für ähnlich aussehende und unvorhersehbar bewegende Personen verglichen. MOTA fasst verpasste Erkennungen, falsch positive Erkennungen und Identitätswechsel zu einem Wert zusammen, der stark von der Erkennungsqualität beeinflusst wird. IDF1 misst, wie konsequent jedes echte Objekt dieselbe ID behält. HOTA gleicht beide Aspekte aus, indem der geometrische Mittelwert aus Erkennungsgenauigkeit und Zuordnungsgenauigkeit gebildet wird.










