該回購包含用於分割,對象檢測和姿勢估計模型的可插入最新的多對象跟踪器的集合。對於使用外觀描述的方法,重型(夾緊)和輕巧的最先進的REID模型(LightMBN,OSNET等)都可以自動下載。我們提供了有關如何使用此軟件包以及流行對象檢測模型的示例
跟踪器 | 地位 | HOTA↑ | mota↑ | IDF1↑ |
---|---|---|---|---|
博托斯特 | ✅ | 68.504 | 77.165 | 80.986 |
斯特朗 | ✅ | 68.329 | 76.348 | 81.206 |
位元組 | ✅ | 66.536 | 76.909 | 77.855 |
Ocsort | ✅ | 65.187 | 74.819 | 75.957 |
infrassoc | ✅ | 64.096 | 76.511 | 71.875 |
Deepocsort | ✅ | 62.913 | 74.483 | 73.459 |
雜種 |
注意:評估是在MOT17培訓集的下半年進行的,因為驗證集無法公開訪問。預先生成的檢測和所使用的嵌入是從這裡採購的。每個跟踪器都配置為其官方存儲庫中提供的原始參數。
當今的多目標跟踪選項在很大程度上取決於底層硬件的計算功能。 BoxMot提供了各種符合不同硬件限制的跟踪方法,從CPU一直到較大的GPU。 Morover,我們通過保存檢測和嵌入來提供用於超快速實驗的腳本,然後將其加載到任何跟踪算法中。避免重複生成此數據的開銷。
從python> = 3.9環境開始。
如果您想運行yolov8,yolov9或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
但是,如果您只想導入跟踪模塊,則可以簡單地:
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
可以在大多數視頻格式上進行跟踪
$ 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
一些跟踪方法將外觀描述和運動結合在跟踪過程中。對於使用外觀的人,您可以根據您的REID模型動物園的需求選擇REID模型。這些模型可以通過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
...
默認情況下,跟踪器跟踪所有MS可可類。
如果您想跟踪模型預測的類的子集,請在類標誌之後添加其相應的索引,
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
這是在MS Coco上訓練的Yolov8模型可以檢測到的所有可能對象的列表。請注意,此存儲庫中類的索引從零開始
評估標準MOT數據集上檢測器,跟踪方法和REID模型的組合,或者您通過
$ 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
分別為選定的Yolo和Reid模型存儲檢測和嵌入,然後將其加載到任何跟踪算法中。避免重複生成此數據的開銷。
我們使用快速而精英的多目標遺傳算法進行跟踪器超參數調整。默認情況下,目標為:HOTA,MOTA,IDF1。運行
# 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
導致最佳HOTA結果的一組超參數將寫入跟踪器的配置文件。
我們支持REID模型導出到ONNX,OpenVino,Torchscript和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
導致最佳HOTA結果的一組超參數將寫入跟踪器的配置文件。
示例描述 | 筆記本 |
---|---|
用BoxMot進行火炬界邊界框跟踪 | |
用Boxmot進行火炬姿勢跟踪 | |
用BoxMot進行火炬分割跟踪 |
有關Yolo跟踪錯誤和功能請求,請訪問GitHub問題。有關業務查詢或專業支持請求,請發送電子郵件至:[email protected]