DeepSORT 是多目标跟踪(MOT)领域的里程碑算法,它在 SORT(Simple Online and Realtime Tracking)的基础上引入深度特征(Deep Features),显著提升了复杂场景下的跟踪精度。以下从原理、核心模块、流程及优化策略等方面展开详解。
一、DeepSORT 的技术背景与定位
- 起源:2017 年由 Zheng 等人提出,基于 SORT 算法改进,解决了 SORT 在目标遮挡、外观相似等场景下 ID 切换频繁的问题。
- 核心思想:将运动特征(卡尔曼滤波)与外观特征(深度神经网络提取的 Re-ID 特征)结合,通过加权匹配优化轨迹关联。
二、DeepSORT 的三大核心模块
DeepSORT 的框架可拆解为三个关键部分,形成 “检测 - 预测 - 匹配” 的闭环:
(一)目标状态预测与更新:卡尔曼滤波(Kalman Filter)
- 状态定义:每个目标轨迹用 8 维状态向量表示:
[x, y, w, h, dx, dy, dw, dh]
,其中前 4 维为边界框中心坐标、宽高,后 4 维为对应维度的变化率(速度)。 - 预测过程:通过线性运动模型预测下一帧的目标位置,生成预测边界框。
- 更新过程:当检测到目标时,用检测结果修正预测状态,降低运动不确定性。
(二)特征提取:深度外观描述子(Deep Appearance Descriptor)
- 核心改进:SORT 仅依赖 IOU 匹配,而 DeepSORT 引入 ResNet-50 提取目标的 128 维外观特征(如颜色、纹理、形状)。
- 特征存储:为每个轨迹保存最近 N 帧的外观特征(如 N=10),增强短期遮挡时的匹配鲁棒性。
- 特征计算:对检测框裁剪后的图像归一化至 128×64 像素,输入预训练的 Re-ID 网络生成特征向量。
(三)数据关联:三级匹配策略
DeepSORT 通过分层匹配逐步解决轨迹与检测的关联问题,提升匹配效率与准确性:
-
第一层:运动匹配(IOU + 卡尔曼预测)
- 计算预测轨迹与检测框的 IOU,仅保留 IOU > 阈值(如 0.3)的配对。
- 目的:快速过滤明显不匹配的检测,减少计算量。
-
第二层:外观匹配(余弦相似度)
- 对运动匹配后的轨迹与检测,计算外观特征的余弦相似度(越接近 1 越相似)。
- 匹配策略:使用匈牙利算法(Hungarian Algorithm)求解二分图最大匹配,保留相似度 > 阈值(如 0.2)的配对。
- 意义:解决运动模型失效时的匹配问题(如目标突然转向、遮挡后重现)。
-
第三层:级联匹配(Cascade Matching)
- 问题场景:长期遮挡后,目标运动模型不确定性高,直接匹配易导致 ID 切换。
- 策略:按轨迹年龄(Track Age)优先级匹配,新轨迹优先匹配,旧轨迹(可能被遮挡)等待更可靠的检测。
- 实现:将轨迹按存活时间排序,先匹配最新的轨迹(前 N 帧未匹配的轨迹权重降低),避免遮挡目标被新检测错误关联。
三、DeepSORT 算法完整流程
初始化:
1. 加载预训练的Re-ID网络(如在Market-1501数据集上训练的ResNet-50)
2. 为每个新轨迹创建卡尔曼滤波器实例,状态初始化为检测框坐标
帧处理循环:
输入:当前帧的检测结果D(边界框列表)
输出:跟踪结果T(带ID的边界框列表)
步骤1:预测所有活跃轨迹的下一状态
对每个轨迹t,用卡尔曼滤波预测其当前帧的边界框t_pred
步骤2:第一层匹配:运动学匹配(IOU)
计算t_pred与D中检测框的IOU矩阵,使用匈牙利算法匹配
匹配成功的轨迹-检测对存入匹配集合M1,剩余轨迹存入U1,剩余检测存入D1
步骤3:第二层匹配:外观匹配(特征相似度)
对U1中的轨迹,提取其历史外观特征;对D1中的检测,提取当前帧外观特征
计算轨迹与检测的特征余弦相似度矩阵,使用匈牙利算法匹配
匹配成功的轨迹-检测对存入匹配集合M2,剩余轨迹存入U2,剩余检测存入D2
步骤4:第三层处理:处理未匹配轨迹与新检测
- 对U2中的轨迹:若连续未匹配次数超过阈值(如30帧),标记为“已消失”
- 对D2中的检测:创建新轨迹,初始状态为检测框坐标,外观特征为当前特征
步骤5:更新匹配的轨迹状态
对M1和M2中的每个匹配对(t, d),用检测框d更新轨迹t的卡尔曼滤波器状态,并存储d的外观特征
四、DeepSORT 的关键优化点
-
级联匹配的原理
- 长期遮挡后,目标的运动模型预测误差较大,若直接与新检测匹配,易因位置偏差导致 ID 切换。
- 级联匹配优先匹配 “年轻” 轨迹(近期活跃的目标),而 “年老” 轨迹(可能被遮挡)等待更多帧的检测,降低误匹配概率。
-
外观特征的存储与更新
- 存储最近 N 帧的特征并取平均,减少单帧特征噪声(如遮挡、模糊)的影响。
- 当轨迹成功匹配时,用当前帧特征更新历史特征集合,适应目标外观变化(如车辆换道时的视角变化)。
-
计算效率优化
- 仅对匹配阶段的检测框提取外观特征,而非全部检测结果,减少计算量。
- 使用 IOU 预过滤,避免对大量不相关检测计算特征相似度。
五、DeepSORT 的优缺点与应用场景
-
优点:
- 鲁棒性强:结合运动与外观特征,在遮挡、相似目标场景中表现优于 SORT。
- 实时性平衡:相比纯深度学习方法(如 JDE、FairMOT),计算复杂度较低,可在 CPU 上运行(约 20FPS)。
- 可解释性高:模块解耦清晰,便于针对具体场景(如交通、安防)调整参数(如 IOU 阈值、特征相似度阈值)。
-
缺点:
- 依赖高质量检测:若检测器漏检或误检率高,DeepSORT 的 MOTA 会显著下降。
- 外观特征泛化性:预训练的 Re-ID 模型在新场景(如高空视角、红外图像)中可能失效,需重新训练或微调。
- 长时遮挡处理局限:若目标遮挡超过 N 帧(如 N=30),轨迹会被删除,无法恢复。
-
典型应用:
- 交通监控中的车辆跟踪;
- 公共场所的行人跟踪与异常行为检测;
- 无人机巡检中的目标持续追踪。
六、DeepSORT 的改进方向
-
特征优化:
- 引入注意力机制(如 CBAM)增强关键区域的特征提取;
- 使用动态特征融合,结合时域信息(如前几帧的特征)提升稳定性。
-
匹配策略升级:
- 引入深度学习模型替代手工设计的匹配阈值(如使用神经网络预测匹配概率);
- 针对小目标场景,调整级联匹配的优先级规则(如小目标轨迹赋予更高权重)。
-
与检测算法结合:
- 将 DeepSORT 与 YOLO、Faster R-CNN 等检测器集成,形成端到端跟踪系统(如 YOLOv5+DeepSORT);
- 针对检测中的小目标漏检问题,增加专用检测层(如前文提到的 P2 层)提升 FNN 指标,间接优化 MOTA。
总结
DeepSORT 通过 “运动预测 + 外观特征 + 分层匹配” 的设计,在多目标跟踪中实现了鲁棒性与效率的平衡,其核心思想(如级联匹配、特征融合)为后续算法(如 StrongSORT、ByteTrack)奠定了基础。在实际应用中,理解其各模块的作用机制,可帮助开发者根据场景特性(如目标速度、遮挡频率、摄像头视角)调整参数或进行针对性优化,从而提升 MOTA 等关键指标。