Repo ini berisi koleksi pelacak multi-objek yang canggih untuk segmentasi, deteksi objek dan model estimasi pose. Untuk metode menggunakan deskripsi penampilan, baik berat (clipreid) dan model Reid canggih yang ringan (Lightmbn, Osnet dan lainnya) tersedia untuk diunduh otomatis. Kami memberikan contoh tentang cara menggunakan paket ini bersama dengan model deteksi objek yang populer seperti: YOLOV8, YOLOV9 dan YOLOV10
Pelacak | 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 |
Imprassoc | ✅ | 64.096 | 76.511 | 71.875 |
Deepocsort | ✅ | 62.913 | 74.483 | 73.459 |
hybridsort |
Catatan: Evaluasi dilakukan pada paruh kedua set pelatihan MOT17, karena set validasi tidak dapat diakses secara publik. Deteksi dan embeddings yang telah dihasilkan sebelumnya digunakan, bersumber dari sini. Setiap pelacak dikonfigurasi dengan parameter asli yang disediakan dalam repositori resmi mereka.
Opsi pelacakan multi-objek saat ini sangat tergantung pada kemampuan perhitungan perangkat keras yang underlaying. BoxMot menyediakan berbagai macam metode pelacakan yang memenuhi keterbatasan perangkat keras yang berbeda, sepanjang jalan dari CPU hanya hingga GPU yang lebih besar. Morover, kami menyediakan skrip untuk eksperimen ultra cepat dengan menyimpan deteksi dan embeddings, yang kemudian dimuat ke dalam algoritma pelacakan apa pun. Menghindari overhead berulang kali menghasilkan data ini.
Mulailah dengan Python> = 3.9 Lingkungan.
Jika Anda ingin menjalankan contoh YOLOV8, YOLOV9 atau YOLOV10:
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
Tetapi jika Anda hanya ingin mengimpor modul pelacakan, Anda dapat dengan mudah:
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
Pelacakan dapat dijalankan pada sebagian besar format video
$ 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
Beberapa metode pelacakan menggabungkan deskripsi penampilan dan gerakan dalam proses pelacakan. Bagi mereka yang menggunakan penampilan, Anda dapat memilih model Reid berdasarkan kebutuhan Anda dari Zoo Model Reid ini. Model ini dapat dioptimalkan lebih lanjut untuk kebutuhan Anda dengan skrip reid_export.py
$ 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
...
Secara default pelacak melacak semua kelas MS Coco.
Jika Anda ingin melacak subset kelas yang Anda prediksi, tambahkan indeks yang sesuai setelah bendera kelas,
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
Berikut adalah daftar semua objek yang mungkin yang dapat dideteksi oleh model YOLOV8 pada MS Coco. Perhatikan bahwa pengindeksan untuk kelas dalam repo ini dimulai dari nol
Evaluasi kombinasi detektor, metode pelacakan dan model Reid pada dataset MOT standar atau Anda kustom
$ 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
Deteksi dan embeddings disimpan untuk masing -masing model YOLO dan Reid yang dipilih, yang kemudian dimuat ke dalam algoritma pelacakan apa pun. Menghindari overhead berulang kali menghasilkan data ini.
Kami menggunakan algoritma genetika multiobjective yang cepat dan elitis untuk penyetelan hiperparameter pelacak. Secara default, tujuannya adalah: HOTA, MOTA, IDF1. Jalankan dengan
# 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
Set hyperparameters yang mengarah ke hasil heta terbaik ditulis ke file konfigurasi pelacak.
Kami mendukung Ekspor Model Reid ke Onnx, OpenVino, Torchscript dan 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
Set hyperparameters yang mengarah ke hasil heta terbaik ditulis ke file konfigurasi pelacak.
Deskripsi contoh | Buku catatan |
---|---|
Pelacakan kotak pembatas torchvision dengan boxmot | |
Pelacakan pose torchvision dengan boxmot | |
Pelacakan Segmentasi TorchVision dengan BoxMot |
Untuk Bug Pelacakan Yolo dan Permintaan Fitur, silakan kunjungi masalah GitHub. Untuk pertanyaan bisnis atau permintaan dukungan profesional, silakan kirim email ke: [email protected]