• 论文阅记 MDNet


    论文题目:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    文献地址:https://arxiv.org/pdf/1510.07945.pdf

    源码地址:1)https://github.com/hyeonseobnam/MDNet (matlab版)

                     2)https://github.com/HyeonseobNam/py-MDNet (pytorch版)


       CNNs做跟踪的现状

    技术难点

    概念设计

    What the hell is Multi-Domain learning?

    MDNet

    网络结构

    Shared layers 与 Domain-specific Layers的联动

    MDNet在线跟踪

    在线跟踪策略

    B-Box回归

    总结


     MDNet是CVPR2016的文献,来自Korea的POSTECH团队。

      作者在这篇论文中将NLP中常用的多域(Multi-Domain)的概念引入使用CNN做跟踪。

    CNNs做跟踪的现状

      这篇论文提出时,还没有目前CNN做跟踪领域比较火的Siamese系列,开山之作SiamFC是在2017年提出的。同时,Siamese系列也是使用另外一种网络结构让CNNs在目标跟踪领域的应用成为可能,相当于是两个派系。

      作者揭示了CNNs在视觉方向很多领域获得长足发展,但却没有波及目标跟踪领域的原因:

    • 一方面,难以收集大量的视频序列数据用于训练;
    • 另一方面,基于low-level 手工特征的方法在实际应用中表现的也还不错。

      由于跟踪问题和分类问题从根本上的不一致,CNNs具有的特征表达的能力在跟踪方向收到限制。这里所描述的根本上的不一致体现在:预测物体类别标签定位任意类别目标的位置

    技术难点

      如果要利用CNNs很强的特征表达能力与目标跟踪领域,在目标和背景组合的大范围变化的数据上进行是可取的。但会存在一些技术难点

    • 在具有完全不同特征的视频序列上学习一种统一的表示是非常具有挑战性的。
    • 训练CNNs会更加困难,因为同一个目标在一个序列中可以被视为目标,而在另一个序列中可能被视为背景

      综上所述,使用CNNs进行目标跟踪需要解决的问题,一方面在于需要从各种视频数据集中学习到统一的表示;另一方面,需要为待跟踪的目标滤去一些干扰,对应于目标跟踪场景,就是待跟踪对象始终是目标,网络需要根据跟踪目标的不同在第一帧进行目标的微调。

    概念设计

      因此,作者针对上述难点,提出了将CNNs用于跟踪框架的概念设计

    • 首先,建立的网络应该分为两个部分,第一部分需要让它经历许多视频序列,从海量的视频数据中学会统一的表达方式;另一部分,需要对每个视频序列提供独家的前景-背景环境。这两部分组合在一起,形成端到端的训练方式。
    • 其次,这种独家的环境需要反复的训练,也就是说,不同的视频序列将会one-by-one的进行训练。每个独家环境,作者将其称之为域(源于NLP)。这个域中做的事情实际上是一个二分类的问题,即区分当前的bbox是前景or背景,参数相对较少,便于在线更新。
    • 最后,由于在实际跟踪时,跟踪对象可能是任意的。因此,需要新生成一个域,并进行在线更新。【其他的域只是为了训练需要,你可以理解为训练过程中的fc6[1-k]只是为了让第一部分(Shared Layers)学会统一表达方式的殉葬品】

    What the hell is Multi-Domain learning?

      通过概念设计的介绍,应该对于Multi-Domain有所理解。一个域就是一个视频序列,也就是相同跟踪对象。而Multi-Domain learning就是让第一部分通过不同视频序列学习统一的表达方式。毕竟跟踪需要针对单一种类的目标对象。

    MDNet

    网络结构

      如下图所示,网络输入是107*107的bbox。MDNet网络结构可以分为两部分,一部分是Share Layers,包含3个卷积层,2个全连接;另一部分是由多组全连接并行组成的多域学习层,进行二值分类,区分是前景还是背景。网络结构中的卷积层来源于VGG-M中,只是feature map的大小有所调整,毕竟跟踪的目标往往相对较小。

      作者提出的这个网络结构要小于AlexNet和VGG,作者对小网络更适合做跟踪做出如下解释

      1. 跟踪的目的在于区分目标和背景两个类别

      2. 对于预测目标的位置深度CNN并不是有效的。因为空间信息会随着网络模型的加深稀释、淡化

      3. 由于目标在跟踪时通常都比较小,所以小的输入图像尺寸是可取的,输入的input_size小,网络结构也应当浅一些

      4. 最后,在视觉跟踪问题上,网络越小,训练和测试就越有效。

    Shared layers 与 Domain-specific Layers的联动

      在了解了MDNet的网络结构之后,可能会对fc6中的各个分支的作用以及训练,测试过程的运作有疑问。同时,跟踪器不应该只训练用于一种目标的跟踪,应该可以完成不同目标的跟踪,这又是如何运行的呢?

      在概念设计中谈到,多域是为了能让跟踪器训练不同目标的数据集,让Share Layer训练学习统一的表达方式。而它的存在只是由于跟踪训练需要以单一的对象为前景。具体来说,多域CNN训练的目标是可以区分目标和背景。但这并不容易。因为不同域训练数据的目标有不同的目标和背景。然而,仍然存在一些相同的特性在所有域中,例如光照的改变,动作模糊,尺度变化等。所谓统一的表达方式,也就是让CNN可以区分各种序列的目标和背景。

      那么,至此可以达成一个共识:多域CNN的训练是为了让CNN可以普适于任意场景,任意对象。

      为了让CNNs学到不同视频中目标的共性,训练方式可以描述为:假设用K个视频来做训练,一共做N次循环。每一个mini-batch的构成是从某一视频中随机采8帧图片,在这8帧图片上随机采32个正样本和96个负样本,即每个mini-batch由某一个视频的128个框来构成。在每一次循环中,会做K次迭代,依次用K个视频的mini-batch来做训练,重复进行N次循环。用SGD进行训练,每个视频会对应自己的fc6层。通过这样的训练来学得各个视频中目标的共性。

      这样的训练方式可以将不同的序列放在一起训练,而不是一个域(视频)训练完,再训练另一个。

      测试方式:训练好的网络在做test的时候,会新建一个fc6层(其他的fc6只是训练中的),在线fine-tune fc4-fc6层,卷积层保持不变。

    MDNet在线跟踪

    在线跟踪策略

      考虑到跟踪效果的鲁棒性和适应性,应对目标在跟踪过程中外观的变化。作者采用Long-term和Short-term两种在线更新的方式。

    • Long term:按照一定间隔设置进行更新(eg:每8fps进行一次更新);
      • 包含100个历史样本,并不断更新(超过100个,抛弃最早的)
    • Short term:当出现潜在的跟踪失败时进行更新,"潜在"是指预测目标的positive score 小于 0.5
      • 包含20个历史样本(超过20个,抛弃最早的)。负样本均是通过该方式进行收集。

    B-Box回归

      作者发现,MDNet在测试过程中经常会得到一个与目标不那么紧凑的B-Box。为此,作者采取BBox回归技术,在第一帧时,使用conv3的输出训练一个简易的线性回归(因为第一帧的真实B-box是给出的,并且比较紧凑)。并且在随后的各帧中,对网络输出的B-Box进行一次B-Box回归。

      BBox回归的训练仅在第一帧,这是由于相对于在线更新其比较耗时对于在线更新,同时也为了避免回归模型在线更新的风险。

      在线测试的过程中,第一帧的B-Box可以来源于检测提供的目标。在随后的各帧中B-Box来源于在前一帧目标附近生成服从高斯分布的N个候选区,也就是越靠近前一帧目标位置的框越多,越远离前一帧目标位置的框越少。【跟踪前后帧物体不会发生过大的位置偏移】

      将这些B-Box缩放为107*107,分别作为网络的输入,得到相应的输出结果,在N(256)个B-Box候选集中使用下式进行筛选出进行B-Box回归的B-Box

      上述方式未免让人想到了R-CNN,使用某种方式(ss/高斯分布的随机框)获取RoI,然后输入网络... 这样的方式,对其实时性比较担忧啊....

      另外在训练中,mini-batch中的负样本的生成用到了hard negative mining,就是让负样本越来越难分,从而使得网络的判别能力越来越强。如下图所示,负样本与正样本的相似度越来越接近。

    总结

      至此,对于MDNet应该有了比较清晰的认识。流程可以总结如下:

      接下来,让我们一起走进RT MDNet吧!

      

      

      

      

  • 相关阅读:
    Excel 如何复制粘贴一整行
    如何修改文件的扩展名(后缀)
    中文乱码之myEclipse项目导入时中文乱码(待)
    如何在java中导入jar包
    如何在myEclipse中创建配置文件,比如:XXX.properties
    Postman安装教程
    API是什么?——回答:接口。(待)
    找回J2EE 之再学习打卡记录
    让外界可以访问电脑上的网站的几种方式——花生壳,域名,IIS(待)
    18、任务暂停挂起
  • 原文地址:https://www.cnblogs.com/monologuesmw/p/13360995.html
Copyright © 2020-2023  润新知