文章和代码下载地址:
Galoogahi H K, Sim T, Lucey S. Multi-channel Correlation Filters.
代码下载地址:http://www.hamedkiani.com/mccf.html
相关滤波可以表示为一个求解岭回归问题:
表示期望相应,表示正则系数防止过拟合。这个公式怎么来的可以查阅MOSSE,CSK及KCF的文章,在此就不赘述了。
一、引言
为了更好的表示训练样本的信息,大牛牛们引入了各种各样的特征表示,如KCF用了HOG特征,CN用了颜色特征等。但是特征的引入不可避免的会带来计算量的增加,如HOG特征是31个维度的,每个维度单独计算的话,那么计算量要增加31倍。所以这些牛们就要想办法加速,KCF使用核函数来加速计算,CN则用PCA降维的方法。
而本文所讲的MCCF方法就是计算基于HOG特征相关滤波器的一种方法。不管是使用核函数还是使用PCA降维,不可避免的都会造成特征信息的丢失,举个例子,31维的HOG特征经过核函数后变成了一维的特征,而CN所用的颜色特征通过PCA也从11维变成了2维。我们是可以通过低维数据来表示高维特征,但是特征信息不可避免的会丢失一些,因为毕竟不是原来的特征了。
好了可以引入本文的处理方法了,MCCF采取的策略不是将特征降维的思想,而是设计多维特征的并行计算。在求解滤波器的过程每个特征通道都是相互独立的。作者把每个像素点对应的31个通道当做一个整体来计算,大大增加了其运算速度。此后作者提出的CFLB和BACF算法通过ADMM迭代进一步增加了滤波器的求解速度。我觉得MCCF的思路比KCF使用核函数要好,毕竟信息一点都没有丢失,个人看法哈,不喜勿喷。
二、MCCF
文归正传,现在开始讲MCCF算法。
首先作者把前面提到的滤波器求解的岭回归方程表示成如下方式:
这个公式所表达的意思和前面那个一模一样,作者把卷积用循环移位后的与的点乘来表示,很直观很有意思。为输入训练滤波器图像的大小,表示输入了多少张图片。作者原文中训练跟踪眼球的滤波器用了很多张图片,所以值较大。而我们在实际的跟踪中只用第一帧训练,输入图片只有一张或者仿射扰动产生几张,所以也可以不要,就一个求和就行。
多通道的MCCF表示如下:
转到频域:
前面说过可以不要,后面就省去了哈。没啥好说的,简单傅里叶变换。是一个多维特征变换过来的大小为的整合矩阵:,是一个大小为整合矩阵。发现没有其实就是每个通道分别算一遍然后把他们拼在一起。既然这样就把这个独立的通道绑在一起,这样的绑法:
为复共轭,用来表明这是相关而不是卷积,有没有无所谓,可以不用管。然后从每个像素点对应计算:
每个像素点的解为
就这样运算量从降到了。是图片大小远远大于特征维度,所以运算量减少的真的不是一点点,MCCF就介绍到这吧,没写明白的地方欢迎指正。