092、ByteTrack + YOLO 多目标跟踪:检测+跟踪串联方案的工程调优
092、ByteTrack + YOLO 多目标跟踪:检测+跟踪串联方案的工程调优
一、从一次线上事故说起
去年秋天,我负责的一个智慧零售项目突然报警——客户反馈货架上的商品跟踪频繁跳ID,同一个顾客从进店到结账,ID换了七八次。我连夜翻日志,发现ByteTrack的匹配逻辑在低帧率场景下几乎崩溃。更诡异的是,YOLOv8检测的mAP明明有0.78,但跟踪的MOTA(多目标跟踪准确率)只有0.31。
这个案例让我意识到:检测和跟踪的串联,不是简单的“检测框+卡尔曼滤波”就能糊弄过去的。今天这篇笔记,就围绕ByteTrack + YOLO的工程调优,把那些踩过的坑和填坑方案掰开揉碎讲清楚。
二、ByteTrack的匹配逻辑,你真的理解了吗?
ByteTrack的核心思想是“高置信度框和低置信度框分开处理”。别被论文里的公式吓到,实际代码里就两个关键步骤:
- 高置信度匹配:用IoU(交并比)把检测框和跟踪轨迹做匈牙利匹配,阈值通常设0.5。
- 低置信度匹配:把那些置信度低于0.5但高于0.1的检测框,再和未匹配的轨迹做一次匹配,阈值降到0.2。
这里有个坑:低置信度匹配的阈值不能设死。我见过有人直接写死0.2,结果在遮挡场景下,低置信度框全是噪声,反而把正确的轨迹带偏了。正确的做法是动态调整——根据当前帧的平均
