单目标追踪——【相关滤波】C-COT原理与ECO基于C-COT的改进
目录
- C-COT:Continuous Convolution Operator Tracker
- 文章侧重点
- 连续卷积算子
- 目标追踪框架
- 初始化过滤器:
- 追踪流程
- ECO
- 文章侧重点
- 因式卷积因子
- 生成采样空间模型
- 模型更新策略
论文链接:C-COT:Beyond Correlation Filters: Learning Continuous
Convolution Operators for Visual Tracking + ECO: Efficient Convolution Operators for Tracking 提取码:qqzd
代码:python实现的eco——pytracking
参考博客:C-COT – 超越相关滤波:学习连续卷积算子(Continuous Convolution Operators)
https://zhuanlan.zhihu.com/p/67819411
C-COT:Continuous Convolution Operator Tracker
文章侧重点
- 因为梯度特征(HOG)、颜色空间的直方图、浅层卷积网络的深度特征是不同分辨率的特征,传统的KCF或者DCF算法无法将不同分辨率的特征通道进行融合。C-COT则基于深度特征+手工特征,提出连续卷积算子,在连续域实现多个分辨率特征的融合。
- C-COT的主要贡献在于提出一个理论框架,可以在连续空间域中学习一个具有判别力的卷积算子。文中重点阐述了理论框架与公式推导。
- 该框架与传统的相关滤波算法对比的优势在于:可以融合多分辨率(multi-resolution)的特征图【其实就是针对不同分辨率的特征训练不同的卷积滤波器,再在score map层面上加起来】;可以进行准确的像素定位,因为文中还将C-COT方法应用到特征点追踪(feature point tracking)benchmark上。
连续卷积算子
- 连续卷积算子的实现,实际是针对一维特征域:
- 首先,利用三次插值核函数将离散的特征插值得到连续的特征;
- 再将真值 yyy 映射为以目标估计为中心的高斯分布(为了能在连续域做相关性运算)
- 在连续域中训练一个连续卷积算子(也可以看作卷积滤波器),将连续域中的目标特征映射为目标置信函数(即对应特征是追踪目标的概率值)。
- 针对高维的特征:
- 分别训练不同的卷积滤波器
- 分别与连续域中的目标特征作卷积操作,得到不同分辨率下的score map
- 将这些score map按照对应的像素点加起来,得到最终的目标特征对应的置信函数,我们通过寻找图片区域中的最大置信分数来定位目标。
目标追踪框架
初始化过滤器:
即,利用待追踪序列的第一帧的信息,确定要追踪的目标,并用已知的追踪目标的特征初始化(训练)卷积滤波器的参数。
- 处理思路是首先提取第一帧中的特征XXX;要通过在傅里叶域最小化泛函得到最佳的卷积滤波器的参数:利用公式5计算置信分数函数 sss 的傅里叶系数。
- 处理步骤:
- 首先利用离散的傅里叶变换得到一个粗略的估计——即网格搜索方法:在空间的离散点处估计得分函数,找到最大值;
- 最大值作为傅里叶级数展开的初始值,进行5次标准牛顿迭代,得到粗略的卷积滤波器的参数估计。
追踪流程
- 从预训练好的深度网络中提取出多分辨率特征图;
- 在每一帧采样一个训练样本xjx_jxj,采样的方法是以目标为中心,裁剪出目标边界框面积525^252倍大的图片区域。越靠近当前帧的采样的训练样本的权重越大。最大的保存400帧历史帧。
- 应用多尺度估计,5个尺度,相对尺度因子1.02。最大化网格搜索后,进行 5 次牛顿迭代;
- 求解正规方程以训练滤波器,采用共轭梯度法进行迭代,在第一帧中,使用100次迭代找到滤波器系数 的初始估计,随后的帧中,用当前的滤波器初始化CG(共轭梯度),每帧五次迭代就足够。
ECO
文章侧重点
-
文章针对当前相关滤波追踪器存在的问题做如下总结:
- 模型参数量过大使得在线更新容易过拟合。 高维特征,尤其是深度特征使得目标外观模型的参数急剧上升。例如上文的C-COT连续更新的参数多达800,000个,同时在线更新的采样样本缺乏多样本,容易引起模型对目标的某一位置过拟合,尤其是当目标出现尺度变化、变形等问题时,根据历史帧预测目标框裁剪的样本本来就可能不精确。
- 在线更新的训练样本缺乏丰富的样本。由于当前的在线相关滤波追踪模型都有一个迭代优化算法来实现模型的在线更新以应对不同的挑战。那么数据对于更新的重要性不言而喻。
- 当前的模型的连续更新策略是逐帧更新,使得模型的鲁棒性降低了。 由于新出现的Siamese网络是不需要在线更新的,但仍保持了较高的追踪精度。但是我认为这不是在线更新造成的,主要还是采样样本的准确度问题,因为历史帧中采样的更新样本是根据历史帧中预测的目标框为中心裁剪出来的。所以当历史帧样本的不准确性使得当前的模型受到了影响,过拟合到目标的局部。设想一个问题,如果历史帧中用于在线更新的样本如groundtruth般准确,那么在线更新会达到较好的效果。
-
文章针对上述问题,基于C-COT做如下改进:
- 提出因式分解卷积算子,对C-COT中的卷积滤波器进行缩减,从而减少模型本身的参数。(对于512维的深度特征+512个卷积滤波器,可以将512个卷积滤波器减到64个,从而剔除了一些不重要的深度特征,降低模型参数。)
- 一个为在线更新设计的更加简洁的采样分布的生成模型,降低内存和时间复杂度;增加样本多样性。
- 保守模型更新策略,即降低更新频率,增大更新样本的多样性,继而增强鲁棒性,降低复杂性。
因式卷积因子
-
出发点: 出于对C-COT中卷积滤波器的观察,每个维度的特征对应一个滤波器;然而一部分训练好的卷积滤波器包含了微乎其微的能量,也就是说对最后目标定位的贡献很小,但它们仍消耗了训练时间和内存。
-
改进思路: 故采用类似主变量降维的思想,以深度特征为例,一共512维特征对应512个卷积滤波器,而因式卷积的思路就是用64个主要的卷积滤波器,利用一个线性对应矩阵 PPP , 线性组合之后可以还原这512个卷积滤波器的作用。
-
优点: 线性矩阵PPP 可以在第一帧初始化。这样的设计使得内存开销大大降低,并且降低了在线更新的计算复杂度。
生成采样空间模型
- 出发点: 当前的相关滤波追踪器C-COT、SRDCF等的在线更新策略是在每一帧都添加一个训练样本,然后为这些历史帧赋予一个衰减的权重(离当前帧近的的帧权重大,离当前帧远的帧权重小)。然而这样的采样空间存在大量冗余的样本,因为相邻帧之间的外观大致相同。
- 改进思路:提出一个样本集合的概率生成模型。基于样本特征映射xxx和相应输出置信度分数yyy
模型更新策略
-
出发点:在C-COT中,这意味着在每个新样本添加后,通过迭代求解正态方程进行优化。基于迭代优化的DCF方法利用了损失函数在帧之间逐渐变化的特点。因此,过滤器的当前估计提供了迭代搜索的良好初始化。不过,在每一帧中更新过滤器会对计算负载产生严重影响。
-
改进思路:将训练样本建模为高斯混合模型,避免逐帧更新,只需在每个NsN_sNs帧中启动优化过程来更新过滤器。参数NsN_sNs决定过滤器更新的频率,其中Ns=1N_s= 1Ns=1 对应于在每一帧中优化过滤器,就像在标准DCF方法中一样。在每个NsN_sNs帧中,我们执行固定数量的NCGN_CGNCG共轭梯度迭代来优化模型。因此,每帧CG迭代的平均次数减少到NCG/NsN_CG/N_sNCG/Ns。
-
优点:模型更新频率降低到NsN_sNs,当然节约了时间,并且可以避免模型的漂移问题,一定程度上改进效果,但是也不可以把Ns取得太大,否则会使得模型跟不上目标的变化。
相关文章:

单目标追踪——【相关滤波】C-COT原理与ECO基于C-COT的改进
目录C-COT:Continuous Convolution Operator Tracker文章侧重点连续卷积算子目标追踪框架初始化过滤器:追踪流程ECO文章侧重点因式卷积因子生成采样空间模型模型更新策略论文链接:C-COT:Beyond Correlation Filters: Learning Con…...

C++中栈是如何实现,以及常用的栈函数都有哪些
什么是栈? 栈 是一种特殊的数据结构,它是一种按照 Last-In-First-Out (LIFO) 访问模式存储和访问数据的特殊结构。 换句话说,栈中的最后一个元素将成为最先出栈的元素,这也意味着新增加的元素在栈的顶部,而出栈的元素…...

我就不信你还不懂HashSet/HashMap的底层原理
💥注💥 💗阅读本博客需备的前置知识如下💗 🌟数据结构常识🌟👉1️⃣八种数据结构快速扫盲🌟Java集合常识🌟👉2️⃣Java单列集合扫盲 ⭐️本博客知识点收录于…...

Qt中调用gtest进行单元测试及生成覆盖率报告
一.环境配置 googletest地址:https://github.com/google/googletest 我下载的是1.12.1,这是最后一个支持C++11的版本。 首先编译gtest,在windows上的编译方式和编译gRPC一模一样,详见Qt中调用gRPC,编译完了会生成几个静态库,如下图所示 本文主要用到了libgtest.a 下载ms…...

ChatGPT vs Bard 背后的技术对比分析和未来发展趋势
ChatGPT vs Bard 背后的技术对比分析和未来发展趋势 目录 ChatGPT vs Bard 背后的技术对比分析和未来发展趋势...

搜索引擎的设计与实现
技术:Java、JSP等摘要:随着互联网的快速发展,网络上的数据也随着爆炸式地增长。如何最快速筛选出对我们有用的信息成了主要问题。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后&…...

动态规划之买卖股票问题
🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓动态规划之买卖股票问题 ,做好准备了么,那么开始吧。 🌲🌲🐴🐴 动态规划算法本质上就是穷举…...

MySQL学习笔记之子查询
自连接方式 自连接就是表A连接表A,通过where关键字实现,比如查询工资比Abel高的员工信息: SELECTe2.last_name,e2.salary FROMemployees e1,employees e2 WHEREe1.last_name "Abel" AND e2.salary > e1.salary;子查询 亦称为…...

HCIP-5OSPF域内域间外部路由学习笔记
1、OSPF区域 每个区域都维护一个独立的LSDB。 Area 0是骨干区域,其他区域都必须与此区域相连。 划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。 区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不…...

【编程实践】简单是好软件的关键:Simplicity is key to good software
Simplicity is key to good software 简单是好软件的关键 目录 Simplicity is key to good software简单是好软件的关键 Complexity is tempting. 复杂性很诱人。 The smallest way to create value创造价值的最小方法 Simple 简单的 Complexity is tempting. 复杂性很诱人…...

Python|贪心|数组|二分查找|贪心|数学|树|二叉搜索树|在排序数组中查找元素的第一个和最后一个位置|计数质数 |将有序数组转换为二叉搜索树
1、在排序数组中查找元素的第一个和最后一个位置(数组,二分查找) 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 […...

操作系统——15.FCFS、SJF、HRRN调度算法
这节我们来看一下进程调度的FCFS、SJF、HRRN调度算法 目录 1.概述 2.先来先服务算法(FCFS,First Come First Serve) 3.短作业优先算法(SJF,Shortest Job First) 4.高响应比优先算法(HRRN&…...

如何防止用户打开浏览器开发者工具?
大家好,我是前端西瓜哥。作为一名前端开发,在浏览一些网页时,有时会在意一些交互效果的实现,会打开开发者工具查看源码实现。 但有些网站做了防窥探处理,打开开发者工具后,会无法再正常进行网页的操作。 …...

C语言-基础了解-12-C数组
C数组 一、C数组 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、…、runoo…...

RocksDB 架构
文章目录1、RocksDB 摘要1.1、RocksDB 特点1.2、基本接口1.3、编译2、LSM - Tree2.1、Memtable2.2、WAL2.3、SST2.4、BlockCache3、读写流程3.1、读取流程3.2、写入流程4、LSM-Tree 放大问题4.1、放大问题4.2、compactionRocksDB 是 Facebook 针对高性能磁盘开发开源的嵌入式持…...

MVVM和MVC的区别
首先,MVVM 和 MVC 都是一种设计模式MVCM(Model): 模型层。 用于处理应用程序数据逻辑的部分,模型对象负责在数据库中存取数据V (View): 视图层。 处理数据显示的部分 ,视…...

c++11 标准模板(STL)(std::unordered_map)(三)
定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…...

OpenGL环境配置
方法一:1.下载GLFW点击GLFW跳转2.下载后解压3.下载glad,解压后4.用vs2019新建Cmake项目5.在新建的Cmake项目下建立depend文件夹在depend里放置我们下载解压的glad和glfw-3.3.8.bin.WIN646.项目中可以看到我们加进来的文件7.编写我们项目的CMakeLists.txt…...

SpringCloud之 Eureka注册中心
文章目录Eureka注册中心一、服务注册与发现1.1 依赖导入①父工程 SpringCloud 版本管理②Eureka 服务端依赖③Eureka 客户端依赖1.2 服务注册①创建 Eureka 服务端的主类②设置 Eureka 服务端的配置文件③设置 Eureka 客户端的配置文件④关闭自我保护机制1.3 服务发现①远程调用…...

Linux入门篇-用户管理
简介 linux基本的用户管理。 ⽤户的管理(切换到root) ⽤户的添加(useradd) ⽤户的删除(userdel) ⽤户的修改(usermod) ⽤户的查看(查看/etc/passwd) id⽤户组的管理(切换到root) …...

G. Special Permutation(构造)
1、题目 G. Special Permutation 这道题的意思是给我们从111到nnn的排列,然后我们对这个排列的顺序上进行调换,需要满足的条件是任意两个相邻元素的绝对值的差满足条件:2≤∣pi−pi1∣≤42\leq |p_i-p_{i 1}|\leq 42≤∣pi−pi1∣≤4 …...

QML动态对象管理
QML中有多种方式来动态创建和管理QML对象: Loader (加载器)Repeater(复制器)ListView,GridWiew,PethView(视图) (之后会介绍)使用加载器ÿ…...

cmake入门03 -自定义find外部库
自定义检测外部库使用pkg-config查找库搜索.pc配置文件cmake函数链接到库自定义find库检测外部库的便捷方法:使用CMake自带的find-module使用<package>Config.cmake, <package>ConfigVersion.cmake和<package>Targets.cmake。这些文件由软件商提供…...

Dubbo源码解析-——服务导出
前言 在之前我们讲过Spring和Dubbo的集成,我们在服务上标注了DubboService的注解,然后最终Dubbo会调用到ServiceBean#export方法中,本次我们就来剖析下服务导出的全流程。 一、前置回顾 由于ServiceBean实现了ApplicationListener接口&…...

vue+django+neo4j 基于知识图谱红楼梦问答系统
vuedjangoneo4j 基于知识图谱红楼梦问答系统 项目背景 知识图谱是一种以图谱形式描述客观世界中存在的各种实体、概念及其关系的技术, 广泛应用于智能搜索、自动问答和决策支持等领域. 可视分析技术可以将抽象的知识图谱映射为图形元素, 帮助用户直观地感知和分析数据, 从而提…...

2023年全国最新食品安全管理员精选真题及答案13
百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 121.关于食品召回的说法,以下表述不正确的是(&am…...

Keychron K7 Pro 轻薄矮轴机械键盘开箱体验
文章目录1. 拆箱2. 零件3. 外观4. 声音5. 特点5.1 有线 / 无线5.2 RGB背光5.3 轻薄5.4 mac / win / iphone 切换5.5 人体工程学支持5.6 扁平双射PBT键帽5.7 重新设计的稳定器5.8 扁平Gateron(佳达隆)轴体5.9 热插拔5.10 支持 QMK / VIA 改键6. 对比6.1 K7 与 K7 Pro 参数对比6.…...

加油站ai视觉识别系统 yolov7
加油站ai视觉识别系统通过yolov7网络模型深度学习,加油站ai视觉识别算法对现场画面中人员打电话抽烟等违规行为,还有现场出现明火烟雾等危险状态。除此之外,模型算法还可以对卸油时灭火器未正确摆放、人员离岗不在现场、卸油过程静电释放时间…...

【电子学会】2022年12月图形化二级 -- 绘制风车
绘制风车 1. 准备工作 (1)隐藏默认的小猫角色; (2)选择背景:“Xy-grid”。 2. 功能实现 (1)小猫角色的初始位置为(x:0,y:0); (2)线条粗细为…...

【golang/go语言】Go语言代码实践——高复用、易扩展性代码训练
某个项目里有一段老代码写的不是很好,想着能否通过自己掌握的知识,将其改善一下。感兴趣的小伙伴可以通过了解背景和需求,自己试想下该如何实现,如果有更好的方案也欢迎留言讨论。 1. 背景及需求 (1) 背景 假设我们的下游提供了…...