KCF(核化相关滤波)跟踪公式推导笔记(2)——非线性滤波器的解、快速检测及快速核相关

来源:互联网 发布:shadow web 黑暗网络 编辑:程序博客网 时间:2024/04/30 19:19

上接推导笔记(1)——线性滤波器

论文题目:High-Speed Tracking with Kernelized Correlation Filters
作者主页:http://www.robots.ox.ac.uk/~joao/circulant/

在非线性回归条件下,最终的滤波器解为

α^=y^k^xx+λ(1)

其中,若采用高斯核,则

kxx=exp(1σ2(x2+x22F1(x^x^)))(2)

以下是该公式的推导过程。

1. 将线性问题的输入映射到非线性特征空间

该过程包含两个方面:

(1)将线性滤波器的解w1用样本的线性组合来表示

w=iαiφ(xi)(3)

在这样的条件下,最优化下的变量不再是w,而是α。该表达式是在对偶空间中进行的(此处需要参考SVM相关理论,此处不再赘述)。

(2)用点积进行表示:

φT(x)φ(x)=K(x,x)(4)

因此,在线性条件下的回归问题:f(z)=wTz,经过非线性变换后的表达式为

f(z)=wTz=(i=1nαiφ(xi))Tφ(z)=i=1nαiK(z,xi)(5)

其中n表示n个训练样本(参考KCF论文4.2节末尾及5.1节公式(15)相关表述)。

2. 推导核化滤波器

在核函数情况下,岭回归问题的解为

α=(K+λI)1y(6)

其中,α是由各个系数αi组成的向量,K是核矩阵,其各个元素的定义是:Kij=K(xi,xj)λ是正则项系数。里面的xy都是训练集中的数据。公式(6)的推导过程可以参考Max Welling的Kernel ridge Regression,此处不再赘述。

利用循环矩阵的有关特性,对公式(6)进行对角化处理,可以提高计算效率。

2.1 Base sample + 置换矩阵 ⇒ 循环矩阵

训练时,采集一个感兴趣的图像块,将其拉伸为一个列向量作为基础样本(base sample),记作x=[x1x2xn]T,现在给定一个置换矩阵(permutation matrix)

P=0100001000011000

尝试计算P0x,得x1=x=[x1x2xn]T.

尝试计算P1x,得x2=[xnx1xn1]T.

尝试计算P2x=P(Px),得x3=[xn1xnxn2]T.

尝试计算Pn1x=P(Px),得xn=[x2x3x1]T.

由此可以将上述x1,x2,,xn向量组合起来,构成一个循环矩阵X.

2.2 一个重要结论

首先指出该重要结论(即KCF论文中的Theorem 1):假设存在一种核函数K,满足K(x1,x2)=K(Mx1,Mx2),那么相关核矩阵K也是循环矩阵,且K=C(kxx),其中M是一种置换矩阵(permutation matrix),kxx是相关核矩阵K的第一行,现在证明K=C(kxx).

证明:根据矩阵K的定义Kij=K(xi,xj),其中xi表示训练样本集X中的一个移位样本(参考KCF论文4.1节中的表述),可以将矩阵K表示为如下矩阵(假设矩阵有4行4列):

数据内容: K11=K(x1,x1) K12=K(x1,x2) K13=K(x1,x3) K14=K(x1,x4) K21=K(x2,x1) K22=K(x2,x2) K23=K(x2,x3) K24=K(x2,x4) K31=K(x3,x1) K32=K(x3,x2) K33=K(x3,x3) K34=K(x3,x4) K41=K(x4,x1) K42=K(x4,x2) K43=K(x4,x3) K44=K(x4,x4)

同时根据定义,kxx(即kx1x1)是核矩阵K的第一行,也可以将kxx表示为如下向量:

数据内容: K11=K(x1,x1) K12=K(x1,x2) K13=K(x1,x3) K14=K(x1,x4)

现在,观察K11K22,从矩阵数据可知,则

K11=K(x1,x1)

K22=K(x2,x2)

K(x2,x2)=K(Mx1,Mx1),其中M是一种置换矩阵(permutation matrix),因为训练数据集X为循环矩阵(参考线性滤波器的解w2),而在循环矩阵中,x2可以由一个置换矩阵(permutation matrix)乘以它前面的x1得到,也就是x2=Mx1,从而K(x2,x2)=K(Mx1,Mx1).

另外前面已经做好假设,存在一种核函数K,满足K(x1,x2)=K(Mx1,Mx2),这样可以得出结论K11=K22,同理,还可以得出:K12=K23K13=K24K14=K21…这样可以得出矩阵K的另一种表示:

数据内容: K11=K(x1,x1) K12=K(x1,x2) K13=K(x1,x3) K14=K(x1,x4) K14=K(x1,x4) K11=K(x1,x1) K12=K(x1,x2) K13=K(x1,x3) K13=K(x1,x3) K14=K(x1,x4) K11=K(x1,x1) K12=K(x1,x2) K12=K(x1,x2) K13=K(x1,x3) K14=K(x1,x4) K11=K(x1,x1)

观察该矩阵数据,可以发现该矩阵的第二行是第一行的位移,第三行又是第二行的位移…,这就是C(kxx),因此

K=C(kxx)(7)

证明完毕。

进一步结合本笔记2.1节中关于置换矩阵(permutation matrix)的移位作用,我们有

kxxi=K(x,Pi1x)(7.1)

从核函数角度来看,上式即为

kxxi=ϕT(x)ϕ(Pi1x)(7.2)

2.3 核化滤波器表达式

从前述公式(6)开始,利用2.2节的重要结论,将公式(6)中的矩阵KC(kxx)代替,得到下式:

α=[C(kxx)+λI]1y=[Fdiag(k^xx)FH+λI]1y(8)

公式(8)中的C(kxx)可以用Fdiag(k^xx)FH代替,这是由循环矩阵的特性决定的,见线性滤波器公式推导中的(3)式3。

现在利用傅里叶矩阵F的幺正性(unitarity)即:FFH=I,可以进一步将公式(8)改写为

α=[Fdiag(k^xx)FH+λFIFH]1y=[Fdiag(k^xx)FH+Fdiag(λ)FH]1y=Fdiag(k^xx+λ)1FHy(9)

将公式(9)两边同时左乘FH,得到
FHα=FHFdiag(k^xx+λ)1FHy=diag(k^xx+λ)1FHy(10)

根据傅里叶变换的定义,我们可以将Fα表示为α^,那么公式(10)中的FHα可以表示为[α^]T(因为FH=(F)T,右上角的星号表示共轭矩阵),这样公式(10)可以改写为
[α^]Tα^=diag(1k^xx+λ)[y^]T=diag(1k^xx+λ)y^(11)

由于一个对角矩阵(diagonal matrix)与一个向量相乘,相当于元素级的乘法,因此
α^=y^k^xx+λ(12)

最后,等式两边同时取共轭,有
α^=y^k^xx+λ(13)

其中,kxx(即kx1x1)是核矩阵K的第一行,这样非线性滤波器的推导就完成了。

3. 快速检测

上文已经推导出了非线性条件下滤波器的求解公式,在得到了滤波器后,我们可以对视频中某一帧中的图像块进行检测以求出目标的位置,这样待检测的图像块称之为z

3.1 快速检测表达式引入

回顾公式(5)

f(z)=wTz=(i=1nαiφ(xi))Tφ(z)=i=1nαiK(z,xi)(5)

公式(5)求解的f(z)是一个标量,它表示某一个样本的回归值。再回顾公式(6)
α=(K+λI)1y(6)

可得
y=Kα(14)

注意:岭回归问题中,正则项仅仅用来求解α,在求解回归值时不需要正则项。

论文认为:为了检测到目标,应该从多个候选样本中进行评估(见论文5.3节),仍然采用循环矩阵,对待检测的图像块z进行循环化,那么在目标检测的场景下,(14)式可表示为

f(z)=(Kz)Tα(15)

其中,Kz表示训练样本与候选样本之间的核矩阵,它是一个非对称阵(asymmetric matrix),Kz的每个元素值定义为:Kzij=K(Pi1z,Pj1x)P是置换矩阵,其作用是实现位移。

3.2 快速检测表达式推导

现在推导上述公式(15),由公式(5)可以推出

f(z)=i=1nαiK(z1,xi)i=1nαiK(z2,xi)i=1nαiK(z3,xi)i=1nαiK(zm,xi)=i=1nK(z1,xi)αii=1nK(z2,xi)αii=1nK(z3,xi)αii=1nK(zm,xi)αi(16)

其中m表示m个候选样本,f(z)中的各个元素是样本z1(也记作z)的循环移位样本。

将公式(16)展开,可得

f(z)=K(z1,x1)K(z2,x1)K(zm,x1)K(z1,x2)K(z2,x2)K(zm,x2)K(z1,xn)K(z2,xn)K(zm,xn)α1α2αn=K(z1,x1)K(z1,x2)K(z1,xn)K(z2,x1)K(z2,x2)K(z2,xn)K(zm,x1)K(zm,x2)K(zm,xn)Tα1α2αn=K(z1,x1)K(z1,x2)K(z1,xn)K(z2,x1)K(z2,x2)K(z2,xn)K(zm,x1)K(zm,x2)K(zm,xn)Tα(17)

再结合上述关于Kz中各个元素的定义Kzij=K(Pi1z,Pj1x),不难发现
f(z)=K(P0z,P0x)K(P0z,P1x)K(P0z,Pn1x)K(P1z,P0x)K(P1z,P1x)K(P1z,Pn1x)K(Pm1z,P0x)K(Pm1z,P1x)K(Pm1z,Pn1x)Tα=Kz11Kz12Kz1nKz21Kz22Kz2nKzm1Kzm2KzmnTα=(Kz)Tα(18)

其中

Kz=Kz11Kz12Kz1nKz21Kz22Kz2nKzm1Kzm2Kzmn(19)

至此,公式(15)推导完毕。

3.3 利用循环矩阵性质,对快速检测表达式进行优化

上述推导仅仅涉及到Kz的定义,并没有深入讨论其性质,现在首先给出结论:Kz是一个循环矩阵,将其第一行记作为kxz,回顾2.2节的重要结论,可得

Kz=C(kxz)(20)

由此公式(15)可表示为

f(z)=[C(kxz)]Tα(21)

利用循环矩阵的转置性质4
XT=Fdiag((x^))FH=C(x)(22)


[C(kxz)]T=Fdiag((k^xz))FH=C((kxz))(23)

于是,公式(21)可以改写为
f(z)=C((kxz))α(24)

再将上式两边同时进行傅里叶变换,得
F(f(z))=F(C((kxz))α)(25)

利用循环矩阵的转置性质5
F(Xy)=F(C(x)y)=F(x)F(y)(26)

利用循环矩阵的卷积性质6,上述(25)式可以进一步改写为
F(f(z))=F((kxz))F(α)=F(kxz)F(α)(27)

将上式两边的傅里叶变换符号改用hat符号表示,得
f^(z)=k^xzα^(28)

这也就是KCF论文中的(22)式,至此快速检测公式的推导也就完成了。

循环矩阵转置性质:循环矩阵的转置也是一个循环矩阵(可以查看循环矩阵各元素排列证明),其特征值和原特征值共轭,即

XT=Fdiag((x^))FH(29)

循环矩阵卷积性质:循环矩阵乘向量等价于生成向量的逆序和该向量卷积,可进一步转化为福利也变化相乘。 注意卷积本身即包含逆序操作,另外利用了信号与系统中经典的“时域卷积,频域相乘”。卷积性质表示为
F(Xy)=F(C(x)y)=F(x¯y)=F(x)F(y)(30)

其中x¯表示将x的元素倒序排列,星号表示共轭。

(摘自:循环矩阵傅里叶对角化 )

4.快速核相关

在上述非线性滤波器求解以及快速检测的公式中,分别出现了kxxkxz这样的表达式,它们被称为核相关(kernel correlation),核相关的求解与具体采用的核函数有关,不同的核函数具有不同的表达式。

4.1 点积与多项式核

点积核函数的形式为

K(x,x)=g(xTx)(31)

其中g是某种核函数。本笔记在2.2节中(对应KCF论文5.2节)已经提及

kxxi=K(x,Pi1x)(7.1)

这样,可得

kxxi=g(xTPi1x)(32)

将(32)式详细表示,有

kxx1=g(xTP0x)kxx2=g(xTP1x)kxx3=g(xTP2x)(33)

由于函数g中的操作是元素级的,因此将(33)式中的各个标量组成一个列向量,得

kxx1kxx2kxx3=g(xTP0x)g(xTP1x)g(xTP2x)=gxTP0xxTP1xxTP2x=g(C(x)x)(34)

这里可以举一个例子来确认xTP0xxTP1xxTP2x=C(x)x,令

x=1234,x=0001,P=0100001000011000


P0x=0001,P1x=1000,P2x=0100,P3x=0010,C(x)=0100001000011000

其中是将前面的P0x,P1x,P2x,P3x变为行向量,再按行进行拼接而成(注:目前本人不确定这样按行拼接是否规范,只是这样做能够将KCF中的公式解释清楚)。

进一步,有

xTP0xxTP1xxTP2xxTP3x=4123,C(x)x=4123

显然
xTP0xxTP1xxTP2xxTP3x=C(x)x(35)

因此(34)式成立,其等式最左边的kxx1kxx2kxx3可以表示为kxx,这样
kxx=g(C(x)x)(36)

根据(30)式循环矩阵卷积性质,有
F(C(x)x)C(x)xg(C(x)x)=x^x=F1(x^x)=F1(x^x)(37)

其中,字母右上角的星号表示共轭矩阵,字母上方的hat标记表示傅里叶变换,它与F表示相同的含义,F1表示傅里叶逆变换。(37)式也即
kxx=g(F1(x^x))(38)

对于多项式核函数,其函数形式为
K(x,x)=g(xTx)=(xTx+a)b(39)

将(39)式中的xTx看作一个整体A,有
g(A)=(A+a)b(40)

现在令A=F1(x^x),那么
kxx=g(A)=(A+a)b=(F1(x^x)+a)b(41)

(41)式即为多项式核函数下的核相关,该式可用于滤波器的求解以及快速检测。

4.2 径向基函数7与高斯核

径向基核函数的形式为

K(x,x)=h(xx2)(42)

与(32)式类似,可得
kxxi=K(x,Pi1x)=h(xPi1x2)=h(x2+Pi1x22xT(Pi1x))(43)

其中,xPi1x2表示欧氏距离(Euclidean distance)8。

关于(43)式中xPi1x2=x2+Pi1x22xT(Pi1x),此处可以证明。

证明:

a=a1a2an,b=b1b2bn

那么

ab2=(a1b1)2+(a2b2)2++(anbn)2=a21+b21+2a1b1+a22+b22+2a2b2++a2n+b2n+2anbn=(a21+a22++a2n)+(b21+b22++b2n)+2(a1b1+a2b2++anbn)=a2+b2+2ab=a2+b2+2aTb

ab2=a2+b22aTb成立。

此外,(43)式可进一步简化为

kxxi=h(x2+Pi1x22xT(Pi1x))=h(x2+x22xTPi1x)(44)

变化在于省略了一个置换矩阵系数Pi1,这是因为置换矩阵不影响x的范数。

现在回顾(32)式与(38)式

kxxi=g(xTPi1x)(32)

kxx=g(F1(x^x))(38)

可以构造出(44)式对应的向量版本

kxx=h(x2+x22F1(x^x))=h(Pi1xx2)=h(xx2)(45)

(45)式最后一步省略了Pi1,是因为置换矩阵不影响x的范数。特别的,作为高斯核函数,其函数形式为
K(x,x)=exp(1σ2xx2)(46)

这样,将(46)式代入到(45)式中,可得
kxx=exp(1σ2xx2)=exp(1σ2(x2+x22F1(x^x)))(47)

(47)式即为高斯核函数下的核相关,该式可用于滤波器的求解以及快速检测。

本文的公式推导,离不开博主shenxiaolu1984、博主mhz9123、博主zwlq1314521等人的贡献,在此表示感谢!


  1. 线性条件下滤波器的解,其最终表达式为:w^=x^y^x^x^+λ,推导过程参考:http://blog.csdn.net/discoverer100/article/details/53835507 ↩
  2. 线性条件下滤波器的解,其最终表达式为:w^=x^y^x^x^+λ,推导过程参考:http://blog.csdn.net/discoverer100/article/details/53835507 ↩
  3. 线性条件下滤波器的解,其最终表达式为:w^=x^y^x^x^+λ,推导过程参考:http://blog.csdn.net/discoverer100/article/details/53835507 ↩
  4. 参考《循环矩阵傅里叶对角化》:http://blog.csdn.net/shenxiaolu1984/article/details/50884830 ↩
  5. 参考《循环矩阵傅里叶对角化》:http://blog.csdn.net/shenxiaolu1984/article/details/50884830 ↩
  6. 参考《循环矩阵傅里叶对角化》:http://blog.csdn.net/shenxiaolu1984/article/details/50884830 ↩
  7. 参考Radial basis function kernel - Wikipeia:https://en.wikipedia.org/wiki/Radial_basis_function_kernel ↩
  8. 参考Euclidean distance - Wikipedia:https://en.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance ↩
0 0
原创粉丝点击