网站构建建设制作平台,外贸网站建设服务器,wordpress 映射 frp 群晖,最简单网站开发软件一、MOT( mutil-object tracking)步骤
在《DEEP LEARNING IN VIDEO MUTIL-OBJECT TEACKING: A SURVEY》这篇基于深度学习多目标跟踪综述中#xff0c;描绘了MOT问题的四个主要步骤 1.跟定视频原始帧 2.使用目标检测器如Faster-rcnn, YOLO, SSD等进行检测#xff0c;获取目标…一、MOT( mutil-object tracking)步骤
在《DEEP LEARNING IN VIDEO MUTIL-OBJECT TEACKING: A SURVEY》这篇基于深度学习多目标跟踪综述中描绘了MOT问题的四个主要步骤 1.跟定视频原始帧 2.使用目标检测器如Faster-rcnn, YOLO, SSD等进行检测获取目标检测框。 3.将所有目标框中对应的目标抠出来进行特征提取表观特征或者运动特征 4.进行相似度计算计算前后两帧目标之间的匹配程度前后属于同一个目标的之间距离比较小不同目标的距离比较大 5.数据关联为每一个对象分配目标ID 总结起来MOT算法主要为四个步骤1.检测2.特征提取运动预测3.相似度计算4.数据关联。
二、SORTSimple Online and Realtime Tracking
1、算法流程
算法的核心是卡尔曼滤波和匈牙利算法这两个算法比较偏数学所以需要学习这两个算法的数学知识比较有难度。
卡尔曼滤波的基本知识建议看这篇博客https://blog.csdn.net/u010720661/article/details/63253509本文不再对其进行数学证明。
匈牙利算法基本知识https://blog.csdn.net/NIeson2012/article/details/94472313?ops_request_misc本文不再对其算法细节进行讨论。
如图
2、卡尔曼滤波
基于传感器在目标跟踪中即目标检测器的测量值与跟踪器卡尔曼滤波的预测值实现更精确的跟踪目标估计。
卡尔曼滤波的假设变量都是随机的并且都服从高斯分布正态分布每一个变量都有一个均值μ\muμ表示随机分布的中心最可能的状态以及方差σ2\sigma^2σ2表示不确定性。
1.目标跟踪中需要track以下两个状态
均值μ\muμ表示目标的位置信息其由8维向量表示x[u,v,s,r,u˙,v˙,s˙]x[u, v, s, r, \dot{u}, \dot{v}, \dot{s}]x[u,v,s,r,u˙,v˙,s˙]分别为bbox的中心坐标(u,v)(u, v)(u,v)面积sss宽高比rrrSORT中认为rrr是不变的常数而DeepSORT认为其是一个变量以及各自的速度变化值组成。
协方差PPP表示目标位置信息的不确定信息由8×8的对角矩阵PPP表示。
2.目标跟踪时需要track在t1t1t1时刻的状态卡尔曼滤波器采用匀速模型和线性观测器模型 xt1FxtPt1FPtFTQx_{t1} Fx_t \\ P_{t1} FP_tF^{T} Q xt1FxtPt1FPtFTQ 其中FFF表示预测矩阵在本算法匀速模型xtxt−1△txt−1˙x_t x_{t-1} \triangle t\dot{x_{t-1}}xtxt−1△txt−1˙中表示为 F[100dt0000100dt0000100dt0000100dt000010000000100000001]F\begin{bmatrix} 1 0 0 dt 0 0 0 \\ 0 1 0 0 dt 0 0 \\ 0 0 1 0 0 dt 0 \\ 0 0 0 1 0 0 dt \\ 0 0 0 0 1 0 0 \\ 0 0 0 0 0 1 0 \\ 0 0 0 0 0 0 1 \\ \end{bmatrix} F100000001000000010000dt0010000dt0010000dt0010000dt001 PPP是协方差矩阵为经验参数初始状态为: Pdiag([2σph,2σph,1e−2,2σph,10σvh,10σvh,1e−5)Pdiag([2\sigma_ph, 2\sigma_ph, 1e-2, 2\sigma_p h, 10 \sigma_vh, 10 \sigma_v h, 1e-5) Pdiag([2σph,2σph,1e−2,2σph,10σvh,10σvh,1e−5) Q是系统噪声初始状态为 Qdiag([σph,σph,1e−2,σph,σvh,σvh,1e−5)2Q diag([\sigma_ph, \sigma_ph, 1e-2, \sigma_ph, \sigma_vh, \sigma_vh,1e-5)^2 Qdiag([σph,σph,1e−2,σph,σvh,σvh,1e−5)2
3.基于预测结果进行匹配并更新卡尔曼滤波器
首先利用匈牙利算法关联卡尔曼滤波器的预测阶段第2步的估计结果和实际观测结果若1.匹配成功则更新卡尔曼滤波器2.匹配失败的跟踪轨迹视为丢失3.匹配失败的观测量记为新增轨迹。
若匹配成功则track根据匹配结果进行更新
a)HHH测量矩阵将track的均值向量x′xx′映射到检测空间 Hx⇒[uvsr][1000000010000000100000001000][uvsru˙v˙s˙]Hx \Rightarrow \begin{bmatrix}u\\ v\\s\\r \end{bmatrix} \begin{bmatrix} 1 0 0 0 0 0 0 \\ 0 1 0 0 0 0 0 \\ 0 0 1 0 0 0 0 \\ 0 0 0 1 0 0 0 \end{bmatrix} \begin{bmatrix} u\\v\\s\\r\\\dot{u}\\\dot{v}\\\dot{s}\\ \end{bmatrix} Hx⇒uvsr1000010000100001000000000000uvsru˙v˙s˙ 检测结果zzz与track的均值误差 yz−Hx′yz - Hx yz−Hx′
b)将协方差矩阵Pt1P_{t1}Pt1映射到检测空间加上噪声矩阵RRR SHP′HTRSHPH^{T} R SHP′HTR 其中检测器噪声矩阵Rdiag([σph,σph.1e−1,σph]T)2Rdiag([\sigma_ph, \sigma_ph. 1e-1, \sigma_ph]^T)^2Rdiag([σph,σph.1e−1,σph]T)2
c)计算卡尔曼增益KKK关于KKK的定义请查看推荐博文 KP′HTS−1K PH^TS^{-1} KP′HTS−1
d)计算跟新后的均值向量个协方差矩阵 xx′KyP(I−KH)P′x x Ky \\ P (I - KH)P xx′KyP(I−KH)P′
e)进行下一轮的跟踪直至当前轨迹跟踪结束。
3、匈牙利算法
匈牙利算法在多目标跟踪中解决数据关联检测框和预测框与实际框的匹配的问题。
将当前帧目标检测的框和上一帧通过卡尔曼滤波预测的框一一进行IOU匹配再通过IOU匹配的结果计算其代价矩阵cost matrix。而代价矩阵作为匈牙利算法的输入得到线性的匹配结果。
缺点造成了Sort算法无法解决行人重叠的问题。所以其IDSWID switch这个指标很差。IDSWID switch对于同一个目标由于跟踪算法误判导致其ID发生切换的次数称为IDSW。跟踪算法中理想的ID switch应该为0。且其直接丢弃掉IOU小于阈值的作法也导致了无法解决遮挡的问题。
4、总结
1.SORT算法原文使用匀速直线运动模型故在一些应用场景下可能不适用。 2.关联匹配中没有使用特征造成物体间在重合度比较高的情况下会发生ID-Switch。 3.速度非常快而且计算量小。
二、DeepSORT
1、算法流程
卡尔曼滤波匈牙利算法级联匹配状态估计
其中卡尔曼滤波和匈牙利算法在SORT中已经介绍在此不在赘述
算法流程如图 DeepSORT算法在SORT算法的基础上增加了级联匹配(matching cascade)和状态估计(confirmed)。因此本文只介绍级联匹配和状态估计。
DeepSORT相对SORT的主要改进为
考虑两个目标遮挡的情况。匹配的目标的Track无法匹配Detection目标暂时从图像中消失。之后被遮挡的目标再次出现的时候应该让被遮挡的目标分配的ID不再变化减少ID-Switch的次数。
2、Deep由来
为了减少ID-Switch的次数在跟踪框跟丢且max age仍没达到最大阈值时track应保存该跟踪框的外观特征以便其再出现时仍能对其跟踪。DeepSORT通过一个小型的CNN网络来提取跟踪目标的外观特征在每次每帧检测追踪后进行一次物体外观特征的提取并保存。后面每执行一步都要执行一次当前帧被检测物体外观特征与之前存储的外观特征的相似度计算这个相似度将作为一个重要的判别依据不是唯一的因为作者说是将运动特征与外观特征结合作为判别依据这个运动特征就是SORT中卡尔曼滤波做的事。 如图CNN网络最终输出为128维的特征向量。注意DeepSORT的原文数据集是行人检测在其他应用场景时可以修改网络输入框的大小。
3、状态估计 对于一个轨迹都计算当前帧距上次匹配成功帧的差值该变量在卡尔曼滤波器predict的时候递增在轨迹和detection关联的时候重置为0。
超过max age的轨迹被认为离开图片区域从轨迹集合中删除设置为删除状态。代码中max age默认值为70是级联匹配中的循环次数。
如果detection没有和现有track匹配上的那么将对这个detection进行初始化转变为新的Track。新的Track初始化的时候的状态是未确定态只有满足连续三帧都成功匹配才能将未确定态转化为确定态。如果处于未确定态的Track没有在n_init帧中匹配上detection将变为删除态从轨迹集合中删除。
4、级联匹配 如图
1.上半部分计算相似度矩阵的方法使用了外观模型(ReID)和运动模型(马氏距离)来计算相似度得到代价矩阵另一个则是门控矩阵用于限制代价矩阵中过大的值。 2.下半部分是级联匹配的数据关联步骤匹配过程是一个循环(max_age个迭代默认为70)从missing age0到missage age70的轨迹和Detection进行匹配没有丢失过的轨迹优先被匹配丢失较为较为久远的靠后匹配。通过这部分处理可以重新将遮挡目标找回降低被遮挡然后再出现目标发生的ID Switch次数。
运动特征
使用马氏距离衡量预测到的卡尔曼滤波状态和新获得的检测框之间的距离。 d1(i,j)(dj−yj)TSi−1(dj−yi)d_1(i, j)(d_j-y_j)^TS_i^{-1}(d_j-y_i) d1(i,j)(dj−yj)TSi−1(dj−yi) 其中(yi,Si)(y_i,S_i)(yi,Si)表示第iii个跟踪分布卡尔曼滤波分布在测量空间的投影yiy_iyi为均值SiS_iSi为协方差。马氏距离通过测量卡尔曼滤波器的追踪位置均值mean track location之间的标准差与检测框来计算状态估计间的不确定性即 di(i,j)d_i(i, j)di(i,j)为第i个追踪分布和第j个检测框之间的马氏距离不确定度。对马氏距离设定一定的阈值可以排除那些没有关联的目标原文以倒卡方分布计算出来的95%置信区间作为阈值。
外观特征
外观特征使用CNN残差网络提取返回128维的特征向量。对于每个检测框编号为j内物体djd_jdj 其128维度的向量设为 rjr_jrj 该向量的模长为1即 ∣∣rj∣∣1||r_j||1∣∣rj∣∣1。
接着作者对每个目标k创建了一个gallery该gallery用来存储目标在每一帧中的外观特征128维向量论文中用RkR_kRk表示。注意这里的k的含义是追踪的目标k也就是object-in-track的序号不是物体的ID号。Rk{rk(i)}k1(Lk)R_k \{r^{(i)}_{k}\}^{(L_k)}_{k1}Rk{rk(i)}k1(Lk)就是gallery。作者限定了LkL_kLk的大小最大为100即最多只能存储目标kkk时刻前100帧的目标外观特征。iii为跟踪的编号。
之后获得检测框jjj的外观特征rjr_jrj求解所有已知gallery中的外观特征与检测框编号为jjj的外观特征的最小余弦距离。 d2(i,j)min{1−rjTrk(i)∣rk(i)∈Ri}d_2(i, j)min\{ 1-r_j^Tr_k^{(i)} | r_k^{(i)} \in R_i \} d2(i,j)min{1−rjTrk(i)∣rk(i)∈Ri} 运动(motion)特征和外观(appearance)特征的融合:
motion提供了物体定位的可能信息这在短期预测中非常有效
appearance余弦距离计算可在目标被长期遮挡后恢复ID的编号。 Ci,jλd1(i,j)(1−λ)d2(i,j)C_{i, j} \lambda d_1(i, j) (1 - \lambda)d_2(i, j) Ci,jλd1(i,j)(1−λ)d2(i,j) 其中d1d_1d1为马氏距离d2d_2d2为余弦距离λ\lambdaλ为权重系数。
对刚初始化的目标等无法确认匹配的追踪因为没有之前的运动信息和外观信息采用IOU匹配关联进行追踪。
5、总结
1.目标检测的效果对结果影响非常非常大并且Recall和Precision都应该很高才可以满足要求。 2.表观特征也就是ReID模型原论文中用的是CNN残差神经网络含有的参数量比较大,可以考虑用新的、性能更好、参数量更低的ReID模型来完成这部分工作。