Robust Online Visual Tracking with a Single Convolutional Neural Network
Abstract:这篇论文有三个贡献,第一提出了新颖的简化的结构损失函数,能保持尽量多的训练样本,通过适应模型输出的不确定性来减少跟踪误差累积风险。
第二是增强了普通的SGD,采用了暂时的选择策略来进行CNN训练。第三,更新CNN模型时采用一种更lazy的方式来加快训练,只有当目标外观发生较大变化时才更 新网络。
Introduction:在本文提出的算法中,用CNN自动学习特定目标的特征描述,以在线的方式更新CNN模型,CNN在各个可能的目标位置生成相应的分数,分数最高 的hypothesis被作为当前帧目标状态的预测。
传统的tracking-by-detection方法用正负样本来预测目标位置,但正样本少负样本多会导致跟踪不够准确;其次,除了第一帧的目标位置外,其余目标位置都是 跟踪器的预测,并不一定准确。为了解决上面两个问题,本文CNN模型提出了一种特殊的损失函数形式,包括鲁棒部分、结构部分和简化部分。其中结构部分能获得大 训练样本,在同一时刻考虑目标位置的不确定时,有着明显不同的层次;鲁棒部分在跟踪过程中考虑多个目标位置估计而不是一个,并用最优估计来确定目标位置;简 化部分应用到CNN的响应,减少BP阶段中的样本,明显加快训练过程。
本文提出了新的SGD来优化CNN模型中的参数,传统的SGD并不适用于跟踪,主要有两方面的改进:首先为了防止CNN模型过拟合,本文提出了一个临时采样策略。
这个策略假定目标位置块在记忆中比背景块存留的时间更长。因此,我们将所有观测到的样本块存储在训练样本池里,并且我们从一个临时的序列中选正样本,这个序列要长于
负样本的序列。事实上,这是构建基于CNN的鲁棒跟踪器的重要因素,因为区分样本策略成功的正则化了有效外观模型的变化。
第二,我们用了多个image cues(低层的图像特征,比如归一化的灰度图像或图像梯度)作为网络输出的独立通道。我们独立的训练每个通道的参数,并在之后用一个全连接
层来联合训练。这就让训练更有效率,从经验上我们可以看到,这种两阶段的训练方式比所有cues联合起来训练更有效果。
CNN Architecture
CNN with Multiple Image Cues
本文CNN包括两层卷积层,激活函数为sigmod,采用平均池化操作。
输入为32*32,第一个卷积层有6个核,大小为13*13,第二个卷积层有72个核,大小为9*9,经过池化操作以后,得到一个12维的特征向量。
全连接层是个logistic regression操作,它将一个12维的向量生成一个分数向量s,s1代表正分,s2代现负分。为了增大正负样本分数的边界,可以采和如下的CNN分数计算
方式:
有效的跟踪需要多个cues,包括颜色啊梯度啊,这些cues之间相互补充。本文采用4个image cues,包括用不同参数配置的三个局部归一化图和一个梯度图。采用数据驱动的方式
让CNN选择最有信息量的cues。
Robust, Structural, Truncated Loss Function
Structural Loss:
结构化的二元分类器在定位目标时有着更好的表现,最大的优势是有着大量可训练样本,而普通的二元分类器只能用有着高置信(我的理解是有着较大概率属于哪一类)的
训练样本。定义如下的结构损失函数:
事实上,(5)衡量的是训练样本的重要性。
Structural Loss with a Robust Term and the Truncated Norm
接下来是使损失函数更鲁棒的方法,排除掉那些虽然CNN分数很高,但与训练标签有很大不符的样本。
为了加快BP训练速度,丢掉那些训练误差小的训练样本。
Optimization of CNN for Tracking
Online Learning: Iterative SGD with Temporal Sampling
不同于检测和识别,在跟踪过程中当新一帧到来时,训练样本池增长缓慢。这就需要在所有帧之前学习一个连贯的模型,用这个模型将背景与目标区分开来。
这就启示我们可以在一个long-term的正样本集和一个short-term的负样本集中来学习一个判别模型。基于此想法,我们将SGD嵌入到随机采样的过程中,
Iterative Stochastic Gradient Descent (IT-SDG)
因为使用了多个image cues,这可能会影响训练的速度、导致过拟合,因为每个image cue是弱相关的,因此我们以迭代的方式来训练网络。先训练卷积层的参数
然后在全连接层中评估所有image cues的响应,以一个小的学习速率更新全连接层的参数。
Lazy Update and the Overall Work Flow
Robust Online Visual Tracking with a Single Convolutional Neural Network的更多相关文章
- 1 - ImageNet Classification with Deep Convolutional Neural Network (阅读翻译)
ImageNet Classification with Deep Convolutional Neural Network 利用深度卷积神经网络进行ImageNet分类 Abstract We tr ...
- XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network
XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)
Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...
- Convolutional Neural Network in TensorFlow
翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...
- 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)
XiangBai——[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network
Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- CNN(Convolutional Neural Network)
CNN(Convolutional Neural Network) 卷积神经网络(简称CNN)最早可以追溯到20世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究表明,大脑对外界获取的信息由多层的 ...
随机推荐
- vector 一边遍历一边删除
for(std::vector<int>::iterator it = m_ConnectId.begin();it!=m_ConnectId.end();){ ) < ){ m_C ...
- python之numpy矩阵库的使用(续)
本文是对我原先写的python常用序列list.tuples及矩阵库numpy的使用中的numpy矩阵库的使用的补充.结合我个人现在对线性代数的复习进度来不断更博. Section 1:行列式的计算 ...
- libiop网络库数据结构和基础知识
最近朋友推荐,学习了libiop这个网络库,作者封装的很全面,代码很简洁 适合初学者学习基于事件驱动的网络io 先看看iop_def.h, 这里面定义了常用的数据结构 tag_iop_base_t 主 ...
- Linux常用网络工具:hping高级主机扫描
之前介绍了主机扫描工具fping,可以参考我写的<Linux常用网络工具:fping主机扫描>. hping是一款更高级的主机扫描工具,它支持TCP/IP数据包构造.分析,在某些防火墙配置 ...
- Python内存分配
一.前言 大多数编译型语言,变量在使用前必须先声明,其中C语言更加苛刻:变量声明必须位于代码块最开始,且在任何其他语句之前.其他语言,想C++和java,允许“随时随地”声明变量,比如,变量声明可以在 ...
- [Java多线程]-Thread和Runable源码解析
多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...
- JS零碎小知识
filter()方法对数组进行过滤,生成新数组 var aqiNewData = aqiData.filter(function(data){ return data[1]>60; }); // ...
- Java 里快如闪电的线程间通讯
这个故事源自一个很简单的想法:创建一个对开发人员友好的.简单轻量的线程间通讯框架,完全不用锁.同步器.信号量.等待和通知,在Java里开发一个轻量.无锁的线程内通讯框架:并且也没有队列.消息.事件或任 ...
- R0—New packages for reading data into R — fast
小伙伴儿们有福啦,2015年4月10日,Hadley Wickham大牛(开发了著名的ggplots包和plyr包等)和RStudio小组又出新作啦,新作品readr包和readxl包分别用于R读取t ...
- 大聊Python----迭代器
迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...