DSST(Discriminative Scale Space Tracker)

题目:Accurate Scale Estimation for Robust Visual Tracking
来源:BMVC 2014 (VOT2014 Benchmark第一名)
作者:Martin Danelljan,林雪平大学

1. 基本介绍

  提出了一种在tracking-by-detection框架下的目标尺度估计算法。算法基于尺度金字塔描述来学习DCF(判别式相关滤波),分别学习尺度估计滤波器、位置滤波器两个不同的滤波器。相较于全面的尺度搜索方法(也是本文所提出,比较耗时),快速尺度跟踪方法性能提升显著,并能够方便的融入到其他没有尺度估计的跟踪算法中。

2. DCF (Discriminative Correlation Filters)

 位置估计的方法基于MOSSE跟踪方法,算法通过学习得到一个位置的相关滤波器,用这个滤波器来确定目标在下一帧的位置。MOSSE使用的是灰度图像。fif_ifi​为训练图像,gig_igi​为期望的高斯相应,hth_tht​为第ttt帧时待求的滤波器(详细情况可参阅MOSSE算法总结)。通过在傅里叶频域中最小化误差项εεε,
(2.1)ε=∑j=1t∥ht⋆fi−gj∥2=1MN∑j=1t∥Ht∗Fj−Gj∥2\varepsilon=\sum_{j=1}^{t}\| h_t \star f_i - g_j \|^2 =\frac{1}{MN}\sum_{j=1}^{t}{\| H^{*}_{t}F_{j}-G_{j} \|^2} \tag{2.1}ε=j=1∑t​∥ht​⋆fi​−gj​∥2=MN1​j=1∑t​∥Ht∗​Fj​−Gj​∥2(2.1)
可求解得到第t帧的滤波器(使用ttt个样本)
(2.2)Ht=∑j=1tGj∗Fj∑j=1tFj∗Fj.H_t=\frac{\sum_{j=1}^{t}{G^*_jF_j}}{\sum_{j=1}^{t}{F^*_jF_j}}. \tag{2.2}Ht​=∑j=1t​Fj∗​Fj​∑j=1t​Gj∗​Fj​​.(2.2)
通过对过去帧的检测结果加权平均来取代直接的ΣΣΣ求和。当在当前帧内M×NM×NM×N大小的检测区域 ZZZ 进行检测时,检测结果为
(2.3)y=F−1{Ht∗Z}.y=\mathcal{F}^{-1}\{ H^*_t Z \}. \tag{2.3}y=F−1{Ht∗​Z}.(2.3)
新目标的估计位置即为相关分数矩阵yyy的最大值位置。

3. 算法介绍

3.1 Discriminative Correlation Filters for Multidimensional Features(多维特征的DCF)

使用深度d=28d=28d=28的特征fff(27维fhog特征+1维灰度原始特征,每层特征记为lll ),并加上汉明窗,期望响应输出ggg为二维高斯函数,每层特征对应一个二维的位置滤波器hlh^lhl(hlh^lhl,flf^lfl,ggg尺寸相等)。
(3.1)ε=∥∑l=1dhl⋆fl−g∥2+λ∑l=1d∥hl∥2.\varepsilon=\left \| \sum_{l=1}^{d}{h^l\star f^l-g} \right \|^2+\lambda\sum_{l=1}^{d}{\left \|h^l\right \|^2}. \tag{3.1}ε=∥∥∥∥∥​l=1∑d​hl⋆fl−g∥∥∥∥∥​2+λl=1∑d​∥∥​hl∥∥​2.(3.1)
最小化误差εεε,得到滤波器
(3.2)Hl=G∗Fl∑k=1dFk∗Fk+λH^l=\frac{G^*F^l}{\sum_{k=1}^{d}{{F^k}^*F^k+\lambda}} \tag{3.2}Hl=∑k=1d​Fk∗Fk+λG∗Fl​(3.2)
仍然是分子分母分别迭代
(3.3)Atl=(1−η)At−1l+ηGt∗FtlBt=(1−η)Bt−1+η∑k=1dFtk∗Ftk\begin{aligned} A_t^l=&(1-\eta)A_{t-1}^l +\eta G_t^*F_t^l \\ B_t=&(1-\eta)B_{t-1}+\eta \sum_{k=1}^{d}{{F_t^k}^*F_t^k} \tag{3.3} \end{aligned} Atl​=Bt​=​(1−η)At−1l​+ηGt∗​Ftl​(1−η)Bt−1​+ηk=1∑d​Ftk​∗Ftk​​(3.3)
预测输出由下式得到
(3.4)y=F−1{∑l=1dAl∗ZlB+λ}y=\mathcal{F}^{-1}\left \{ \frac{\sum_{l=1}^{d}{{A^l}^{*}}Z^l}{B+\lambda} \right \} \tag{3.4}y=F−1{B+λ∑l=1d​Al∗Zl​}(3.4)

3.2 Exhaustive Scale Space Tracking(全面尺度空间跟踪)

基于3维的位置尺度滤波器,滤波器尺寸为M×N×SM×N×SM×N×S,代表高、宽、尺度数。
首先以目标旧位置为中心提取 SSS 种不同尺度下的矩形样本,然后把所有样本resize到固定的尺寸(M×NM×NM×N),构成一个M×N×SM×N×SM×N×S的矩形块(以待估计目标的位置和尺度为中心)。然后在这个固定的尺寸下提取fhog特征, 使用三维高斯函数构建对应的期望输出ggg。滤波器的迭代计算方式同3.1节相同。
预测时,取矩形块响应输出中的最大值,同时得到新位置和新尺度。然后以该位置和尺度为中心进行下一步矩形块的构建和迭代计算。
此方法计算量较大。

3.3 Fast Scale Space Tracking(快速尺度跟踪)

基于一维尺度滤波器。由于在连续的两帧中,位置的变化往往大于尺度的变化,因为,文中先采用2维位置滤波器确定位置信息,再在位置的基础上使用1维尺度滤波器确定尺度信息。

  1. 在当前帧里,提取一个上帧目标2倍大小区域(M×NM×NM×N)作为样本ZtransZ_{trans}Ztrans​。以3.1节介绍的位置滤波器方法,计算目标新位置PtP_tPt​。
  2. 以目标当前新位置PtP_tPt​为中心,截取S=33S=33S=33种不同尺度下的矩形样本ZscaleZ_{scale}Zscale​,然后把所有样本resize到固定的尺寸(M×NM×NM×N),在这个固定的尺寸下提取fhog特征,每个尺度样本ZscaleZ_{scale}Zscale​的特征串成一个特征向量(设长度为ddd,长度和resize的尺寸有关)。
  3. 对应到3.1节的滤波器更新公式,则特征层数变为特征向量的长度ddd,ggg变为一维高斯函数(长度为S=33S=33S=33),flf^lfl长度为S=33S=33S=33,在每个flf^lfl上分别乘一个一维汉明窗。然后预测输出响应最高的尺度值。

在此引用kooalle_cln博客中的一张图

3.4 各种尺度的选择

anP×anR,n∈{−⌊S−12⌋,…,⌊S−12⌋}a^nP\times a^nR,\qquad n\in \left\{ -\left \lfloor \frac{S-1}{2}\right \rfloor,\ldots, \left \lfloor \frac{S-1}{2}\right \rfloor\right\}anP×anR,n∈{−⌊2S−1​⌋,…,⌊2S−1​⌋}
PPP和RRR为目标在上一帧的长宽,a=1.02a=1.02a=1.02,S=33S=33S=33为尺度总数。
则nnn一共有333333个取值(n∈{−16,−15,…,15,16}n∈\{-16,-15,…,15,16\}n∈{−16,−15,…,15,16}),an∈{0.728,0.743,…,1.346,1.373}a^n∈\{0.728,0.743,…,1.346,1.373\}an∈{0.728,0.743,…,1.346,1.373}
比当前尺度越大的多的尺度,放缩比例越大。即越接近的尺度越精细检测,越远的尺度越粗略检测。

4. 算法性能

与其他尺度适应算法的比较

Martin自从提出DSST算法后,在自己的跟踪器工作中就从来没用过,用的都是上述的SAMF
优点:不依赖于定位器,如果定位时间较长则使用DSST进行尺度估计是首选,否则不建议使用;
时间开销:CPU下大概10ms,主要开销在特征提取上(33*2)次。
SAMF
尺度金字塔原理,方法实用;
特点:无参数,不更新,尺度估计是否准确比较依赖于定位器的性能是否鲁棒;
优点:虽然尺度估计不准会影响跟踪定位器的学习,但是多尺度搜索天然的可以和定位器定位相互促进,所以相互结合比较稳定,不易出现尺度估计偏移过大情况;
时间开销:依赖于定位器的定位开销,N-1倍于定位器定位开销(N为金字塔等级数);
应用:广泛应用于SRDCF系列目标跟踪算法(SRDCF,CCOT,ECO)。
【引用自 https://blog.csdn.net/aiqiu_gogogo/article/details/79108461 】

  1. 虽然SAMF和DSST都可以跟上普通的目标尺度变化,但SAMF只有7个尺度比较粗,而DSST有33个尺度比较精细准确;
  2. DSST先检测最佳平移再检测最佳尺度,是分步最优,而SAMF是平移尺度一起检测,是平移和尺度同时最优,而往往局部最优和全局最优是不一样的;
  3. DSST将跟踪划分为平移跟踪和尺度跟踪两个问题,可以采用不同的方法和特征,更加灵活,但需要额外训练一个滤波器,每帧尺度检测需要采样33个图像块,之后分别计算特征、加窗、FFT等,尺度滤波器比平移滤波器慢很多;SAMF只需要一个滤波器,不需要额外训练和存储,每个尺度检测就一次提特征和FFT,但在图像块较大时计算量比DSST高。
    所以尺度检测DSST并不总是比SAMF好,其实在VOT2015和VOT2016上SAMF都是超过DSST的,当然这主要是因为特征更好,但至少说明尺度方法不差。总的来说,DSST做法非常新颖,速度更快,SAMF同样优秀也更加准确。
    DSST一定要33个尺度吗?
    DSST标配33个尺度非常非常敏感,轻易降低尺度数量,即使你增加相应步长,尺度滤波器也会完全跟不上尺度变化。关于这一点可能解释是,训练尺度滤波器用的是一维样本,而且没有循环移位,这就意味着一次训练更新只有33个样本,如果降低样本数量,会造成训练不足,分类器判别力严重下降,不像平移滤波器有非常多的移位样本(个人看法欢迎交流)。总之,请不要轻易尝试大幅降低尺度数量,如果非要用尺度滤波器33和1.02就很好。
    以上就是两种推荐的尺度检测方法,以后简称为类似DSST的多尺度和类似SAMF的多尺度。如果更看重速度,加速版的fDSST,和仅3个尺度的SAMF(如VOT2014中的KCF)就是比较好的选择;如果更看重精确,33个尺度的DSST,及7个尺度的SAMF就比较合适。
    【作者:YaqiLYU 链接:https://www.zhihu.com/question/26493945/answer/156025576】

4. 参考资料

https://blog.csdn.net/roamer_nuptgczx/article/details/50134633

https://www.jianshu.com/p/c709aea5a56f

https://blog.csdn.net/kooalle_cln/article/details/78114673

https://www.zhihu.com/question/26493945/answer/156025576

目标跟踪 — DSST相关推荐

  1. 目标跟踪学习算法DSST

    原文:http://blog.csdn.net/gxb0505/article/details/52601613?locationNum=8 简介(Accurate Scale Estimation ...

  2. 一文详解目标跟踪中的相关滤波

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文来源:AI干货知识库 / 导读 / 目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事 ...

  3. 2016视觉目标跟踪总结

    最近学习视觉目标跟踪算法,主要了解了几个主流的跟踪算法,kcf,stc,dsst,算法原理网上很多,这里就不再赘述,只对跟踪效果做了测试记录. Kcf 全名Kernelized Correlation ...

  4. python 粒子滤波目标追踪_Python实现基于相关滤波的单目标跟踪算法

    最近在阅读一些单目标跟踪的算法论文,主要看了一系列基于相关滤波的算法,尝试着用python实现了其中一些比较经典的算法,地址在https://github.com/wwdguu/pyCFTracker ...

  5. 深度学习在目标跟踪中的应用

    from: http://www.dataguru.cn/article-9863-1.html 摘要: 人眼可以比较轻松的在一段时间内跟住某个特定目标.但是对机器而言,这一任务并不简单,尤其是跟踪过 ...

  6. (转) 深度学习在目标跟踪中的应用

    深度学习在目标跟踪中的应用 原创 2016-09-05 徐霞清 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质量原创内容的平台,邀请学术界.工业界一线专家 ...

  7. [转]深度学习在目标跟踪中的应用

    原文链接:https://zhuanlan.zhihu.com/p/22334661 开始本文之前,我们首先看上方给出的3张图片,它们分别是同一个视频的第1,40,80帧.在第1帧给出一个跑步者的边框 ...

  8. 单目标跟踪——个人笔记

    单目标跟踪--个人笔记 以<Handcrafted and Deep Trackers: A Review of Recent ObjectTracking Approaches>为主线看 ...

  9. 视觉单目标跟踪任务概述

      视觉目标跟踪的主要目的是:模仿生理视觉系统的运动感知功能,通过对摄像头捕获到的图像序列进行分析,计算出运动目标在每一帧图像中的位置:然后,根据运动目标相关的特征值,将图像序列中连续帧的同一运动目标 ...

最新文章

  1. Oracle存储过程和存储函数创建
  2. VS2010配置OpenCV
  3. visual studio如何更改启动项目?
  4. 程序员c语言简历,程序员的简历该怎么写?当然是程序!
  5. Innobackupx工具命令简单解析
  6. echarts 柱状图点击事件
  7. 由内而外全面进化,影像娱乐都出彩,vivo S12 Pro上手
  8. 使用FFMPEG 模仿微信拍视频
  9. 【Atheros】minstrel速率调整算法源码走读
  10. c语言strcpy两字符串长度不同,(C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/st...
  11. 【技巧】ApiPost生成word格式的接口文档,接口文档合并操作
  12. linux基础01-ip与网卡
  13. layui实现导出全部数据Excel
  14. [apidoc]Apidoc-文档生成工具
  15. DevOps《凤凰项目》实战沙盘演练将亮相光环中国·2017敏捷千人峰会
  16. SSH正向连接和反向连接
  17. python侯先生爬楼梯_经典算法题:爬楼梯 ,以斐波那契数列来解题代码案例
  18. kali2.0 mysql_kali linux2.0下MariaDB修改密码
  19. 项目一 认识linux操作系统
  20. 大学课程计算机鼠标和键盘的介绍,计算机基础课程鼠标和键盘”.ppt

热门文章

  1. 基于ensp的ospf-vlink实验
  2. 产品经理入门 之 产品经理必备的软件工具
  3. C++:分治算法之输油管道问题
  4. 室内空气污染超标,新房装修如何去除甲醛浓度?
  5. Qt5 QMediaPlayer 音乐播放器
  6. 常用Word页码设置大全
  7. 我想和你虚度时光,比如低头看鱼 比如把茶杯留在桌子上,离开 浪费它们好看的阴影...
  8. html、css 教程
  9. 再探深搜之剪枝、迭代加深及双向搜索
  10. 嗯,一个在北京,一个在南京