【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking

news2024/11/15 11:16:34

文章目录

    • 1. 论文概要
    • 2. 研究背景和动机
    • 3. 相关滤波用于目标跟踪的原理
    • 4. ECO算法流程
    • 5. ECO算法创新点
      • 5.1 特征降维:PCA
      • 5.2 训练集简化:GMM
      • 5.3 模型更新策略:间歇更新

1. 论文概要

论文下载地址:ECO: Efficient Convolution Operators for Tracking
发表时间:CVPR 2017
作者:Martin Danelljan(瑞典),目标跟踪领域的大牛
官方代码:https://http://github.com/martin-danelljan/ECO

ECO 算法具有高效卷积特性,是一种以提高时间和空间效率为出发点的目标跟踪算法。

2. 研究背景和动机

视觉跟踪(visual tracking)的目标是在给定初始状态时,估计出图像序列中目标的运动轨迹。目标跟踪是实时的,一个理想的跟踪系统应该是实时和准确的。

近年来,许多效果较好的目标跟踪算法都是基于判别相关滤波器(Discriminative Correlation Filter, DCF)的。最早用到相关滤波的是2010年提出的的MOSSE,速度非常快。之后的KCF,DSST,CN,SRDCF,C-COT等都是在相关滤波的基础上做的。随着特征维度越来越高,算法越来越复杂,跟踪效果虽然是在逐步提升,但是都是以牺牲跟踪速度为代价的。

Martin Danelljan 在相关滤波做跟踪的算法上积累了丰富的经验之后,分析了速度降低的三个最重要的因素:

  1. 模型大小(特征复杂度):
    如C-COT用了CNN+HOG+CN这样非常全面的特征组合,它每次更新模型的时候,需要更新的参数有800000个,速度当然很慢。实际上跟踪问题中的训练样本非常少,这么高的维度除了速度慢,还会引起过拟合。

  2. 训练集大小:
    这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。那么一般的解决方案是保存比较新的样本,丢弃老的样本,具体策略每个方法都不一样。这样一来,模型还是容易过拟合。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。另外,样本集的保存也会使得空间效率低下,增加计算负担。

  3. 模型更新方式:
    模型如果每帧都更新,速度肯定比间歇更新要慢。

为了解决上述三个问题,ECO分别提出了针对性的策略来提高跟踪器的效率。

参考:目标跟踪算法二:ECO: Efficient Convolution Operators for Tracking

3. 相关滤波用于目标跟踪的原理

跟踪算法整体上可分为两类:

  • 生成式跟踪算法:
    首先对目标区域进行特征提取,然后进行模板匹配:基于特征进行目标模板与目标候选块之间的相似度匹配,最大相似度对应的候选块即为当前帧的目标。

  • 判别式跟踪算法:
    将图像背景信息考虑到算法中,结合目标前景信息和背景信息训练一个判别函数,对目标和背景进行分类与相似度计算,从而实现目标的跟踪定位。

参考:相关滤波器(Correlation Filters)

两个信号越相似,相关性越高,即做相关运算后得到的相似值越大。
相关滤波跟踪的基本思想是模板匹配,设计一个滤波模板,利用该模板与目标候选区域做相关运算,最大输出响应的位置即为当前帧的目标位置。

在这里插入图片描述

相关运算的最大优势在于,它通过傅里叶变换将时域上的卷积运算变为频域上的乘积运算,即

        

相关滤波目标跟踪算法的主要流程为:

  1. 初始化:在第一帧中,选择或检测一个目标区域并计算该区域的傅里叶变换。
  2. 跟踪:对于后续的每一帧,计算当前帧中目标区域的傅里叶变换,然后计算当前帧与第一帧之间的互相关系数,得到一个响应图。
  3. 位置估计:在响应图中找到最大值,即得到目标的位置估计。
  4. 更新模板:在当前帧中重新选择目标区域,计算该区域的傅里叶变换,并进行一定程度的平滑处理,作为下一帧的模板。

相关滤波目标跟踪算法流程图:

        

4. ECO算法流程

ECO 算法流程图如下:

        

ECO 算法步骤为:

  1. 初始化:在第一帧中,选择或检测一个目标区域
  2. 特征提取:提取目标区域的梯度直方图特征 (histogram of oriented gradient, HOG) 或颜色通道特征(color names, CN)
  3. 连续卷积:通过连续卷积算子将特征图从离散域转换到连续域得到融合的高维度特征
  4. 特征降维:利用 PCA 对高维度特征进行降维,并将降维后的特征加入样本空间模型
  5. 间隔帧更新参数:样本空间模型结合高斯牛顿法每隔 6 帧图片更新一次相关滤波器参数
  6. 跟踪:将每次跟踪时经过处理的特征输入相关滤波器,得到相关响应图
  7. 位置估计:将响应值最大的位置作为目标跟踪结果

5. ECO算法创新点

5.1 特征降维:PCA

ECO 的 Baseline 是 C-COT 算法,C-COT 算法采用插值方法将搜索区域的多分辨率特征 x x x 进行如下式所示的运算转换到连续的空间域中:

        

式 (4-1) 可以看做特征提取过程,最后得到的特征是 J { x } J\{x\} J{x}

C-COT 算法计算响应得分的公式为:

        

样本 x j x_j xj 的 labeled detection scores y j ( t ) y_j(t) yj(t) 被设置为周期性重复的高斯函数,目标函数定义为加正则化项的 L 2 L_2 L2 loss:

        

ECO 算法在 C-COT 算法的基础上,采用主成分分析法 (PCA) 进行特征降维。C-COT中对于每个特征通道都需要训练一个单独的滤波器,共有D个滤波器。ECO使用 PCA 选择其中 C (C<D) 个滤波器构造了一个 D*C 的投影矩阵 P,将特征降维为 P T J { x } P^TJ\{x\} PTJ{x}。计算新的响应得分为:

        

通过傅里叶变换转换到频域的训练相关滤波器的目标函数为:

        

其中 z = J { x } z=J\{x\} z=J{x},(7)是一个非线性最小二乘问题,论文中把这个问题转化为一个矩阵的因式分解问题,用 Gauss-Newton 和 Conjugate Gradient 来求解。

下图展示了从 C-COT 的 512 个滤波器中选择的 64 个能量较高的滤波器,其他大多数滤波器包含的能力可以忽略不计。

在这里插入图片描述

5.2 训练集简化:GMM

如下图所示,Baseline是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易遗忘前面的样本,且容易对最近的若干帧样本过拟合。

ECO用了高斯混合模型 (GMM) 来生成不同的分量 (component),每一个 component 基本就对应一组比较相似的样本,不同的component之间有较大的差异性。这样就使得训练集具有了多样性。

        
在这里插入图片描述
通过样本 x x x 和目标输出 y y y 的联合概率分布 p ( x , y ) p(x,y) p(x,y),将目标函数写为:

由于目标输出的 y y y 的形状都是一致的,是一个峰值在目标中心的高斯函数,只是峰值位置不一样。ECO 将 y y y 都设置成一样的,把峰值位置的平移量体现到 x x x 上,在频域中可以简单处理。那么 p ( x , y ) p(x,y) p(x,y) 就简化了,只需要计算 p ( x ) p(x) p(x) 就行了。这里用 GMM 来建模:

        

其中 L 表示 Gaussian components 的数量。

GMM的更新过程为:

  1. 对于一个新样本 x j x_j xj,使用 π m = γ \pi_m=\gamma πm=γ μ m = x j \mu_m=x_j μm=xj 初始化一个 component m
  2. 如果 components 的数量大于L,则丢弃一个权重最小的 component;否则合并两个最近的 component k k k l l l 为一个新的 component n n n

    使用 Parseval 公式在傅里叶域中计算二者的距离 ∣ ∣ μ k − μ l ∣ ∣ ||\mu_k-\mu_l|| ∣∣μkμl∣∣
  3. 计算目标函数:

使用 GMM 将原来的 M M M 个样本减少为 L L L 个 components 的平均值,实验中设置 L = M / 8 L=M/8 L=M/8

5.3 模型更新策略:间歇更新

标准的基于 DCF 的跟踪方法是在每一帧中更新滤波器,但这样会导致速度较慢。

ECO 每隔 N s N_s Ns 帧更新一次参数,实验中设置 N s = 6 N_s=6 Ns=6 。注意这里的Ns只是对模型的更新,样本的更新是每一帧都要做的。模型更新频率降低,当然节约了时间,并且可以避免模型的漂移问题,一定程度上改进效果,但是也不可以把Ns取得太大,否则会使得模型跟不上目标的变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1134081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UG\NX二次开发 设置对象的高亮状态 UF_DISP_set_highlight

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 2301_79203630 订阅本专栏,非常感谢。 简介 UG\NX二次开发 设置对象高亮状态 UF_DISP_set_highlight 效果 代码 #include "me.hpp"extern DllEx…

Redis数据库管理工具Redis Desktop Manager最新中文

Redis Desktop Manager是一款直观且易用的Redis数据库管理工具&#xff0c;支持Windows、macOS和Linux等多平台。它提供了丰富的功能和工具&#xff0c;使用户可以轻松地创建、编辑、删除和浏览Redis键值对&#xff0c;并执行各种Redis命令。通过SSH Tunnel连接&#xff0c;RDM…

信号浪涌保护器的行业应用和原理与分类解决方案

什么是信号浪涌保护器 信号浪涌保护器是一种电子设备&#xff0c;它可以保护信号线路上的仪器、设备或系统免受雷击或其他瞬态过电压的损害。 信号浪涌保护器的主要原理是将线路上产生的高压浪涌&#xff0c;泄放到大地&#xff0c;将其限制到被保护对象可以耐受的范围内&…

【博士每天一篇文献-算法】Overcoming catastrophic forgetting in neural networks

阅读时间&#xff1a;2023-10-24 1 介绍 年份&#xff1a;2016 作者&#xff1a;James Kirkpatrick, Razvan Pascanu, Neil Rabinowitz, Joel Veness, Guillaume Desjardins, Andrei A. Rusu, Kieran Milan, John Quan, Tiago Ramalho, Agnieszka Grabska-Barwinska, Demis H…

js实现在报表参数界面获取body中控件的值

要在报表参数界面获取body中控件的值&#xff0c;你可以使用JavaScript来实现。下面是一个详细的介绍&#xff1a; 1. DOM&#xff08;文档对象模型&#xff09;&#xff1a; - DOM是用于操作HTML文档的API&#xff0c;它允许你通过JavaScript访问和操作文档中的元素。 - 在报…

python由0到1的基础第一篇(基础语法、变量类型、运算符)

文章目录 前言编程语言是什么&#xff1f;编译型语言和解释型语言的区别编译型语言解释型语言编译型语言和解释型语言的差异总结 一、Python是什么&#xff1f;Python简介1.1Python是什么&#xff1f;1.2Python简介1.2.1Python优点1.2.2Python的缺点 二、Python能干什么&#x…

iview form 动态表单

最开始用得网上得 <FormItemlabel"采购方开户行":rules"baseForm.receiptType 12? baseInfoRule.procureBank: [{ required: false }]"><Inputv-model"baseForm.procureBank"placeholder"请输入采购方开户行"style"w…

RISC-V架构——中断处理和中断控制器介绍

1、ARM架构中断机制介绍 本文不是从零开始讲解中断&#xff0c;对于中断的基本知识不再赘述&#xff0c;对中断不是很了解可以先学习ARM中断的文章。参考博客&#xff1a;《ARM架构的外部中断介绍(S5PV210芯片)》&#xff1b; 2、RIAC_V架构的中断控制器架构 &#xff08;1&…

如何运用设计模式中的享元模式

文章目录 &#x1f31f; 如何将设计模式中的享元模式运用到生活当中&#x1f34a; 什么是享元模式&#x1f34a; 生活中的应用&#x1f389; 衣物&#x1f389; 图书馆 &#x1f34a; 总结 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博…

WORD中的表格内容回车行距过大无法调整行距

word插入表格&#xff0c;编辑内容&#xff0c;换行遇到如下问题&#xff1a; 回车后行距过大&#xff0c;无法调整行距。 解决方法&#xff08;并行&#xff09;&#xff1a; 方法1&#xff1a;选中要调整的内容&#xff0c;菜单路径&#xff1a;“编辑-清除-格式” 方法2&am…

Unity3D 基础——WASD控制物体移动

using System.Collections; using System.Collections.Generic; using UnityEngine;public class MotionControl : MonoBehaviour {public float speed 3f; //定义一个速度// Start is called before the first frame updatevoid Start(){}// Update is called once per fram…

一文读懂MT4:从小白到专家,MT4教程全解析!

亲爱的读者&#xff0c;欢迎来到这篇全面解析MT4交易平台的文章。无论你是刚刚接触金融交易&#xff0c;还是已经有一定经验的投资者&#xff0c;这篇文章都将为你提供深入浅出的MT4使用指南。通过阅读本文&#xff0c;你将能够全面了解并掌握MT4交易平台的使用技巧和操作方法。…

JAVA 链式编程和建造者模式的使用(lombok的使用)

0.说明 0.1 链式编程 链式编程的原理是返回一个this对象&#xff0c;也就是返回对象本身&#xff0c;从而达到链式效果。这样可以减少一些代码量&#xff0c;是java8新增的内容。 此处主要介绍在新建对象使用链式编程更加方便的创建对象。链式编程的一些常见用法可以看这个&a…

使用scapy 分析报文

比wireshark 更 happy udp 就简易的多&#xff0c;tcp 可能在设置bpf 时 多加几个条件 由于协议分析是手写的,所以可以对数据包的交互记录到excel 中再次进行分析

2024年天津中德应用技术大学专升本物流管理专业课考试大纲

天津中德应用技术大学物流管理专业&#xff08;高职升本科&#xff09;2024年专业基础考试大纲 一、试卷类型 物流管理专业升本专业课考试共1套试卷&#xff0c;总分200分&#xff0c;考试时间为2小时。内容包含仓储与配送管理40%、物流基础30%&#xff0c;运输管理30%&#…

双十一期间高预算广告增加,开发者如何精细化运营才能达到抢量增收目标?

随着双十一时间节点的临近&#xff0c;“双十一”大促也迎来了推广高峰&#xff0c;通常&#xff0c;大家总是认为推广高峰就是媒体收益高峰&#xff0c;但很多在变现的开发者都深有体会的是&#xff0c;广告主的投放高峰并不意味着收益高峰&#xff0c;很多开发者总结以往经验…

博通BCM575系列RDMA网卡驱动bnxt_re分析(一)

简介 整个BCM系列驱动分成以太网部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 两个模块之间通过内核的auxiliary_bus进行管理.我们主要分析下bnxt_re驱动. 代码结构 这个驱动的核心是 qplib_fp.c, 这个文件主要包含了驱动的数据路径, 包括Post Send, Post Recv, Poll CQ流程的实…

项目管理-2023西电网课课后习题答案-第四章

文章目录 第四章答案1-1011-20 [✅] 第一章答案[✅] 第二章答案[✅] 第三章答案[✅] 第四章答案[✅] 第五章答案 第四章答案 1-10 11-20

在 history 模式下,为什么刷新页面会出现404?

1、原因 因为浏览器在刷新页面时&#xff0c;它会向服务器发送 GET 请求&#xff0c;但此时服务器并没有配置相应的资源来匹配这个请求&#xff0c;因此返回 404 错误。 2、解决方案 为了解决这个问题&#xff0c;我们需要在服务器端进行相关配置&#xff0c;让所有的路由都指…

质子 8.0-4 发布,支持更多 Linux 上的 Windows 游戏

导读Valve 近日发布了 Proton 8.0-4&#xff0c;这是 Steam Play 基于 Wine 和其他组件的开源兼容工具的最新版本&#xff0c;可让 Linux 用户玩 Windows 游戏。 在 Proton 8.0-3 发布两个半月后&#xff0c;Proton 8.0-4 正式支持更多 Windows 游戏在 Linux 上运行&#xff0c…