Exploiting the Circulant Structure of Tracking-by-detection with Kernels 笔记
2015-12-16 17:00
274 查看
这是一篇ECCV2014年的paper,在这篇paper中作者提出了kernelized correlation filter,并将其应用到了tracking中,从而有了15年PAMI的那篇文章,我再之前博客中也记录过
/article/8170283.html
这篇文章的公式推导比较复杂,感兴趣的可以去看看:/article/1602580.html
在这里,我想重新介绍一下KCF,并且加上一点自己的认识。
track-by-detection的方法获得了广泛的应用,这个思想需要首先获取样本进行训练,常用的方法就是 系数采样。如下所示:
这种方法的缺点就是样本之间有重叠,或者叫有冗余并且比较慢,因为一般要采集大量的样本。于是作者想exploite structure.作者的思想就是利用FFT来快速的合并所有subwindows的信息,而不用迭代的采样。
下面开始介绍主要内容。
先说一下作者的motivation: 在tracking-by-detection里面的核心是分类器。训练分类器需要采集正负样本,作者打算采集所有的样本,也就上面图所示的那种dense sampling。
作者首先构造一个model:
------------------------------------------1
这里L是损失函数,x和y分别是训练样本和标签。函数f是:
如果是线性SVM的话,L的表达式是:
,如果是linear regression 的话,L的表达式是:
作者指出,很多时候两者效果接近,于是作者用后者代替前者。
那么上面的公式1的闭式解就是:
------------------------------2
其中K是核矩阵,我们要求解的是w,这里为什么出来的是\alpha呢。其实这是利用了一个叫表达理论的东西:
,这里有了alpha,就可以获得w了,其中\pha是空间映射函数。为什么要整这么复杂,又是表达理论又是核的,这是因为很多时候没法直接求w必须利用这些技术简化求解。
OK,有了这些理论基础之后,就开始进入下一步了:Circulant matrices。理解这个可以参考我的关于KCF的那篇blog,这里简单介绍一下,就是我们有了一个base sample之后,通过不断的cyclic shift就可以得到一个circulant matrics C(u),
这个矩阵有什么用呢?就是当我们用它来对vector进行卷积的时候很有用。例如我们表示两个vector u和v的卷积,那么就可固定v不动,让u做cyclic shift得到C(u).那么C(u)v就表示u和v之间的卷积运算。在频率域下就可以表示为:
这些都是为了下面的dense sample做准备。给定一幅图像,假设是vector形式的,那么下面的运算:
每进行一次就相当于对图像采样一次。然后我们利用一个定理:
就可以得到:
然后公式2就变成了:
当新的样本z来了之后,分类器输出为:
上面公式意思是挨个计算xi与输入z之间的卷积运算。如果我们想同时计算z与xi之间的卷积运算,那么 :
后面就是对K采用的一些核技巧。不再介绍了。
/article/8170283.html
这篇文章的公式推导比较复杂,感兴趣的可以去看看:/article/1602580.html
在这里,我想重新介绍一下KCF,并且加上一点自己的认识。
track-by-detection的方法获得了广泛的应用,这个思想需要首先获取样本进行训练,常用的方法就是 系数采样。如下所示:
这种方法的缺点就是样本之间有重叠,或者叫有冗余并且比较慢,因为一般要采集大量的样本。于是作者想exploite structure.作者的思想就是利用FFT来快速的合并所有subwindows的信息,而不用迭代的采样。
下面开始介绍主要内容。
先说一下作者的motivation: 在tracking-by-detection里面的核心是分类器。训练分类器需要采集正负样本,作者打算采集所有的样本,也就上面图所示的那种dense sampling。
作者首先构造一个model:
------------------------------------------1
这里L是损失函数,x和y分别是训练样本和标签。函数f是:
如果是线性SVM的话,L的表达式是:
,如果是linear regression 的话,L的表达式是:
作者指出,很多时候两者效果接近,于是作者用后者代替前者。
那么上面的公式1的闭式解就是:
------------------------------2
其中K是核矩阵,我们要求解的是w,这里为什么出来的是\alpha呢。其实这是利用了一个叫表达理论的东西:
,这里有了alpha,就可以获得w了,其中\pha是空间映射函数。为什么要整这么复杂,又是表达理论又是核的,这是因为很多时候没法直接求w必须利用这些技术简化求解。
OK,有了这些理论基础之后,就开始进入下一步了:Circulant matrices。理解这个可以参考我的关于KCF的那篇blog,这里简单介绍一下,就是我们有了一个base sample之后,通过不断的cyclic shift就可以得到一个circulant matrics C(u),
这个矩阵有什么用呢?就是当我们用它来对vector进行卷积的时候很有用。例如我们表示两个vector u和v的卷积,那么就可固定v不动,让u做cyclic shift得到C(u).那么C(u)v就表示u和v之间的卷积运算。在频率域下就可以表示为:
这些都是为了下面的dense sample做准备。给定一幅图像,假设是vector形式的,那么下面的运算:
每进行一次就相当于对图像采样一次。然后我们利用一个定理:
就可以得到:
然后公式2就变成了:
当新的样本z来了之后,分类器输出为:
上面公式意思是挨个计算xi与输入z之间的卷积运算。如果我们想同时计算z与xi之间的卷积运算,那么 :
后面就是对K采用的一些核技巧。不再介绍了。
相关文章推荐
- jdk,jre,jvm 三者间的差别与联系
- 各种时间日期工具类
- 如何在android studio中更新maven依赖
- db2 字符串函数
- CSS如何实现div宽度根据内容自适应
- 用AnimationDrable实现Frame动画
- mysql远程连接出错
- Android 窗体泄露问题
- 解决PHP Mysql 插入中文显示问号
- 在AlertDialog对话框中弹出软键盘
- Java获得硬盘和主板的序列号代码
- iOS多线程编程技术之NSThread、NSOperation、GCD
- 逆向思维《专利法》,开拓创新“三步法”
- Git版本管理1-安装配置和同步
- maven
- UIButton的titleEdgeInsets属性和imageEdgeInsets属性
- Linux 文件共享之ftp服务
- 理解Handler,Looper,MessageQueue,ThreadLocal关系
- 重温二项分布
- 关于广播的一种写法