KCF算法学习笔记

时间:2022-12-26 10:42:03

背景

博主正准备往tracking方向入坑,在师兄推荐下学习KCF算法,据说是目前最流行的online visual tracking算法。

论文:J. F. Henriques, R. Caseiro, P. Martins, J. Batista, ‘High-speed tracking with kernelized correlation filters’

从论文所展示的实验效果来看,确实在速度方面有很大的提升,172FPS达到真正意义上的实时,并且在准确率方面也有一定的提升。下面将进行简单的算法分析。

KCF算法学习笔记

KCF算法原理

使用循环矩阵是KCF算法速度提升的关键

KCF算法学习笔记

如图所示对于一个实际的检测目标,在红色虚线的框所确定区域为目标区域,该区域为正样本 (xi,1) ,而通过循环产生的周围其他颜色的区域为负样本 (xi,1) ,训练的目标是找到合适的权重w使得

f(xi)=wTxi=yi
因此得到正则化的优化目标为:
minwΣi(f(xi)yi)2+λw2
使用矩阵表示得到最小二乘解为:
w=(XHX+λI)1XHY

论文中使用循环矩阵傅立叶对角化方法优化上述运算,避免了求逆运算,循环矩阵对角化:
X=C(x)=Fdiag(x^)FH
具体关于循环矩阵、其傅立叶对角化和相应性质可参考这篇博客: 循环矩阵傅立叶对角化
优化得到
w=F1(x^y^x^x^+λδ)

接下来使用求得的w对下一帧进行检测,如上图所示,在上一帧最优位置基础上进行循环产生周边区域,在所有样本中某一个区域(白色框所在区域)对目标函数 f(xi) 的响应最大,那么该位置设为目标位置,如此求得在新一帧当中前景位置。

原理如上所示,关于文章中其他内容以及总结,可参考这篇博客:KCF目标跟踪方法分析与总结