【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)

论文:Learning to Segment Every Thing
链接:https://arxiv.org/abs/1711.10370

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第1张图片

  • 这篇文章是发表在2018的CVPR上的文章,文章的名字起的很霸气,示例分割所有的东西。下面本博客对这篇文章进行带有PPT的图片进行讲解,若有描述不对的地方,还请各位读者指教。

目录

  • Introduction
  • Mask^x R-CNN
  • Experiment
  • Conclusion

  • 文章的一作和四作都是来自加利福尼亚大学,四作是教授;另外的三个人都是来自Facebook,其中三作是何凯明(敲一敲黑板)。本博客主要从以下四个方面对这篇文章进行阐述。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第2张图片

Introduction

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第3张图片

  • 对于我们的示例分割的任务而言,目前最多只能分割出大概100个种类,而其强烈的监督性导致其过分的依赖训练样本,加上其对训练样本的质量要求很高,这限制了示例分割的拓展性。为了能分割新的种类,只能增加训练样本的数量,该操作实在是太耗费时间和人力,分割示例的样本标注与目标检测的样本标注相比会难很多。
  • 为此,作者提出一个这样一个问题:是否能够训练出一个这样的示例分割的模型,该模型能够在不学习全部的示例分割的标注,而有能力去分割所有的种类的图片?
  • 针对这个问题,本文提出了这样一个任务:部分监督性的示例分割任务。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第4张图片
  • 对于这个partially supervised,其实就是把整个数据集分成两部分学习,一部分是全监督学习,一部分是半监督学习。具体而言,在全监督学习下,是一小部分带有mask annotations的子数据集,而在半监督学习下,其数据集是只有bounding box信息的数据集。这两个种数据集的不同就在于,全监督下的数据集包含了mask的相关信息,半监督的没有。
  • 前文有谈到,示例分割的标注会比bounding box的标准会困难很多,而且在很多数据集中bounding box的信息也很完善。因此,基于以上,作者在想:是否能够通过现在较多的bounding box的信息中,挖掘出instance mask的相关信息呢?是否可以将bounding box转换成instance mask呢?
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第5张图片

  • 对于我们的示例分割的问题,其主要分为两个子问题:目标检测问题和mask的预测问题,而Mask R-CNN这个网络就很适合解决这两个问题。所以本文的网络架构是在这个网络架构中进行实现的。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第6张图片

  • 在我们的introduction部分,本文就贴出了一个比较好的示例分割的效果图。重点可以看到我们的红框,这个红框就是在训练的时候只提供了bounding box的信息,可以看出结果挺好的,对于这种比较抽象的概念(如冰箱的把手)都能够很好的分割出来。

    Mask^x R-CNN

    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第7张图片

  • 本文就是在我们的mask rcnn上运用上迁移学习的方法和思想,想办法将我们的bounding box的信息迁移学习到我们的instance mask的相关信息。具体而言,就是将bounding box的信息通过本文提出来的一个映射函数映射成为instance mask的相关信息。以此,就能通过bounding box信息来得到instance mask的信息,进而能够将所有的示例进行分割。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第8张图片
  • 首先,是几个符号的说明。C表示的是everything,是我们所有的种类。A和B是C的两个子集,对于A子集,它含有详细的信息,有mask的信息(所以可以用来做全监督);对于B子集,它只含有bounding box的相关信息(所以可以用来做半监督)。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第9张图片
  • 敲黑板!!这就是本文的网络惹。上面的一行就是做detection的网络分支,下面的一行就是做mask prediction的网络分支。权重Wseg是通过一个T的函数来得到,这个T是由若干个全连接组成的网络(多少个全连接层,是否有激活函数呢?具体怎么实现的呢,后文的实验会详细说明)。
  • 值得关注的是两个分支的一个训练数据集:1 detection的数据集是AUB的bounding box信息;2 mask prediction的数据集只有A的mask相关信息。(我知道你还有不懂的,请看下文详细分解)
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第10张图片
  • 对于模型训练,本文提出了两种方式:stage-wise training 和 end-to-end training.
  • 首先,对于第一种stage-wise training的方式而言,其就相当于两步走的策略。如上面这张PPT中所示,第一步,先用AUB训练好上半部分(即Faster RCNN);第二步,固定CNN主体网络和目标检测分支的参数,训练示例分割分支。
  • 这样分成两个步骤来训练网络,可以先训练出detection的网络分支。敲黑板!!第一步结束后我们的Wdet权重是固定下来惹。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第11张图片

  • 第二种是端到端的训练方式。其实就是第一种方式两个训练一起来。但是会出个问题:AUB的boxes损失和A的mask损失进行反向传播,但是Wdet通过T函数只能接收到来自A的mask loss。T函数是连接box信息和mask信息的桥梁,但目前只能接收到来自A的mask损失的梯度,所以为了更加均衡,即学习bounding box信息能更好的迁移,只对参数 θ θ 进行反向传播更新求导,不对 Wdet W d e t 求导。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第12张图片

  • 本文也探究了mask heads的类型提出了两种方案。(1) an FCN head. 采用一个全卷积网路去预测 MM M ∗ M 的mask,偏向获取局部信息;(2) an MLP head. 采用几个全连接层去预测 MM M ∗ M 的mask,偏向获取全局信息。一个获取局部信息,一个获取全局信息,所以他们俩是属于互补的关系。到底使用哪个mask head,或者甚至两个结合起来效果如何呢,作者在实验部分有详细的说明。

Experiment

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第13张图片

  • 在实验部分首先来了解一下第一大实验的数据集,是在COCO上选取的80个类别。对于这80个类,分为了A和B两种模式:A为具有box和mask信息的数据集,B为只具有box信息的数据集。同时,针对这80类,又分为20类、60类,其中这20类和PASCAL VOC数据集上类别相同,这60类不在PASCAL VOC数据集上,因此这20类又称为“voc”,60类称为“non-voc”。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第14张图片
  • 这是本文的baseline,是由Mask R-CNN网络加上一个FCN的mask prediction head组成的。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第15张图片
  • 首先,是本文第一大实验的(a):探究weight transfer function 的不同输入结果的效果。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第16张图片
  • 一共有5种对比的方式。随机一类的高斯向量作为输入;采用GloVe向量训练好的NLP词向量作为输入;box head分类器的权重;box regression的权重;box head分类器和box regression的权重。
  • 另外说明一下:voc –> non-voc的意思:训练集为voc(20类),测试集为non-voc(60类)。
  • 结论:weight transfer function 的输入为cls+box效果最好。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第17张图片
  • 其次,是本文第一大实验的(b):探究weight transfer function,这个T函数的不同实现方式的效果(前文说了这个T函数是由全连接组成的,那么问题来了:具体多少层,是否使用激活函数,使用啥激活函数呢?本实验告诉你答案)。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第18张图片
  • 通过对比实验,可以看出不同数量的全连接层和不同激活函数对最后的结果是有影响的。
  • 结论:T函数为2个全连接层,以LeakyReLU为激活函数去得到效果最好。

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第19张图片

  • 再者,是本文第一大实验的(c):前文有说到,mask head类型的问题,到底使用MLP还是FCN呢?本实验进行了关于不同类型的mask branch 的对比,尤其是验证了MLP mask branch的有效性。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第20张图片
  • 通过这个实验,展现出不同的FCN、MLP组合带来的不同效果。class-agnostic 和transfer已经包含了FCN作为Mask head,其不同就在于transfer在class-agnostic的基础上加上了本文提出来的T函数,即增加了weight transfer function。
  • 结论:实验效果最好的为transfer+MLP的形式,也进一步论证了FCN与MLP之间的互补关系。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第21张图片
  • 最后,是本文第一大实验的(d):前文有说到,实验也分为了两种方式:stage-wise training和end-to-end。本实验室就是来探究到底哪个方式的效果会更好。与此同时,在第二种端到端的方式中,存在 Wdet W d e t 权重是否更新的问题(前文直接说明了结果,不更新),也在本实验中得到不更新的理由。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第22张图片
  • 通过本实验,很明显可以看出e2e的训练方式效果会好很多。
  • 结论:训练方式为e2e,不更新 Wdet W d e t 权重下的网络评估结果最好。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第23张图片
  • 第二个实验:探究setB中的AP与setA中训练样本数量的关系。
    -结论:setA中的类别instance mask sample的数量越多,在setB中的效果就越好。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第24张图片
  • 第三个实验:实验效果展示:上行表示的是baseline的效果,下行表示的是本文提出的方法。左边两列表示的是来自“voc”中的图片,右边两列表示的是来自“non-voc”中的图片。其中,着重可以看红框,这个是在训练中只提供了bounding box信息的。尤其可以看到狗和人的分割,效果比baseline的要好。
    【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第25张图片
    • 第四个实验:本文的方法与其他方法进行比较,取得比较好的效果。

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第26张图片

  • 这个为第五个实验,也是第二大实验。在大规模的数据集上进行的实验。将COCO作为了A数据集,另外从Visual Genome数据集取出将近3000个类的数据集作为B。A与B的交集为空。训练的方式使用的是第一种:stage-wise training的方式。
  • 这个图是论文中选取了六张,其他图各位读者可以从论文原文中查看。可以看出效果会比较好,特多的红框,大部分都能取得较好的结果。但是在给出的例子中,能分割出独立的树,但是遇到这种树林,分割的效果就不是很好,这个可以看到PPT左上角的图。

Conclusion

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第27张图片
- 本文主要做了三件事:第一,提出了部分监督性的学习任务,在大规模数据集中也能取得比较好的效果。第二,本文提出了T函数(weight transfer function)能很好的对bounding box的信息进行迁移学习成mask的相关信息。第三,本文的网络中各数据集中取得了较好的分割效果。

【论文学习笔记】Learning to Segment Every Thing (2018_CVPR)_第28张图片
- 欢迎各位留言交流!

你可能感兴趣的:(论文学习,论文分享,learning,to,segment,every,thin,segment)