目标跟踪之Deepsort:SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

DeepSORT是对SORT的改进,引入了深度关联度量以解决目标匹配的身份变换问题。通过卡尔曼滤波和特征向量计算,结合运动和外观信息进行目标跟踪。级联匹配策略确保了长期遮挡后目标的正确恢复,同时对新出现和消失的目标进行有效管理。该算法提高了跟踪的稳定性和准确性。
摘要由CSDN通过智能技术生成

Deepsort:SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

Nicolai Wojke†, Alex Bewley, Dietrich Paulus†
University of Koblenz-Landau†, Queensland University of Technology
ICIP2017
是SORT的进化,SORT在使用匈牙利算法进行目标匹配时,只使用简单的IOU距离度量,并没有使用两个待匹配框之间的特征相似度,所以可能出现身份变换(跳变) 的情况。

1.DEEP ASSOCIATION METRIC深度关联性度量(匈牙利算法所需)

原文作者设置的frame—k是三,在前三帧内没有成功关联到测量的轨迹将被删除。

1.1属性选取

和sort类似,作者使用卡尔曼滤波,替换了状态域的属性:
在这里插入图片描述
(u,v)是bounding box的中心坐标,r是长宽比,h表示高度。其余四个变量表示对应的在图像坐标系中的运动趋势(状态)。

1.2运动信息

为了整合运动信息,作者使用预测卡尔曼状态和新测量值之间的马氏距离的平方来度量。
请添加图片描述
在这里插入图片描述

d_j 表示第j个检测框的位置,y_i 表示第i个追踪器对目标的预测位置,S_i表示检测位置与平均追踪位置μ之间的协方差矩阵。马氏距离通过计算检测位置和平均追踪位置之间的标准差,将状态估计的的不确定性进行了度量。
用χ2分布来对马氏距离进行阈值化,排除掉很有可能没关联的匹配,作者设置的阈值是95%。

**χ2分布:**主要用来检验统计样本的实际观测值与理论推断值之间的偏离程度。如果卡方值越大,二者偏离差程度越大
在这里插入图片描述
A代表“实际频数”,T代表“理论频数”。

1.3特征信息

当运动的不确定性很低的时候(运动信息不会产生强间隔强链接),作者又提出一个外观描述符(特征向量,应用一个预先训练的CNN来计算边界框的外观描述符的)r_j,其要求二范数为1。每个流都要求要求至少保留100帧这种外观描述符(类似骨骼要求要有40个信息),第二种度量方式就是计算第i个追踪器的最近100个成功关联的特征向量与当前帧第j个检测结果的特征向量间的最小余弦距离。余弦距离也对长期的遮挡不是很敏感,有利于利用特征信息快速恢复身份的匹配。
请添加图片描述

请添加图片描述
如果上面的距离小于指定的阈值,那么这个关联就是成功的。阈值是从单独的训练集里得到的(有后验的超参)。

1.4结合

度量
请添加图片描述
距离度量对短期的预测和匹配效果很好,但对于长时间的遮挡的情况,使用外观特征的度量比较有效。相机也运动的情况,可以设置λ = 0
阈值
请添加图片描述

1.5级联匹配Matching Cascade

当一个目标长时间被遮挡之后,kalman滤波预测的不确定性就会大大增加,状态空间内的可观察性就会大大降低。
假如,此时两个追踪器竞争同一个检测结果的匹配权,往往遮挡时间较长的那条轨迹因为长时间未更新位置信息,追踪预测位置的不确定性更大,即协方差会更大,马氏距离计算时使用了协方差的倒数,因此马氏距离会更小,因此使得检测结果更可能和遮挡时间较长的那条轨迹相关联,这种不理想的效果往往会破坏追踪的持续性。
因此,作者使用了级联匹配来对更加频繁出现的目标和越新的被匹配的目标赋予优先权。
确定态:当卡尔曼滤波得到的结果,和检测得到的结果可以握手三次(超参)就可以确定该目标该时刻是确定态。当一个确定态连续三十次没检测框可以握手就转换成不确定态度(超参)
不确定态:所有的目标在刚开始的时候都是不确定态,通过握手次数来转换状态、
请添加图片描述

1.6算法流程

1.6.1匹配

在这里插入图片描述
1)从预测(Tracks)开始,由于每一时刻的track Bbox组在一起就相当于构成一组轨迹,所以写的是复数tracks,并且后文都会称跟踪的Bbox为轨迹;
2)经过kalman滤波预测后,会对当前帧预测一个轨迹Bbox,先不看unconfirmed,假如预测出的是confirmed(对于confirmed和unconfirmed,是用来区别跟踪的目标是不是一个东西,比如一个杂七杂八的背景那就是unconfirmed,真真切切的人或者车就是confirmed);
3)对当前帧进行detection,然后将detection Bboxs结果和预测的confirmed track Bbox进行级联匹配;
4)匹配完成后,更新跟踪的bbox(卡尔曼滤波预测的Bbox)。这里要注意,更新和匹配不是在时刻上顺延的(不是T2时刻匹配,T3时刻更新的关系),而是在下一帧时刻需要完成的两项流程(T2时刻匹配,继续在T2时刻更新)。
5)更新后,对当前帧预测,下一帧观测,并更新;再预测,下一帧观测,更新

1.6.2级联不匹配tracks_nums != detections_nums

在这里插入图片描述
处理方法就是对匹配失败的tracks和匹配失败的detection进行IOU匹配。如果能匹配成功

1.6.3IOU不匹配之tracks_nums < detections_nums

在这里插入图片描述
detections匹配失败的原因可能是新出现的目标在之前没有它的轨迹tracks,或者长时遮挡的也没有轨迹tracks,所以对其建立一个new tracks,前面也提到,tracks都会设置confirmed/unconfirmed,对于新建立的tracks,尚未确定是否就是真切存在的,万一是检测错的杂七杂八呢,所以将其设置为unconfirmed,并对其进行三次考察,如果是实际目标修改为confirmed

1.6.4IOU不匹配之tracks_nums > detections_nums

在这里插入图片描述

对于再次匹配依然失败的tracks,前面讨论过可能是检测器漏检了目标,此时看其是否是confirmed,如果是unconfirmed,将其删除;反之,为其设置寿命,在寿命时间之内都没发生变化(>max_age,30)则将其delete,认为其已移出镜头;如果寿命之内(<max_age),同样对其进行三次考察,是否是跟踪的杂七杂八

or
在这里插入图片描述

(1)将第一帧次检测到的结果创建其对应的Tracks。将卡尔曼滤波的运动变量初始化,通过卡尔曼滤波预测其对应的框框。这时候的Tracks一定是unconfirmed的。

(2)将该帧目标检测的框框和第上一帧通过Tracks预测的框框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。

(3)将(2)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。

(4)反复循环(2)-(3)步骤,直到出现确认态(confirmed)的Tracks或者视频帧结束。

(5)通过卡尔曼滤波预测其确认态的Tracks和不确认态的Tracks对应的框框。将确认态的Tracks的框框和是Detections进行级联匹配(之前每次只要Tracks匹配上都会保存Detections其的外观特征和运动信息,默认保存前100帧,利用外观特征和运动信息和Detections进行级联匹配,这么做是因为确认态(confirmed)的Tracks和Detections匹配的可能性更大)。

(6)进行级联匹配后有三种可能的结果。第一种,Tracks匹配,这样的Tracks通过卡尔曼滤波更新其对应的Tracks变量。第二第三种是Detections和Tracks失配,这时将之前的不确认状态的Tracks和失配的Tracks一起和Unmatched Detections一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。

(7)将(6)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。

(8)反复循环(5)-(7)步骤,直到视频帧结束。

参考:
https://zhuanlan.zhihu.com/p/97449724
https://blog.csdn.net/weixin_41761357/article/details/107360483
https://blog.csdn.net/cdknight_happy/article/details/79731981

2.展望

SORT出现打破了之前只能用孪生的局限,为我们又提供一个思路去做追踪问题。就是使用匈牙利算法来解决目标匹配问题,之前是一直用全连接或者全卷积来做预测,利用置信度信息,现在是直接利用距离代价矩阵。
个人感觉20年之后的论文突破变得很少,各大期刊或者会议收录的文章更多体现的工作量,而不是给人眼前一亮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值