作者的主页:http://home.isr.uc.pt/~henriques/
可以下载到文章和代码,文章的名字叫 High-Speed Tracking with Kernelized Correlation Filters.
这是另外一个,可以下载各种语言的代码 http://www.robots.ox.ac.uk/~joao/circulant/
总结来说,这也是一种Tracking By Detection的跟踪方法,跟TLD,OAB同宗,以跟踪对象为正样本,以周围坏境为负样本,训练一个判别分类器.paper的实验结果显示,kcF(Kernelized Correlation Filter)准确率比Struck和TLD都高(paper中提到With HOG features, both the linear DCF and non-linear KCF outperform by a large margin top-ranking trackers, such as Struck [7] or Track-Learn-Detect(TLD) [4], while comfortably running at hundreds of frames-per-second.)。之所以能有这么快的速度,得益于作者巧妙地通过循环偏移构建出了分类器的训练样本,从而使得数据矩阵变成了一个循环矩阵。然后基于循环矩阵的特性把问题的求解变换到了离散傅里叶变换域,从而避免了矩阵求逆的过程,降低了好几个数量级的算法复杂度.
4.1 样本训练过程实际上是一个岭回归问题,或者叫做正则化最小二乘问题,即
(公式直接从文章截图了)
公式1大家都很熟悉把,回忆一下SVM的原理,我们可以知道,训练的最终目的就是为寻找一组权值W,得到公式2
X,y就是对应的样本和类别.因为考虑到后面要在傅里叶域进行计算,这里来转化一下,给出一个复数情况下的求解结果,其中 XH 是 X 的共轭转置, w∗ 是 w 的共轭。
随着样本数目的增加,直接求解公式3时非常耗时的(因为有求逆计算).这篇作者的贡献就是非常高效的避开了求逆运算,接着看.
(样本循环着移来移去利用了循环矩阵的性质,使得只需要计算循环矩阵的第一行就可以达到计算循环整个矩阵的效果.)
重要思想:All circulant matrices are made diagonal by the Discrete Fourier Transform (DFT), regardless of the generating vector x.
任意循环矩阵可以被傅里叶变换矩阵对角化。
4.2 Cyclic shifts(循环偏移)***
式 (3) 中的样本矩阵 X 如果是一个循环矩阵的话,该式子的计算就会变得容易很多。即,
其中, x 是矩阵的第一行,整个矩阵式由这一行的循环偏移得到的。那我们假设存在这么一个循环矩阵,看看接下来式 (3) 会变成怎样。首先列出一个循环矩阵拥有的一个性质5如下:
其中, x 头上的那个小帽 x^ 代表 x 的傅里叶变换, F 是离散傅里叶变换矩阵,即满足 x^</