0. 写在前面
接上一篇博客:相关滤波跟踪算法-CSK-****博客
1. CSK与MOSSE、KCF的羁绊
在MOSSE算法中,过程基本与CSK相似,第一帧初始化加了随机仿射,优化目标没有正则项,最大的区别是训练和检测都没有加padding(主要区别)用来扩展背景信息,仅建模了目标区域;提出一种跟踪置信度评价指标PSR,更新方式是以固定学习率更新分类器参数,但形式略有区别,是滤波器的分子和分母分别更新;
多通道特征扩展,只需要频域通道响应求和。KCF和DCF将CSK中的单通道灰度特征扩展成多通道的HOG特征,采用HOG+线性核的方法叫做DCF,采用HOG+高斯核的方法叫做KCF,依靠傅里叶变化的快速算法FFT和HOG的快速算法fHOG,KCF、DCF成功起飞。
同时期Martin大神用多通道颜色特征Color Names(CN)去扩展CSK得到不错的效果。
HOG是梯度特征,而CN是颜色特征,两者可以互补,所以HOG+CN在近两年的跟踪算法中成为hand-craft特征标配。
2. 小问题
1. 为什么只用单通道灰度特征的KCF和用多通道HOG特征的KCF速度差异很小?
作者使用了快速fHOG算法,HOG特征常用cell size是4,意味着,100*100的图像,HOG特征图的维度只有25*25=625像素点,而Raw pixels是灰度图归一化,维度仍然是100*100=10000像素点,27个通道的HOG特征的复杂度是27*625*log(625)=47180,而单通道灰度特征的复杂度是10000*log(10000)=40000;复杂度差不多。
代码中,作者在扩展后目标区域面积较大时,会先对提取到的图像块做因子2的下采样,编程50*50=2500像素点,这样负责度就变成2500*log(2500)=8495,这种方式的代价就是牺牲了跟踪精度。
2. HOG特征的KCF和DCF哪个更好?
加上kernel-trick的KCF,mean precision仅仅提高0.4%,而FPS下降了41%,这么看,其实加了kernel-trick的性价比很低;目标跟踪算法中特征才是最重要的。
3. 总结
CSK、KCF/DCF和CN就是三种高速的目标跟踪算法,区别在于有没有Kernel-trick和特征(灰度像素、fHOG、ColorNames),也可以任意组合!