SORT与DeepSORT简介

这篇具有很好参考价值的文章主要介绍了SORT与DeepSORT简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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.数据关联。

二、SORT:Simple Online and Realtime Tracking

1、算法流程:

算法的核心是卡尔曼滤波和匈牙利算法,这两个算法比较偏数学,所以需要学习这两个算法的数学知识,比较有难度。

卡尔曼滤波的基本知识建议看这篇博客:https://blog.csdn.net/u010720661/article/details/63253509,本文不再对其进行数学证明。

匈牙利算法基本知识:https://blog.csdn.net/NIeson2012/article/details/94472313?ops_request_misc,本文不再对其算法细节进行讨论。

如图:
SORT与DeepSORT简介

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),面积 s s s,宽高比 r r r(SORT中认为 r r r是不变的常数,而DeepSORT认为其是一个变量),以及各自的速度变化值组成。

协方差 P P P:表示目标位置信息的不确定信息,由8×8的对角矩阵 P P P表示。

2.目标跟踪时,需要track在 t + 1 t+1 t+1时刻的状态(卡尔曼滤波器采用匀速模型和线性观测器模型)
x t + 1 = F x t P t + 1 = F P t F T + Q x_{t+1} = Fx_t \\ P_{t+1} = FP_tF^{T} + Q xt+1=FxtPt+1=FPtFT+Q
其中, F F F表示预测矩阵,在本算法(匀速模型: x t = x t − 1 + △ t x t − 1 ˙ x_t = x_{t-1} + \triangle t\dot{x_{t-1}} xt=xt1+txt1˙)中表示为:
F = [ 1 0 0 d t 0 0 0 0 1 0 0 d t 0 0 0 0 1 0 0 d t 0 0 0 0 1 0 0 d t 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 ] 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} F= 100000001000000010000dt0010000dt0010000dt0010000dt001
P P P是协方差矩阵为经验参数,初始状态为:
P = d i a g ( [ 2 σ p h , 2 σ p h , 1 e − 2 , 2 σ p h , 10 σ v h , 10 σ v h , 1 e − 5 ) P=diag([2\sigma_ph, 2\sigma_ph, 1e-2, 2\sigma_p h, 10 \sigma_vh, 10 \sigma_v h, 1e-5) P=diag([2σph,2σph,1e2,2σph,10σvh,10σvh,1e5)
Q是系统噪声,初始状态为:
Q = d i a g ( [ σ p h , σ p h , 1 e − 2 , σ p h , σ v h , σ v h , 1 e − 5 ) 2 Q = diag([\sigma_ph, \sigma_ph, 1e-2, \sigma_ph, \sigma_vh, \sigma_vh,1e-5)^2 Q=diag([σph,σph,1e2,σph,σvh,σvh,1e5)2

3.基于预测结果进行匹配并更新卡尔曼滤波器:

首先利用匈牙利算法关联卡尔曼滤波器的预测阶段(第2步)的估计结果和实际观测结果:若1.匹配成功则更新卡尔曼滤波器;2.匹配失败的跟踪轨迹视为丢失;3.匹配失败的观测量记为新增轨迹。

若匹配成功,则track根据匹配结果进行更新

a) H H H:测量矩阵,将track的均值向量 x ′ x' x映射到检测空间
H x ⇒ [ u v s r ] = [ 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 ] [ u v s r u ˙ 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 uvsr = 1000010000100001000000000000 uvsru˙v˙s˙
检测结果 z z z与track的均值误差:
y = z − H x ′ y=z - Hx' y=zHx

b)将协方差矩阵 P t + 1 P_{t+1} Pt+1映射到检测空间,加上噪声矩阵 R R R
S = H P ′ H T + R S=HP'H^{T} + R S=HPHT+R
其中,检测器噪声矩阵: R = d i a g ( [ σ p h , σ p h . 1 e − 1 , σ p h ] T ) 2 R=diag([\sigma_ph, \sigma_ph. 1e-1, \sigma_ph]^T)^2 R=diag([σph,σph.1e1,σph]T)2

c)计算卡尔曼增益 K K K(关于 K K K的定义请查看推荐博文):
K = P ′ H T S − 1 K = P'H^TS^{-1} K=PHTS1

d)计算跟新后的均值向量个协方差矩阵:
x = x ′ + K y P = ( I − K H ) P ′ x = x' + Ky \\ P = (I - KH)P' x=x+KyP=(IKH)P

e)进行下一轮的跟踪,直至当前轨迹跟踪结束。

3、匈牙利算法:

匈牙利算法在多目标跟踪中解决数据关联(检测框和预测框与实际框的匹配)的问题。

当前帧目标检测的框上一帧通过卡尔曼滤波预测的框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix)。而代价矩阵作为匈牙利算法的输入,得到线性的匹配结果。

缺点:造成了Sort算法无法解决行人重叠的问题。所以其IDSW(ID switch)这个指标很差。(IDSW(ID switch),对于同一个目标,由于跟踪算法误判,导致其ID发生切换的次数称为IDSW。跟踪算法中理想的ID switch应该为0。)且其直接丢弃掉IOU小于阈值的作法也导致了无法解决遮挡的问题。

4、总结:

1.SORT算法原文使用匀速直线运动模型,故在一些应用场景下可能不适用。
2.关联匹配中没有使用特征,造成物体间在重合度比较高的情况下会发生ID-Switch。
3.速度非常快而且计算量小。

二、DeepSORT

1、算法流程:

卡尔曼滤波+匈牙利算法+级联匹配+状态估计

其中,卡尔曼滤波和匈牙利算法在SORT中已经介绍,在此不在赘述

算法流程如图:
SORT与DeepSORT简介
DeepSORT算法在SORT算法的基础上增加了级联匹配(matching cascade)和状态估计(confirmed)。因此,本文只介绍级联匹配和状态估计。

DeepSORT相对SORT的主要改进为:

考虑两个目标遮挡的情况。匹配的目标的Track无法匹配Detection,目标暂时从图像中消失。之后被遮挡的目标再次出现的时候,应该让被遮挡的目标分配的ID不再变化,减少ID-Switch的次数。

2、Deep由来:

为了减少ID-Switch的次数,在跟踪框跟丢且max age仍没达到最大阈值时,track应保存该跟踪框的外观特征,以便其再出现时仍能对其跟踪。DeepSORT通过一个小型的CNN网络来提取跟踪目标的外观特征,在每次(每帧)检测+追踪后,进行一次物体外观特征的提取并保存。后面每执行一步,都要执行一次当前帧被检测物体外观特征之前存储的外观特征相似度计算,这个相似度将作为一个重要的判别依据(不是唯一的,因为作者说是将运动特征外观特征结合作为判别依据,这个运动特征就是SORT中卡尔曼滤波做的事)。
SORT与DeepSORT简介
如图,CNN网络最终输出为128维的特征向量。注意:DeepSORT的原文数据集是行人检测,在其他应用场景时可以修改网络输入框的大小。

3、状态估计

SORT与DeepSORT简介

对于一个轨迹,都计算当前帧距上次匹配成功帧的差值,该变量在卡尔曼滤波器predict的时候递增,在轨迹和detection关联的时候重置为0。

超过max age的轨迹被认为离开图片区域,从轨迹集合中删除,设置为删除状态。代码中max age默认值为70,是级联匹配中的循环次数。

如果detection没有和现有track匹配上的,那么将对这个detection进行初始化,转变为新的Track。新的Track初始化的时候的状态是未确定态,只有满足连续三帧都成功匹配,才能将未确定态转化为确定态。如果处于未确定态的Track没有在n_init帧中匹配上detection,将变为删除态,从轨迹集合中删除。

4、级联匹配

SORT与DeepSORT简介
如图:

1.上半部分计算相似度矩阵的方法使用了外观模型(ReID)和运动模型(马氏距离)来计算相似度,得到代价矩阵;另一个则是门控矩阵,用于限制代价矩阵中过大的值。
2.下半部分是级联匹配的数据关联步骤,匹配过程是一个循环(max_age个迭代,默认为70),从missing age=0到missage age=70的轨迹和Detection进行匹配,没有丢失过的轨迹优先被匹配,丢失较为较为久远的靠后匹配。通过这部分处理,可以重新将遮挡目标找回,降低被遮挡然后再出现目标发生的ID Switch次数。

运动特征:

使用马氏距离,衡量预测到的卡尔曼滤波状态和新获得的检测框之间的距离。
d 1 ( i , j ) = ( d j − y j ) T S i − 1 ( d j − y i ) d_1(i, j)=(d_j-y_j)^TS_i^{-1}(d_j-y_i) d1(i,j)=(djyj)TSi1(djyi)
其中: ( y i , S i ) (y_i,S_i) (yi,Si)表示第 i i i个跟踪分布(卡尔曼滤波分布)在测量空间的投影, y i y_i yi为均值, S i S_i Si为协方差。马氏距离通过测量卡尔曼滤波器的追踪位置均值(mean track location)之间的标准差与检测框来计算状态估计间的不确定性,即 d i ( i , j ) d_i(i, j) di(i,j)为第i个追踪分布和第j个检测框之间的马氏距离(不确定度)。对马氏距离设定一定的阈值,可以排除那些没有关联的目标,原文以倒卡方分布计算出来的95%置信区间作为阈值。

外观特征:

外观特征使用CNN残差网络提取,返回128维的特征向量。对于每个检测框(编号为j)内物体 d j d_j dj ,其128维度的向量设为 r j r_j rj ,该向量的模长为1,即 ∣ ∣ r j ∣ ∣ = 1 ||r_j||=1 ∣∣rj∣∣=1

接着作者对每个目标k创建了一个gallery,该gallery用来存储目标在每一帧中的外观特征(128维向量),论文中用 R k R_k Rk表示。注意,这里的k的含义是追踪的目标k,也就是object-in-track的序号,不是物体的ID号。 R k = { r k ( i ) } k = 1 ( L k ) R_k = \{r^{(i)}_{k}\}^{(L_k)}_{k=1} Rk={rk(i)}k=1(Lk)就是gallery。作者限定了 L k L_k Lk的大小最大为100,即最多只能存储目标 k k k时刻前100帧的目标外观特征。 i i i为跟踪的编号。

之后,获得检测框 j j j的外观特征 r j r_j rj,求解所有已知gallery中的外观特征与检测框(编号为 j j j)的外观特征的最小余弦距离。
d 2 ( i , j ) = m i n { 1 − r j T r k ( i ) ∣ r k ( i ) ∈ R i } d_2(i, j)=min\{ 1-r_j^Tr_k^{(i)} | r_k^{(i)} \in R_i \} d2(i,j)=min{1rjTrk(i)rk(i)Ri}
运动(motion)特征和外观(appearance)特征的融合:

motion提供了物体定位的可能信息,这在短期预测中非常有效;

appearance(余弦距离计算)可在目标被长期遮挡后恢复ID的编号。
C i , j = λ d 1 ( i , j ) + ( 1 − λ ) d 2 ( 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)
其中, d 1 d_1 d1为马氏距离, d 2 d_2 d2为余弦距离, λ \lambda λ为权重系数。

对刚初始化的目标等无法确认(匹配)的追踪,因为没有之前的运动信息和外观信息,采用IOU匹配关联进行追踪。

5、总结:

1.目标检测的效果对结果影响非常非常大,并且Recall和Precision都应该很高才可以满足要求。
2.表观特征:也就是ReID模型,原论文中用的是CNN残差神经网络,含有的参数量比较大,可以考虑用新的、性能更好、参数量更低的ReID模型来完成这部分工作。文章来源地址https://www.toymoban.com/news/detail-429956.html

到了这里,关于SORT与DeepSORT简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多目标跟踪MOT(Multiple Object Tracking)最全综述

    目录 1.MOT概念 2.研究难点 一个好的MOT 3.研究方法 3.1基于Tracking-by-detection的MOT 3.2 基于检测和跟踪联合的MOT 3.3 基于注意力机制的MOT 3.4FairMOT 3.5BytrTrack 4.评价指标 5.多目标追踪的主要步骤 5.1 sort流程 5.2 Deepsort 5.3strongsort 6.MOT数据集 6.1数据集的使用 6.2多目标跟踪指标评测 多目

    2023年04月09日
    浏览(37)
  • 【深度学习】SMILEtrack: SiMIlarity LEarning for Multiple Object Tracking,论文

    论文:https://arxiv.org/abs/2211.08824 代码:https://github.com/WWangYuHsiang/SMILEtrack 多目标跟踪(MOT)在计算机视觉领域得到广泛研究,具有许多应用。基于检测的跟踪(TBD)是一种流行的多目标跟踪范式。TBD包括第一步的目标检测以及后续的数据关联、轨迹生成和更新。我们提出了一

    2024年02月13日
    浏览(37)
  • 目标追踪(tracking)简介

    目标追踪是指通过计算机视觉技术,检测和追踪视频或图像中的特定目标的位置和动态变化。目标可以是人、车辆、动物或其他感兴趣的物体。目标追踪在许多领域都具有广泛的应用,如安防监控、交通监管、自动驾驶、虚拟现实等。 目标追踪通常涉及以下几个步骤: 目标

    2024年02月22日
    浏览(39)
  • 【深度学习MOT】SMILEtrack SiMIlarity LEarning for Multiple Object Tracking,论文

    论文:https://arxiv.org/abs/2211.08824 多目标跟踪(MOT)在计算机视觉领域得到广泛研究,具有许多应用。基于检测的跟踪(TBD)是一种流行的多目标跟踪范式。TBD包括首先进行目标检测,然后进行数据关联、轨迹生成和更新的步骤。我们提出了一种受Siamese网络启发的相似性学习模

    2024年02月13日
    浏览(31)
  • 【论文阅读】Know Your Surroundings: Exploiting Scene Information for Object Tracking

    发表时间 :2020 期刊会议 :ECCV 方向分类 : 目标跟踪 做了什么: 本文提出了一个能够在视频序列中传播目标附近场景信息的跟踪结构,这种场景信息被用来实现提高目标预测的场景感知能力。 解决了什么问题: 已存在的跟踪器只依靠外观来跟踪,没有利用任何周围场景中

    2024年04月23日
    浏览(58)
  • Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记

    无人机在各种应用中得到了广泛使用,例如航拍和军事安全,这得益于它们与固定摄像机相比的高机动性和广阔视野。多 无人机追踪系统可以通过从不同视角收集互补的视频片段 ,为目标提供丰富的信息,特别是当目标在某些视角中被遮挡或消失时。然而,在多无人机视觉

    2024年01月25日
    浏览(60)
  • 论文笔记(二十九):BundleSDF: Neural 6-DoF Tracking and 3D Reconstruction of Unknown Objects

    作者:Bowen Wen, Jonathan Tremblay, Valts Blukis, Stephen Tyree, Thomas Muller, Alex Evans, Dieter Fox, Jan Kautz, Stan Birchfield 来源:arXiv:2303.14158v1 [cs.CV] 24 Mar 2023 原文:https://arxiv.org/pdf/2303.14158.pdf 代码、数据和视频: https://bundlesdf.github.io/ 系列文章目录: 上一篇: https://blog.csdn.net/xzs1210652636?spm=

    2024年02月04日
    浏览(44)
  • 图像 跟踪 - MOTR: End-to-End Multiple-Object Tracking with Transformer (ECCV 2022)

    声明:此翻译仅为个人学习记录 文章信息 标题: MOTR: End-to-End Multiple-Object Tracking with Transformer (ECCV 2022) 作者: Fangao Zeng*, Bin Dong*, Yuang Zhang*, Tiancai Wang, Xiangyu Zhang, and Yichen Wei (*Equal contribution, **Corresponding author) 文章链接:https://arxiv.org/pdf/2105.03247.pdf 文章代码:https://github.co

    2024年02月13日
    浏览(42)
  • Center-based 3D Object Detection and Tracking(基于中心的3D目标检测和跟踪 / CenterPoint)论文笔记

    原文链接:https://arxiv.org/pdf/2006.11275.pdf         CenterPoint先使用基于激光雷达的主干网络如VoxelNet或PointPillars,压缩为BEV后,使用基于图像的关键点检测器寻找物体中心。然后对每个物体中心回归尺寸、朝向和速度。然后,第二阶段细化物体位置,提取估计的3D边界框每个

    2024年02月09日
    浏览(40)
  • 论文阅读:FoundationPose: Unified 6D Pose Estimation and Tracking of Novel Objects-6DoF位姿估计

    CVPR2024满分文章,英伟达团队工作。 文章地址:https://arxiv.org/pdf/2312.08344.pdf 代码地址:https://github.com/NVlabs/FoundationPose 提出FoundationPose,能用于6D位姿估计与跟踪,无论模型是否可用都支持。只需要CAD模型或少量参考图像就能进行zero-shot测试,泛化能力依靠大规模训练, LLM 和

    2024年04月29日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包