来源自我的博客
前言
核相关滤波算法是单目标跟踪领域一个举足轻重的算法,而kernelized correlation filters(KCF)是其原始形态,下面我以一个小白的角度慢慢揭开其神秘面纱。
(知乎的公式编辑跟mathjax有冲突,部分公式我用图片代替,如果阅读观感不好,请移步原博客)
岭回归的理论比较简单,类似于一个单层神经网络加上一个正则项,不同于支撑向量机中的结构风险最小化,岭回归更像是一个逻辑回归,是在保证误差风险最小的情况下尽量使得结构风险小。另外支撑向量机对于高维数据的训练比较快,因为它只取对分类有影响的 support 向量。不过在此处 KCF 的训练样本也不多,所以二者其实都可以,再加上 KCF 中岭回归还引用了对偶空间、傅里叶变换以及核函数,二者的差别就比较小了。 岭回归的算法形式如下:
其中X 为特征矩阵,w 为权值,y 为样本标签/响应,其中每一项都采用了L2 范数的平方,即矩阵内所有元素的平方和。因此,该优化的关键在于求最优的 w,求解方法则是使用了最直接的拉格朗日乘子法:
我们假设当前的权重W和输出y都是一维向量,则矩阵的求导公式满足:
不过,由于后面要引入复频域空间,所以我们这里做一些微调:
其中,H 代表共轭转置,即在转置的同时将矩阵内所有元素变为其共轭形式,原因很简单:
由于在目标跟踪中定位目标时如果采用循环移位的方式定位其中心,则需要采用循环的方式逐步判断,这样做太耗时,因此作者引入了循环矩阵。这样做的话,我们的待选目标框不用移动,直接将原图像矩阵循环移位。以一维矩阵为例:
矩阵的每一行相对上一行都向右移动了一位,这里举这个矩阵例子是有用意的,通过该矩阵的n阶形式,我们可以轻松的实现任意矩阵 X 的右移
循环矩阵本身是将循环移位的结果整合到了一个矩阵中,虽然可以将循环计算过程优化为矩阵运算,但对于图像这类二维矩阵,则会生成一个很大的循环矩阵,从而耗费内存。这里作者巧妙地引入了离散傅里叶变换(DFT),将循环矩阵X等价为:
其中 F 与离散傅里叶变换中的矩阵有所差异,
先以一维矩阵为例来证明:
这里先说明一下,单位矩阵 I 其实也是一个循环矩阵,而
可以发现矩阵 K 的特征矩阵与 DFT 的变换矩阵 W 一致,再利用多项式矩阵的性质可知,循环矩阵 X 的特征值为
可以发现循环矩阵 X 的特征值就是其原矩阵 x 的离散傅里叶变换,对于循环矩阵的特征向量,推导过程如下:
在这里我们将
所以整体来看, X 保持不变,综上可得公式(2-3)。
上述推导都是基于一维矩阵进行的,那么对于二维矩阵的循环矩阵则是要进行两次一维的循环矩阵变换,下面简要介绍一下方法,完整的我不会推导~
对于 m×n 的矩阵 x,其循环矩阵是将其当作块矩阵,矩阵每一行的元素都是前一个元素向下平移得来的,每一列都是向右平移得来的。因此其循环矩阵大小为 mn×mn,这主要是为了将循环矩阵 X 变为方阵,这样才能求其特征值和特征向量。当然,如果原矩阵 x 本身就是方阵,那么则不必这样做,可以将行向量改为右移,列向量改为下移,这样就符合观察习惯,这也是论文代码所采用的方式。
先将 n×n 大小的矩阵 x 每一行向量单独看作一个 1×n 的块矩阵,按照一维循环矩阵$Kx$的逻辑去做,不断下移,可得一个
建立了循环矩阵 X 之后,如果判定其第(i, j)处的块矩阵处响应最大,即目标框相对前一个目标框向下偏移 i-1 个单位, 向右偏移 j-1 个单位。那么标签 y的大小也就是 n×n。将其与岭回归算法结合之后可以得到:
其中,
根据DFT时域卷积的性质:
可以发现:
因此可得:
利用上面的结论可以继续转换w为:
至此,权重矩阵 w 的求解在傅式空间变成了简单的点乘运算,运算复杂度大幅降低。
对偶空间的具体意义我只有一个模糊的概念,之前在运筹学中学习的时候就感觉对偶空间像是从另外一个角度分析优化问题,比方说岭回归中的权值矩阵w,它的目的是完成 X 到 y 的映射,如果将循环矩阵拉伸为多个行向量,即
原优化问题为:
其等价为:
采用惩罚函数的方式是:
可以发现,如果将
将其带入原目标函数可得:
由此可得原优化问题的对偶问题,将其转换成矩阵形式为:
利用拉格朗日乘子法可得:
再将此对偶空间的最优解带入公式(4-4)可得:
上面的优化方法更侧重于从理论源头出发,而如果真的要用的话,可以直接用上面的理论,因此呢我们可以直接对矩阵进行变换:
训练好参数之后,当引入新样本时,可以直接利用 wx 的方式求出响应 y,根据公式(4-7)可得:
核函数的引入主要是为了减少线性不可分问题的影响,因为岭回归跟神经网络或者深度学习不同,它是单层结构,需要从空间映射来着手。 常见的核函数有线性函数、多项式核函数和高斯核函数(RBF),而论文中则是采用了 RBF 核函数,理论上来讲是映射到了无穷维数的空间,可以通过展开其级数得知。
如图所示,黑色和蓝色区域明显是一个线性不可分的,而利用一个二次函数却能完美分割,这就是核函数的意义。本文所使用的核函数是高斯核函数:
论文中将核函数引入样本的点积,即:
对于任何的循环矩阵 X,还是以一维的原矩阵 x 为例,可知:
其中由于 P 是循环矩阵的基础变换矩阵,也就是前面所提到的 K 矩阵,这里是为了与核函数区分开来,在矩阵点积中,两个矩阵的元素对应相乘,因此两个矩阵同时移位
由公式(5-3)可知,只要行号和列号的差值相同,其对应元素的值就相同,所以
同理可得:
虽然原论文关于w的推导错误了,但是代码是根据来实现的,所以正确。
从最基础的内积出发,其核函数形式就是:
对于多项式核,则有:
对于 RBF 径向基核,也就是常说的高斯核函数,有:
模板图像是基于第一帧图像目标框所得到的,其具体获取过程如下:
hog 特征又叫做方向梯度直方图,顾名思义,它所描述的是图像各像素点的方向梯度它对图像几何的和光学的形变都能保持很好的不变性。而论文中所用的hog 特征与常规的不同,具体的不同和实施细节我会在下文详细介绍:
通过图像可以看到,随着 cell 内像素点横纵坐标的偏移,对应的点的 x,y 值一直在变化,且两个函数关于 0.5 对称,另外 x+y=1,利用这一特性,可以利用x 和 y 进行组合分解:
利用公式(7-3),论文代码中将每个 cell 等分为 4 部分(左上、右上、左下和右下),每一部分都是由包含该 cell 在内的相邻 4 个 cell 的同一部分加权平均得来的,其权重即为公式(7-3)所示的四个部分。具体组合方式如下(以 cell左上角部分为例):
可以发现,cell 左上部分的加权方式是以自身为左上角,然后取相邻的其他三个 cell 的左上部分组成一个新的虚 拟 cell,再利用上图 所示的权重分布将四个cell 的左上部分进行加权平均,权重正是
因此有四个组合方式,每种组合方式都取该组合方式内四个 cell 的方向梯度直方图的前 9 个方向梯度的 L2 范数 val,然后用该 cell 内 27 个方向的梯度直方图除以 val,即可得到规范化之后的 hog 特征。四个组合可以得到四组 hog 特征,即 9+9+9+9+18+18+18+18=108 个方向。
可以发现边界 cell 无法得到这么多方向,因此去掉边界 cell。所以sizeX=24-2=22,sizeY=22。
如果用
然后将两种降维方式得到的特征进行组合,得到 27+4=31 组特征。
原论文流程示意图如下:
该颜色特征将颜色空间划分为了黑、蓝、棕、灰、绿、橙、粉、紫、红、白和黄共11种,然后将其投影至10维子空间的标准正交基上,这里作者给出了32768种颜色向量组合。再利用PCA技术,采用奇异值分解方式提取其中主要的两个颜色作为最终的特征。由于CN2特征是单目标跟踪领域中很有效的一种人工特征,这里对其原理做出详细描述:
利用上述理论推导可以求得每一帧 fhog 特征,如果将其视为多通道的话,那么就是 31 通道的图像特征矩阵,然后分别对各通道使用二维汉宁窗进行滤波,为了降低 FFT 过程带来的频谱泄露,其函数形式如下:
利用第五章所得结论,可以求得
其中,(cx,cy)表示图像特征矩阵中心,padding 表示扩展框相对目标框的变化比例 2.5,
论文代码中,作者设置了三种尺度,设定尺度步长为 scale_step=1.05,然后分别以
每一尺度都能求得 f(z)响应矩阵,虽然该响应矩阵对应了循环矩阵每个块矩阵的响应,但是第 i 行第 j 列的块矩阵所对应的响应,正是目标框右移 i-1 个单位,下移 j-1 个单位后的响应,即下一帧图像矩阵 z 的响应。对于该响应矩阵,找出其最大响应值 peak_value 和最大响应位置
然后计算此位置与图像中心的距离 res。
对于不同的尺度,都有着尺度惩罚系数 scale_weight,用此系数乘以该尺度下的最大响应值作为该尺度下的真实最大响应值,取最大响应值对应的尺度为最佳尺度,记为 best_scale。以此来更新目标框参数 T(x,y,w,h):
首先获取原尺度下当前帧的 fhog 特征矩阵 z,作者代码中这一部分没有用汉宁窗进行滤波,可能是考虑到更新时这一部分的权重不大,其模板和
整体来讲,本文通过循环矩阵的方式将循环移位的运算复杂度降低了,然后通过引入傅里叶变换使得主要的矩阵乘法变成了点乘,再次降低了运算量。再通过引入对偶空间和核函数,增加了岭回归分类器的性能。整体来说,其算法结构比较简单,也正因如此,其跟踪速度也很快。
不过其中也暴露了很多问题: