Multi-Object Tracking
Dieses Verzeichnis bietet Beispiele und Best Practices für den Aufbau und die Inferenz von Multi-Object-Tracking-Systemen. Unser Ziel ist es, Benutzern zu ermöglichen, ihre eigenen Datensätze einzubringen und mit Leichtigkeit ein hochpräzises Tracking-Modell zu trainieren. Obwohl viele Open-Source-Tracker verfügbar sind, haben wir den FairMOT Tracker in dieses Repository integriert. Der FairMOT-Algorithmus hat in den letzten MOT-Benchmarking-Herausforderungen eine wettbewerbsfähige Tracking-Leistung gezeigt und gleichzeitig respektable Inferenzgeschwindigkeiten erzielt.
Einrichtung
Die Tracking-Beispiele in diesem Ordner laufen aufgrund von Einschränkungen des FairMOT Repositories nur auf Linux-Compute-Zielen.
Die folgenden Bibliotheken müssen in der cv Conda-Umgebung installiert werden, bevor die bereitgestellten Notebooks ausgeführt werden können
activate cv
conda install -c conda-forge opencv yacs lap progress
pip install cython_bbox motmetrics
Zusätzlich muss die DCNv2-Bibliothek von FairMOT mit diesem Schritt kompiliert werden
cd utils_cv/tracking/references/fairmot/models/networks/DCNv2
sh make.sh
Warum FairMOT?
FairMOT ist ein Open-Source, One-Shot Online-Tracking-Algorithmus, der eine wettbewerbsfähige Leistung in den jüngsten MOT-Benchmarking-Herausforderungen bei schnellen Inferenzgeschwindigkeiten gezeigt hat.
Typische Tracking-Algorithmen adressieren die Detektions- und Feature-Extraktionsprozesse in getrennten aufeinanderfolgenden Schritten. Jüngste Forschung -(Voigtlaender et al, 2019), (Wang et al, 2019), (Zhang et al, 2020)- hat sich der Kombination von Detektions- und Feature-Embedding-Prozessen zugewandt, so dass sie in einem gemeinsamen Modell (einzelnes Netzwerk) gelernt werden, insbesondere wenn beide Schritte Deep-Learning-Modelle beinhalten. Dieses Framework wird als Single-Shot oder One-Shot bezeichnet und ist in jüngsten, leistungsstarken Modellen wie FairMOT (Zhang et al, 2020), JDE (Wang et al, 2019) und TrackRCNN (Voigtlaender et al, 2019) beliebt geworden. Solche Single-Shot-Modelle sind effizienter als typische Tracking-by-Detection-Modelle und haben schnellere Inferenzgeschwindigkeiten gezeigt, da die gemeinsame Berechnung der einzelnen Netzwerkrepräsentation für Detektion und Feature-Embedding genutzt wird. Auf dem MOT16 Challenge Datensatz erreichen FAIRMOT und JDE 25,8 Frames pro Sekunde (fps) bzw. 18,5 fps, während DeepSORT_2, ein Tracking-by-Detection-Tracker, 17,4 fps erreicht.
Wie in der folgenden Tabelle zu sehen ist, hat das FairMOT-Modell die Tracking-Leistung im Vergleich zu Standard-MOT-Trackern verbessert (siehe weiter unten für weitere Details zu Leistungskennzahlen). Das JDE-Modell, auf dem FairMOT aufbaut, weist eine wesentlich schlechtere Anzahl von ID-Wechseln auf (Zhang et al, 2020). Das JDE-Modell verwendet ein typisches Anker-basiertes Objektdetektor-Netzwerk für das Feature-Embedding mit einer heruntergeteilten Feature-Map. Dies führt zu einer Fehlausrichtung zwischen den Ankern und dem Objektzentrum und verursacht daher Re-Identifikationsprobleme. FairMOT löst diese Probleme, indem es das Objektzentrum anstelle der Anker schätzt, eine Feature-Map mit höherer Auflösung für die Objektdetektion und das Feature-Embedding verwendet und High-Level- und Low-Level-Features aggregiert, um Skalierungsvariationen bei Objekten unterschiedlicher Größe zu handhaben.
Technologie
Aufgrund seiner Anwendungen in autonomen Fahren, Verkehrsüberwachung usw. ist Multi-Object-Tracking (MOT) ein beliebtes und wachsendes Forschungsgebiet im Bereich Computer Vision. MOT baut auf Objektdetektionstechnologie auf, um Objekte in einer dynamischen Szene im Laufe der Zeit zu erkennen und zu verfolgen. Die korrekte Ableitung von Zielbahnen über aufeinanderfolgende Einzelbilder hinweg bleibt eine Herausforderung. Beispielsweise kann Verdeckung die Anzahl und das Erscheinungsbild von Objekten verändern, was zu Komplikationen für MOT-Algorithmen führt. Im Vergleich zu Objektdetektionsalgorithmen, die darauf abzielen, rechteckige Begrenzungsrahmen um Objekte auszugeben, weisen MOT-Algorithmen zusätzlich eine ID-Nummer zu jeder Box zu, um dieses spezifische Objekt über die Einzelbilder hinweg zu identifizieren.
Wie in der folgenden Abbildung (Ciaparrone, 2019) zu sehen ist, führt ein typischer Multi-Object-Tracking-Algorithmus einen Teil oder alle der folgenden Schritte aus
- Detektion: Ausgehend von den eingegebenen Rohbild-Frames (Schritt 1) identifiziert der Detektor Objekt(e) in jedem Bild-Frame als Begrenzungsrahmen (Schritt 2).
- Feature-Extraktion/Bewegungsvorhersage: Für jedes detektierte Objekt werden visuelle Erscheinungs- und Bewegungsfeatures extrahiert (Schritt 3). Gelegentlich wird auch ein Bewegungsvorhersage-Modul (z.B. Kalman-Filter) hinzugefügt, um die nächste Position jedes verfolgten Ziels vorherzusagen.
- Affinität: Die Feature- und Bewegungsvorhersagen werden verwendet, um Ähnlichkeits-/Distanzwerte zwischen Paaren von Detektionen und/oder Tracklets zu berechnen, oder die Wahrscheinlichkeiten, dass Detektionen zu einem bestimmten Ziel oder Tracklet gehören (Schritt 4).
- Zuordnung: Basierend auf diesen Bewertungen/Wahrscheinlichkeiten wird jedem detektierten Objekt eine spezifische numerische ID zugewiesen, während es über aufeinanderfolgende Einzelbilder verfolgt wird (Schritt 5).
Notebooks
Wir stellen mehrere Notebooks zur Verfügung, die zeigen, wie Multi-Object-Tracking-Algorithmen entworfen und evaluiert werden können
| Notebook-Name | Beschreibung |
|---|---|
| 01_training_introduction.ipynb | Notebook, das die grundlegenden Konzepte von Modelltraining, Inferenz und Evaluierung anhand typischer Tracking-Leistungskennzahlen erklärt. |
| 02_mot_challenge.ipynb | Notebook, das die Modellinferenz auf dem gängigen MOT Challenge-Datensatz ausführt. |
Häufig gestellte Fragen
Antworten auf häufig gestellte Fragen, wie "Wie funktioniert die Technologie?" oder "Welche Datenformate sind erforderlich?", finden Sie im FAQ in diesem Ordner. Allgemeine Fragen, wie "Wie viele Trainingsbeispiele benötige ich?" oder "Wie überwache ich die GPU-Auslastung während des Trainings?", finden Sie unter FAQ.md im Klassifizierungsordner.
Richtlinien für Beiträge
Die Richtlinien für Beiträge finden Sie im Stammordner.