读"J. F. Henriques, R. Caseiro, P. Martins, J. Batista, 'High-speed tracking with kernelized correlation filters'" 笔记
KCF是一种鉴别式追踪方法,这类方法一般都是在追踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测位置是否是目标,然后再使用新检测结果去更新训练集进而更新目标检测器。而在训练目标检测器时一般选取目标区域为正样本,目标的周围区域为负样本,当然越靠近目标的区域为正样本的可能性越大。
注意论文中关于向量是行向量还是列向量总是指示不清楚,所以本文对变量符号统一之后进行推导,首先所有的小写字母均表示列向量,所有的大写字母表示矩阵,其中矩阵的每一行是一个样本,文中的函数除了是对行向量操作,其余都是对元素操做的,四则运算符号也都是针对元素操作的。还有所有对循环矩阵使用傅里叶变换时使用的生成向量都是循环矩阵的第一行向量,这点很重要。
KCF的主要贡献
使用目标周围区域的循环矩阵采集正负样本,利用脊回归训练目标检测器,并成功的利用循环矩阵在傅里叶空间可对角化的性质将矩阵的运算转化为向量的Hadamad积,即元素的点乘,大大降低了运算量,提高了运算速度,使算法满足实时性要求。
将线性空间的脊回归通过核函数映射到非线性空间,在非线性空间通过求解一个对偶问题和某些常见的约束,同样的可以使用循环矩阵傅里叶空间对角化简化计算。
给出了一种将多通道数据融入该算法的途径。
一维脊回归
脊回归
设训练样本集,那么其线性回归函数
,
是列向量表示权重系数,可通过最小二乘法求解
其中用于控制系统的结构复杂性,也就是VC维以保证分类器的泛化性能。
写成矩阵形式
其中的每一行表示一个向量,
是列向量,每个元素对应一个样本的标签,于是令导数为0,可求得
因为后面实在傅里叶域内计算,牵涉到复数矩阵,所以我们将结果都统一写成复数域中形式
其中表示复共轭转置矩阵。
循环矩阵
KCF中所有的训练样本是由目标样本循环位移得到的,向量的循环可有排列矩阵得到,比如
当然对于二维图像的话,可以通过x轴和y轴分别循环移动实现不同位置的移动
举例
1474942884758.jpg
1474942898329.jpg
所以由一个向量可以通过不断的乘上排列矩阵得到n个循环移位向量,将这n个向量依序排列到一个矩阵中,就形成了x生成的循环矩阵,表示成
1D向量得到的循环矩阵.jpg
2D图像不同循环次数后的移位.jpg
循环矩阵傅氏空间对角化
所有的循环矩阵都能够在傅氏空间中使用离散傅里叶矩阵进行对角化
其中x对应于生成X的向量(就是X的第一行矩阵)的傅里叶变化后的值,,
是离散傅里叶矩阵,是常量
关于矩阵的傅里叶对角化请