最详细DeepSort论文解读

参考: https://blog.csdn.net/HaoBBNuanMM/article/details/85555547 [参考文章]

1 摘要

DeepSort是在Sort目标追踪基础上的改进。引入了在行人重识别数据集上离线训练的深度学习模型,在实时目标追踪过程中,提取目标的表观特征进行最近邻匹配,可以改善有遮挡情况下的目标追踪效果。同时,也减少了目标ID跳变的问题。

2 核心思想

算法的核心思想还是用一个传统的单假设追踪方法,方法使用了递归的卡尔曼滤波和逐帧的数据关联。

2.1 轨迹处理和状态估计

该部分的思路和sort很接近。

  • 运动状态估计:

使用8个参数
在这里插入图片描述
来进行运动状态的描述,其中(u,v)是bounding box的中心坐标,r是长宽比,h表示高度。其余四个变量表示对应的在图像坐标系中的速度信息。使用一个基于常量速度模型和线性观测模型的标准kalman滤波器进行目标运动状态的预测,预测的结果为(u,v,r,h)。

  • 目标的创建与移除
    对每一个追踪目标,记录自其上一次检测结果与追踪结果匹配之后的帧数 a k a_k ak ,一旦一个目标的检测结果与追踪结果正确关联之后,就将该参数设置为0。如果 a k a_k ak 超过了设置的最大阈值 A m a x A_{max} Amax,则认为对该目标的追踪过程已结束。对新目标出现的判断则是,如果某次检测结果中的某个目标始终无法与已经存在的追踪器进行关联,那么则认为可能出现了新目标。如果连续的3帧中潜在的新的追踪器对目标位置的预测结果都能够与检测结果正确关联,那么则确认是出现了新的运动目标;如果不能达到该要求,则认为是出现了“虚警”,需要删除该运动目标。
2.2 指派问题

传统的解决检测结果与追踪预测结果的关联的方法是使用匈牙利方法。本文作者同时考虑了运动信息的关联和目标外观信息的关联。

  • 运动信息的关联:使用了对已存在的运动目标的运动状态的kalman预测结果与检测结果之间的马氏距离进行运行信息的关联。在这里插入图片描述
    d j表示第j个检测框的位置, y i y_i yi表示第i个追踪器对目标的预测位置, S i S_i Si表示检测位置与平均追踪位置之间的协方差矩阵。马氏距离通过计算检测位置和平均追踪位置之间的标准差将状态测量的不确定性进行了考虑。如果某次关联的马氏距离小于指定的阈值 t ( 1 ) t^{(1)} t(1),则设置运动状态的关联成功。使用的函数为
    在这里插入图片描述
    作者设置 t ( 1 ) = 9.4877 t^{(1)}=9.4877 t(1)=9.4877

  • 当运动的不确定性很低的时候,上述的马氏距离匹配是一个合适的关联度量方法,但是在图像空间中使用kalman滤波进行运动状态估计只是一个比较粗糙的预测。特别是相机存在运动时会使得马氏距离的关联方法失效,造成出现ID switch的现象。因此作者引入了第二种关联方法,对每一个的检测块 d j d_j dj 求一个特征向量 r i r_i ri ,限制条件是 ∣ ∣ r i ∣ ∣ = 1 ||r_i||=1 ri=1。作者对每一个追踪目标构建一个gallary,存储每一个追踪目标成功关联的最近100帧的特征向量。那么第二种度量方式就是计算第i个追踪器的最近100个成功关联的特征集与当前帧第j个检测结果的特征向量间的最小余弦距离。计算公式为:在这里插入图片描述
    物体检测BBox dj 通过CNN网络计算对应的128维feature向量rj 称为appearance descriptor

具体的做法是把物体检测BBox dj 对应的图像patch作为下图的CNN输入,输出128维feature向量rj
在这里插入图片描述

  • 对于跟踪器i,为它创建一个集合在这里插入图片描述保留它过去Lk 次成功跟踪后物体检测Bbox对应的Lk 个Feature向量集合,公式(2)是在计算第i个物体跟踪的所有Feature向量和第j个物体检测之间的最小余弦距离(具体含义参考下图)

  • 当两者距离≤特定阈值,则表示两者关联 在这里插入图片描述

在这里插入图片描述

如果上面的距离小于指定的阈值,那么这个关联就是成功的。阈值是从单独的训练集里得到的。

  • 使用两种度量方式的线性加权作为最终的度量在这里插入图片描述
    只有 c i , j c_{i,j} ci,j位于两种度量阈值的交集内时,才认为实现了正确的关联。距离度量对短期的预测和匹配效果很好,但对于长时间的遮挡的情况,使用外观特征的度量比较有效。对于存在相机运动的情况,可以设置 λ = 0 \lambda = 0 λ=0
2.3 级联匹配

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

所以,作者使用了级联匹配来对更加频繁出现的目标赋予优先权,具体的算法如下图:
在这里插入图片描述
级联匹配的核心思想就是由小到大对消失时间相同的轨迹进行匹配,这样首先保证了对最近出现的目标赋予最大的优先权,也解决了上面所述的问题。在匹配的最后阶段还对unconfirmed和age=1的未匹配轨迹和检测目标进行基于IoU的匹配。这可以缓解因为表观突变或者部分遮挡导致的较大变化。当然有好处就有坏处,这样做也有可能导致一些新产生的轨迹被连接到了一些旧的轨迹上。但这种情况较少。

以下是步骤:
T是物体跟踪集合

D是物体检测集合

1.C矩阵存放所有物体跟踪i与物体检测j之间距离的计算结果
2.B矩阵存放所有物体跟踪i与物体检测j之间是否关联的判断(0/1)
3.关联集合M初始化为{}
4.将找不到匹配的物体检测集合初始化为D
5.从刚刚匹配成功的跟踪器循环遍历到最多已经有Amax 次没有匹配的跟踪器
6.选择满足条件的跟踪器集合Tn
7.根据最小成本算法计算出Tn与物体检测j关联成功产生集合[xi,j]
8.更新M为匹配成功的(物体跟踪i,物体检测j) 集合
9.从U中去除已经匹配成功的物体检测j
10.循环
11.返回 M U 两个集合

2.4 深度特征描述器

网络结构:
在这里插入图片描述

在行人重识别数据集上离线训练残差网络模型。输出128维的归一化的特征。在GTX1050m显卡上,输入32个bounding box提取特征的时间约为30ms。预训练的模型和代码位于 https://github.com/nwojke/deep_sort 。

作者使用《Poi:Multiple object tracking with high performance detection and appearance feature》文章训练的高性能faster rcnn模型进行检测。检测的置信度阈值设置为0.3。 λ = 0 , A m a x = 30 \lambda = 0,A_{max} = 30 λ=0,Amax=30

和sort对比,好处是:

  • 减少了45%的ID switch;

  • 结合了深度外观信息,对遮挡目标的追踪效果大大提升;

  • FP的升高很多,文章中提出这主要是由于静态场景中detection的错误以及过长的允许丢失的track age所导致的(相对于SORT只用相邻帧进行匹配来说,Deep SORT允许高达30帧的丢失,而Kalman的等速运动模型没有改变,这主要造成了FP的升高)。

  • 20Hz,依旧实用;

  • 达到了state-of-art online tracking的效果。

以下是deepsort的工作过程
在这里插入图片描述
1.读取当前帧目标检测框的位置以及各检测框图像块的深度特征。(这里实际处理时要自己来提取)

2 根据置信度对检测框过滤,对置信度不够高的检测框和特征予以删除

3.对检测框进行非极大抑制,消除一个目标多个框(这里如果用python的接口,可以省去着一个环节)

4 预测:使用kalman滤波预测目标在当前帧的位置

转自:https://blog.csdn.net/cdknight_happy/article/details/79731981

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值