【Deep-sort多目标跟踪流程及其改进方法的解读】

  • 文前白话
    • 相关的文章、资源链接
    • 流程及其改进方法的梳理
      • 一、多目标跟踪的流程
      • 二、Sort 与 deepSort 的对比
      • 三、DeepSort主要的跟踪流程
      • 四、关于DeepSort中部分模块原理的理解
        • 1、预测模块
        • 2、更新模块
        • 3、使用级联匹配算法
        • 4、马氏距离与余弦距离的添加
        • 5、添加的深度学习特征
        • 6、IOU 计算 与匈牙利算法匹配

文前白话

相关的文章、资源链接

流程及其改进方法的梳理

一、多目标跟踪的流程

  1. 获取原始视频帧,利用目标检测器对视频帧中的目标进行检测
  2. 将检测到的目标的框中的特征提取出来,该特征包括表观特征(方便特征对比避免ID switch)和运动特征(运动特征方便卡尔曼滤波对其进行预测)
  3. 计算前后两帧目标之前的匹配程度(利用匈牙利算法和级联匹配),为每个追踪到的目标分配ID。

二、Sort 与 deepSort 的对比

三、DeepSort主要的跟踪流程

【Deep-sort多目标跟踪流程及其改进方法的解读】

四、关于DeepSort中部分模块原理的理解

1、预测模块

2、更新模块

在更新模块中也包括匹配,追踪器更新与特征集更新。在更新模块的部分,根本的方法还是使用IOU来进行匈牙利算法的匹配,在此基础上添加了新的关联方法。传统的解决检测结果与追踪预测结果的关联的方法是使用匈牙利方法。Deepsort中同时考虑了运动信息的关联和目标外观信息的关联。

对每一个的检测块d_j求一个特征向量r_i,限制条件是∣r_i∣ = 1.对每一个追踪目标构建一个gallary,存储每一个追踪目标成功关联的最近100帧的特征向量。第二种度量方式就是计算第i个追踪器的最近100个成功关联的特征集与当前帧第j个检测结果的特征向量间的最小余弦距离。计算公式为:
【Deep-sort多目标跟踪流程及其改进方法的解读】
如果上面的距离小于指定的阈值,那么这个关联就是成功的。阈值是从单独的训练集里得到的。

3、使用级联匹配算法

针对每一个检测器都会分配一个跟踪器,每个跟踪器会设定一个time_since_update参数。如果跟踪器完成匹配并进行更新,那么参数会重置为0,否则就会+1。实际上,级联匹配换就是不同优先级的匹配。在级联匹配中,会根据这个参数来对跟踪器分先后顺序,参数小的先来匹配,参数大的后匹配。也就是给上一帧最先匹配的跟踪器高的优先权,给好几帧都没匹配上的跟踪器降低优先权(逐渐降低)。至于使用级联匹配的目的,引用文章(- 3、论文翻译:Deep SORT.)里的解释:

当一个目标长时间被遮挡之后,kalman滤波预测的不确定性就会大大增加,状态空间内的可观察性就会大大降低。假如此时两个追踪器竞争同一个检测结果的匹配权,往往遮挡时间较长的那条轨迹的马氏距离更小,使得检测结果更可能和遮挡时间较长的那条轨迹相关联,这种不理想的效果往往会破坏追踪的持续性。可以理解为,假设本来协方差矩阵是一个正态分布,那么连续的预测不更新就会导致这个正态分布的方差越来越大,那么离均值欧氏距离远的点可能和之前分布中离得较近的点获得同样的马氏距离值。所以,作者使用了级联匹配来对更加频繁出现的目标赋予优先权。

【Deep-sort多目标跟踪流程及其改进方法的解读】

4、马氏距离与余弦距离的添加

这两种距离,实际上是针对运动信息与外观信息的计算
马氏距离就是“加强版的欧氏距离”。它实际上是规避了欧氏距离中对于数据特征方差不同的风险,在计算中添加了协方差矩阵,其目的就是进行方差归一化,从而使所谓的“距离”更加符合数据特征以及实际意义。马氏距离是对于差异度的衡量中,的一种距离度量方式,而不同于马氏距离,余弦距离则是一种相似度度量方式。前者是针对于位置进行区分,而后者则是针对于方向。使用余弦距离的时候,可以用来衡量不同个体在维度之间的差异,而一个个体中,维度与维度的差异我们却不好判断,此时我们可以使用马氏距离进行弥补,从而在整体上可以达到一个相对于全面的差异性衡量。而我们之所以要进行差异性衡量,根本目的也是想比较检测器与跟踪器的相似程度,优化度量方式,也可以更好地完成匹配。

5、添加的深度学习特征

这部分是属于ReID模块,也是deepsort的主要更新改进的地方。deepsort在对于sort的改进中加入了一个深度学习的特征提取网络,作者将所有confirmed的追踪器(其中一个状态)每次完成匹配对应的detection的feature map存储进一个list。存储的数量作者使用budget超参数(100帧)进行限制(如果实时性效果不好的话,可以尝试调低这个参数加快速度)。从而在每次匹配之后都会更新这个feature map的list,比如去除掉一些已经出镜头的目标的特征集,保留最新的特征将老的特征 pop 掉等等。这个特征集在进行余弦距离计算的时候将会发挥作用。实际上,在当前帧,会计算第i个物体跟踪的所有Feature向量和第j个物体检测之间的最小余弦距离。

6、IOU 计算 与匈牙利算法匹配

这个方法是在sort中被提出的,实际上匈牙利算法可以理解成“尽量多”的一种思路,比如说A检测器可以和a,c跟踪器完成匹配(与a匹配置信度更高),但是B检测器只能和a跟踪器完成匹配。那在算法中,就会让A与c完成匹配,B与a完成匹配,而降低对于置信度的考虑。所以算法的根本目的并不是在于匹配的准不准,而是在于尽量多的匹配上,这是在deepsort中添加级联匹配与马氏距离与余弦距离的根本目的,因为仅仅使用匈牙利算法进行匹配特别容易造成ID switch,就是一个检测框id不停地进行更换,缺乏准确性与鲁棒性。针对匹配的置信度高这一标准,作者是使用IOU进行衡量,计算检测器与跟踪器的IOU,将这个作为置信度的高低。