目前在online visual tracking这个领域,已经涌现出很多的跟踪算法,比较知名如TLD,Struck,OAB,CT等等。但是能做到非常快速而且效果还不错的相对就较少了,好多算法都是刚刚能实时,而且还是在图像分辨率不是很大的情况下。之前在博客里提到一篇该领域的测评综述1,对该领域大部分算法进行了一个总结和评估,作者在一个有50个视频的数据集上测试了29个算法,其中速度和效果都还不错的算法有TLD2和Struck3。Struck的评价运行速度大概是20帧/s,TLD相对快一点,,大概28帧/s。但这个速度仍然不是很快,而14年的一篇paper提出了一种叫做KCF(Kernerlized Correlation Filter)4的跟踪算法使得速度有了很大提升,在同样的测试数据集上,平均运行速度达到172帧/s(使用HOG特征的情况下)。而且据paper的实验结果显示,准确率比Struck和TLD都高。之所以能有这么快的速度,得益于作者巧妙地通过循环偏移构建出了分类器的训练样本,从而使得数据矩阵变成了一个循环矩阵。然后基于循环矩阵的特性把问题的求解变换到了傅里叶变换域,从而避免了矩阵求逆的过程,大大降低了算法的复杂度。
问题阐述
目前跟踪算法主流的思想还是基于tracking by detection,而训练样本的选择基本上就以目标中心为提取正样本,然后基于周围的图像提取负样本。大部分算法都是采用非正即负的方法来标记训练样本,即正样本标签为1,负样本为0。这种标记样本的方法有一个问题就是不能很好的反应每个负样本的权重,即对离中心目标远的样本和离中心目标的近的样本同等看待。所以就有算法提出使用连续的标签进行标记样本,即根据样本中心里目标的远近分别赋值[0,1]范围的数。离目标越近,值越趋向于1,离目标越远,值越趋向于0。事实也证明这种标记样本的方法能得到更好的效果,比如Struck和KCF。Struck是通过一种loss函数隐式地采用了这种连续的样本标记方法,而KCF则通过使用[0,1]范围的值作为样本的回归值,从而给不同偏移下得到的样本不同的权重。
首先,我们先介绍一个简单的线性回归模型,然后再讨论引入kernel之后的情况。样本训练过程实际上是一个岭回归问题,或者叫做正则化最小二乘问题,它有一个闭式的解。假设给定一些训练样本及其回归值 {(x1,y1),(x2,y2),...,(xi,yi),...}{(x1,y1),(x2,y2),...,(xi,yi),...} ,其训练的最终目标是找到一个函数 f(z)=wTzf(z)=wTz 使得如下残差函数最小&#x