Dieses Repo enthält eine Sammlungen von steckbaren hochmodernen Multi-Objekt-Trackern für Segmentierungs-, Objekterkennungs- und Pose-Schätzmodelle. Für die Methoden, die die Beschreibung des Aussehens verwenden, können sowohl schwere (ClipReid) als auch leichte REID-Modelle (LightMBN, OSNet und mehr) automatisch heruntergeladen werden. Wir geben Beispiele zur Verwendung dieses Pakets zusammen mit beliebten Objekterkennungsmodellen wie: Yolov8, Yolov9 und Yolov10
Tracker | Status | Hota ↑ | MOTA ↑ | IDF1 ↑ |
---|---|---|---|---|
BotSort | ✅ | 68.504 | 77.165 | 80.986 |
Strongsort | ✅ | 68.329 | 76.348 | 81.206 |
Bytetrack | ✅ | 66.536 | 76.909 | 77.855 |
OCSORT | ✅ | 65.187 | 74,819 | 75,957 |
AUPRASSOC | ✅ | 64.096 | 76,511 | 71.875 |
Deepocsort | ✅ | 62.913 | 74.483 | 73.459 |
Hybridsort |
Anmerkungen: Die Bewertung wurde in der zweiten Hälfte des MOT17 -Trainingssatzes durchgeführt, da der Validierungssatz nicht öffentlich zugänglich ist. Die vorgenerierten Erkennungen und Einbettungen wurden von hier aus bezogen. Jeder Tracker wurde mit den ursprünglichen Parametern in seinen offiziellen Repositorys konfiguriert.
Die heutigen Multi-Objekt-Tracking-Optionen hängen stark von den Berechnungsfunktionen der Unterlagenhardware ab. BoxMot bietet eine große Auswahl an Tracking -Methoden, die unterschiedliche Hardware -Einschränkungen entsprechen, von der CPU nur bis zu größeren GPUs. Morover bieten wir Skripte für ultra -schnelle Experimente, indem wir Erkennungen und Einbettungen speichern, die dann in jeden Tracking -Algorithmus geladen werden. Vermeiden Sie den Overhead, diese Daten wiederholt zu generieren.
Beginnen Sie mit Python> = 3.9 Umgebung.
Wenn Sie die Beispiele von Yolov8, Yolov9 oder Yolov10 ausführen möchten:
git clone https://github.com/mikel-brostrom/boxmot.git
cd boxmot
pip install poetry
poetry install --with yolo # installed boxmot + yolo dependencies
poetry shell # activates the newly created environment with the installed dependencies
Wenn Sie jedoch nur die Tracking -Module importieren möchten, können Sie einfach:
pip install boxmot
$ python tracking/track.py --yolo-model yolov10n # bboxes only
python tracking/track.py --yolo-model yolov9s # bboxes only
python tracking/track.py --yolo-model yolov8n # bboxes only
yolov8n-seg # bboxes + segmentation masks
yolov8n-pose # bboxes + pose estimation
$ python tracking/track.py --tracking-method deepocsort
strongsort
ocsort
bytetrack
botsort
imprassoc
Das Tracking kann in den meisten Videoformaten ausgeführt werden
$ python tracking/track.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
path/ * .jpg # glob
' https://youtu.be/Zgi9g1ksQHc ' # YouTube
' rtsp://example.com/media.mp4 ' # RTSP, RTMP, HTTP stream
Einige Tracking -Methoden kombinieren die Beschreibung und Bewegung des Erscheinungsbilds im Verfolgungsprozess. Für diejenigen, die das Erscheinungsbild verwenden, können Sie ein Reid -Modell basierend auf Ihren Anforderungen in diesem Reid -Modellzoo auswählen. Dieses Modell kann durch das Skript reid_export.py für Sie weiter optimiert werden
$ python tracking/track.py --source 0 --reid-model lmbn_n_cuhk03_d.pt # lightweight
osnet_x0_25_market1501.pt
mobilenetv2_x1_4_msmt17.engine
resnet50_msmt17.onnx
osnet_x1_0_msmt17.pt
clip_market1501.pt # heavy
clip_vehicleid.pt
...
Standardmäßig verfolgt der Tracker alle MS Coco -Klassen.
Wenn Sie eine Teilmenge der von Ihnen vorhersehenden Klassen verfolgen möchten, fügen Sie ihren entsprechenden Index nach dem Flag der Klassen hinzu.
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
Hier finden Sie eine Liste aller möglichen Objekte, die ein Yolov8 -Modell, das auf MS Coco trainiert wurde, erkennen kann. Beachten Sie, dass die Indizierung für die Klassen in diesem Repo bei Null beginnt
Bewerten Sie eine Kombination aus Detektor, Tracking -Methode und RED -Modell im Standard -MOT -Datensatz oder Sie haben benutzerdefinierte nach
$ python3 tracking/val.py --benchmark MOT17-mini --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method deepocsort --verbose --source ./assets/MOT17-mini/train
$ python3 tracking/val.py --benchmark MOT17 --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method ocsort --verbose --source ./tracking/val_utils/MOT17/train
Erkennungen und Einbettungen werden für das ausgewählte YOLO- bzw. Reidmodell gespeichert, die dann in jeden Tracking -Algorithmus geladen werden. Vermeiden Sie den Overhead, diese Daten wiederholt zu generieren.
Wir verwenden einen schnellen und elitären multiobjektiven genetischen Algorithmus für die Tuning von Tracker -Hyperparametern. Standardmäßig sind die Ziele: Hota, Mota, IDF1. Führen Sie es vorbei
# saves dets and embs under ./runs/dets_n_embs separately for each selected yolo and reid model
$ python tracking/generate_dets_n_embs.py --source ./assets/MOT17-mini/train --yolo-model yolov8n.pt yolov8s.pt --reid-model weights/osnet_x0_25_msmt17.pt
# evolve parameters for specified tracking method using the selected detections and embeddings generated in the previous step
$ python tracking/evolve.py --benchmark MOT17-mini --dets yolov8n --embs osnet_x0_25_msmt17 --n-trials 9 --tracking-method botsort
Der Satz von Hyperparametern, die zum besten Hota -Ergebnis führen, werden in die Konfigurationsdatei des Trackers geschrieben.
Wir unterstützen den Export von REID Model nach ONNX, OpenVino, Torchscript und Tensorrt
# export to ONNX
$ python3 boxmot/appearance/reid_export.py --include onnx --device cpu
# export to OpenVINO
$ python3 boxmot/appearance/reid_export.py --include openvino --device cpu
# export to TensorRT with dynamic input
$ python3 boxmot/appearance/reid_export.py --include engine --device 0 --dynamic
Der Satz von Hyperparametern, die zum besten Hota -Ergebnis führen, werden in die Konfigurationsdatei des Trackers geschrieben.
Beispiel Beschreibung | Notizbuch |
---|---|
Torchvision Begrenzungsbox -Tracking mit Boxmot | |
Torchvision Pose Tracking mit Boxmot | |
Torchvision -Segmentierungsverfolgung mit Boxmot |
Für YOLO -Tracking -Fehler und Feature -Anfragen besuchen Sie bitte GitHub -Probleme. Für geschäftliche Anfragen oder professionelle Supportanfragen senden Sie bitte eine E-Mail an: [email protected]