MDNet



MDNet是2015年VOT的冠军,将深度学习引入目标跟踪,这篇文章的创新点是用深度学习抽取运动的特征,将运动特征添加到目标跟踪中。
文章全称:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking(MDNet)
团队:Korea的POSTECH团队
相关成果:TCNN CNN-SVM

网络结构

基本结构

  • 输入层

>输入层接受107*107的RGB图像。

  • 隐藏层
    conv1-3:采用 VGG-M的卷积层,每两个卷基层之间分别有relu层、normalize层和pool层;

>fc4-5:全连接层,每层有512个神经元,全连接层之间,包含dropout层。

  • 输出层
    fc6层之后是softmaxloss层,用于计算损失;

>其中fc6是分支层,跟踪和检测的最大不同是:跟踪需要在线学习,根据目标特征不断更新权重矩阵,而检测只需要离线学习即可。因此,在线学习与待跟踪的目标特征有关。因此fc6层没有共享的意义。该层的每个分支对应不同的视频序列。

网络特点

  1. 网络较浅:分类任务简单,只有目标和背景,无需较深的网络;
  2. 精确定位:使用较浅的网络模型,有利于精确定位;
  3. 目标小:目标本身一般比较小,较深的模型,会使得目标的特征矩阵为一个像素点;
  4. 实时性高:较深的网络,不利于特高跟踪的实时性。

Offline Learning

目标

通过在标注的视频序列上训练模型,使得模型学习跟踪任务的公共属性,如:光照变化,尺度变化以及运动模糊等。

训练策略

  • 训练样本:

    在K个标注的视频序列,每帧抽取样本数:

    S+=50 S + = 50 ( IoU0.7 I o U ≥ 0.7 )

    S=200 S − = 200 ( IoU0.5 I o U ≤ 0.5 )

  • 学习率 conv1conv3 c o n v 1 − c o n v 3 卷积层的学习率为0.0001, fc4fc5 f c 4 − f c 5 全连接层的学习率为0.001。
  • 训练过程:SGD迭代100次训练,或训练误差收敛到一定阈值后结束;每次迭代按以下方法处理:第 kth k t h 迭代中,minibatch(大小:128)由 (kmodK)th ( k m o d K ) t h 视频序列中的随机八帧图像随机产生,其中32个正样本和96个负样本,对应的 fc6th f c 6 t h 全连接层激活;
  • 训练结果:前5层共享权重(学习跟踪视频的公共属性),最后一层针对特定目标选择特定的层(配合训练);

Online Tracking

初始训练fc6层

  • 训练样本:根据给定的初始bounding 按照以下策略随机产生5500个样本:

    S+=50 S + = 50 ( IoU0.7 I o U ≥ 0.7 )

    S=200 S − = 200 ( IoU0.3 I o U ≤ 0.3 )

  • 学习率 fc4fc5 f c 4 − f c 5 的学习率为0.0001(由于已经进行离线训练过), fc6 f c 6 的学习率为0.001。
  • 训练过程:batch(大小:128)由32个正样本和96个负样本,迭代30次。
  • 训练结果:根据特定的跟踪目标,fine-tune fc4fc6 f c 4 − f c 6 层权重参数。

Bounding Box Regression训练

  • 训练样本:根据给定的初始bounding 按照以下策略随机产生1000个正样本:
    S+=1000 S + = 1000 ( IoU0.6 I o U ≥ 0.6 )
  • 训练过程:batch=256正样本,迭代 1000/256+1 1000 / 256 + 1
  • 训练结果:fine-tune边界回归权重参数。

Tracking Strategy

  • 候选样本:以前一帧目标位置为均值,以 (0.09r2,0.09r2,0.25) ( 0.09 r 2 , 0.09 r 2 , 0.25 ) 为协方差,产生256个候选样本,其中:r为前一帧目标宽和高和的平均值;
  • 样本评估:将样本通过网络前向传播计算样本scores: /itf+(xi) / i t f + ( x i ) /itf(xi) / i t f − ( x i ) ,目标位置有下式产生:
    x=argmaxxif+(xi) x ∗ = a r g m a x x i f + ( x i )

在线跟踪及学习

跟踪成功

  • 样本采集:根据跟踪的目标区域,在当前帧采集50个正样本( IoU0.6 I o U ≥ 0.6 ) 和200个负样本( IoU0.3 I o U ≤ 0.3 ),并加入总的正负样本数据集;由于卷积层参数不变,将样本以卷积后的特征保存,可以节省空间;
  • 总样本集维护
    总的正样本集保存最近100次跟踪成功帧的正样本( 此处作者的程序包含了没有跟踪成功的样本,这样帧对应的样本为空,不合理
    总的负样本集保存最近20次跟踪成功帧的负样本( 此处作者的程序包含了没有跟踪成功的样本,这样帧对应的样本为空,不合理
  • 跟踪成功:记录跟踪成功的帧

short-term训练:

  • 更新规则:目标得分小于0更新(目标外观变化越快,模型更新越快)
  • 训练样本
    正样本:最近20帧成功跟踪收集的正样本( 第一帧训练的500个正样本直接添加进去,随后每帧添加50个正样本);从这些样本中随机挑选32*10个样本作为正样本;
    负样本:最近20帧成功跟踪收集的负样本(_第一帧训练的5000个负样本丢弃,每帧产生200个负样本);(过期的负样本和当前帧的相关度不大),从中随机选出1024*10个负样本,进行hard negative mining后得到96*10个负样本。这些负样本更具有代表性,如下图所示;随着跟踪帧数增加,负样本越来越难分
  • 学习率 fc4fc6 f c 4 − f c 6 全连接层的学习率为0.0003。
  • 训练过程:batch(大小:128)由32个正样本和96个负样本,迭代10次。
  • 训练结果:fine-tune fc4fc6 f c 4 − f c 6 权重参数。

long-term训练:

更新规则:10帧更新一次 - **训练样本**:

正样本:最近100帧成功跟踪收集的正样本(第一帧训练的500个正样本直接添加进去,随后每帧添加50个正样本);从这些样本中随机挑选32*10个样本作为正样本;
负样本:最近20帧成功跟踪收集的负样本(_第一帧训练的5000个负样本丢弃,每帧产生200个负样本);(过期的负样本和当前帧的相关度不大),从中随机选出1024*10个负样本,进行hard negative mining后得到96*10个负样本。这些负样本更具有代表性,如下图所示;
- 学习率 fc4fc6 f c 4 − f c 6 全连接层的学习率为0.0003。
- 训练过程:batch(大小:128)由32个正样本和96个负样本,迭代10次。
- 训练结果:fine-tune fc4fc6 f c 4 − f c 6 权重参数。

不在线更新

  • 条件:当未满足short-term和long-term条件时,不更新模型,直接跟踪下一帧;

Hard Minibatch Mining

参考这个博客

程序调试

作者主页可以下载源码,具体调试详见README.md
调试遇到问题及解决方案:
1. 作者给的README.md要求MATLAB2014a,目前MatConvNet要求MATLAB2015b以上的版本,因此,按照MatConvNet的要求安装MATLAB2015b以上的MATLAB版本。
2. Attempt to execute SCRIPT vl_nnconv as a function:/home/fssj/Tracking/MDNet/MDNet/matconvnet/matlab/vl_nnconv.m该错误主要是由于MDNet工程中的MatConvNet文件和MATLAB自带的文件名有冲突,将该工程中的该文件的MATLAB搜索路径下移即可解决该问题。

参考链接

  1. 作者主页

你可能感兴趣的:(DL,Tracking)