
给检测模型装上连续 IDBoxMOT 多目标追踪实战指南【免费下载链接】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检测模型每帧只吐一堆框人物换一次位置 ID 就变。BoxMOT 把多目标追踪做成即插即用组件一条 pip 命令装好一行命令跑通追踪算法还能随时换。 痛点单帧检测为什么不够你在做目标检测、实例分割或姿态估计时模型输出的是这一帧的框没有跨帧身份。做人流统计、行人追踪、行为分析都需要给每个目标一个稳定 ID。BoxMOT 的定位就是一个追踪插件层检测、分割、姿态模型照常出框BoxMOT 负责把框串成轨迹。追踪器是可插拔的BoostTrack、BotSort 等实现集中在 boxmot/trackers/ 下换算法只改一个参数不用动检测代码。 快速上手安装与第一次跑通要求 Python 3.10–3.13装包一行pip install boxmot跑第一次追踪--source 0指摄像头图片、视频、目录都能替换boxmot track --source 0 --detector yolo26n --tracker occluboost --save --show预期效果窗口里实时显示每个目标的轨迹和固定 ID 号结果存到runs/目录。跑摄像头需要检测相关依赖用boxmot install --extra yolo补上 Ultralytics 等组件。 选型指南7 种追踪器MOT 基准测试数据说话先说两种性能模式纯运动只靠卡尔曼滤波 IoU 关联轻量、高 FPSCPU 就能跑运动 外观额外提取 ReID 特征OSNet、LightMBN 等模型做外观匹配遮挡场景下 ID 更稳代价是推理开销下表数据来自 MOT17-ablation 分割的基准测试HOTA 越高越好综合衡量检测与身份追踪器HOTA↑MOTA↑IDF1↑FPSboosttrack69.25375.91483.20625botsort68.88578.22281.34446hybridsort68.21676.38281.16425strongsort68.0576.18580.76317deepocsort67.79675.86880.51412bytetrack67.6878.03979.1571265ocsort66.44174.54877.8991483按场景一句话选型要速度bytetrack / ocsort 纯运动模式上千 FPS适合大画面低延迟要均衡botsort运动 外观组合指标与速度折中最稳要精度boosttrack / strongsort带 ReID 的 HOTA 第一梯队适合离线分析 进阶玩法CLI 速查五个子命令覆盖完整工作流boxmot --help可随时查细节。track跑追踪boxmot track --source vid.mp4 --detector yolo26n --tracker botsort --reid lmbn-n-duke --classes 0 --save四个常用参数--source指定摄像头/图片/视频/目录--detector指定检测模型--tracker换追踪算法--classes按类别索引过滤0就是只追人。evalMOT17 / MOT20 / DanceTrack 消融评估boxmot eval --dataset mot17 --split ablation --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort在标准 MOT 基准测试集上量化你选定的检测器 ReID 追踪器组合输出 HOTA/MOTA/IDF1。仓库内置的消融实验配置见 boxmot/configs/datasets/。generate预存检测与嵌入把检测结果和外观嵌入一次性落盘。之后换追踪器重跑时无需再推理节省大量重复计算。tune目标追踪参数调优boxmot tune --dataset mot17 --split ablation --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort --n-trials 200用多目标遗传算法搜索追踪器超参数默认同时优化 HOTA、MOTA、IDF1最优参数写回该追踪器的配置文件boxmot/configs/trackers/。exportReID 模型导出boxmot export --weights osnet_x0_25_msmt17.pt --include onnx支持 ONNX、OpenVINO、TensorRT、TorchScript 等格式导出后部署到边缘设备--dynamic可开动态输入。 代码集成挂进自己的检测模型把追踪接进 torchvision 的 FasterRCNN核心就是逐帧循环检测 → 追踪 → 画结果import cv2, torch, numpy as np from torchvision.models.detection import fasterrcnn_resnet50_fpn_v2 from torchvision.models.detection.faster_rcnn import FasterRCNN_ResNet50_FPN_V2_Weights from boxmot import BoostTrack, ReIDConfig device cuda if torch.cuda.is_available() else cpu w FasterRCNN_ResNet50_FPN_V2_Weights.DEFAULT det fasterrcnn_resnet50_fpn_v2(weightsw, box_score_thresh0.5).to(device).eval() tr BoostTrack(reidReIDConfig(devicecpu)).to(device) cap cv2.VideoCapture(0) with torch.inference_mode(): while True: ok, frame cap.read() if not ok: break # 检测输出框 [x1, y1, x2, y2, 置信度, 类别] out det([w.transforms()( torch.from_numpy(frame[:, :, ::-1]).permute(2, 0, 1).to(device))])[0] keep out[scores] 0.5 dets np.concatenate([out[boxes], out[scores][:, None], out[labels][:, None]], 1)[keep].cpu().numpy() # 追踪 绘制 tracks tr.update(dets, frame) cv2.imshow(BoxMOT, frame) if cv2.waitKey(1) 0xFF ord(q): break cap.release()update返回和输入同形状的数组多出来的 ID 列取用即可想换算法把BoostTrack改成BotSort、ByteTrack等即可接口一致。完整可运行版本见 examples/det/torchvision_boxmot.ipynb。❓ 常见坑 FAQQReID 模型一加载就显存不足A外观模型走 CPUCLI 加--device cpuPython 侧ReIDConfig(devicecpu)。检测放 GPU、ReID 放 CPU 是常见且合理的搭配。Q只想追踪行人怎么过滤类别A--classes传类别索引COCO 中人是0。注意 CLI 里写--classes 0Python 代码里则在自己的检测输出上按 label 过滤。Q怎么换 ReID 模型ACLI 用--reid指定模型名如lmbn-n-dukeLightMBN 系列或osnet-x0-25-msmt17代码里通过ReIDConfig(model...)切换。各模型的参数量与输入尺寸对比见 docs/config/reid-models.md。 收尾资源链接官方文档docs/入门与安装docs/getting-started/installation.md评估工作流docs/guides/evaluation.md追踪器文档索引docs/trackers/项目说明README.md示例 notebooksexamples/det/torchvision_boxmot.ipynb、examples/seg/torchvision_boxmot.ipynb、examples/pose/torchvision_boxmot.ipynbBoxMOT 多目标追踪这条链路到此就闭环了装包、选追踪器、跑通、调参、导出每个环节都有对应子命令。建议先用仓库里的 MOT17-mini 小数据集assets/MOT17-mini/练手再迁移到自己的数据源。【免费下载链接】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),仅供参考