Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记

原文再续,书接一上回。话说上一次我们讲到了Correlation Filter类 tracker的老祖宗MOSSE,那么接下来就让我们看看如何对其进一步地优化改良。这次要谈的论文是我们国内Zhang Kaihua团队在ECCV 2014上发表的STC tracker:Fast Visual Tracking via Dense Spatio-Temporal Context Learning。相信做跟踪的人对他们团队应该是比较熟悉的了,如Compressive Tracking就是他们的杰作之一。今天要讲的这篇论文的Matlab源代码已经放出了,链接如下:

http://www4.comp.polyu.edu.hk/~cslzhang/STC/STC.htm

首先来看看他们的跟踪算法示意图:

看到更新方式,快速傅里叶变换什么的是不是很眼熟?没错,这篇论文其实与MOSSE方法基本是一致的,那么其创新点在哪了?笔者觉得,其创新点在于点,一是以密集时空环境上下文Dense Spatio-Temporal Context作为卖点;二是以概率论的方式包装了CF类方法;三是在模板更新的时候把尺度变换也考虑了进去。

那么什么是密集的时空上下文呢?其最朴素的思想可以用下面这个图来表达:在跟踪的过程中,由于目标外观变换以及遮挡等原因的影响,仅仅跟踪目标本身的话比较困难,但如果把目标周围区域也考虑进去(空间上下文),那么能够在一定程度降低跟踪失败的风险。以图中的例子来说,就是假如仅仅考虑目标本身(黄色框),那么在发生遮挡的时候,就难以实现跟踪,但是如果把周围的像素也考虑进去(红色框),那么就可以借助周围环境来确定目标所在。这是一帧的情况,假如考虑多帧情况的话,就对应产生了时空上下文。那么dense的说法从何而来?这一点我们后面再解释。

主要思想已经有了,下面我们来看如何用概率论进行理论支持。假设$\mathbf{x}\in {{\mathbb{R}}^{2}}$为某一位置,$o$为需要跟踪的目标,首先定义如下的confident map用来衡量目标在$\mathbf{x}$出现的可能性:

然后定义${{X}^{c}}=\{\operatorname{c}(\mathbf{z})=(I(\mathbf{z}),\mathbf{z})|\mathbf{z}\in {{\Omega }_{c}}({{\mathbf{x}}^{\bigstar }})\}$ 为上下文特征集合,其中${{\mathbf{x}}^{\bigstar }}$代表目标位置,${{\Omega }_{c}}({{\mathbf{x}}^{\bigstar }})$表示在${{\mathbf{x}}^{\bigstar }}$点处两倍于跟踪目标大小的邻域,$I(\mathbf{z})$为$\mathbf{z}$点的图像灰度值。这一公式的意思其实就是把${{\mathbf{x}}^{\bigstar }}$作为中心点,取其周围两倍于目标框大小的图像作为特征,如上图的红色框。然后我们利用全概率公式,以上下文特征为中间量把(1)展开:

式(2)分为两项,左项$P(\mathbf{x}|\operatorname{c}(\mathbf{z}),o)$代表给定目标和其上下文特征,目标出现在$\mathbf{x}$点的概率,右项$P(\operatorname{c}(\mathbf{z})|o)$则是某一上下文特征属于目标的概率,也就是目标的上下文概率先验了。右项的作用在于选择与目标外观相似的上下文,左项的作用在于在选择外观相似的同时也考虑出现在某一位置是否合理,避免跟踪过程中的漂移现象。

然后,因为在第一帧的时候,目标的位置是已知的,那么这时候就可以构造一个confident map,使其满足距离目标越近可能性越高的性质。作者定义confident map的具体值为如公式(3)所示:

其中$b,\alpha ,\beta $都是经验常数。回想下上一篇我们讲的MOSSE方法,其实$m(\mathbf{x})$就是我们讲的响应输出,只不过MOSSE直接用一个高斯形状,而这里用的是如(3)式的定义。另外,之前谈到本篇论文标题中有一“dense”字样,体现在哪呢?就体现在这个地方,对于目标附近每一个点,都可以用(3)式对其概率值进行定义。传统的跟踪方法可能是随机采样或者隔段采样,而这里因为每一个点都进行了概率值的定义所以就是dense了。但其实目前所有的CF类方法都是dense sampling,而且这一个概念的明确提出应该是出现在后面会讲的CSK方法之中,只不过本篇作者将其改头换面成dense spatio temporal learning了。OK,闲话少说,接下来我们继续求解$P(\mathbf{x}|\operatorname{c}(\mathbf{z}),o)$和$P(\operatorname{c}(\mathbf{z})|o)$。

先看$P(\operatorname{c}(\mathbf{z})|o)$,是目标的上下文先验,定义为如下所示:

其就是目标框附近的图像灰度值的高斯加权和(换成其它特征也可以,后面另有一篇论文会谈到)。然后$P(\operatorname{c}(\mathbf{z})|o)$有了,$m(\mathbf{x})$有了,就可以带入(2)求解$P(\mathbf{x}|\operatorname{c}(\mathbf{z}),o)$了,套路还是跟MOSSE一样,首先将$m(\mathbf{x})$表示为$P(\mathbf{x}|\operatorname{c}(\mathbf{z}),o)$和$P(\operatorname{c}(\mathbf{z})|o)$的卷积(互相关),通过FFT转到频率域变为点乘运算,运算完后逆变换回空间域,找响应最大值的地方作为目标位置。 具体就是,设$P(\mathbf{x}|\operatorname{c}(\mathbf{z}),o)={{h}^{sc}}(\mathbf{x}-\mathbf{z})$,得

文中作者还强调了${{h}^{sc}}(\mathbf{x}-\mathbf{z})$是目标的位置与其环境上下文之间相对距离和方向的衡量,并且不是对称函数。

另外,根据卷积$f\otimes g$的定义:

所以(5)式其实就是一卷积($\mathbf{x}$就是$t$或$m$,$\mathbf{z}$就是$\tau $或$n$),根据卷积定理:

与MOSSE不同的是,STC在训练模板、即计算${{h}^{sc}}(\mathbf{x}-\mathbf{z})$时只需考虑第一帧。而在跟踪过程中,${{h}^{sc}}(\mathbf{x}-\mathbf{z})$的更新方式如同MOSSE,这里不再叙述。另外论文中还给出了目标框大小更新的方法,其基本思路可以这样理解:看到公式(5)$m(\mathbf{x})=\sum\nolimits_{\mathbf{z}\in {{\Omega }_{c}}({{\mathbf{x}}^{\bigstar }})}{{{h}^{sc}}(\mathbf{x}-\mathbf{z})I(\mathbf{z}){{\omega }_{\sigma }}(\mathbf{z}-{{\mathbf{x}}^{\bigstar }})}$ ,其中${{\omega }_{\sigma }}(\mathbf{z}-{{\mathbf{x}}^{\bigstar }})$不就是高斯形状的权重嘛,稍微不恰当的说,就是用个圆圈把目标包住嘛,圈内的权重高,圈外的相反,那么假如目标的size变大了,我们就把这个圈的范围扩大就好了,而扩大或者缩小就靠调整$\sigma $的值就ok了。具体推导过程如下:

假设从$t$到$t+1$帧,目标的大小乘以了一个$s$倍,也即相当于坐标系的刻度乘以了$s$倍,为方便起见,我们设$(u,v)=(sx,sy)$,然后,不失一般性的,假设目标在第$t$帧的坐标为(0,0),则有

由${{\omega }_{\sigma }}(x,y)=\alpha {{e}^{-\frac{{{x}^{2}}+{{y}^{2}}}{{{\sigma }^{2}}}}},{{\omega }_{\sigma }}(x/s,y/s)=\alpha {{e}^{-\frac{{{x}^{2}}+{{y}^{2}}}{{{(s\sigma )}^{2}}}}}$ 有${{\omega }_{\sigma }}(x/s,y/s)={{\omega }_{s\sigma }}(x,y)$,所以(8)式继续推导为:

然后,从$t$变到$t+1$帧,我们把变化后的坐标对应起来,因此有$h_{t}^{sc}(u/s,v/s)\approx h_{t+1}^{sc}(u,v)$和${{I}_{t}}(u/s,v/s)\approx {{I}_{t+1}}(u,v)$,所以式(9)继续变为

假设从$t$到$t+1$帧是缩小的,因此跟缩放示意图一样,我们将(10)的积分看成两部分组合成的:一是红框部分($t+1$帧的上下文框大小),二是蓝筐($t$帧的上下文框大小)减去红框的部分,用公式表达就是:

又因为$\omega $的高斯形状的关系,上式右项那一部分的权值都很小,因此整个右项都可视为0,同时将$s{{\sigma }_{t}}$视为${{\sigma }_{t+1}}$,所以上式的左项就近似成了${{c}_{t+1}}(0,0)$:

因此就有

剩下的就是一些技巧了,比如用滑动窗口取$s$的平均之类的,具体可以看作者的原文。这篇文章大概就到这里了。总结一下,其中比较吸引笔者的其中的概率论支撑和后面的窗口大小的变化部分,至于环境上下文部分的话,换用其它特征应该可以作进一步扩展以提高算法的鲁棒性。作者主页上有源代码,有兴趣的可以下载来跑跑看,运行时留意下像woman这类视频吧~

时间: 2024-10-11 12:42:11

Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记的相关文章

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正交流,谢谢. 本文的论文来自: Sparse filtering, J. N

Correlation Filter in Visual Tracking系列一:Visual Object Tracking using Adaptive Correlation Filters 论文笔记

Visual Object Tracking using Adaptive Correlation Filters 一文发表于2010的CVPR上,是笔者所知的第一篇将correlation filter引入tracking领域内的文章,文中所提的Minimum Output Sum of Squared Error(MOSSE),可以说是后来CSK.STC.Color Attributes等tracker的鼻祖.Correlation Filter(以下简称CF)源于信号处理领域,后被运用于图

Correlation Filter in Visual Tracking

涉及两篇论文:Visual Object Tracking using Adaptive Correlation Filters 和Fast Visual Tracking via Dense Spatio-Temporal Context Learning 可参考这位博主笔记:http://www.cnblogs.com/hanhuili/p/4266990.html 第一篇我说下自己的理解:训练时的输出都认为是高斯形状,因为这种形状符合PSR. 训练得到模板后开始跟踪,由输出继续按照新的规则

论文笔记之: Hierarchical Convolutional Features for Visual Tracking

Hierarchical Convolutional Features for Visual Tracking  ICCV 2015 摘要:跟卢湖川的那个文章一样,本文也是利用深度学习各个 layer 之间提取出来的不同特征进行跟踪.因为各个层次提出来的 feature 具有不同的特征.并且将各个层级的特征用现有的 correlation filter 进行编码物体的外观,我们在每一个层上寻找最佳响应来定位物体. 引言:老套路的讨论了现有的跟踪问题存在的挑战以及现有方法取得的一些进展,并且引出了

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记

Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪,算是单目标跟踪中比较早的应用强化学习算法的一个工作.  在基于深度学习的方法中,想学习一个较好的 robust spatial and temporal representation for continuous video data 是非常困难的.  尽管最近的 CNN based tracke

WPF入门教程系列二——Application介绍

原文:WPF入门教程系列二--Application介绍 一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在.和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离. 微

VS Extension+NVelocity系列(二)——让VS支持 NVelocity的智能提示(上)

一.基础概念 应该庆幸的是,VS的插件是靠着MEF实现而不是MAF,这让你所做的工作减轻了许多.如果在这之前,您已经了解了MEF的原理,我想对于VS插件的编写,您应该是很容易就能理解的.看看几个VS2010 SDK提供的例子,您就能熟练的编写了. 不过我还是简单的介绍一下MEF几个特点,目前来说,只要您了解这几个特点就足够了: 组合容器 部件 目录 使用特性导入.导出 这是一张博主 周金根 介绍MEF的图: 其中,CompositionContainer就是组合容器,Part就是部件,而VS插件

Wireshark入门与进阶系列(二)

摘自http://blog.csdn.net/howeverpf/article/details/40743705 Wireshark入门与进阶系列(二) “君子生非异也,善假于物也”---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 上一篇文章我们讲了使用Wireshark进行数据包捕获与保存的最基本流程,更通常的情况下,我们对于要捕获的数据包及其展示.存储可能有一定要求,例如: 我们希望捕获的数据包中对我们有用