DSP

【目标跟踪】KCF高速跟踪详解

2019-07-13 16:23发布

Henriques, João F., et al. “High-speed tracking with kernelized 
correlation filters.” Pattern Analysis and Machine Intelligence, IEEE 
Transactions on 37.3 (2015): 583-596.
本文的跟踪方法效果甚好,速度奇高,思想和实现均十分简洁。其中利用循环矩阵进行快速计算的方法尤其值得学习。另外,作者在主页上十分慷慨地给出了各种语言的实现代码。 
本文详细推导论文中的一系列步骤,包括论文中未能阐明的部分。请务必先参看这篇简介循环矩阵性质的博客

思想

一般化的跟踪问题可以分解成如下几步: 
1. 在It帧中,在当前位置pt附近采样,训练一个回归器。这个回归器能计算一个小窗口采样的响应。 
2. 在It+1帧中,在前一帧位置pt附近采样,用前述回归器判断每个采样的响应。 
3. 响应最强的采样作为本帧位置pt+1

循环矩阵表示图像块

在图像中,循环位移操作可以用来近似采样窗口的位移。 
这里写图片描述 
训练时,围绕着当前位置进行的一系列位移采样可以用二维分块循环矩阵X表示,第ij块表示原始图像下移i行右移j列的结果。类似地,测试时,前一帧结果附近的一系列位移采样也可以用X表示。 
这里写图片描述 
这样的X可以利用傅里叶变换快速完成许多线性运算。

线性回归训练提速

此部分频繁用到了循环矩阵的各类性质,请参看这篇博客。 
线性回归的最小二乘方法解为: 
w=(XHX+λI)1XHy 根据循环矩阵乘法性质,XHX的特征值为x^x^I本身就是一个循环矩阵,其生成向量为[1,0,0...0],这个生成向量的傅里叶变换为全1向量,记为δ。 
w=(Fdiag(x^x^)FH+λFdiag(δ)FH)1XH