拓冰建站拓冰建站
首页 / 资讯中心 / 正文

BoxMOT 多目标追踪快速入门:从安装到跑通你的第一个视频

BoxMOT 多目标追踪快速入门从安装到跑通你的第一个视频【免费下载链接】boxmotBoxMOT: Pluggable Python and C SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot刚接触多目标追踪你不需要先啃论文。这篇 BoxMOT 教程带你完成四件事装好包、命令行跑通第一段追踪、把追踪器接进自己的 Python 代码再根据基准数据挑一个合适的追踪算法。全部示例都基于仓库真实存在的命令与文件路径。1. 先把 BoxMOT 的定位说清楚做追踪的人最熟悉的老问题是检测模型每一帧只告诉你这里有个人却不保证这一帧的 1 号目标下一帧还是 1 号。多目标追踪MOTMulti-Object Tracking要解决的就是这个身份保持问题——把逐帧检测结果串成带稳定 ID 的轨迹。BoxMOT 的做法是把追踪从检测模型里拆出来它不做检测只接收任何能输出边界框的模型的预测然后在其上完成关联、ID 分配与轨迹维护。五个能力值得你留意追踪器可插拔bytetrack、ocsort、botsort、strongsort、deepocsort、hybridsort、boosttrack 等实现统一放在 boxmot/trackers/接口一致换算法等于换一个参数不挑上游模型任何输出框的分割、检测、姿态模型都能喂给它包括 Torchvision、YOLOX、RF-DETR 等自带基准管道MOT17、MOT20、DanceTrack 等数据集的配置文件就在 boxmot/configs/datasets/检测、追踪器、ReID 的组合可以量化对比纯运动 / 运动外观两档轻量档只靠运动模型适合 CPU 实时场景加上外观嵌入ReID外观再识别如 LightMBN、OSNet后 ID 一致性更高代价是计算量上升检测与嵌入一次生成、多次复用跑一次检测并缓存之后换任意追踪器评估都不用重跑感知部分。2. 安装与验证环境要求 Python 3.10–3.13仓库pyproject.toml声明3.10,3.14。一条命令装好pip install boxmot验证方法boxmot --help能列出track、eval、tune、export等子命令就说明安装成功。3. 用 track 子命令跑通第一次追踪boxmot track是最常用的入口。一次调用只需想清楚五个维度下面每个维度给你 1–3 条代表命令。3.1 指定追踪源 --source--source接受摄像头编号、图像、视频或目录路径支持通配符boxmot track --source 0 # 本机摄像头编号 0 boxmot track --source vid.mp4 # 视频文件 boxmot track --source ./assets/MOT17-mini/train # 目录作为输入3.2 选择检测模型 --detectorboxmot track --source 0 --detector rf-detr-base.pt # 仅输出边界框 boxmot track --source 0 --detector yolox_s.pt # 仅输出边界框--detector既可以是权重文件路径也可以是内置 profile 名如yolo26n。3.3 选择追踪算法 --trackerboxmot track --source 0 --tracker deepocsort boxmot track --source 0 --tracker strongsort boxmot track --source 0 --tracker ocsort完整可选列表跑boxmot track --help即可看到。3.4 搭配外观模型 --reid用到外观信息的追踪器才需要它。仓库当前内置的 profile 可参考 boxmot/configs/reid/boxmot track --source 0 --reid lmbn-n-duke # 轻量级 boxmot track --source 0 --reid osnet-x0-25-msmt173.5 过滤类别 --classes默认追踪模型预测到的所有类别。只追踪部分类别时传 MS COCO 类别索引boxmot track --source 0 --detector yolov8s.pt --classes 16,17 # 仅猫和狗五个维度拼起来例如boxmot track --source 0 --detector yolov8s.pt --tracker botsort --reid osnet-x0-25-msmt17 --show --save。4. 把追踪器接进自己的 Python 代码如果你已经有检测流程比如 Torchvision 的 FasterRCNN只需把检测输出拼成追踪器期望的格式再逐帧update。下面示例FasterRCNN 出检测BoostTrack 出轨迹代码中每步都标注了意图import cv2 import numpy as np import torch from pathlib import Path from torchvision.models.detection import ( fasterrcnn_resnet50_fpn_v2, FasterRCNN_ResNet50_FPN_V2_Weights as Weights, ) from boxmot import BoostTrack device torch.device(cuda if torch.cuda.is_available() else cpu) # 1) 加载预训练检测器与配套预处理 weights Weights.DEFAULT detector fasterrcnn_resnet50_fpn_v2(weightsweights, box_score_thresh0.5) detector.to(device).eval() transform weights.transforms() # 2) 初始化追踪器ReID 权重路径 设备 是否半精度 tracker BoostTrack( reid_weightsPath(osnet_x0_25_msmt17.pt), devicedevice, halfFalse, ) cap cv2.VideoCapture(0) # 3) 打开视频源 with torch.inference_mode(): while True: success, frame cap.read() if not success: break # 4) BGR - RGB - 张量过检测器的预处理 rgb cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) tensor torch.from_numpy(rgb).permute(2, 0, 1).to(torch.uint8) input_tensor transform(tensor).to(device) # 5) 推理并做置信度过滤 output detector([input_tensor])[0] scores output[scores].cpu().numpy() keep scores 0.5 boxes output[boxes][keep].cpu().numpy() labels output[labels][keep].cpu().numpy() # 6) 组装 [x1, y1, x2, y2, conf, class] 的 N 行数组 detections np.concatenate( [boxes, scores[keep][:, None], labels[:, None]], axis1 ) # 7) 追踪器消费检测帧返回当前帧的轨迹 res tracker.update(detections, frame) tracker.plot_results(frame, show_trajectoriesTrue) # 8) 在原图上画框与轨迹 cv2.imshow(BoxMOT demo, frame) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()想换算法时只需把BoostTrack换成BotSort、ByteTrack等——顶层包名与构造函数风格保持一致update接口相同。5. 看基准数据按瓶颈挑算法下表是 MOT17 消融分割上的官方基准结果固定同一套消融检测只变追踪器TrackerStatusHOTA↑MOTA↑IDF1↑FPSboosttrack✅69.25375.91483.20625botsort✅68.88578.22281.34446hybridsort✅68.21676.38281.16425strongsort✅68.0576.18580.76317deepocsort✅67.79675.86880.51412bytetrack✅67.6878.03979.1571265ocsort✅66.44174.54877.8991483选型建议很直接帧率是瓶颈比如摄像头实时流就选 bytetrack / ocsort两者 FPS 上千且指标不塌方精度优先就选 boosttrack / botsortHOTA 领先明显代价是 17–46 FPS。中间档 hybridsort、strongsort 适合对精度和延迟都有要求的折中场景。注意 FPS 受硬件影响只作相对量级参考。6. 进阶eval 评估、tune 调参、export 导出6.1 eval量化一次追踪组合boxmot eval在标准数据集或自定义数据集上跑完整评估boxmot eval --dataset mot17 --split ablation \ --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsortBoxMOT 的关键设计感知产物检测结果与外观嵌入只物化一次、按构建缓存之后换任何追踪器评估都直接复用不用重跑检测。--postprocessing还支持评分前对轨迹做后处理其中 GSI 即高斯平滑插值用于抹平轨迹毛刺。6.2 tune让算法替你搜超参boxmot tune --dataset mot17 --split ablation --tracker botsort --n-trials 9它用多目标进化搜索默认优化 HOTA、MOTA、IDF1 三项找到的最优超参会回写到追踪器的 YAML 配置见 boxmot/configs/trackers/下次运行直接生效。6.3 export把 ReID 模型搬到部署端boxmot export --weights osnet_x0_25_msmt17.pt --include onnx --device cpu boxmot export --weights osnet_x0_25_msmt17.pt --include engine --device 0 --dynamic--include可指定导出目标支持 ONNX、OpenVINO、TorchScript、TensorRT 等格式--dynamic打开动态输入形状适合推理时裁剪尺寸不固定的场景。7. 学习资源Torchvision 检测框追踪示例examples/det/torchvision_boxmot.ipynbTorchvision 姿态追踪示例examples/pose/torchvision_boxmot.ipynbTorchvision 分割追踪示例examples/seg/torchvision_boxmot.ipynb官方文档入口docs/index.md追踪器配置与预设boxmot/configs/trackers/数据集配置boxmot/configs/datasets/完整 CLI 参考终端执行boxmot --help【免费下载链接】boxmotBoxMOT: Pluggable Python and C SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门