Visual Tracking领域大牛(至少我认为是这个领域的大牛)Martin Danelljan又出新作。继C-COT之后又一刷新纪录的作品。不管是从结果还是速度上都有提升,尤其是速度提升明显。用传统特征HOG+CN的版本速度有60+FPS,用CNN+HOG+CN的速度有8FPS,从跟踪效果来看,个人认为可以算一个出色的作品。

C-COT是2016年ECCV的文章,下次有空再讲。

ECO文章链接:https://arxiv.org/pdf/1611.09224.pdf

这篇文章的baseline是Martin Danelljan的另一篇文章,就是上面提到的C-COT。

1. Motivation

这篇文章的出发点其实就是提高时间效率和空间效率。近一两年来,效果好的很多方法都是基于相关滤波来做的。最早用到相关滤波的是Bolme等人在2010年CVPR的MOSSE,速度非常快。在MOSSE之后,像KCF,DSST,CN,SRDCF,C-COT等等都是在相关滤波的基础上做的。随着特征维度越来越高,算法越来越复杂,跟踪效果虽然是在逐步提升,但是都是以牺牲跟踪速度为代价的。(Martin Danelljan在相关滤波这一系列方法上可谓是如鱼得水啊,有非常多的成果,非常多!)

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

(1) Model Size(模型大小)

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

(2) Training Set Size(训练集大小)

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

(3) Model Update

这个很显然,模型如果每帧都更新,速度肯定比间歇更新要慢。我发现16年下半年开始,做tracking的人开始非常关注这个问题。而在此之前,很多方法基本都是每帧都更新的。另外每帧都更新也会有model drift问题,这个显而易见不再赘述。

2. ECO Algorithm

好,那么针对以上三个问题,DM分别给出了应对策略,从三方面进行改进。

2.1 Factorized Convolution Operator(因式分解的卷积操作)

先简单介绍一下C-COT:

C-COT将特征feature map通过插值转换到连续的空间域了:

这里就不具体介绍了,把(1) 式当成提取的特征就行了,最后得到的特征是J{x}。最后检测目标的得分计算是:

(2)中的f就是每个维度的特征。 那么学习相关滤波器的目标函数是:

转换到频域是:

ECO在特征提取上做了简化。用了原来特征的子集,从D维的特征中选了其中的C维。C-COT是每个维度的特征对应一个滤波器,D维的特征就有D个滤波器,其实很多滤波器 的贡献很小。如图一所示,C-COT的大部分滤波器的能量很小。而ECO只选择其中贡献较多的C个滤波器,C<D,然后每一位特征用这C个滤波器的线性组合来表示。这里的C维如何选择文中没有具体说,我猜测是简单的利用滤波器中大于某个阈值的元素个数来选择。

图一:滤波器对比

那么新的检测函数是:

(6)式中P是一个DxC的矩阵,每一行代表对一个维度的特征对应的滤波器用所有C个滤波器的线性组合系数,也是一个未知数,需要在第一帧中进行学习,之后的跟踪中保持不变就行。这是学习滤波器的目标函数与(4)有了一些变化,现在是这样的:

在这个新的目标函数中,z=J{x},又在最后加了一项整定项,为了约束P。(7)现在是一个非线性最小二乘问题,其中第一项的具有双线性。因此DM把这个问题转化为一个矩阵的因式分解问题。用了Gauss-Newton和Conjugate Gradient来求解。具体的过程就不细讲了,与理解文章没有太大关系。

到此,第一个问题Model Size的解决就是这样了,从D降到了C。相当于将特征J{x} 换成了

2.2 Generative Sample Space Model

ECO简化了训练集,如图二所示。

图二:训练集

图二中下面一行是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易对最近的数帧样本过拟合。上面一行是ECO的做法,ECO用了高斯混合模型(GMM)来生成不同的component,每一个component基本就对应一组比较相似的样本,不同的component之间有较大的差异性。这样就使得训练集具有了多样性。

通过样本x和目标输出y的联合概率分布p(x,y),将目标函数进一步完善为:

(10)式是将(3)式的第一项换成了基于样本的联合概率分布。(3)是(10)的一个特例。另外,由于目标输出的y其实形状都是一致的,是一个峰值在目标中心的高斯函数,只是峰值 的位置不一样。那么ECO将y都设置成一样的,把峰值位置的平移量体现到x上,在频域中可以简单处理。那么p(x,y)就简化了,只需要计算p(x)就行了。这里用GMM来建模:

,L表示component的个数,把之前的M个样本减少为L。

更新过程是这样的:每次新来一个样本,初始化一个component m,初始化,如果component的数量超过限制L,则丢弃一个权重最小的。否则,合并两个最近的component k和l:

近似目标函数(10)为:

(12)是把原来的M个样本减少为L个component的平均值。

在实际中,L设置为M/8,再一次减少了计算量,即1中提到的第二点,训练集大小。同时由于增加了样本的多样性,使得效果也有提升。

2.3 Model Update Strategy

ECO这里的做法很简单,就是简单地规定每隔Ns帧更新一次。注意这里的Ns只是对模型的更新,样本的更新是每一帧都要做的。最后的实验中,Ns设置为6。

模型更新频率降低,当然节约了时间,并且可以避免模型的漂移问题,一定程度上改进效果,但是也不可以把Ns取得太大,否则会使得模型跟不上目标的变化。

到此为止,ECO针对1中的三个问题都提出了解决方案,从速度和效果上都有了改进。

3. Experiment

具体的参数设置就不介绍了,可以直接看文章。直接放效果了,做tracking的人应该都看得懂。不做tracking的人,反正一句话:都是第一名!

VOT2016

OTB100,Temple-color,UAV123

ECO通通第一,另外不用CNN的ECO-HC效果也很好,甚至比用CNN的DeepSRDCF还要好。用传统特征HOG+CN的版本速度有60+FPS,用CNN+HOG+CN的速度有8FPS。

总结一下ECO效果好的原因:

1. 特征全面(CNN, HOG, CN),这个对结果的贡献很高;

2. 相关滤波器经过筛选更具代表性(2.1做的),防止过拟合;

3. 训练样本具有多样性(2.2做的),减少冗余;

4. 非每帧更新模型,防止模型漂移;

微信公众号同步更新,欢迎关注

目标跟踪系列三:ECO: Efficient Convolution Operators for Tracking(2016年11月)相关推荐

  1. CVPR 2017 ECO:《ECO: Efficient Convolution Operators for Tracking》论文笔记

    理解出错之处望不吝指正. 以下内容部分摘自https://zhuanlan.zhihu.com/p/24971525,在这个链接里可以看到公式推导~ 本文模型叫做ECO,是对C-COT模型的改进,出发 ...

  2. 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)

    目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军) 文章链接:https ...

  3. NOI系列活动标准竞赛环境(2016年11月08日更新)

    NOI系列活动标准竞赛环境(2016年11月08日更新) NOI系列活动标准竞赛环境更新如下: 分类 软件及版本 说明 启动/使用方法 系统软件 NOI Linux 1.4.1 操作系统 开机自动启动 ...

  4. 单目标跟踪CVPR 2018 ECO+

    FROM https://blog.csdn.net/weixin_40245131/article/details/79754531 目标跟踪的相关滤波方向,Martin Danelljan 4月底 ...

  5. 目标跟踪系列二:Staple: Complementary Learners for Real-Time Tracking(2016CVPR)

    文章链接:http://arxiv.org/pdf/1512.01355 代码链接:https://github.com/bertinetto/staple 1.      考虑了两种方法的结合.Le ...

  6. 我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)

    五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>& ...

  7. 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)

    一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...

  8. 1613-3-傅溥衍 总结《2016年11月4日》【连续三十五天总结】

    标题:逆置数组元素 关键词:逆置数组元素 内容:  A今日完成情况 1.看指针变量100% B具体内容 逆置数组元素代码 #include<iostream> using namespac ...

  9. 视觉单目标跟踪任务概述

      视觉目标跟踪的主要目的是:模仿生理视觉系统的运动感知功能,通过对摄像头捕获到的图像序列进行分析,计算出运动目标在每一帧图像中的位置:然后,根据运动目标相关的特征值,将图像序列中连续帧的同一运动目标 ...

最新文章

  1. CSS实现背景透明而背景上的文字图片不透明
  2. Java 语法规定之外的命名注释规范
  3. SQL Server 2005两本教程案例数据库
  4. LeetCode 旋转数组 系列
  5. Python globals 函数 - Python零基础入门教程
  6. python的django框架是干嘛的_Django框架在Python开发很重要为什么?
  7. sql初学者指南_初学者SQL示例:SQL SELECT语句的用法
  8. 评价——TOPSIS
  9. android 修改手机型号加点,修改Android设备信息,如修改手机型号为iPhone7黄金土豪版! -电脑资料...
  10. NB-IoT将为无线烟感带来哪些改变?
  11. 开启迅盘:ReadyBoost和ReadyDrive的开启方法
  12. java地狱门方块,我的世界如何制作一个独特的“地狱门”? 赶快放弃你的方盒子吧...
  13. HTML点击图片播放音乐
  14. 大S首度曝光女儿正面照:小小幸福分享给大家
  15. MIT赵选贺再发《Nature Biomedical Engineering》​!
  16. 1079.活字印刷(Python)
  17. 架构分析:「转转云平台」的 Kubernetes 实践
  18. debug tools
  19. hyper-v上安装群晖DSM5提示格式化磁盘失败解决方法
  20. HDFS -- 总结

热门文章

  1. 低代码”革了谁的命?
  2. 2022年11月(下半年)信息系统项目管理师考试-案例分析真题及解析
  3. 面试时,如何回答你还有什么想要了解的?
  4. Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
  5. 如何在以太坊网络上发布自己的代币
  6. matlab 三角分解法 解线性方程组的直接方法
  7. 怎么把raw转换成jpg格式?推荐两个raw转jpg的方法
  8. 若依打包如何分离jar包和资源文件?
  9. unity应用实例——从头撸一个全新的FPS游戏(5)
  10. iOS调优 | 深入理解Link Map File