目标跟踪之ECO:Efficient Convolution Operators for Tracking
一. 相关滤波算法总结
作者首先分析了 影响相关滤波算法效率 和 导致过拟合 的几个原因:
1)Model Size (模型大小)
包括两个方面:
- 模型层数,对应多分辨率 Sample,比如多层 CNN
- 特征维度,对应庞大的 HOG or CNN特征图
这里的效率影响是显而易见的,层数或特征越多,表现力越丰富,计算量也相应的线性增加(如C-COT需要在线学习800,000个参数)。
另外,也是作者一直Focus的问题,复杂模型带来的Over-Fitting问题,导致准确度下降。
2)Training Set Size(训练集大小)
训练集 是指所用到的训练数据,只用到上一帧的数据进行计算,效率就比较高;如果要用到之前若干帧的数据进行训练(比如加权平均),效率就会低。
保留训练集的优点在于,仅仅通过 online learning 会导致新学到的特征出错(比如遮挡),不足以表达正确的对象。
PS:DSST 仅用上一帧Sample训练,但是是通过和之前模型累加,保留了前面若干帧的信息,在兼顾 训练集 的基础上确保了效率。
3)Model Update(模型更新)
理想情况下,我们希望每一帧都进行模型更新,实时特征更新能够保证准确性,但同样会带来效率负担,探讨间隔帧模式下的模型更新策略是提高效率的一个思路。
二. ECO 方法引入
针对相关滤波算法存在的上述问题,作者提出了 ECO 方法。
论文下载:Efficient Convolution Operators for Tracking
作者提出来三个 Contribution,对应上面三个问题的改进:
1)对卷积操作进行因式分解,减少模型参数
Factorized convolution operator,通过提取特征子集来 进行降维。
2)简化了训练集生成,并保证Sample多样性
提出 Generative Sample Space Model,将类似的 Sample 归并到一个 Component,训练样本从多个 Component 中选择。
3)改进模型更新策略
采用新的 Model Update Strategy,将更新间隔(Ns)设为6,通过测试发现,稀疏更新策略能避免 模型漂移问题(Model Drift),提高速度和健壮性。
三. 算法概要
针对上面三个方向进行展开,详细描述算法思路。
> 3.1 Factorized convolution operator
这篇文章最大的亮点 - 从论文命名也能看得出来,占据了最大的篇幅。
算法基于C-COT,因此先亮出 C-COT 最关键的公式:
Point 1:提取连续特征
通过 t 进行插值,将特征图(Feature Map)转换到连续的空间域。得到的结果 J{x} 即为提取的特征。
Point 2:根据对应层相关滤波器 Filter (f)计算 Score
Point 3:定义目标函数
针对训练样本 xj 构造高斯函数 yj,通过 L2 Norm 构造最小二乘目标函数,并添加权值惩罚项 w,这都是比较常用的做法:
通过 Parseval’s formula 进行傅里叶变换,得到:
Point 4:减少滤波器 (new)
通过可视化发现,C-COT很多滤波器能量很小,对于结果其实是没什么贡献,因此提出方法 从 D个滤波器中选择贡献最大的C个,进行降维:
作者利用了卷积的线性特征,通过一个 D*C 的系数矩阵 P,将原来的 Score 函数进行如下变换:
同样在原来的目标函数(公式4)基础上得到 新的目标函数(公式7):
其中 z = J{x},代入求共轭即得到公式(7),最后加入参数矩阵P的惩罚项,对应权值参数 λ。
Point 5:目标函数求解(new)
与原始的Loss函数不同,新定义的Loss公式(7) 是个非线性的最小二乘问题,双线性子项
使得该问题类似矩阵的因式分解问题。
作者采用了 高斯牛顿法(Gauss-Newton)和 共轭梯度法(Conjugate Gradient)来求解。
求解目标就是 根据输入的训练数据(或者叫训练特征) 得到使得 E最小的 滤波器 f,具体求解过程不再展开了。
> 3.2 Generative Sample Space Model
通过对 Sample 分类简化训练集,通过 高斯混合模型(GMM)将样本进行分类,得到不同的 Component:
来看对比:
a)图中上半部分是按照 GMM 得到的 Component 模型,不同 Component 之间差异比较大,采用这种策略选择样本能保证多样性;
b)下半部分是得到的连续帧的训练样本,相邻帧之间的样本近似度很高。
根据 输入x 和输出 y 的联合概率分布 P(x,y),将原来的目标函数(论文公式3) 替换成下图下面部分(论文公式10):
进一步 将原来的 M个样本,替换为 L个(文中L=M/8) Component 的均值 μ,整理得到 公式(12)。
关于 Component 的建立和替换策略也比较简单,假设我们 Total 要维护 L个Component,那么针对一个新的样本:
1)建立一个 New Component,总的 Component 数量+1;
2)如果 Component 数量超过 L 个,执行下面策略:
a)将权值最低的 Component 进行替换;
b)合并权值最低的两个 Component,合并方法如下:
即 权值相加,均值加权求和。
> 3.3 Model Update Strategy
模型更新 没什么好说的,间隔帧更新也是工程中经常会用到的方法,这里要提的一点是,关于更新频率取决于视频中待跟踪目标的运动速度,如果目标运动较慢,可以考虑采用间隔较大的方法处理,反之,速度较快的情况下(比如车辆)是不同的。
四. 实验效果
来看和主流方法的对比(VOT2016 数据集),先来看几户是完爆 Top10 的 EAO 曲线:
再来看多个 衡量参数上的对比情况(几乎完胜):
EAO(Expected average overlap):跟踪框准确率第一,优化的特征降维 和 多样性样本 起了重要作用;
健壮性 - Fail(Fail rate):失败率也很低;
精确度 - Acc(Accuracy):精度第二名,仅次于 SSAT;
速度 - EFO:手动特征选择的 ECO-HC(Hand-Crafted)效率最高,采用 HOG+Color Names,在 i7 CPU上可以跑到 60FPS,
采用CNN特征效率一般,在 GPU 上能跑到 8 FPS,也算不错了;
目标跟踪之ECO:Efficient Convolution Operators for Tracking的更多相关文章
- 目标跟踪之相关滤波:CF及后续改进篇
一. 何为相关滤波? Correlation Filter 最早应用于信号处理,用来描述两个信号之间的相关性,或者说相似性(有点像早期的概率密度),先来看定义: 对于两个数据 f 和 g,则两个信号的 ...
- CVPR2018 关于视频目标跟踪(Object Tracking)的论文简要分析与总结
本文转自:https://blog.csdn.net/weixin_40645129/article/details/81173088 CVPR2018已公布关于视频目标跟踪的论文简要分析与总结 一, ...
- 目标跟踪ObjectT综述介绍
此文也很详细:http://blog.csdn.net/maochongsandai110/article/details/11530045 原文链接:http://blog.csdn.net/pp5 ...
- 目标跟踪_MeanShift
找到一些关于目标跟踪的资料 http://blog.csdn.net/jinshengtao/article/details/30258833 http://blog.sina.com.cn/s/bl ...
- TLD目标跟踪算法
1. 简介 TLD目标跟踪算法是Tracking-Learning-Detection算法的简称.这个视频跟踪算法框架由英国萨里大学的一个捷克籍博士生Zdenek Kalal提出.TLD将传统的视频跟 ...
- KCF目标跟踪方法分析与总结
KCF目标跟踪方法分析与总结 correlation filter Kernelized correlation filter tracking 读"J. F. Henriques, R. ...
- 目标跟踪之Lukas-Kanade光流法
转载自:http://blog.csdn.net/u014568921/article/details/46638557 光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于19 ...
- Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解
视频目标跟踪问题分析 视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...
- Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用
摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...
随机推荐
- 236. Lowest Common Ancestor of a Binary Tree(最低公共祖先,难理解)
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- POJ - 3177 Redundant Paths (边双连通缩点)
题意:在一张图中最少可以添加几条边,使其中任意两点间都有两条不重复的路径(路径中任意一条边都不同). 分析:问题就是最少添加几条边,使其成为边双连通图.可以先将图中所有边双连通分量缩点,之后得到的就是 ...
- MySQL SQL Injection(注入)
如果通过网页接收用户输入,而后再把这些数据插入到数据库中,那么你可能就会碰到 SQL 注入式攻击.本节简要介绍如何防范这种攻击,确保脚本和 MySQL 语句的安全性. 注入式攻击往往发生在要求用户输入 ...
- MySQL性能优化之max_connections参数
很多开发人员都会遇见”MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务 ...
- 在react-native中使用redux
redux是什么? redux是一个用于管理js应用状态的容器.redux出现时间并不是很长,在它出现之前也有类似功能的模块出现,诸如flux等等.redux设计的理念很简单,似乎最初这个开发团队就有 ...
- lua身份证号码验证~
--验证身份证信息 --只支持18位身份证的验证 --[[ #身份证18位编码规则:dddddd yyyymmdd xxx y #dddddd:地区码 #yyyymmdd: 出生年月日 #xxx:顺序 ...
- mysql——jdbc驱动下载&连接mysql例子
mysql-connector-java-5.1.46.zip[解压后里面jar文件就是所需要的] https://dev.mysql.com/get/Downloads/Connector-J/my ...
- Floyd算法--一个人的旅行
2017-07-27 22:37:32 writer:pprp 题目如下: 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人 ...
- python 中 正则表达式 的应用
python 中 正则表达式 的应用 最近作业中出现了正则表达式,顺便学习了一下. python比较厉害的一点就是自带对正则表达式的支持,用起来很方便 正则表达式 首先介绍一下什么是正则表达式. 正则 ...
- Activity启动的四种方式
Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...