零基础学习Deepsort目标追踪

目录

多目标跟踪

deepsort目标跟踪

卡尔曼滤波

公式理解

目标追踪中预测和更新过程(结合代码理过程)

匈牙利匹配

Deepsort匹配过程,代价矩阵如何构建的(结合代码理清过程)

Deepsort追踪流程详解

Sort流程

Deepsort流程

整体流程

级联匹配

轨迹确认
 

多目标跟踪

多目标跟踪,一般简称为MOT(Multiple Object Tracking),也有一些文献称作MTT(Multiple Target Tracking)。在事先不知道目标数量的情况下,对视频中的行人、汽车、动物等多个目标进行检测并赋予ID进行轨迹跟踪。不同的目标拥有不同的ID,以便实现后续的轨迹预测、精准查找等工作。MOT从形式上分为Online(只考虑当前帧及之前的信息)和Batch(可以用到后面的帧的信息)两种模式,考虑实用性主要还是Online跟踪的方法。

deepsort目标跟踪

DeepSORT(Deep Simple Online Realtime Tracking)是一种在线的多目标跟踪算法,它能够实现连续帧中对同一个目标的关联,并对目标进行ID分配,以便在整个视频序列中对目标进行跟踪。DeepSort算法是对sort算法的该进,sort通过卡尔曼滤波来对系统中目标的运动进行建模预测轨迹,并使用匈牙利算法实现观测值和预测值之间的匹配。Deepsort算法对sort算法进行了优化,增加级联匹配过程,将目标的深度特征加入匹配过程中,并对追踪对象设置确认态和非确认态,减少了IDswitch问题,提升目标跟踪的准确性。

卡尔曼滤波

卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

卡尔曼滤波适用线性高斯系统:1)线性系统:满足叠加性和齐次性;2)高斯:噪声满足高斯分布。(直观理解,预测是连续或则间隔相同帧的目标,目标运动受外界噪声影响,影响是成高斯分布)

目标追踪中,可以将卡尔曼滤波看做一种运动模型,根据上一帧的目标追踪结果,预测当前帧结果,结合当前帧目标检测结果,得到当前帧的最优预测。

公式理解

过程:使用上一时刻的最优结果预测这一时刻的预测值,同时使用这一时刻观测值(传感器测得的数据)修正这一时刻预测值,得到这一时刻的最优结果

预测:上一时刻最有结果预测这一时刻的预测值,上一时刻最优估计值方差/协方差和超参数Q推出这一时刻预测值方差/协方差

更新:1)这一时刻预测协方差和超参数R推出卡尔曼增益Kt;2)这一时刻预测值、这一时刻观测值、卡尔曼增益推出这一时刻最优估计值,这一时刻预测协方差、卡尔曼增益推出这一时刻最优估计值方差/协方差

状态转移矩阵:更具上一时刻状态预测当前状态使用

协方差(P):预测状态中各变量的关系。

卡尔曼增益(K): 计算当前时刻状态使用

目标追踪中预测和更新过程(结合代码理过程)

状态向量mean = [x, y, a, h, vx, vy, va, vh], x, y分别表示目标中心点,a表示长宽比,h表示高,剩下四个分别是它们的导数(对应现实生活中的速度,初始为0)卡尔曼滤波进行预测时采用线性匀速模型,即认为框的移动和框的尺寸、形变的变化是线性匀速变化的。协方差矩阵covariance是一个8*8的矩阵,状态转移矩阵F,其实就是x, y, a, h加上他们的变化率

[[1. 0. 0. 0. 1. 0. 0. 0.]

 [0. 1. 0. 0. 0. 1. 0. 0.]

 [0. 0. 1. 0. 0. 0. 1. 0.]

 [0. 0. 0. 1. 0. 0. 0. 1.]

 [0. 0. 0. 0. 1. 0. 0. 0.]

 [0. 0. 0. 0. 0. 1. 0. 0.]

 [0. 0. 0. 0. 0. 0. 1. 0.]

 [0. 0. 0. 0. 0. 0. 0. 1.]]

预测和更新过程基本和上图公式一致。不断的更新状态向量mean和协方差covariance的过程。

匈牙利匹配

卡尔曼滤波只是根据预测值和观测值得到最优估计,但是当前时刻的观测值有很多,怎么将观测值和当前追踪到的目标进行关联?匈牙利匹配就是做这件事的。目标追踪中,匈牙利匹配做的就是将当前帧检测到的目标尽可能和理的分配给当前追踪目标。

原理:通过优化代价矩阵,完成检测目标和追踪目标之间的最优匹配,deepsort中代价矩阵包括:运动信息匹配(卡尔曼估计结果和当前检测结果),外观匹配(ReID)IOU匹配。(通过任务分配问题理解)

Deepsort匹配过程,代价矩阵如何构建的(结合代码理清过程)

Deepsort有两次匹配的过程:级联匹配和IOU匹配。级联匹配使用使用ReID特征计算余弦相似度、同时计算运动特征的马氏距离,两者一起构成匹配过程使用的代价矩阵。IOU匹配使用IOU距离作为代价矩阵,设置最大的IOU距离阈值,超过该阈值不进行匹配。

Deepsort追踪流程详解

Sort流程

sort(Simple Online and Realtime Tracking),简单的在线实时跟踪,不涉及到图像识别、特征匹配等算法。sort算法以目标检测结果作为输入,匈牙利算法进行目标匹配,并以卡尔曼进行目标预测,通过IOU也建立目标间的关系,其主要目的在于连续跟踪目标的ID,优点是跟踪速度快。基本流程如图:

Deepsort流程

DeepSort加入外观信息,借用了ReID领域模型来提取特征,减少了ID switch的情况。增加了级联匹配(Matching Cascade)+新轨迹的确认(confirmed)。整体流程如下:

整体流程
  1. 卡尔曼预测,预测当前时刻每个tracks的运动状态
  2. Tracks和当前帧的检测结果进行匹配:
  1. 确认状态的tracks和检测结果先进行级联匹配
  2. 没有匹配的tracks、非确认状态的tracks和没有匹配的检测框再进行IOU匹配
  1. 根据匹配结果进行卡尔曼滤波参数更新、删除tracks或者初始化新的tracks
级联匹配

确定状态的track集合和检测检测结果集首先进行级联匹配,级联匹配优先对max_age值小的track进行匹配,及越新的tracks(也即距离上一次被匹配上的帧数越短的),越优先匹配检测框。匹配的过程会对检测框和track预测框进行ReID提取图片特征,将特征矩阵加入到匹配时的代价矩阵中,度量两者的相似度。

级联匹配算法,相对于提升了每个预测器的寿命,不至于只要检测不到就会被删除。

轨迹确认

Deepsort中的tracks分为确认态和非确认态。非确认态的tracks在连续三次匹配到检测框后变为确认态

非确认态track:第一帧初始化的tracks,或者后续帧中未匹配到的检测框初始化的track,都是非确认态。非确认态的track如果在某一帧没有匹配到检测框,会被直接删除。

确认态track:非确认track在连续三次命中检测框后变为确认track,确认状态的track在后续连续max_age70帧未匹配后删除。确认状态的track会优先和检测框进行级联匹配。

给轨迹加入状态确认可以很好的解决Idswitch的问题。当某个轨迹是确认态时,就是你确认了该目标在视频中,但如果目标在视频中突然消失(如出现遮挡,变形等情况),因为你曾经确认过它曾在视频中,你不再会轻易地删除它(sort某一帧未匹配到检测框直接删除)

ReID:追踪过程中,每个追踪对象都会暂存最近帧一定数量(默认100帧)的目标特征。该特征通过一个小的特征提取网络获取,128维。当前帧检测到的目标提取特征,然后和每个追踪器保存的左右目标特征计算余弦相似度,取最小值作为检测目标和追踪目标的匹配度得分。

参考:

项目代码:GitHub - nwojke/deep_sort: Simple Online Realtime Tracking with a Deep Association Metric

B站项目代码详解:多目标跟踪DeepSORT论文介绍与代码逐行解读_哔哩哔哩_bilibili

卡尔曼滤波详解:卡尔曼滤波-CSDN博客

B站deepsort详解:28-3-任务本质分析_哔哩哔哩_bilibili

知乎deepsort详解:【小白学习笔记】(三)目标跟踪-DeepSORT - 知乎

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值