本篇文章供自己学习回顾,其中错误希望指出!
先把目标跟踪中涉及到的名词抛出来:
1、卡尔曼滤波、
2、匈牙利匹配:https://blog.csdn.net/DeepCBW/article/details/124740092
3、马氏距离、
4、欧氏距离、
5、级联匹配、
6、代价矩阵
一、6个名词的概念理解;
二、要想彻底理解Deepsort,先要把sort彻底理解;
sort过程比较简单,先搬个图:
基于上图展开对sort的理解攻势:
1、给定视频原始帧(假设第一帧就有目标框);
2、运行目标检测器进行检测,获取目标检测框,分配初始轨迹;
3、轨迹卡尔曼滤波预测;
4、使用匈牙利算法将预测后的tracks和当前帧中的detecions进行匹配(IOU匹配);
5、卡尔曼滤波更新;
上述过程应该只有4这个过程承上启下,理解模糊。以下进行详细解释:
匈牙利算法 解决的是一个分配问题,在 MOT 主要步骤中的计算相似度的,得到了前后两帧的相似度矩阵。匈牙利算法就是通过求解这个相似度矩阵(iou),从而解决前后两帧真正匹配的目标。这部分 sklearn 库有对应的函数 linear_assignment 来进行求解。
SORT 算法中是通过前后两帧 IoU 来构建相似度矩阵,所以 SORT 计算速度非常快。
Detections 是通过目标检测器得到的目标框,Tracks是一段轨迹。核心是匹配的过程与卡尔曼滤波的预测和更新过程。
匈牙利的详细过程参考:https://zhuanlan.zhihu.com/p/459758723
https://zhuanlan.zhihu.com/p/90835266
三、6个部分在Deepsort中,是如何进行目标跟踪的;
DeepSORT的优化主要就是基于匈牙利算法里的这个代价矩阵。它在IOU Match之前做了一次额外的级联匹配,利用了reid外观特征和马氏距离。
级联匹配的具体过程如下图:
由上图可以看到,Cost Matrix 代价矩阵 是由以下两部分组成:
1、马氏距离 Mahalanobis Distance和余弦距离 Cosine Distance计算相似度矩阵,得到代价矩阵。
2、门控矩阵,用于限制代价矩阵中过大的值。
接下来详细讲解由相似度矩阵和门控矩阵怎样计算出来代价矩阵:
(1) 马氏距离
看追踪和检测的Bbox的状态向量的前四维度 cx,cy,r,h的接近程度。通常来说上下帧之间移动距离不会相差太远,所以坐标越接近就越可能是同一个目标。
如何衡量两者之间的距离呢,第一反应可能就是欧式距离了。
但是,cx,cy,h是像素级的数值,而 r 宽高比 是一个比例,可能是零点几的数值,所以四者之间数量级不一样有差距,而且他们之间也不是相互独立的,存在相关性(比如r和h)。直接用欧氏距离进行计算的话不合适。
DeepSORT采取马氏距离来计算,用马氏距离就需要提供cx,cy,r,h的协方差矩阵(在卡尔曼滤波中,卡尔曼滤波的测量方程,测量空间的协方差矩阵,卡尔曼更新过程中把协方差矩阵提供给数据关联),所以,协方差是干嘛的?就是用来求取马氏距离的;协方差代表什么?表示目标位置信息的不确定性,由8x8的对角矩阵表示,矩阵中数字越大则表明不确定性越大,可以以任意值初始化。马氏距离通过计算检测位置和平均追踪位置之间的标准差将状态测量的不确定性进行了考虑。
马氏距离相似度度量计算公式:
(2) 余弦距离
(3)代价矩阵
但注意也不是完全没用了,主要是通过阈值矩阵(Gate Matrix)对代价矩阵(Cost Matrix)做了一次阈值限制。
接下来就是数据关联,由上面的代价矩阵进行匈牙利匹配。
匈牙利匹配的详细过程码完代码再回来总结,解决为什么是三部分。文章来源:https://www.toymoban.com/news/detail-447592.html
参考:
https://zhuanlan.zhihu.com/p/133678626
https://zhuanlan.zhihu.com/p/97449724
https://blog.csdn.net/libo1004/article/details/115261950
https://blog.csdn.net/weixin_41761357/article/details/107375761文章来源地址https://www.toymoban.com/news/detail-447592.html
到了这里,关于目标跟踪:Deepsort--卡尔曼滤波、匈牙利匹配、马氏距离、欧氏距离、级联匹配、reid的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!