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

上接推导笔记(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)将线性滤波器的解 w 1用样本的线性组合来表示

扫描二维码关注公众号,回复: 1788603 查看本文章

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) λ 是正则项系数。里面的 x y 都是训练集中的数据。公式(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)

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

K11=K(x1,x1)

K22=K(x2,x2)

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

另外前面已经做好假设,存在一种核函数 K ,满足 K(x1,x2)=K(Mx1,Mx2) ,这样可以得出结论 K11=K22 ,同理,还可以得出: K12=K23 K13=K24 K14=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)中的矩阵 K C(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.快速核相关

在上述非线性滤波器求解以及快速检测的公式中,分别出现了 kxx kxz 这样的表达式,它们被称为核相关(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 - Wikipeiahttps://en.wikipedia.org/wiki/Radial_basis_function_kernel
  8. 参考Euclidean distance - Wikipediahttps://en.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance

猜你喜欢

转载自blog.csdn.net/discoverer100/article/details/54345209
今日推荐