多尺度检测与VOT2014

多尺度检测与VOT2014

这篇文章主要介绍相关滤波中的多尺度检测和更新。光阴似水如白驹过隙,已经距离OTB2013发表过去一年了,VOT2014竞赛

VOT2014 Benchmark

。这一年有25个精挑细选的序列,38个tracker,那时候深度学习的战火还没有烧到tracking,所以也只能CF独霸一方了,下面是前几名的具体情况:

用户上传的图片

前三名都是相关滤波类(CF)方法,第三名的KCF已经很熟悉了,这里稍微有点区别就是加了多尺度检测和子像素峰值估计,再加上VOT序列的分辨率比较高(检测更新图像块的分辨率比较高),导致KCF的速度只有24.23(EFO换算66.6FPS)。这里的speed指的的EFO(Equivalent Filter Operations),在VOT2015和VOT2016里面也用这个参数衡量算法速度,每年EFO与帧率的关系这里一次性列出来供参考,VOT2016还强调MATLAB实现的Tracker实际速度要比EFO高:

用户上传的图片

其实前三名除了特征略有差异,核心都是扩展了多尺度检测,概要如下:

用户上传的图片

尺度变化是跟踪中比较基本和常见的问题,前面介绍的三个算法都没有尺度更新,如果目标缩小,滤波器就会学习到大量背景信息,如果目标扩大,滤波器就跟着目标局部纹理走了,这两种情况都很可能出现非预期的结果,导致漂移和失败。

首先介绍SAMF

ihpdep/samf

,来自浙大的工作,基于KCF,特征是HOG+CN:

  • Li Y, Zhu J. A scale adaptive kernel correlation filter tracker with feature integration [C]// ECCV, 2014.

可以看出这篇论文就在KCF和CN出来后不久,也是第一次HOG和CN结合,SAMF的多尺度检测方法用作者的原话是straightforward(论文里出现这个词,隐含的意思就是“这么做就行了,没啥创新”),类似检测算法里面常用的多尺度检测方法,1.005间隔的7个尺度缩放图像分别检测,然后取7个响应图的最大值点,为了看清我把间隔扩大到1.05的5个尺度:

用户上传的图片

最佳尺度的目标点肯定有最大响应值,因此这种方法可以同时检测目标中心变化尺度变化,SAMF的速度是7FPS,因为速度比较慢,就介绍这么多。VOT2014中的KCF也采用这种尺度更新方法,步长1.05的3个尺度检测和更新,换算速度是66FPS,可见减少尺度增加步长速度会快很多。

接下来是Martin Danelljan的DSST

Accurate scale estimation for visual tracking

基于DCF,特征只有HOG,但排名却在SAMF之前,得益于更加简单精确的尺度方法:

  • Danelljan M, Häger G, Khan F, et al. Accurate scale estimation for robust visual tracking [C]// BMVC, 2014.
  • Danelljan M, Hager G, Khan F S, et al. Discriminative Scale Space Tracking [J]. IEEE TPAMI, 2017.

将目标跟踪看成目标中心平移和目标尺度变化两个独立问题,首先用HOG特征的DCF训练平移相关滤波,负责检测目标中心平移,然后用HOG特征的MOSSE(注意区别,不加padding)训练另一个尺度相关滤波,负责检测目标尺度变化,(标配)步长1.02的33个尺度,选8个示例:

用户上传的图片

尺度滤波器仅需要检测哪个尺度最匹配而无须关心平移情况,所以DSST将特征压缩成一维(没有循环移位),尺度检测的响应图也是一维的(1*33),同时为了减小计算量,DSST将尺度检测图像块全部缩放到512像素以内,所以DSST能精细检测33个尺度变化同时保持可观的帧率(论文中是24FPS)。更新阶段两个滤波器都以固定学习率逐帧更新。DSST转PAMI后的快速改进版本fDSST虽然性能略有下降,帧率达到了54.3FPS


以上就是两种最常用的多尺度检测方法,最后,讨论两个问题:

  • DSST和SAMF所采用的尺度检测方法哪个更好?

首先给大家讲个笑话:Martin Danelljan大神提出DSST之后,他的后续论文就再没有用过。

  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更具创新度,但SAMF也是很优秀的方法。(记得高中数学老师说过,“一个人一生能有一点点创新就非常了不起了”,所以我们才会看到那么那么多灌水论文,创新真的太难了,那些虽然创新力不够但踏踏实实有效果,敢公开源码经得起验证的论文同样值得钦佩)

  • DSST对尺度数量非常敏感吗?一定要33个尺度吗?

如果你认真跑过实验,就会发现DSST标配的33个尺度非常敏感,轻易降低尺度数量(如21个),即使增加相应步长,尺度滤波器也会完全跟不上尺度变化。关于这一点我想到的可能解释是,训练尺度滤波器用的是一维样本,而且没有循环移位,这就意味着一次训练更新只有33个样本,如果降低样本数量,会造成训练不足,分类器判别力严重下降,不像平移滤波器有非常多的移位样本(如果不对或您有其他看法欢迎交流)。总之,请不要轻易尝试大幅降低尺度数量,如果非要用尺度滤波器标配33和1.02就,在限制尺度图像块大小在32*16以内时速度还是很快的,或者可以参考fDSST中17个尺度检测然后响应插值到33个尺度的方法,但尺度精度有所下降。

以上就是两种推荐的尺度检测方法,以后通过多尺度缩放检测的方法简称为类似SAMF的多尺度,而专门训练尺度滤波器检测尺度的方法简称为类似DSST的多尺度

  1. 如果您对尺度的要求不高而更看重速度,SAMF只要3个尺度就可以粗略跟上尺度变化(比如VOT2014中的KCF);
  2. 如果您需要精确尺度跟踪,则推荐DSST但速度稍慢,且DSST的尺度数量不能轻易减少,或参考fDSST中17个尺度检测然后响应插值的方法;
  3. 如果尺度变化不明显则不推荐使用。
编辑于 2017-05-30 19:39