大多数现代跟踪器的核心组件是判别分类器,其任务是区分目标和周围环境。为了应对自然图像变化,此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集充斥着冗余 - 任何重叠的像素都被限制为相同。基于这个简单的观察,我们提出了一个包含数千个翻译补丁的数据集的分析模型。通过证明生成的数据矩阵是循环的,我们可以用离散傅里叶变换对其进行对角化,从而将存储和计算减少几个数量级。有趣的是,对于线性回归,我们的公式相当于一个相关滤波器,被一些最快的竞争跟踪器使用。然而,对于核回归,我们推导了一个新的核化相关滤波器(KCF),与其他核算法不同,它具有与其线性算法完全相同的复杂性。在此基础上,我们还提出了线性相关滤波器的快速多通道扩展,通过线性内核,我们称之为双相关滤波器(DCF)。在 50 个视频基准测试中,KCF 和 DCF 的表现都优于 Struck 或 TLD 等*跟踪器,尽管它们以每秒数百帧的速度运行,并且只需几行代码即可实现(算法 1)。为了鼓励进一步的发展,我们的跟踪框架是开源的。
1 相关背景知识
(一)Hog特征(梯度方向直方图Histogram of oriented gradient):
1. 一文讲解方向梯度直方图(hog) - 知乎
2. HOG特征的提取及代码实现 - 知乎
3. 计算机视觉爱好者必看:特征工程HOG特征描述子指南 - 知乎
(二)SVM(向量机)与核方法:
Python · SVM(三)· 核方法 - 知乎
(三) 循环矩阵与傅里叶变换:
张量t-product积基础 | 循环矩阵与向量乘积的离散傅立叶变换 · 循环矩阵的傅里叶对角化 - 知乎
循环移位可视化理解 - 知乎
通过上面一篇文章,最终得出的结论会用于KCF,即:
(四)判别式跟踪算法:
判别式跟踪方法将目标跟踪问题转化为寻求跟踪目标与背景间决策边界的二分类问题,通过分类最大化地将目标区域与非目标区域分别开来。因此,目标跟踪的准确性和稳定性很大程度上以来于在特征空间上目标与背景的可分性,如何在线建立能够适应目标和背景外观变化的判别模型,是判别式跟踪算法研究的关键。KCF就是判别式跟踪算法。
2 KCF 详解
(一)KCF基本原理:
1. :目标跟踪系列--KCF算法 - 知乎
2. 目标跟踪:KCF_kcf目标追踪是什么-CSDN博客
3. 相关滤波(一)KCF-CSDN博客
4. https://www.cnblogs.com/YiXiaoZhou/p/5925019.html
对于KCF的基本原理以及过程有大致的了解。明白KCF跟踪算法的整体流程。
(二)KCF算法流程概述:
相关滤波(一)KCF-CSDN博客
KCF目标跟踪算法原理与入门详解_kcf跟踪算法原理_普通网友的博客-CSDN博客
第一步:初始帧,确定目标的表达形式,确定目标区域的位置以及大小,画出候选框(可以理解为bounding box),(通常由目标检测算法实现,也可以根据实际情况手动标注);然后在初始帧进行目标特征提取,先提取目标区域的hog特征,在初始帧图像中通过循环移位采集大量样本((是对整幅图像进行循环移位)这一步在判别式跟踪算法中也称作“正负样本生成”,有时也被称作“候选框生成”),基于目标hog特征,在正负样本中训练相关滤波模板w,从而生成期望分布,提高判别力。
第二步:读取下一帧图像,将整副图像图像作为搜索区域,也是提取图像的hog特征,通过余弦窗平滑计算,得到待检测的样本a;然后将待检测样本与相关滤波模板相乘得到当前图像的响应图;将频域响应图f(z) 通过反傅里叶变换求得时域响应图 ,响应值最大的位置就是最佳预测位置;目标的位置进行预测后,根据此位置外观信息,对目标的外观模型以及滤波器模板进行更新。
第三步:模型更新完毕之后,利用更新后的滤波分类器模板与后续帧图像搜索区域进行响应运算,对后续帧目标位置进行预测。
第四步:重复二、三步,直到所有的视频序列检测完成。
3 KCF论文地址
https://ieeexplore.ieee.org/abstract/document/6870486