ECCV2012跟踪算法CSK原理及代码解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17783559/article/details/82321239

相信看懂相关滤波鼻祖算法MOSSE后,直接看看CSK,会产生一些疑问。本文从MOSSE出发得出CSK的相关公式,帮助大家理解。

MOSSE将相关转到频域通过最小二乘法来求解相关滤波器\small H^{*}

\small \min_{H^{\ast }} \sum_{i}|F_{i}\odot H^{*}-G_{i}|^{2}

CSK提出用一个线性分类器来求解相关滤波器:

\small \min_{w,b} \sum_{i}^{m}L(y_{i},f(x_{i}))+\lambda ||w||^2

是的,换件衣服我真的就不认识了。。。。。。这个公式也叫最小二乘法,确切的名字是正则化最小二乘法(RLS),也叫做岭回归。

w即为MOSSE中的相关滤波器H;

L为最小二乘法的损失函数:

\small L(y_{i},f(x_{i}))=(y_{i}-f(x_{i}))^2             \small f(x_{i})=<w,x_{i}>+b      

y是理想的高斯响应,m表示样本数量,f(xi)表示图像xi与滤波器w的在频域内的点积。所以CSK所用的公式就只是在后面多了一个正则项。那么加这一项有什么意义呢???

加正则项的目的是为了防止求得的滤波器H过拟合。通过最小二乘法求得的相关滤波器与当前帧输入的图像F的相关性是最高的,然而我们是要用求得的滤波器结果H去预测下一帧图像中目标所在的位置。因为下一帧图像不可能和当前帧的图像一模一样,所以拟合度过高反而会影响检测的准确度,所以加入正则项来减小输入图像和滤波器之间的拟合程度,使求得的滤波器H泛化能力更强。

现在基础公式是弄懂了,怎么解呢?

作者参考了支持向量机的解法,使用了核函数,接下来先介绍一下核函数,不然又处在云里雾里看不懂了

核函数

首先核函数是个啥?干啥用?

先来个定义:通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, y) ,它恰好等于在高维空间中这个内积,即K( x, y) =<φ( x) ⋅φ( y) > 。那么求解过程中就不用计算复杂的非线性变换,而由这个函数 K(x, y) 直接得到非线性变换的内积,使大大简化了计算。这样的函数 K(x, y) 称为核函数。

举个例子:核函数K(Kernel Function)为:K(x,y')=<φ(x),φ(y)>,其中,< , >表示点积,φ(.)表示低维到高维的映射。

x=(x1,x2,x3);y=(y1,y2,y3)

φ(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)

φ(y)=(y1y1,y1y2,y1y3,y2y1,y2y2,y2y3,y3y1,y3y2,y3y3)

令x=(1,2,3),y=(4,5,6);

那么

φ(x)=(1,2,3,2,4,6,3,6,9);

φ(y)=(16,20,24,20,25,30,24,30,36);

<φ(x),φ(y)>=16+40+72+40+100+180+72+180+324=1024

因为我们把三维空间数据映射到九维空间中,所以计算复杂。

如果我们通过核函数,直接在低维空间中计算呢?

令核函数K(x,y)=(<x,y>)^2

则K(x,y)=(4+10+18)^2=1024

避开了非线性变换 φ的计算是不是方便很多,速度也快很多。所以核技巧就是用来避开这些繁琐的计算的。并且如果是将数据映射到无限维空间,通过普通的算法是无法计算的,而通过核函数却可以,如:高斯核RBF: K(x,y)=exp(-||x-y||^2)。

文归正传

1、核化的最小二乘法(KRLS)

CSK算法使用核技巧是为了提高在高维特征空间中分类样本的速度。

令φ(x)表示特征空间,k(x,x')=<φ(x),φ(x')>表示其核函数,根据支持向量机核定理可得滤波器w的解可以表示为如下的线性组合:

\small w=\sum_{j}^{m}\alpha _{j}\varphi (x_{j})

所以

\small f(x_{i})=<w,x_{i}>+b=\sum_{j}^{m}\alpha _{j}k( x_{j},x_{i})=K\alpha

\small ||w||^2=<w,w>=\alpha ^{T}K\alpha

b在实际中没有意义,不用管,可以理解直接省掉。

那么求解公式可写成如下形式:

\small \min_{w} \sum_{i}^{m}L(y_{i},f(x_{i}))+\lambda ||w||^2=\min_{\alpha } \sum_{i}^{m}(y_{i}-K\alpha )^2+\lambda \alpha ^{T}K\alpha

求最小值,K是核函数,无论是高斯核函数还是什么核函数,它都可以当做已知量,所以只需要求\small \alpha即可。上式除以2没有影响,等价于

\small F=\small \frac{1}{2}\min_{\alpha } \sum_{i}^{m}(y-K\alpha )^T(y-K\alpha )+\frac{\lambda}{2} \alpha ^{T}K\alpha

通过求导来求解最小值

\small \bigtriangledown F_{\alpha }=\frac{1}{m}(y-K\alpha )^T(-K)+\lambda K\alpha =-\frac{1}{m}Ky+\frac{1}{m}K^2\alpha +\lambda K\alpha=0

\small -\frac{1}{m}Ky+\frac{1}{m}K^2\alpha +\lambda K\alpha=0

求得:

\small \alpha =(K+\lambda mI)^{-1}y=(K+\lambda I)^{-1}y

I表示单位矩阵。这个等式之所以成立,是因为m表示样本数量一个常量,而\lambda本身也是一个调节正则项的系数,所以直接将m和\lambda结合在一起了,用\lambda表示即可。

2、循环矩阵&稠密采样

首先说明一下MOSSE是如何采样的,MOSSE初始化时通过仿射变换产生了几个样本,注意:就只用了几个样本而已。

后面再更!!!

参考博客:https://blog.csdn.net/ikerpeng/article/details/44171159

猜你喜欢

转载自blog.csdn.net/qq_17783559/article/details/82321239