Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 论文阅读

写博客好麻烦,每次写到一半就不想写了。。。。前面好几个坑还没填完,这又来写新的了==

老板一句话,直接抛开之前检测的工作,来研究跟踪,这算是研究生阶段严格来说看的第一篇跟踪文章吧,这篇文章号称标志了跟踪也被深度学习攻陷~下面进入正题。

一、简介

1、CNN为什么在跟踪中用的少

为什么CNN兴起那么久了,在这篇文章之前,跟踪领域用CNN做的好文章没咋出现?因为:一是CNN需要大数据来驱动、训练提取特征,对于视频处理来说,并没有那么多的数据;二是针对视觉跟踪的特殊的训练方法还没有。对于第一点很容易理解,第二点对于我这样的刚入门跟踪的人来说可能有点难理解。我对第二点的理解是这样的:

<1> 正如上一篇DeepID中提出的目标检测中用ImageNet里image-level(我觉得翻译过来就没有感觉了,还是用英文表示吧)的标注信息来预训练objective-level的目标检测是存在gap的一样,用分类数据集来预训练跟踪网络肯定gap更大,就比如在目标检测里,一张图片里的所有猫,你都该分类成正样本猫,但是在某个跟踪序列里,你要对特定的序列里特定的目标里进行跟踪,也就是说在跟踪的帧里,两只猫一个需要分类成正样本,另一个要分类成负样本;

<2> 再者,跟踪和检测的很大区别就是,跟踪对于目标的位置(location)特别敏感,而检测不是很敏感。检测的时候,在某一张图片里bounding box偏差十个像素甚至更大也没啥影响,毕竟单张图片独立;但是在跟踪里,真值信息只在第一帧提供,后面进行训练分类器等都是很依赖前一帧检测出的真值,即使每次只偏一个像素,经过视频序列很多帧的累加,会产生很大的偏移,也就是跟踪问题里的drift问题,所以这一点是很重要的。

2、作者打算怎么解决

作者认为,新的训练方法需要能够获取序列无关的信息特征。所以作者提出Multi-Domain Network(多域网络MDNet:玛德net)。一个域指的就是一个video。

为了学习序列无关的共享特征,MDNet在卷积层和全连接层后有很多个用来做二分类的全连接分支。上图好理解:

需要注意的是在test阶段后面多个分支都会被移除,接上针对test时的那个序列独有的全连接层。也就是说这个方法需要在线训练

3、总结一下这篇文章的贡献:

<1> 提出了一个基于CNN的多域学习框架;

<2> 提出了一个比较好的训练方式;

<3>  整个的pipeline值得借鉴

二、具体细节

1、网络结构

输入:107 x 107的RGB图像,隐层有五个,三个卷积俩全连接。训练时有K个分支,也就是K个训练视频序列。为哈用那么浅的网络呢?作者说:跟踪的分类很简单,就两类,目标和背景,不需要太复杂的模型;二,由于网络越深,目标的空间信息就会被稀释的越厉害,定位就越不准;三,跟踪的目标一半很小,所以input也就比较小,也就决定了网络不会太深(这个不是很理解,为啥目标小输入就要小??);最后,对于跟踪问题来说,训练和测试都是在线的,所以时间的消耗很大,也就深了不好。作者说实验结果也是深了不好。

2、训练算法

这个是本文的重点吧。训练的目的是得到一个能够消除目标和背景歧义的多域CNN,提取一些共同的特征,比如光照改变的鲁棒性、运动模糊、尺度变换等。

第k次迭代,训练数据的minibatch是从k mod K个序列中提取,相应的全连接层fc6被使能,其它的禁止。

3、online跟踪

视觉跟踪里鲁棒性和适应性是一对互补的性质,一个需要序列无关,一个是序列specific。作者分别通过long-term和short-term来进行实现。long-term是在固定的帧数进行训练更新,short-term是当估计的目标被分类成背景发生错误时(问问磊哥),利用short-term里的正样本进行训练更新。由于负样本随之时间的推移会变得很冗余并且相关性减小,所以两种term的负样本都用short-term保存的。

每次的候选目标是在上一帧的目标周围进行随机采样256个box(高斯,具体的也不咋懂),取的分最大的。

4、hard minibatch mining

就是减少负样本的个数,加快收敛,对检测出的负样本进行排序,选得分高的负样本进行下一次迭代。

5、bb 回归

没啥好说的,需要注意的是只在第一帧进行bb回归参数训练(因为bb回归的训练还是比较耗时的,而且也不太有用)。

6、算法步骤

输入:预训练的CNN隐层(三个卷积俩全连接)+ 初始目标状态;

输出:估计的目标状态

<1> 随机初始化最后一层fc6参数;

<2> 训练一个bb回归器;

<3> 获取正负样本;

<4>训练,更新权重w4 5 6;

<5>更新long-term,short-term帧数

<6>迭代:

① 获取候选目标;

    ② 计算得分找最优;

    ③ 如果得分大于0.5

    更新正负样本;

    更新long-term,short-term帧数;

    bb回归精修位置。

  ④ 如果得分小于0.5

    利用short-term的正负样本训练更新权重

    ⑤ 如果帧数 mod 100 ==0,

    利用long-term的正样本和short-term的负负样本训练更新权重.

7、训练数据

对于离线训练,选取50个正样本,200个负样本,IoU分别>=0.7 和<=0.5;在线训练选取50个正样本,200个负样本,IoU分别>=0.7 和<=0.3,但是第一帧取500正样本5000负样本。

8、学习参数

离线训练时迭代100K次,K为序列个数,卷积层学习率是0.0001,全连接层0.001.

在线更新的第一帧训练时,全连接层迭代30次,fc4 5学习率为0.0001,fc6是0.001;

在线更新时,迭代10次,学习率比第一帧大三倍。mini bath包含36正,96负

时间: 11-30

Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 论文阅读的相关文章

论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理跟踪问题.众所周知,CNN在很多视觉领域都是如鱼得水,唯独目标跟踪显得有点“慢热”,这主要是因为CNN的训练需要海量数据,纵然是在ImageNet 数据集上微调后的model 仍然不足以很好的表达要跟踪地物体,因为Tracking问题的特殊性,至于怎么特殊的,且听细细道来. 目标跟踪之所以很少被 C

卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalization Layer Fully-Connected Layer Converting Fully-Connected Layers to Convolutional Layers ConvNet Architectures Layer Patterns Layer Sizing Patterns C

Convolutional Neural Networks for Visual Recognition 2

Linear Classification 在上一讲里,我们介绍了图像分类问题以及一个简单的分类模型K-NN模型,我们已经知道K-NN的模型有几个严重的缺陷,第一就是要保存训练集里的所有样本,这个比较消耗存储空间:第二就是要遍历所有的训练样本,这种逐一比较的方式比较耗时而低效. 现在,我们要介绍一种更加强大的图像分类模型,这个模型会很自然地引申出神经网络和Convolutional Neural Networks(CNN),这个模型有两个重要的组成部分,一个是score function,将原始

Convolutional Neural Networks for Visual Recognition 8

Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,如今终于来到了课程的重点. Convolutional Neural Networks. 简称CNN,与之前介绍的一般的神经网络相似,CNN相同是由能够学习的权值与偏移量构成.每个神经元接收一些输入.做点积运算加上偏移量,然后选择性的通过一些非线性函数.整个网络终于还是表示成一个可导的loss function,网络的起始端是输入图像.网络的终端是每一类的预測值,通过一个ful

Convolutional Neural Networks for Visual Recognition 5

Setting up the data and the model 前面我们介绍了一个神经元的模型,通过一个激励函数将高维的输入域权值的点积转化为一个单一的输出,而神经网络就是将神经元排列到每一层,形成一个网络结构,这种结构与我们之前介绍的线性模型不太一样,因此score function也需要重新定义,神经网络实现了一系列的线性映射与非线性映射,这一讲,我们主要介绍神经网络的数据预处理以及score function的定义. data processing 给定一个训练集,S={xi∈RD|i

cs231n Convolutional Neural Networks for Visual Recognition 2 SVM softmax

linear classification 上节中简单介绍了图像分类的概念,并且学习了费时费内存但是精度不高的knn法,本节我们将会进一步学习一种更好的方法,以后的章节中会慢慢引入神经网络和convolutional neural network.这种新的算法有两部分组成: 1. 评价函数score function,用于将原始数据映射到分类结果(预测值): 2. 损失函数loss function, 用于定量分析预测值与真实值的相似程度,损失函数越小,预测值越接近真实值. 我们将两者结合,损失

Convolutional Neural Networks for Visual Recognition 7

Two Simple Examples softmax classifier 后,我们介绍两个简单的例子,一个是线性分类器,一个是神经网络.由于网上的讲义给出的都是代码,我们这里用公式来进行推导.首先看softmax classifier 的例子.给定输入X∈RN×D,权值W∈RD×K,偏移量b∈R1×K,我们可以得到分类器对每个样本的预测分数:f=XW+b,我们可以用softmax 函数将预测分数转为概率:pi=efi∑jefj,pi 表示样本属于第i类的概率,fi,fj表示线性函数对样本属于

Convolutional Neural Networks for Visual Recognition 6

-###Learning 前面,我们介绍了神经网络的构成,数据的预处理,权值的初始化等等.这一讲,我们将要介绍神经网络参数学习的过程. Gradient Checks 梯度的运算,在理论上是简单的,但是在实际的应用中,却非常容易出错,梯度的运算常见的有如下两种形式: 形式一: df(x)dx=f(x+h)?f(x)h h是一个很小的常数,实际运算的时候,h大概等于1e?5,但我们通常会用下面这种形式计算梯度: 形式二: df(x)dx=f(x+h)?f(x?h)2h 利用这个表达式,需要我们对l

Convolutional Neural Networks for Visual Recognition 4

Modeling one neuron 下面我们开始介绍神经网络,我们先从最简单的一个神经元的情况开始,一个简单的神经元包括输入,激励函数以及输出.如下图所示: 一个神经元类似一个线性分类器,如果激励函数是sigmoid 函数(σ(x)=1/(1+e?x)),那么σ(∑iwixi+b)相当于是求该输入所对应的输出为1的概率,P(y=1|xi;w),那么该输入所对应的输出为0的概率为 P(y=0|xi;w)=1?P(y=1|xi;w).在神经网络中,常用的激励函数一个是sigmoid函数,另一个是