首页 > 代码库 > Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 论文阅读

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负

 

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