DeepSort中的Assignment Problem

DeepSort中的Assignment Problem

论文中这一章讲的是如何衡量tracks和detections的相似度度量问题
论文采用了两种度量方法

方法一:马氏距离

计算公式如下:
在这里插入图片描述
其中 y i y_i yi是预测框, d j d_j dj是检测框, S i S_i Si是协方差矩阵,也就是卡尔曼滤波中的 P P P
在跟踪任务中,该距离衡量的是从 ( u , v , r , h ) (u,v,r,h) (u,v,r,h)维度,预测框和检测框的差异

方法二:特征值欧氏距离

也就是预测框和检测框对应目标的图像特征的欧氏距离,如果特征是128维,那么这个距离就是两个128维的向量间的欧式距离

实操

那么deepsort是如何使用这两种距离进行预测框和检测框的匹配的呢?
当前任务已跟踪到的目标有两种类型:confirmed和unconfirmed,一个检测框如果没有匹配到预测框,那么它会初始化成为一个新的跟踪目标,此时是unconfirmed,当它在下一帧生成预测框后寻找匹配的检测框时,使用的是IOU,也就是看谁跟他最近,重合度最好,如此一来,如果连续多帧该目标都匹配上了检测框,使其“跟踪行为”得到了延续,那么这个跟踪目标就会变为confirmed(一般连续3帧都匹配到目标,就会变为confirmed)

变为confirmed的跟踪目标就不能简单使用IOU进行匹配了,这时我们的马氏距离和特征欧式距离就登场了,deepsort源码的做法是:首先对所有confirmed跟踪目标根据卡尔曼滤波算法计算出一个预测框,然后计算每个检测框和每个跟踪目标的特征欧式距离,注意这是一个距离矩阵,如果每个跟踪目标保存了过去n帧的目标信息,而现在有m个检测框,那么该矩阵的形状为 ( m , n ) (m,n) (m,n),我们称该矩阵为cost_matrix吧,先放在这里

计算每个预测框和检测框的马氏距离,这个距离同理也是一个 ( m , n ) (m,n) (m,n)的矩阵,这时我们引入一个阈值,且称为gating_threshold吧,我们相信距离大于这个阈值的检测框和预测框不会是match的,因此我们将所有大于这个阈值的位置记录下来,然后将cost_matrix中对应位置的值设为无穷大。这是什么意思呢?相当于用马氏距离做了一次筛选,马氏距离太远的,我们忽略其特征相似性,经过筛选后,就可以直接用cost_matrix进行衡量目标间相似性了,该矩阵就可以作为匈牙利算法的输入,最后得到匹配的结果。

一个尾巴

故事进行到这里,应该还有一个疑问,就是马氏距离筛选用的阈值gating_threshold怎么设定?对于这个问题,以下是个人的理解,如有谬误,十分欢迎提出和指证。
我们可以将马氏距离看做一组经过修正的随机变量的欧氏距离,欧式距离也就是各维度变量的平方和,经过修正之后的各变量,可以看作一组独立但是符合同一正态分布的变量。多个独立的符合正态分布的变量的平方和服从什么分布呢?卡方分布
所以论文中选择9.4877里由来就明晰了:选择自由度为4(u,v,r,h 4个维度)的卡方分布的置信度为95%的置信上界,也就是9.4877。
这里可以这么理解:如果该检测框和预测框是匹配的,那么他们的各维度值(u,v,r,h)必然独自来源于同一分布,如果不匹配,比如值相差很大,则分布的参数肯定不一样,也就不是同一分布,那既然是同一分布,那马氏距离也必然符合卡方分布,他们有95%的概率小于9.4877,这也就是设定阈值的依据。

最后的最后

deepsort算法涉及卡尔曼滤波算法、目标关联度量、级联操作、匈牙利算法,堪称一套经典目标跟踪pipeline,本人撰写的文章也仅限于本人对一些自认为难点部分的解读,如果对deepsort流程感兴趣的同学,十分推荐这一篇文章,堪称保姆级流程解说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值