SORT 与 OC-SORT:检测框之后的多目标跟踪
编写时间:2024-05
目标检测只回答“这一帧哪里有目标”,跟踪还要回答“下一帧是不是同一个目标”。SORT 这类算法的优势是简单、在线、实时,特别适合先作为工程 baseline。
SORT 基本流程
SORT 主要由三件事组成:
| 模块 | 作用 |
|---|---|
| Detector | 每帧给出 bbox |
| Kalman Filter | 根据上一状态预测当前 bbox |
| Hungarian / IoU | 把检测框和轨迹匹配起来 |
状态建模
SORT 常用 bbox 中心、尺度、长宽比以及速度建状态。一个简化状态可以写成:
其中 (u,v) 是中心,s 是面积,r 是长宽比。Kalman 负责预测下一帧状态,检测框负责校正预测。
OC-SORT 的出发点
OC-SORT 全称 Observation-Centric SORT。它仍然保持实时和简单,但意识到一个问题:SORT 过度依赖预测状态时,在遮挡、非线性运动、检测抖动场景会不稳。OC-SORT 更强调观测本身,试图让轨迹更新围绕观测历史更稳定。
数据关联的核心
匹配可以只用 IoU,也可以叠加外观特征。工程里通常先用 IoU baseline:
然后用匈牙利算法求全局最小匹配。未匹配检测新建轨迹,未匹配轨迹增加丢失计数。
和 ByteTrack 的关系
ByteTrack 的核心思想是“低分框也有用”。它不是简单丢掉低置信度检测,而是把高分检测先匹配,再用低分检测补回被遮挡或置信度下降的目标。这对跟踪召回很有效。
工程选择
快速接入目标检测结果时,可以优先放 SORT/OC-SORT:实现简单、速度快、依赖少。等业务发现 ID switch、遮挡恢复、小目标断轨等问题,再考虑 ByteTrack、DeepSORT 或加入外观 ReID。
这类算法最重要的不是背公式,而是记住边界:检测质量决定上限,数据关联决定 ID 稳定性,运动模型只能补短时间缺失,不能凭空恢复长期遮挡。