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

本文主要是介绍【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 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取得太大,否则会使得模型跟不上目标的变化。

这篇关于【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284017

相关文章

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1