闲扯:
                第一次接触到目标跟踪方面的课题,公式的推导能力一直不强,正好拿这篇论文补一下自己的公式推导能力,本文意在推导论文中出现的所有关键部分,整篇论文需要了解一些先验知识例如循环矩阵:请看这里 以及傅里叶变换的小知识见这里
  论文思路
                论文的主要思路为:
     - 在         It         帧中,在当前位置         pt         附近采样,训练一个回归器。这个回归器可以计算一个小窗口的响应。   
- 在         It+1         帧中,在前一帧位置         pt         附近采样,用前述回归器判断每个采样窗口的响应。   
- 取响应值最大的采样作为本帧的位置。  
利用轮转矩阵来表示样本
                KCF中的所有训练样本全都是由目标样本循环位移得到,这里举一个一维的例子。 
        x=[x1,x2,...,xn]T        
  
 
        Px=[xn,x1,x2,...,xn−1]T        
 从一维可以直接扩展到维,所以可以由一个向量       x∈Rn       通过不断的乘以排列矩阵得到n个循环位移向量,将这n个向量依序排列到一个矩阵中,就形成了x生成的循环矩阵(也就是数据窗口)表示为       C(x)       ,下面有2个图片用来展示这个过程: 
  
 
 图1:达标1维的情况 
  
 
 图2:代表二维的情况
  线性回归
                首先介绍一个线性回归模型—脊回归。设训练样本为       (xi,yi)       ,那么其线性回归函数       f(xi)=wTxi       ,w是列向量表示权重系数,可以通过最小二乘法求解之: 
 
          loss=min∑i(f(xi)−yi)2+λ||w||2w        
 ,其中 
      X=[x1,x2,...,xn]T      的每一行表示一个向量,y是列向量,每个元素对应一个样本的标签于是让它的导数去解出w为: 
      w=(XTX+I∗λ)−1XTy      , 因为之后是在傅里叶变换域里做计算,所以根据在傅里叶变换中的性质 
      XH=(X∗)T      把w写成: 
      w=(XHX+λ)−1XHy      有人问 
      X∗      去哪了?去百度一下共轭的定义看一眼上面X的结构不难发现 
      X∗=X      ,又根据循环矩阵的相乘性质: 

, 
      XHX      的特征值为 
      x̂ ⊙x̂ ∗      .其中 
      I      的生成向量是[1, 0, 0, 0],这个生成向量的傅里叶变换为全1向量,记作 
      δ      。现在再次来推导一下w:    
      w=(Fdiag(x̂ ⊙x̂ ∗)FH+λFdiag(δ)FH)−1XHy         根据循环矩阵求逆的性质:    

,可以把矩阵求逆转换为特征值求逆。    
      w=F∗diag(1x̂ ⊙x̂ ∗+λδ)∗FHXHy      继续把 
      xH      展开得到: 
      w=F×diag(1x̂ ⊙x̂ ∗+λδ)×FH×diag(x̂ ∗)×FH×y      ,利用F的酉矩阵性质化简得:    
      w=F×diag(x̂ ∗x̂ ⊙x̂ ∗+λδ)×FH×y      分号表示对位相除。然后我们对w反用一下对角化性质: 
      Fdiag(y)FH=C(ℱ−1(x̂ ∗x̂ ⊙x̂ ∗+λδ))×y      利用循环卷积性质 
      ℱ(C(x)∗y)=x̂ ∗⊙ŷ       得到: 
      F(w)=(x̂ ∗x̂ ⊙x̂ ∗+λδ)∗⊙F(y)      由于 
      x̂ ⊙x̂ ∗      的每个元素都是实数,所以共轭不变,F(w)化简为: 
      F(w)=x̂ x̂ ⊙x̂ ∗+λδ⊙F(y)=x̂ ⊙ŷ x̂ ⊙x̂ ∗+λδ      ,所以线性回归系数w可以通过向量的傅里叶变换和对位乘法得到。   
核空间的脊回归
                首先核回归的式子为:       f(z)=αTk(z)       , 其中k(z)表示测试样本和训练样本的核函数,参数有解:       α=(K+λI)−1y       ,其中       Ki,j=k(xi,xj)       ,所以问题的关键在于选择什么样的核函数使得x的内部元素顺序交换不影响核函数的值,也就是让K也为循环矩阵,论文提到了可以选择多项式核函数和高斯核函数,现在设核相关矩阵的生成向量是k.推导和上面十分像,如下: 
        α=(Fdiag(k̂ )FH+Fdiag(λδ)FH)−1y=(Fdiag(k̂ +λδ)FH)−1y=Fdiag(1k̂ +λδ)FHy=C(ℱ−1(1k̂ +λδ))y        
 利用循环卷积的性质:       ℱ(C(x)∗y)=x̂ ∗⊙ŷ        得到: 
        α̂ =(1k̂ +λδ)∗⊙ŷ 这里k是核相关矩阵的第一行,表示原始生成向量x0和位移了i的向量xi的核函数,并且k还是对称向量即满足ki=k(x0,xi)=kn−i=k(x0,xn−i)举个例子来讲x0=[1,2,3,4],x1=[4,1,2,3],x3=[2,3,4,1],利用多项式核函数k(x,y)=xT(y),容易验证k(x0,x1)=k(x0,x3),根据傅里叶变换的性质对称向量的傅里叶变换为实数,所以右边的式子是实数,可以把共轭去掉,化简为:α̂ =(1k̂ +λδ),因此线性回归系数α可以通过向量的傅里叶变换和对位乘法得到。       
  核空间的脊回归提速
                训练数据和测试数据的核相关矩阵为K,每一列对应一个待测样本。可以可以一次性的计算所有样本的响应(       N×1       ):       f(z)=(C(kxz))Tα=(Fdiag(k̂ xz)FH)Tα=FHdiag(k̂ xz)Fα       等式2边同时乘以F得:       Ff(z)=diag(k̂ xz)Fα       ,然后结合       Fz=ẑ       推出       f̂ (z)=k̂ xz⊙α̂        , 因此所有侯选块的检测响应可以通过向量的傅里叶变换和对位乘法计算得到。
  核函数
                对本文的多项式核函数和高斯核函数做一个介绍,在训练和检测过程中,都需要计算核相关矩阵K的生成向量k.
   
 
 对核相关矩阵的生成向量的推导直接看论文的第6部分,这里不做推导。
  多通道
                在多通道情况下(例如使用了HOG特征),生成向量x变成M×L,其中M是样本像素数,L是特征维度。在上述所有计算中,需要更改的只有向量的内积:        XTy=∑l(xl)Tyl       
  参考文章:https://blog.csdn.net/shenxiaolu1984/article/details/50905283 
 https://blog.csdn.net/shenxiaolu1984/article/details/50864845 
 https://www.cnblogs.com/YiXiaoZhou/p/5925019.html