【计算机视觉】《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

本博客是该论文的阅读笔记,不免有很多细节不对之处。

还望各位看官能够见谅,欢迎批评指正。

更多相关博客请猛戳:http://blog.csdn.net/cyh_24

如需转载,请附上本文链接:http://blog.csdn.net/cyh_24/article/details/51590174

继Object Classification、Detection 之后,Tracking 也”沦陷”啦,又一个被deep learning拿下的领域,这篇论文提出的 MDNet 在wuyi老师发布的OTB50和OTB100数据库上面取得了惊人的成绩。

Abstract

这篇论文的方法通过提取具有多domain,更generic的CNN特征进行single object的目标跟踪。
网络结构分为:shared layers + multiple branches of domain-specific layers
Train阶段,利用一些video来共同训练一个shared layers,每个video单独训练一个domain-specific的layer
Test阶段,利用训练好的shared layers + 新的二分类层,这个二分类层是online的更新。这个二分类层是用来判定一些candidate windows (随机的从上一帧target附近采样出来的) 是否为目标。

这个方法能够达到 state-of-art 的效果。我认为之所以能取得这么好的原因是因为:

  • Pretrained CNN 特征具有很好的区分特性(Naiyan Wang 在他的iccv15的 论文 中指出,tracking中最重要的就是特征的表达能力,好的特征甚至配一个很一般的分类器都能达到很好的效果)
  • Online fine-tuning 能够解决target的形变、遮挡、光照变化等等问题,可以使tracking更加robust
  • Hard minibatch Mining 的使用,使得网络的训练更加成功,特征更加优秀

Network Architecture

此处输入图片的描述

上图是本文提出的网络结构,它包含:

Shared Layers

  • Input: 107*107 RGB
  • 3个卷积层:conv1、conv2、conv3
  • 2个全连接层:fc4、fc5,输出是512,同时接ReLU和dropout层

Domain-speciic Layers

  • K个全连接层:fc6-1 ~ fc6-K,输出是2,使用softmax cross-entropy loss,用来区分背景跟traget

了解AlexNet跟VGG16的读者一定会觉得这个网络是一个很小的网络,这其实是作者刻意为之的,他给出的解释是:

  1. single object tracking 只需要区分两个类(background or target),这跟ImageNet 1000 类的任务比起来复杂度低很多,所以不需要太大的网络
  2. 随着网络越来越深,空间信息越来越稀释,这会使图像的目标定位不是那么精准。
  3. 因为tracking的target通常来说比较小,所以input size也需要小,自然的网络就不能太深
  4. 小网络显然在速度上会更快

Learning Algorithm

这个网络结构的目的是为了让shared layers学到不同domain共同的特性(光照变换、运动模糊、尺度变换等),而让不同分支的 domain-specific layers 学到该domain特有的一些特征。

要想达到这种训练目的,以往的minibatch SGD的训练方式肯定是不行了,作者介绍了他是如何训练网络的。

SGD 的每一次迭代中只涉及一个特定domain。在第k次迭代中,mini-batch中只包含来自第(k mod K)个video的样本,K个domain-specific layers也只激活第(k mod K)个分支。

通过这个学习过程,跟特定domain无关的信息就被学习到并保存在共享层中,这些信息是非常有用的泛化特征表示。

Online Tracking using MDNet

前面的train阶段大家应该已经明白流程了,那么test阶段是如何操作的呢?

其实很简单:

  • 保留前面的所有shared layers
  • 移除domain-specific layers
  • 取而代之的是一个新的初始化的domain-specific layer

当来了一个新的test序列,我们就online地对fc4~fc6做一个fine-tuning,具体做法如下

Tracking Control and Network Update

tracking 中有两个方面的事情比较重要:鲁棒性 和 自适应性。为了同时兼顾这两方面,作者使用了两种策略:long-term 和 short-term 进行模型更新:

  • long-term update: 定期地,使用较长时间内的正样本进行更新;
  • short-term update: 当检测到可能有跟踪失败的情况时,使用短期内收集到的正样本进行更新。

然而不管是哪种策略,都使用short-term内检测到的负样本,因为旧的负样本对于当前帧通常是多余的、不相关的。

为了确定每一帧中目标的状态,在上一帧目标的位置附近sample出 N个候选目标,用网络模型对这N个候选目标进行估计,取得分最高的为最佳目标。

Hard Minibatch Mining

个人认为这是训练时候非常好的一个tricky,可以很容易推广到其他方法中。

通常在一些 tracking-by-detection 的方法中,获取的negative样本都是冗余无效的,只有一小部分负样本对分类器的训练比较有效。一个非常有效的解决方法就是采用 hard negative mining 的方法,在training 和testing 的过程中,交替地去识别出hard negative.

作者把hard negative mining 的过程融入到minibatch 选择阶段。

在训练阶段的每一次迭代中,一个mini-batch包含n个正样本和p个困难负样本。
如何选择困难负样本?
用模型测试 M(M >> p)个负样本,sort之后取top p个最困难负样本。

Bounding Box Regression

了解 object detection 的同学应该知道,resample 出来的bounding box 通常比较 “漂”,一般需要加一个 regression 来矫正位置,tracking 也需要如此。

给定第一帧的时候,会train一个简单的linear regression模型来预测target 的精准位置,在接下来的序列中,用这个模型来调整 (分数>0.5的) bounding box 的位置。

regression 只在第一帧 的时候进行训练(使用conv3特征),训练比较耗时;
regression 模型所采用的方法和参数都是跟 Ross 大神的 RCNN 中使用的是一样的;

Implementation Details

Online tracking 的步骤如下图:

此处输入图片的描述

Target candidate generation

Training data

为了offline 的 multi-domain 学习,作者在每一帧中采样了50个正样本,200个负样本,采样时根据IoU(>=0.7 或者 <=0.5 )来决定样本正负。

Network Training

因为有K个分支,所以需要100K次迭代来train模型。

卷积层的learning rate:0.0001;
全连接层的learning rate:0.001;

在测试阶段,第一帧训练的时候,迭代30次来训练fc层:

fc4-5的learning rate:0.0001
fc6的learning rate:0.001

为了online update 时候能够有快速的适应性

作者每次使用10次迭代去更新网络,并且使用的learning rate 是第一帧训练的3倍;

Hard Minibatch Mining 时候

每个mini-batch包含32个正样本,96个负样本(从1024个负样本中选出)

Experiment

实验结果是state-of-art,简单贴一下结果图吧:

此处输入图片的描述

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值