
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检测模型只能回答这一帧里有谁而下一帧它走到哪、ID 会不会串必须靠追踪解决。不少团队的坑在这里追踪逻辑和检测器深度耦合换一个追踪算法就得重写半条流水线。BoxMOT 把它做成可插拔的 SOTA 追踪模块——任何输出边界框的分割、检测或姿态模型都能接上多目标追踪只需换参数不用动业务代码。 先让它动起来安装并跑通第一个追踪任务先别抠原理目标是几分钟内看到带 ID 的追踪画面。Python ≥ 3.9 环境下# 一行装齐 boxmot 及全部依赖 pip install boxmot # 摄像头做源跑默认追踪加 --tracking-method 可指定算法 boxmot track --source 0--source接受摄像头编号、图像、视频文件或目录boxmot track --source vid.mp4这种写法同样成立。想过滤类别追加--classes 16 17只追猫狗即可。跑通之后可以顺手boxmot --help看一眼全部子命令track、eval、generate、tune、export后面会按顺序用到。 它为什么好用三个关键选择追踪器怎么换追踪器是插件式的实现集中在 boxmot/trackers/包含 boosttrack、botsort、bytetrack、ocsort、strongsort、deepocsort、hybridsort 等十一种算法。命令行用--tracking-method指定各追踪器的默认超参数放在 boxmot/configs/trackers/换算法不改代码。两种性能模式怎么选纯运动模式bytetrack、ocsort只用运动线索做关联CPU 上就能跑到千帧级 FPS适合多路摄像头、边缘设备等实时性优先的场景。运动 外观模式botsort、strongsort、deepocsort 等额外接入 ReID 模型提取外观嵌入身份一致性更高代价是推理开销上升。--reid-model osnet_x0_25_msmt17.pt这类参数控制用哪个 ReID 模型模型库见 boxmot/reid/。检测与嵌入缓存怎么复用检测结果和外观嵌入可以一次性生成并落盘之后任意追踪算法加载同一份缓存跑评估不必反复过检测器和 ReID 网络。批量对比多个追踪器时这一步省掉的是整条预处理流水线的重复开销。 Python 集成实战FasterRCNN BoostTrack想在自己的代码里接追踪核心就是检测输出 →tracker.update→ 画图三步。下面这个片段用 torchvision 的 FasterRCNN 出框交给 BoostTrack带 ReID追踪import cv2, torch, numpy as np from pathlib import Path from boxmot import BoostTrack from torchvision.models.detection import ( fasterrcnn_resnet50_fpn_v2, FasterRCNN_ResNet50_FPN_V2_Weights as Weights, ) device torch.device(cuda if torch.cuda.is_available() else cpu) weights Weights.DEFAULT detector fasterrcnn_resnet50_fpn_v2(weightsweights, box_score_thresh0.5) # 预训练检测器 detector.to(device).eval() transform weights.transforms() # 官方预处理变换 # 初始化追踪器ReID 权重 设备 是否半精度 tracker BoostTrack(reid_weightsPath(osnet_x0_25_msmt17.pt), devicedevice, halfFalse) cap cv2.VideoCapture(0) with torch.inference_mode(): success, frame cap.read() rgb cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) tensor torch.from_numpy(rgb).permute(2, 0, 1).to(torch.uint8) output detector([transform(tensor).to(device)])[0] scores output[scores].cpu().numpy() keep scores 0.5 # 置信度过滤 # 拼成 [x1, y1, x2, y2, score, label] 的检测矩阵喂给追踪器 detections np.concatenate( [output[boxes][keep].cpu().numpy(), scores[keep][:, None], output[labels][keep].cpu().numpy()], axis1) tracker.update(detections, frame) # 关键逐帧更新 tracker.plot_results(frame, show_trajectoriesTrue) # 画框 ID 轨迹 cv2.imshow(BoxMOT, frame)换成 BotSort 或 ByteTrack只需要把BoostTrack替换成对应的追踪器类其余代码不动。 追踪器怎么选MOT17 基准解读选型先看这张 MOT17 消融分割上的官方基准要吞吐选 bytetrack1265 FPS或 ocsort1483 FPS要精度选 boosttrackHOTA 69.253 最高或 botsortMOTA 78.222 最高。TrackerHOTA↑MOTA↑IDF1↑FPSboosttrack69.25375.91483.20625botsort68.88578.22281.34446hybridsort68.21676.38281.16425strongsort68.0576.18580.76317deepocsort67.79675.86880.51412bytetrack67.6878.03979.1571265ocsort66.44174.54877.8991483其中 IDF1 衡量追踪过程中身份没串号的程度。规律很清楚外观类追踪器把 HOTA 拉高约 2.8 个点但 FPS 掉到 12–46纯运动类牺牲一点精度换来 1265–1483 FPS 的吞吐。按你的帧率和身份一致性要求对号入座即可。 评估与调参流水线从 eval 到部署把评估、缓存、调参、导出串起来就是 BoxMOT 的完整工作流eval 评估组合效果——检测器、追踪方法、ReID 模型三件套打分--gsi可加高斯平滑插值后处理boxmot eval --yolo-model yolox_x_MOT17_ablation.pt \ --reid-model lmbn_n_duke.pt --tracking-method boosttrack \ --source MOT17-ablation --verbosegenerate 落盘检测与嵌入——同一份缓存供后续所有实验复用避免重复跑检测boxmot generate --source ./assets/MOT17-mini/train \ --yolo-model yolov8n.pt yolov8s.pt --reid-model weights/osnet_x0_25_msmt17.pttune 遗传算法调参——以 HOTA、MOTA、IDF1 为目标做多目标进化搜索最优超参数写回追踪器配置boxmot tune --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt \ --n-trials 9 --tracking-method botsort --source ./assets/MOT17-mini/trainexport 导出 ReID 模型——ONNX、OpenVINO、TensorRT 按需选择TensorRT 支持动态输入boxmot export --weights weights/osnet_x0_25_msmt17.pt --include onnx --device cpu boxmot export --weights weights/osnet_x0_25_msmt17.pt --include engine --device 0 --dynamic 资源导航官方文档安装、各模式详解、API 参考docs/项目说明与基准结果README.md示例笔记本examples/det/ 检测、examples/seg/ 分割、examples/pose/ 姿态均基于 torchvision 演示【免费下载链接】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),仅供参考