关闭

Mask RCNN笔记

标签: mask-rcnn
605人阅读 评论(0) 收藏 举报
分类:

mask rcnn简介

mask rcnn是何凯明基于以往的faster rcnn架构提出的新的卷积网络,一举完成了object instance segmentation. 该方法在有效地目标的同时完成了高质量的语义分割。 文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检测对目标进行并行预测。同时,这个网络结构比较容易实现和训练,速度5fps也算比较快点,可以很方便的应用到其他的领域,像目标检测,分割,和人物关键点检测等。并且比着现有的算法效果都要好,在后面的实验结果部分有展示出来。

场景理解


这里写图片描述

Mask R-CNN: overview


这里写图片描述

从上面可以知道,mask rcnn主要的贡献在于如下:
1. 强化的基础网络
通过 ResNeXt-101+FPN 用作特征提取网络,达到 state-of-the-art 的效果。
2. ROIAlign解决Misalignment 的问题
3. Loss Function

细节描述

1. resnet +FPN

作者替换了在faster rcnn中使用的vgg网络,转而使用特征表达能力更强的残差网络

另外为了挖掘多尺度信息,作者还使用了FPN网络

2. ROIAlign

说到这里,自然要与roi pooling对比。
我们先看看roi pooling的原理,这里我们可以看https://github.com/deepsense-ai/roi-pooling 的动图,一目了然。

对于roi pooling,经历了两个量化的过程:
第一个:从roi proposal到feature map的映射过程。方法是[x/16],这里x是原始roi的坐标值,而方框代表四舍五入。
第二个:从feature map划分成7*7的bin,每个bin使用max pooling。

这里写图片描述
这两种情况都会导致证输入和输出之间像素级别上的一一对应(pixel-to-pixel alignment between network input and output)。

因此作者设计了ROI Align layer。

作者的ROI Align layer想法很简单,就是去掉ROI Pooling过程中所有的量化过程,包括从原图proposal到最后一层feature map映射,以及把feature map划分成m*m的bin过程中的量化。

我们使用何凯明在iccv2017的ppt来说明。可以在百度云盘下载。链接: https://pan.baidu.com/s/1jHRubfK 密码: jh5c

这里写图片描述

如上,roi映射到feature map后,不再进行四舍五入。然后将候选区域分割成k x k个单元, 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。

这里对上述步骤的第三点作一些说明:这个固定位置是指在每一个矩形单元(bin)中按照比例确定的相对位置。比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。显然这些采样点的坐标通常是浮点数,所以需要使用插值的方法得到它的像素值。在相关实验中,作者发现将采样点设为4会获得最佳性能,甚至直接设为1在性能上也相差无几。事实上,ROI Align 在遍历取样点的数量上没有ROIPooling那么多,但却可以获得更好的性能,这主要归功于解决了misalignment的问题。值得一提的是,在做实验的时候发现,ROI Align在VOC2007数据集上的提升效果并不如在COCO上明显。经过分析为造成这种区别的原因是COCO上小目标的数量更多,而小目标对misalignment问题的影响更为明显(比如,同样是0.5个像素点的偏差,对于较大的目标而言显得微不足道,但是对于小目标,误差的影响就要高很多)

下面摘取上面百度云盘里的一个ppt的插图,更加细致地描述roialign。


这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

也可以参考:http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b

上面这篇文章还介绍了ROI Align的反向传播算法。
roi pooling的求导可以参考:http://ow680yzep.bkt.clouddn.com/iccv15_tutorial_training_rbg.pdf

下图对比了三种方法的不同,其中roiwarp来自:J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades
这里写图片描述

3. loss function

损失函数就是分类,回归加mask预测的损失之和。
这里写图片描述
其中,对于mask分支和其他的分类分支一样,使用全卷积网络输出,输出了k类的mask。注意这里mask的输出使用了sigmoid函数。最后可以通过与阈值0.5作比较输出二值mask。这样避免了类间的竞争,将分类的任务交给专业的classification分支。

而Lmask对于每一个像素使用二值的sigmoid交叉熵损失。

参考theano的文档,二值的交叉熵定义如下: 这里的o就是sigmoid输出。
这里写图片描述

4. 整个网络结构

这里写图片描述
这里实际上有两个网络结构,一个就是:Mask R-CNN: overview的那副图(或者如上左边)。使用resnet-c4作为前面的卷积网络,将rpn生成的roi映射到C4的输出,并进行roi pooling,最后进行分叉预测三个目标。

另一个网络就是这里的faster rcnn with fpn。
这里写图片描述

上述图像同样来自何凯明的ICCV2017 ppt
如上,使用fpn网络,每一个阶层连接一个三分支网络。考虑了多尺度信息,因此可以检测更加小的目标。
至于是否像之前的FPN在各阶层共享三分支网络,不太清楚。

总结

mask rcnn的主要贡献其实就是roi align以及加了一个mask分支。
目前开源代码有:

期待官方的源码放出~~

参考文献

  1. Mask R-CNN论文导读
  2. 如何评价 Kaiming He 最新的 Mask R-CNN?
  3. Mask-RCNN技术解析 [重点推荐]
  4. ROI Align 原理解析和实现细节 [重点推荐]
  5. 论文阅读-《Mask R-CNN》
  6. Mask R-CNN - Notes
  7. Notes: From Faster R-CNN to Mask R-CNN
  8. Implementing Mask R-CNN[重点推荐]
  9. Instance segmentation with Mask R-CNN
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

MASK-RCNN阅读笔记

2017:Mask R-CNN - 扩展 Faster R-CNN 以用于像素级分割背景何凯明的这篇大作是想像Fast/Faster-RCNN,FCN做为检测任务与分割任务的基础框架那样,将MASK-...
  • lanyuxuan100
  • lanyuxuan100
  • 2017-04-26 16:08
  • 2264

论文笔记:Mask R-CNN

Kaiming He 新作,貌似投iccv? 论文地址: https://arxiv.org/abs/1703.06870目标设计一个很棒的实例分割网络 Our goal in this wor...
  • Love_wanling
  • Love_wanling
  • 2017-04-14 15:43
  • 1999

Mask RCNN in TensorFlow

Download coco dataset, place it into ./data, then run python download and_convert_data.py to build t...
  • yunxinan
  • yunxinan
  • 2017-05-07 22:11
  • 4744

FastMaskRCNN算法TensorFlow配置,训练

打开./libs/datasets/pycocotools,执行make 下载COCO数据集,放到./data目录下,格式如下 ./data ./coco ./annotations ./train2...
  • wei_guo_xd
  • wei_guo_xd
  • 2017-06-25 21:03
  • 5241

论文阅读:《Mask R-CNN》ICCV2017

概述Mask R-CNN是用于目标检测分割的框架,即对一张图片,既输出图片中已有的目标,还能为每一个实例生成一个高质量的分割掩码。一句话概括object instance segmentation =...
  • qq_36165459
  • qq_36165459
  • 2017-10-23 19:38
  • 733

Mask R-CNN论文导读

文章链接:Mask R-CNN看到文章出来的第一个感觉就是,哇塞,大神们不光甩大招,还在一起甩~~~让我们这些小虾米们怎么玩呢~废话不多说,介绍重点。 一、文章思想 文章的主要思路就是把原有的Fa...
  • crazyice521
  • crazyice521
  • 2017-03-23 20:49
  • 14474

Mask-RCNN技术解析

一. Mask-RCNN 介绍        上篇文章介绍了 FCN,这篇文章引入个新的概念 Mask-RCNN,看着比较好理解哈,就是在 RCNN 的基础上添加 Mask。        Mask-...
  • linolzhang
  • linolzhang
  • 2017-05-12 23:01
  • 11011

Mask R-CNN小结

Mask R-CNN 小结 连盛 2017.3.26 IMT Lab in XMU Author:Kaiming He, Georgia Gkioxari, Piotr Dol...
  • lancerlian
  • lancerlian
  • 2017-03-31 21:37
  • 7718

Mask RCNN

Mask RCNN这是He Kaiming和Ross Girshick等人在2017新出的一篇文章。 一、文章思想 文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支,在现有...
  • u010772289
  • u010772289
  • 2017-04-02 12:40
  • 2675

《Mask R-CNN》-2017

《Mask R-CNN》 进行实例分割,就是要在每一个像素上都表示出来目标所属的具体类别。 完成类别检测,图像分割和特征点定位。 1、解决的问题:在时间上对faster rcnn进行了优化,并且提高...
  • Inuchiyo_china
  • Inuchiyo_china
  • 2017-04-27 17:21
  • 3866
    个人资料
    • 访问:285094次
    • 积分:4126
    • 等级:
    • 排名:第8660名
    • 原创:117篇
    • 转载:82篇
    • 译文:8篇
    • 评论:106条
    个人网站
    最新评论