文章目录
前言
- KCF算法的论文题目为:High-Speed Tracking with Kernelized Correlation Filters,是一种典型且有效的跟踪算法,自提出以来在目标跟踪领域得到了广泛的应用。
- KCF是一种鉴别式追踪方法,这类方法一般都是在追踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测位置是否是目标,然后再使用新检测结果去更新训练集进而更新目标检测器。
- 从作者的论文中,可以总结出:KCF跟踪算法的基本思想是使用核相关滤波器训练一个判别式分类器,使用循环矩阵生成样本去训练分类器。
参考文献:
[1] J. F. Henriques, R. Caseiro, P. Martins and J. Batista, “High-Speed Tracking with Kernelized Correlation Filters,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 37, no. 3, pp. 583-596, 1 March 2015, doi: 10.1109/TPAMI.2014.2345390.
[2] D. S. Bolme, J. R. Beveridge, B. A. Draper and Y. M. Lui, “Visual object tracking using adaptive correlation filters,” 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2010, pp. 2544-2550, doi: 10.1109/CVPR.2010.5539960.
一、KCF的前身:MOSSE算法
1、相关滤波
- 相关滤波(Correlation Filter) 最早应用于信号处理,用来描述两个信号之间的相关性(相似性)。
- 对于两组数据 f 、 g f、g f、g其相关性的计算公式如下:
( f ⊙ g ) ( τ ) = ∫ − ∞ + ∞ f ∗ ( t ) g ( t + τ ) d t (f \odot g)(\tau)=\int_{-\infty}^{+\infty}f^*(t)g(t+\tau)dt (f⊙g)(τ)=∫−∞+∞f∗(t)g(t+τ)dt
( f ⊙ g ) ( n ) = ∑ − ∞ + ∞ f ∗ [ m ] g [ m + n ] (f\odot g)(n)=\sum_{-\infty}^{+\infty}f^*[m]g[m+n] (f⊙g)(n)=∑−∞+∞f∗[m]g[m+n] - 其中的复共轭是与卷积操作的区别。
2、MOSSE算法
-
MOSSE(Minimum Output Sum Square Error):是最初将相关滤波应用于目标跟踪领域中的,它在保持较好的跟踪效果的同时,其速度远超同时期的其它跟踪算法。
-
MOSSE算法基本思想:根据第一帧图像框选的目标构建一个响应,该响应在所绘制的目标框的中心处的响应值最大,向四周缓慢衰减(按照二维高斯分布)。希望找到一个滤波器使得图像和这个滤波器进行相关运算之后刚好得到的就是这个响应,这样根据响应值最大的位置就可以找出目标的位置。当新的一帧图像进来时,用之前得到的滤波器与新的图像进行相关运算,即可更新目标位置。
-
从公式上来看,希望获得滤波器 h h h可以满足: g = f ∗ h g=f*h g=f∗h。通过傅里叶变换,转换到频率,即 G = F ⊙ H ∗ G=F⊙H^* G=F⊙H∗(*表示复共轭,⊙表示频域下的卷积运算)。当 G G G和 F ∗ F^* F∗均已知的情况下,可求出 H ∗ = G F H^*=\frac{G}{F} H∗=FG。
-
为了增加H*的鲁棒性,将第一帧图像的目标进行多次的变换,得到多个f,构成一个数据集。
-
按照优化的思想, m i n H ∗ ∑ i ∣ F i ⊙ H ∗ − G i ∣ 2 min_{H^*} \sum_{i}|F_i \odot H^*-G_i|^2 minH∗∑i∣Fi⊙H∗−Gi∣2得到鲁棒性较好的 H ∗ : H ∗ = ∑ i G i ⊙ F i ∗ ∑ i F i ⊙ F i ∗ H^*:H^*=\frac{\sum_iG_i\odot F_i^*}{\sum_i F_i\odot F_i^*} H∗:H∗=∑iFi⊙Fi∗∑iGi⊙Fi∗。
-
对于后续的视频帧MOSSE算法给出了更新方法: H ∗ = A i B i , A i = η G i ⊙ F i ∗ + ( 1 − η ) A i − 1 , B i = η F i ⊙ F i ∗ + ( 1 − η ) B i − 1 H^*=\frac{A_i}{B_i}, A_i=\eta G_i \odot F_i^*+(1-\eta)A_{i-1}, B_i=\eta F_i \odot F_i^*+(1-\eta)B_{i-1} H∗=BiA