返回专辑
·Johan·3 分钟阅读

多目标跟踪:检测抖轨迹碎

ByteTrack 用高低分框两阶段关联减断轨;跟踪 ceiling 仍是检测质量,框抖和漏检要先在 det 上查。

多目标跟踪:检测抖轨迹碎

1. 多目标跟踪精度好看,身份切换扎心

产线多目标跟踪的多目标跟踪精度指标不错,但回放里身份切换事件密集——多半是检测置信度抖动,不是卡尔曼过程噪声没调好。高分框偶尔掉到零点四,跟踪器认为目标消失;下一帧又弹回零点八,新编号诞生。操作员看的是轨迹连续性,不是平均精度数字。跟踪上限在检测,换再复杂的跟踪器也只是平滑错误的框。

字节跟踪算法的思路直击这个痛点:别扔低分框,用它们挽救丢失轨迹。但上限仍是检测质量——框偏、漏检、分数抖要先在检测工作点上查。

2. 两阶段关联逻辑

第一阶段:高分检测(如分数不低于零点五)与现有轨迹做交并比或运动门控匹配。第二阶段:未匹配轨迹与低分检测(如零点一到零点五)再关联。仍未匹配则新建轨迹或删除,由轨迹缓冲帧数决定能容忍几帧漏检。

卡尔曼滤波在图像空间预测边界框,常用八维状态 匀速模型。交并比门控阈值零点三到零点五视场景密度而定;拥挤场景阈值低易错配,稀疏场景阈值高易断轨。分数阈值不是论文默认值,是现场旋钮。

3. OpenCV 侧能做什么

经典流水线:检测器输出框,再交给专用多目标跟踪库。OpenCV 提供单目标回退:

python
tracker = cv2.TrackerCSRT_create()
tracker.init(frame, bbox)  # 检测丢帧时短期顶上
ok, bbox = tracker.update(frame)

相关滤波跟踪精度较好但慢;核相关滤波快;最小输出平方误差极快但弱。多跟踪器演示适合原型,量产换专用库。检测漏帧时金字塔 Lucas-Kanade 光流可桥接一两帧,便宜但漂移后必须检测纠正——不能当长期跟踪。

4. 检测是瓶颈

检测问题跟踪表现
分数抖身份切换
漏检轨迹碎裂
框偏关联失败

外观相似人群、长期遮挡时可加重识别嵌入做二次关联,算力与延迟要权衡。重识别不是万能——嵌入相似的两辆车仍会互换,但比纯交并比稳。

5. 指标:别只看多目标跟踪精度

多目标跟踪精度、身份 F 值、高阶跟踪精度看不同失效模式。字节跟踪提升多目标跟踪精度常来自召回(低分框挽救),身份 F 值仍可能因相似外观差。单独记录身份切换次数 比平均精度更能反映现场体验。

6. 与检测工作点的衔接

检测抖则轨迹碎。字节跟踪等用低分框挽救,但上限仍是检测质量。先稳定检测分数阈值和非极大值抑制,再调跟踪器过程噪声——顺序反了是浪费时间。可视化最差身份切换片段,叠加检测分数曲线,一眼看出是检测抖还是关联参数问题。

7. 验收

  • 同一数据包对比纯检测与检测加字节跟踪
  • 轨迹长度分布:短轨比例应下降
  • 可视化最差身份切换片段
  • 延迟百分之九十九分位:两阶段关联加重识别的算力预算

8. 案例:仓库叉车遮挡

仓库里叉车频繁遮挡行人,检测分数在零点三和零点七之间跳。纯高分关联每遮挡一次就断轨;加字节跟踪低分二次关联后,轨迹长度中位数从十二帧升到四十七帧,身份切换降六成。但框系统性偏左两像素时,交并比关联仍失败——这是检测框偏,不是跟踪参数问题。

跟踪是 检测的时间平滑。检测不稳时,先稳定检测工作点再调跟踪器——这是产线排障的基本顺序。

← 全部文章

johan's blog