http://www.cnblogs.com/hanhuili/p/4281077.html

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的说法从何而来?这一点我们后面再解释。

主要思想已经有了,下面我们来看如何用概率论进行理论支持。假设x∈R2x∈R2为某一位置,oo为需要跟踪的目标,首先定义如下的confident map用来衡量目标在xx出现的可能性:

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

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

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

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

先看P(c(z)|o)P(c⁡(z)|o),是目标的上下文先验,定义为如下所示:

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

文中作者还强调了hsc(x−z)hsc(x−z)是目标的位置与其环境上下文之间相对距离和方向的衡量,并且不是对称函数。

另外,根据卷积f⊗gf⊗g的定义:

所以(5)式其实就是一卷积(xx就是tt或mm,zz就是ττ或nn),根据卷积定理:

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

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

由ωσ(x,y)=αe−x2+y2σ2,ωσ(x/s,y/s)=αe−x2+y2(sσ)2ωσ(x,y)=αe−x2+y2σ2,ωσ(x/s,y/s)=αe−x2+y2(sσ)2 有ωσ(x/s,y/s)=ωsσ(x,y)ωσ(x/s,y/s)=ωsσ(x,y),所以(8)式继续推导为:

然后,从tt变到t+1t+1帧,我们把变化后的坐标对应起来,因此有hsct(u/s,v/s)≈hsct+1(u,v)htsc(u/s,v/s)≈ht+1sc(u,v)和It(u/s,v/s)≈It+1(u,v)It(u/s,v/s)≈It+1(u,v),所以式(9)继续变为

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

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

因此就有

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

correlation filters in object tracking2的更多相关文章

  1. correlation filters in object tracking

    http://www.cnblogs.com/hanhuili/p/4266990.html Correlation Filter in Visual Tracking系列一:Visual Objec ...

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

    Visual Object Tracking using Adaptive Correlation Filters 一文发表于2010的CVPR上,是笔者所知的第一篇将correlation filt ...

  3. KCF:High-Speed Tracking with Kernelized Correlation Filters 的翻译与分析(一)。分享与转发请注明出处-作者:行于此路

    High-Speed Tracking with Kernelized Correlation Filters 的翻译与分析 基于核相关滤波器的高速目标跟踪方法,简称KCF 写在前面,之所以对这篇文章 ...

  4. Hign-Speed Tracking with Kernelzied Correlation Filters

    reference:Hign-Speed Tracking with Kernelzied Correlation Filters questions: The core componet of mo ...

  5. Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking---随笔

    Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking DCF跟踪算法因边界效应,鲁棒性较差.SRD ...

  6. call Kernelized Correlation Filters Tracker(Matab) in Qt(c++)

    recently, i need call the KCF tracker in my graduation project. the KCF tracker is fast and best per ...

  7. High-Speed Tracking with Kernelized Correlation Filters

          2015年的一篇论文,可参考:http://blog.csdn.net/carrierlxksuper/article/details/46461245.      另参考:http:// ...

  8. High-Speed Tracking with Kernelized Correlation Filters(二)

          首先看看get_features函数.             首先判断是hog特征还是gray,分两种情况.             如果是hog特征,调用fhog函数,返回x,并将矩阵 ...

  9. Multi-hierarchical Independent Correlation Filters for Visual Tracking(MFT)略读

    作者写道: 有幸在本届的VOT 2018 主赛中,我们的参赛方案Multi-solution Fusion for Visual Tracking(MFT)获得第一名的成绩,通过结果来看,MFT无论在 ...

随机推荐

  1. seajs封装js方法

    必须要先引入sea.js文件 <script src="js/sea.js"></script> 其次,引入其他js文件 <script> se ...

  2. 关于Android 应用保活

    通常情况下 , 公司需要让自己的产品在用户的手机中尽可能存活长的时间,包括不受大数字,手动清理后台等情况的影响.这里给出一种方式 就是 双进程守护: 模型如图所示: 两个service通过aidl的方 ...

  3. u-boot平台的建立,驱动的添加,索引的创建,命令机制的实现.

    一:U-boot移植前建立自己的平台: 关注的相关文件:1.u-boot- 2010.03/board/samsung/ //这个目录下需要创建自己的板级目录fsc100 cp –a smdkc100 ...

  4. SELECT控件操作的JS代码示例

    SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...

  5. W3C代码标准规范

    一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...

  6. Azure 媒体服务可将优质内容传输至 Apple TV

    作为内容提供商,如果想要将优质内容传输到Apple TV,需要使用Apple FairPlay Streaming (FPS)技术. 但是这个技术的构建比较繁琐,基于此,Azure提供了FairPla ...

  7. CSS3新特性学习

    1.一些实用规范:盒子模型,列表模块,超链接方式,语言模块,背景和边框,文字特效,多栏布局: 2:新增的选择器selctor eg: 1) 子元素过滤伪类:div:first-child  (自动识别 ...

  8. [翻译] LTE/LTE-Advanced for Mobile Broadband-10.4

    10.4 下行L1/L2控制信令 上下行信道的数据传输,需要特定的“下行控制信令”提供支持.下行控制信令通常被称为“下行L1/L2控制信令”,这表示该控制信令部分来自物理层(L1),部分来自MAC层( ...

  9. Lua IO库详解

    I/O 库提供了两套不同风格的文件处理接口. 第一种风格使用隐式的文件句柄: 它提供设置默认输入文件及默认输出文件的操作, 所有的输入输出操作都针对这些默认文件. 第二种风格使用显式的文件句柄. 当使 ...

  10. 2017 年值得一瞥的 JavaScript 相关技术趋势

    跨年前两天,Dan Abramov在Twitter上提了一个问题: JS社区毫不犹豫的抛出了它们对于新技术的预期与期待,本文内容也是总结自Twitter的回复,按照流行度降序排列.有一个尚未确定的小点 ...