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