
检测框抖动是目标检测中的一个常见问题,不只会出现在车辆检测里,行人检测、头部检测、车牌检测、道路病害检测等连续图片或视频抽帧任务中都可能遇到。只要模型是逐图独立推理,同一个目标在相邻图片中的框就可能出现轻微跳动。本文用车辆检测作为例子说明这个问题:同一辆车在多张连续图片里可能会出现检测框轻微跳动,上一张图框得偏左,下一张图框得偏右,再下一张图又变大一点。车辆本身没有明显移动,但框的位置和大小一直抖动。test_car.py中加入的跨图平滑逻辑,就是为了解决这类问题。为什么同一目标的框会抖动YOLO 这类目标检测模型默认是逐图独立推理的。模型看到第 1 张图时,并不知道第 2 张图里还有同一辆车;看到第 2 张图时,也不会记住第 1 张图的框。这里虽然用“同一辆车”举例,但原理对大多数检测类别都一样。模型输出的是当前图片上的目标框,而不是带时间记忆的轨迹框。检测框抖动通常来自这些因素:图片压缩、光照、噪声变化会让特征响应略有变化。模型输出框本身是回归结果,不会保证相邻帧完全一致。NMS 会根据置信度和 IoU 保留某一个候选框,候选框轻微变化后,最终框也会变化。输入缩放、letterbox、坐标还原和四舍五入都会带来少量像素级误差。如果图片来自视频抽帧,同一目标在相邻帧中位置