目标跟踪之KCF详解

news/2024/10/11 17:44:18/

High-Speed Tracking with Kernelized Correlation Filters

使用内核化相关滤波器进行高速跟踪

        大多数现代跟踪器的核心组件是判别分类器,其任务是区分目标和周围环境。为了应对自然图像变化,此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集充斥着冗余 - 任何重叠的像素都被限制为相同。基于这个简单的观察,我们提出了一个包含数千个翻译补丁的数据集的分析模型。通过证明生成的数据矩阵是循环的,我们可以用离散傅里叶变换对其进行对角化,从而将存储和计算减少几个数量级。有趣的是,对于线性回归,我们的公式相当于一个相关滤波器,被一些最快的竞争跟踪器使用。然而,对于核回归,我们推导了一个新的核化相关滤波器(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


http://www.ppmy.cn/news/1365118.html

相关文章

Eureka服务搭建

1️⃣搭建服务 引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>启动类加注解 EnableEurekaServer SpringBootApplication public…

【从零开始学习重要知识点 | 第一篇】快速了解什么是幂等性以及常见解决方案

前言&#xff1a; 当我们在设计和实现分布式系统时&#xff0c;幂等性是一个非常重要的概念。幂等性可以简单地理解为&#xff1a;对于同一操作&#xff0c;不论执行多少次&#xff0c;产生的影响都是相同的。这个概念在分布式系统中非常重要&#xff0c;因为在这种环境下&…

【机器人最短路径规划问题(栅格地图)】基于蚁群算法求解

基于蚁群算法求解机器人最短路径规划问题的仿真结果 仿真结果 收敛曲线变化趋势 蚁群算法求解最优解的机器人运动路径 各代蚂蚁求解机器人最短路径的运动轨迹

利用Spring Boot实现MQTT在物联网中的应用

在物联网&#xff08;IoT&#xff09;领域&#xff0c;消息队列遵循发布/订阅模型的MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议变得越来越受欢迎。本文将深入探讨如何在Spring Boot中使用MQTT&#xff0c;并讨论其与其他中间件的集成以及在物联网中…

【vue】vue 是怎么把 template 模版编译成 render 函数的,什么是AST抽象语法树

什么是AST 抽象语法树 是一个对象/或者json是一个数据结构 AST通常是由多个节点组成的树状结构&#xff0c;每个节点代表一个语法单位或表达式。节点之间的关系通过父子关系或兄弟关系来表示程序的结构。在不同的编程语言和工具中&#xff0c;AST可能有不同的表示方式和节点类…

【深度学习笔记】深度卷积神经网络——NiN

网络中的网络&#xff08;NiN&#xff09; LeNet、AlexNet和VGG都有一个共同的设计模式&#xff1a;通过一系列的卷积层与汇聚层来提取空间结构特征&#xff1b;然后通过全连接层对特征的表征进行处理。 AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者&am…

FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)

先说几个逻辑&#xff1a;&#xff08;强调一下在这篇文章 输入路数 只有 1个或2个&#xff0c;输出只有1个&#xff0c;N个输入M个输出以后再说&#xff09; 看下面的几个图&#xff1a; 图一&#xff08; 忘了 这是 啥门&#xff0c;不是门吧 &#xff1a;&#xff09;也就…

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网&#xff1a;https://swagger.io/ Swagger 是一个规范和完整的Web API框架&#xff0c;用于生成、描述、调用和…