该回购包含用于分割,对象检测和姿势估计模型的可插入最新的多对象跟踪器的集合。对于使用外观描述的方法,重型(夹紧)和轻巧的最先进的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]