【论文阅读2】DeepSORT (SORT with a deep association metric)

1. 各部分笔记

1.1 Abstract

SORT算法非常简单有效,但是其缺少对被遮挡对象的处理,会导致id switches比较大,即目标身份的频繁切换。

DeepSORT通过融入外观信息来提高SORT的性能。具体来说,引入了一个预训练好的行人重识别(Re-ID)网络来提取目标边界框的外观特征描述符,从而能够在较长的遮挡时间内跟踪对象,有效地减少了id switches的次数

1.2 Introduction

SORT只使用Kalman预测的状态(预测值)和检测结果(观测值)之间的IoU距离作为关联度量,来构造代价矩阵。其关联度量仅考虑运动信息,只有在状态估计不确定性较低时才是准确的(例如相机运动、遮挡等情况会让目标运动的不确定性变高)。因此,SORT对遮挡情况不鲁棒,会导致id switches比较大。

DeepSORT改进了SORT的关联度量,使用了结合运动信息和外观信息的关联度量:

  • 运动模型:度量Kalman预测的状态变量(预测值)和检测结果的状态变量(观测值)之间的马氏距离。
  • 外观模型:当目标运动不确定性变高时(例如相机运动、遮挡等情况),采用外观模型,即使用一个预训练好的Re-ID网络来提取目标边界框的外观特征描述符。
    度量轨迹的外观描述符和检测的外观描述符之间的余弦距离。

1.3 SORT WITH DEEP ASSOCIATION METRIC

1.3.1 轨迹处理和状态估计

DeepSORT采用的Kalman滤波跟SORT中基本一致,仍然用的是恒定速度模型,系统的状态向量为:
android seetaface6提取特征_匹配问题
其中 android seetaface6提取特征_匹配问题_02 分别表示目标边界框的中心点坐标; android seetaface6提取特征_匹配问题_03 分别表示目标边界框的纵横比和高;android seetaface6提取特征_ci_04分别表示中心点坐标、纵横比、高的变化速率。

相比于SORT中的状态向量,多了一个长宽比的变化速率android seetaface6提取特征_描述符_05,例如对于相机运动的场景,长宽比确实是会随时间变化的。因此这里也与SORT不一样,SORT将长宽比设定成常数。


DeepSort中Track的生命周期(考虑了遮挡):

  • 消亡——对每个track统计未成功关联的帧数(missing age):对于每个track,统计从最近一次与检测(观测值)关联以来的帧数,该计数在Kalman预测期间递增。如果该track与检测(观测值)再次关联上,该计数就会被重置为0。因此,若一个track的计数大于最大寿命android seetaface6提取特征_多目标跟踪_06,就被认为已经离开了场景,其信息会从track集合中删除。
  • 新生——对每个无法与现有的track关联的detection初始化一个新的track hypothesis(轨迹假设):这些新的track hypothesis会在前三帧中被设定为 tentative(暂定的)。 如果前三帧没有成功与检测(观测值)关联,就删除。否则建立一个新track。
    这一操作是为了防止追踪到FP。
1.3.2 匹配问题
1.3.2.1 运动特征的关联度量

对于Kalman预测的状态和新的测量值的匹配问题,本文仍然沿用匈牙利算法。与SORT不同的是(SORT用的是IOU距离),DeepSORT采用马氏距离作为度量。

运动特征的关联度量:第 android seetaface6提取特征_描述符_07 个 detection 的状态变量(观测值)和第 android seetaface6提取特征_ci_08
android seetaface6提取特征_多目标跟踪_09
其中 android seetaface6提取特征_匹配问题_10 表示Kalman预测的状态变量(track distribution)的序号, android seetaface6提取特征_描述符_11 表示detection的序号。android seetaface6提取特征_多目标跟踪_12 表示第 android seetaface6提取特征_匹配问题_10 个Kalman预测的状态变量的协方差矩阵,android seetaface6提取特征_匹配问题_14 表示Kalman预测的状态变量(track distribution)的均值。该式本质就是计算了第 android seetaface6提取特征_多目标跟踪_15 个detection和第 android seetaface6提取特征_描述符_16

此外,可以设置一个马氏距离的阈值,来排除不可能的匹配。可以定义如下指示函数(二进制变量):
android seetaface6提取特征_论文阅读_17

1.3.2.2 外观特征的关联度量

如果有相机运动等情况Kalman滤波的不确定性会变大,这样仅用运动信息来进行关联度量就不太可靠了。

DeepSORT用一个小型的残差网络来提取目标边界框的外观特征描述符,该网络结构如下图所示:

android seetaface6提取特征_多目标跟踪_18

对于每个检测边界框 android seetaface6提取特征_论文阅读_19,将其对应的图像切片输入到预训练好的Re-ID网络中,输出128维的向量,即为外观特征描述符 android seetaface6提取特征_匹配问题_20,满足 android seetaface6提取特征_论文阅读_21(范数为1)。

此外,用一个 gallery android seetaface6提取特征_多目标跟踪_22 来存放第 android seetaface6提取特征_匹配问题_10 个 track 在最近的 android seetaface6提取特征_多目标跟踪_24 帧中的所有外观特征描述符( android seetaface6提取特征_多目标跟踪_24

外观特征的关联度量:第 android seetaface6提取特征_描述符_07 个 detection 的外观特征描述符和第 android seetaface6提取特征_ci_08
android seetaface6提取特征_多目标跟踪_28
同理,也可以用一个指示函数来排除不可能的匹配(二进制变量):
android seetaface6提取特征_匹配问题_29

1.3.2.3 结合运动特征和外观特征的关联度量

运动特征和外观特征的关联度量可以在匹配问题中相互补充。一方面,马氏距离对运动特征的度量,对于短期预测(short-term predictions)比较有用;另一方面,余弦距离对外观特征的度量,对长时间遮挡后的id恢复比较有用。

为了构建关联问题,将两个度量加权求和:
android seetaface6提取特征_匹配问题_30
如果关联在两个度量的门限区域(gating region)内,则称其为可接受关联(引入一个门控矩阵来限制代价矩阵中过大的值):
android seetaface6提取特征_描述符_31
每个度量对关联成本矩阵的影响可以通过超参数 android seetaface6提取特征_论文阅读_32 来控制。当存在大量相机运动时,设置 android seetaface6提取特征_匹配问题_33

1.3.3 级联匹配(Matching Cascade)

匹配级联是为了解决一些子问题。引入了一个匹配级联,优先考虑更常见的对象,以编码关联可能性中的概率扩散概念。

android seetaface6提取特征_描述符_34

android seetaface6提取特征_多目标跟踪_35

2. 总结

DeepSORT比SORT改进的地方在于:

  • 使用马氏距离来衡量Kalman预测的状态量和检测的状态量之间的差异。
  • 使用一个已经预训练好的Re-ID网络来提取目标边界框的外观特征描述符。
    使用余弦距离来衡量已有轨迹的外观描述符和检测的外观描述符之间的差异,辅助构造代价矩阵,有助于id switches的减小。