KCF跟踪算法论文阅读与原理分析


前言

  • KCF算法的论文题目为:High-Speed Tracking with Kernelized Correlation Filters,是一种典型且有效的跟踪算法,自提出以来在目标跟踪领域得到了广泛的应用。
  • KCF是一种鉴别式追踪方法,这类方法一般都是在追踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测位置是否是目标,然后再使用新检测结果去更新训练集进而更新目标检测器。
  • 从作者的论文中,可以总结出:KCF跟踪算法的基本思想是使用核相关滤波器训练一个判别式分类器,使用循环矩阵生成样本去训练分类器。

参考文献:
[1] J. F. Henriques, R. Caseiro, P. Martins and J. Batista, “High-Speed Tracking with Kernelized Correlation Filters,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 37, no. 3, pp. 583-596, 1 March 2015, doi: 10.1109/TPAMI.2014.2345390.
[2] D. S. Bolme, J. R. Beveridge, B. A. Draper and Y. M. Lui, “Visual object tracking using adaptive correlation filters,” 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2010, pp. 2544-2550, doi: 10.1109/CVPR.2010.5539960.


一、KCF的前身:MOSSE算法

1、相关滤波

  • 相关滤波(Correlation Filter) 最早应用于信号处理,用来描述两个信号之间的相关性(相似性)。
  • 对于两组数据 f 、 g f、g fg其相关性的计算公式如下:
    ( f ⊙ g ) ( τ ) = ∫ − ∞ + ∞ f ∗ ( t ) g ( t + τ ) d t (f \odot g)(\tau)=\int_{-\infty}^{+\infty}f^*(t)g(t+\tau)dt (fg)(τ)=+f(t)g(t+τ)dt
    ( f ⊙ g ) ( n ) = ∑ − ∞ + ∞ f ∗ [ m ] g [ m + n ] (f\odot g)(n)=\sum_{-\infty}^{+\infty}f^*[m]g[m+n] (fg)(n)=+f[m]g[m+n]
  • 其中的复共轭是与卷积操作的区别。

2、MOSSE算法

  • MOSSE(Minimum Output Sum Square Error):是最初将相关滤波应用于目标跟踪领域中的,它在保持较好的跟踪效果的同时,其速度远超同时期的其它跟踪算法。

  • MOSSE算法基本思想:根据第一帧图像框选的目标构建一个响应,该响应在所绘制的目标框的中心处的响应值最大,向四周缓慢衰减(按照二维高斯分布)。希望找到一个滤波器使得图像和这个滤波器进行相关运算之后刚好得到的就是这个响应,这样根据响应值最大的位置就可以找出目标的位置。当新的一帧图像进来时,用之前得到的滤波器与新的图像进行相关运算,即可更新目标位置。
    在这里插入图片描述

  • 从公式上来看,希望获得滤波器 h h h可以满足: g = f ∗ h g=f*h g=fh。通过傅里叶变换,转换到频率,即 G = F ⊙ H ∗ G=F⊙H^* G=FH(*表示复共轭,⊙表示频域下的卷积运算)。当 G G G F ∗ F^* F均已知的情况下,可求出 H ∗ = G F H^*=\frac{G}{F} H=FG

  • 为了增加H*的鲁棒性,将第一帧图像的目标进行多次的变换,得到多个f,构成一个数据集。
    在这里插入图片描述

  • 按照优化的思想, m i n H ∗ ∑ i ∣ F i ⊙ H ∗ − G i ∣ 2 min_{H^*} \sum_{i}|F_i \odot H^*-G_i|^2 minHiFiHGi2得到鲁棒性较好的 H ∗ : H ∗ = ∑ i G i ⊙ F i ∗ ∑ i F i ⊙ F i ∗ H^*:H^*=\frac{\sum_iG_i\odot F_i^*}{\sum_i F_i\odot F_i^*} H:H=iFiFiiGiFi

  • 对于后续的视频帧MOSSE算法给出了更新方法: H ∗ = A i B i , A i = η G i ⊙ F i ∗ + ( 1 − η ) A i − 1 , B i = η F i ⊙ F i ∗ + ( 1 − η ) B i − 1 H^*=\frac{A_i}{B_i}, A_i=\eta G_i \odot F_i^*+(1-\eta)A_{i-1}, B_i=\eta F_i \odot F_i^*+(1-\eta)B_{i-1} H=BiAi,Ai=ηGiFi+(1η)Ai1,Bi=ηFiFi+(1η)Bi1

  • 其中 η \eta η表示学习率, η \eta η越大,则对当前帧保留的信息越多,对历史信息保留的越少,论文中给出的最佳值为0.125。

二、岭回归与循环矩阵

1.岭回归(Ridge Regression)

  • 是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法
  • 算法形式:
    min ⁡ w ∑ i ( f ( x i ) − y i ) 2 + λ ∣ ∣ w ∣ ∣ 2 \min \limits_w \sum_i (f(x_i)-y_i)^2+\lambda ||w||^2 wmini(f(xi)yi)2+λ∣∣w2,其中 f ( x ) = w T x f(x)=w^Tx f(x)=wTx
  • 对上式可以得到闭式解: w = ( X T X + λ I ) − 1 X T y w=(X^TX+\lambda I)^{-1}X^Ty w=(XTX+λI)1XTy,其中,数据矩阵 X X X每一行 x i x_i xi有一个样本,并且 y y y每一个元素是回归目标 y i y_i yi
  • 为实现在频域进行处理,对闭式解进行调整: w = ( X H X + λ I ) − 1 X H y w=(X^HX+\lambda I)^{-1}X^Hy w=(XHX+λI)1XHy,其中 X H = ( X ∗ ) T X^H=(X^*)^T XH=(X)T,成为Hermitian转置亦即共轭转置。

2.循环矩阵

2.1 循环移位

  • 循环移位算子:
    在这里插入图片描述
    P x = [ x n , x 1 , x 2 , . . . , x n − 1 ] T Px=[x_n, x_1,x_2,...,x_{n-1}]^T Px=[xn,x1,x2,...,xn1]T相当于对 x x x循环移位一个元素。
    通过 P u x P^ux Pux可以实现更大的位移,而且 ± u \pm u ±u可以代表循环移位的方向。

  • 循环移位示意图如下:
    在这里插入图片描述
    这是一种一维的水平循环移位示意图,每一行的元素都可以看作第一行的元素进行循环移位获得。
    在这里插入图片描述
    这是一个二维的垂直循环移位示意图。

  • 由于循环的特性,每 n n n个周期得到相同的信号,所以 { P u x ∣ u = 0 , 1 , 2 , . . . , n − 1 } \{P^ux|u=0,1,2,...,n-1\} { Puxu=0,1,2,...,n1}可以表示全套的移位信号。展开表示为:
    在这里插入图片描述

  • 另外,由于循环性质,我们可以等效地将该组的前半部分视为正方向的变化,而后半部分则视为负方向的变化。

2.2 循环矩阵的处理

  • 通过离散傅里叶变换(DFT)对角化: X = d i a g ( x ^ ) F H X=diag(\hat x)F^H X=diag(x^)FH,其中 F F F是不依赖于生成向量 x x x的常数矩阵即DFT矩阵满足 ( z ) = n F ( z ) \mathcal(z)=\sqrt nF(z) (z)=n F(z) x ^ \hat x x^表示生成向量 x x x的傅里叶变换,即 x ^ = F ( x ) \hat x=\mathcal{F}(x) x^=F(x)
  • 考虑 X H X X^HX XHX,可以视为非中心协方差矩阵,有 X H X = F d i a g ( x ^ ∗ ) F H F d i a g ( x ^ ) F H = F d i a g ( x ^ ∗ ) d i a g ( x ^ ) F H = F d i a g ( x ^ ∗ ⊙ x ^ ) F H X^HX=Fdiag(\hat x^*)F^HFdiag(\hat x)F^H=Fdiag(\hat x^*)diag(\hat x)F^H=Fdiag(\hat x^* \odot\hat x)F^H XHX=Fdiag(x^)FHFdiag(x^)FH=Fdiag(x^)diag(x^)FH=Fdiag(x^x^)FH,括号中的向量被称为信号x的自相关(在傅立叶域中,也被称为功率谱)
  • 作者将上述的推导递归应用于线性回归的完整表达式,得到 w ^ = d i a g ( x ^ ∗ x ^ ∗ ⊙ x ^ + λ ) y ^ = x ^ ∗ ⊙ y ^ x ^ ∗ ⊙ x ^ + λ \hat w=diag(\frac{\hat x^*}{\hat x^*\odot \hat x+\lambda})\hat y=\frac{\hat x^* \odot \hat y}{\hat x^* \odot \hat x+\lambda} w^=diag(x^x^+λx^)y^=x^x^+λx^y^
  • 最突出的效果在于使用上式进行计算,将存储和计算减少了几个数量级。

三、非线性回归

在这一部分,作者获得了与线性相关滤波器一样快的非线性滤波器

3.1 核函数

  • (1)使用核技巧将线性空间(原空间)的输入映射到非线性特征空间(对偶空间),将原空间中的向量 w w w表示为对偶空间中基向量的线性组合: w = ∑ i α i Φ ( x i ) w=\sum_i \alpha_i \Phi(x_i) w=iαiΦ(xi),将求解问题转换为求解向量 α \alpha α
  • (2)定义核函数为向量之间的点积 φ T ( x ) φ ( x ′ ) = k ( x , x ′ ) \varphi^T(x)\varphi(x')=k(x,x') φT(x)φ(x)=k(x,x);所有样本对之间的点积用 n × n n\times n n×n维核矩阵 K K K表示, K i , j = k ( x i , x j ) K_{i,j}=k(x_i,x_j) Ki,j=k(xi,xj)
  • (3) f ( z ) = w T z = ∑ i = 1 n α i k ( z , x i ) f(z)=w^Tz=\sum_{i=1}^n\alpha_ik(z,x_i) f(z)=wTz=i=1nαik(z,xi)

3.2 快速核回归

  • (1)对岭回归在对偶空间中的解可以表示为: α = ( K + λ I ) − 1 y \alpha = (K+\lambda I)^{-1}y α=(K+λI)1y K K K为核矩阵, α \alpha α是系数向量。

  • (2)作者证明了矩阵 K K K对于循环移位的数据集是循环的(对于径向基函数核、点积核、加权核、指数加权核都满足),对于上式的求解可以对矩阵 K K K进行对角化,得到如同线性问题的快速解决方式。可以表示为: K = C ( k x x ) K=C(k^{xx}) K=C(kxx),其中 k x x k^{xx} kxx表示循环矩阵 K K K的第一行向量。

  • (3) α = ( C ( k x x ) + λ I ) − 1 y = F d i a g ( 1 k ^ x x + λ ) F H y \alpha = (C(k^{xx})+\lambda I)^{-1}y =Fdiag(\frac{1}{\hat k^{xx}+\lambda})F^Hy α=(C(kxx)+λI)1y=Fdiag(k^xx+λ1)FHy
    对两边同时进行傅里叶变化得到: α ^ = y ^ k ^ x x + λ \hat \alpha=\frac{\hat y}{\hat k^{xx}+\lambda} α^=k^xx+λy^

  • (4)作者定义了更一般核相关:对于任意两个向量 x x x x ′ x' x,二者的核相关向量 k x x ′ k^{xx'} kxx的第 i i i个元素 k i x x ′ = k ( x ′ , P i − 1 x ) k_i^{xx'}=k(x',P^{i-1}x) kixx=k(x,Pi1x)。在高维空间 φ ( . ) \varphi(.) φ(.)中,有 k i x x ′ = φ T ( x ′ ) φ ( P i − 1 x ) k_i^{xx'}=\varphi ^T(x')\varphi (P^{i-1}x) kixx=φT(x)φ(Pi1x)

k x x ′ k^{xx'} kxx n × 1 n\times 1 n×1维的向量,随样本数量呈线性增长,摒弃了传统核方法需要计算 n × n n\times n n×n维的核矩阵。

3.3 快速检测

  • 为了检测感兴趣的目标对象,我们通常希望在几个图像位置上评估回归函数 f ( z ) f(z) f(z),用 K z K^z Kz表示所有训练样本和所有候选块之间的核矩阵。
  • 训练样本和候选块分别由基础样本 x x x和基础图像块 z z z通过循环移位组成,因此矩阵 K z K^z Kz的每个元素可以表示为 K i , j = k ( P i − 1 z , P j − 1 x ) K_{i,j}=k(P^{i-1}z,P^{j-1}x) Ki,j=k(Pi1z,Pj1x)
  • 对评估函数进行处理: f ( z ) = ∑ i = 1 n α i k ( z , x i ) = ( K z ) T α = F d i a g ( k ^ x z ) F α f(z)=\sum_{i=1}^n\alpha_ik(z,x_i)=(K^z)^T\alpha=Fdiag(\hat k^{xz})F\alpha f(z)=i=1nαik(z,xi)=(Kz)Tα=Fdiag(k^xz)Fα,两边进行傅立叶变换,得: f ^ ( z ) = k ^ x z ⊙ α ^ \hat f(z)=\hat k^{xz}\odot \hat \alpha f^(z)=k^xzα^
  • 可以看出,所有位置处的评估函数都可以视为对核值 k x z k^{xz} kxz的空间滤波操作。

四、多通道

多通道情况下,由于离散傅里叶变换的线性性质,对傅里叶域中每个通道的结果求和即可。所以只需要在计算核相关函数时对通道求和即可。


总结

  • 通过循环移位来建模,构建循环移位数据集
  • 傅里叶域进行处理循环矩阵
  • 将核函数矩阵转换为循环矩阵处理
  • 多通道扩展

猜你喜欢

转载自blog.csdn.net/weixin_49513223/article/details/128201542
今日推荐