CV论文NAS工作生活

Mask R-CNN论文阅读笔记

2019-07-03  本文已影响0人  FantDing

title: Mask R-CNN论文阅读笔记
date: 2019-06-04 11:36:32
tags:


参考资料如下:

Abstract

Introduction

Related Work

Mask R-CNN

在Faster R-CNN的二分支预测基础上,加上第三个预测分支:预测一个mask。关键是如何提取很小(像素级别)的空间信息

Faster R-CNN回顾

Faster R-CNN第一阶段“RPN”,提取出“proposal”——即有可能包含object的区域,但不关心到底是什么object;第二阶段本质上是“Fast R-CNN”, 使用ROIPool对proposal的feature进行“same size”操作,再输入到Fast R-CNN进行分类&bounding box回归。这两个阶段用到的feature可以是共享的。


Faster R-CNN模型图

Mask R-CNN

Mask R-CNN也是二阶段方法,第一阶段同样是RPN网络。在第二阶段并行进行三个工作:①预测cls ②box offset ③binary mask

​ 形式化地,对于每个ROI定义了多任务loss:L=L_{cls}+L_{box}+L_{mask},其中L_{cls},L_{box}的定义与Fast R-CNN中的一样。对于L_{mask}: 每一个ROI有一个Km^2维度的输出(K是cls的个数,m是ROI align后输入第二阶段的特征大小)。如下图所示,如果cls分支预测的是“人”,则只取“人mask”与label之间计算binary cross-entropy loss。

[图片上传失败...(image-1cb66f-1562147825974)]

[图片上传失败...(image-8b59b0-1562147825974)]

这样的mask loss定义消除了classes之间的竞争,解除了mask分支预测和cls分支预测的耦合。不同于FCN网络对于segmentation loss的定义softmax+cross-entropy, mask rcnn使用的loss定义为sigmoid+binary loss。FCN网络的segmentation loss的定义如下,可以看出: ①classes之间是有竞争的[sum(yi)=1] ②mask的预测也带有了cls的预测,这样就与cls分支耦合了

[图片上传失败...(image-14fc8a-1562147825974)]

RoIAlign

RPN网络输出的region of interest是相对于原图的,映射到feature map上有可能不在整数坐标上。如下图,假设有一个5*5的feature map,而RPN输出的region映射到feature map上是虚线区域


image

网络结构

[图片上传失败...(image-8f2b1c-1562147825974)]
为了说明这个方法的泛化性,作者提出多种Mask-RCNN结构。不同结构之间的差异体现在: (i)特征提取层的backbone结构 (ii)网络的两个head部分(Box head&Mask head)

backbone架构

​ 文中称backbone结构为“network-depth-features”。测试的网络架构有50 depth或者100 depth的Resnet和ResNeXt网络。带有ResNets的Faster RCNN是从4-th stage最后的feature map上提取特征,作者记作C4。例如,从ResNet-50 的4-th stage final feature上提取特征,则被记为ResNet-50-C4

image

​ 作者还测试了更有效的bockbone——Feature Pyramid Network(FPN),带有FPN backbone 的Faster RCNN在不同尺度上提取ROI特征。除了多尺度之外,其余的部分和不同的ResNet相同。使用了ResNet-FPN backbone提取特征的Mask RCNN,在精度和速度上都有优秀的表现

network head

head部分主要是在已有结构上添加了全卷积的mask预测分支。作者主要拓展了以Resnet和FPN为基础网络的Faster RCNN box head。以FPN基础网络为例:

image

[图片上传失败...(image-250f2c-1562147825974)]

① FPN-ROI mapping:将ROI对应到特定scale的feature map上。每个ROI有一个pooler scale属性,可以从pooler scale知道对应的是哪个feature map。

FPN网络如下:

[图片上传失败...(image-c82a46-1562147825974)]

可知pooler scale有1/4[P2],1/8[P3],1/16[P4],1/32[P5]四种(P6不参与这一步),通过如下公式:

[图片上传失败...(image-1266cb-1562147825974)]

​ 可知,lvl_{min}=2lvl_{max}=5(即Pn最小是P2,Pn最大是P5)。若某一个ROI,通过其pooler scale计算出target_{lvl}=3,则其对应着P3。

② ROI Align:将ROI对应上Pn,进行same size操作

[图片上传失败...(image-8da4ba-1562147825974)]

[图片上传失败...(image-821ac0-1562147825974)]

[图片上传失败...(image-a3fe5b-1562147825974)]

[图片上传失败...(image-3432f6-1562147825974)]

对于每个proposal会预测num_classes个mask,到底选择哪个mask,是通过box headcls预测分支来挑选的,如上图。

实现细节

超参的设定依据Fast/Faster RCNN,虽然原始的任务是object detection,但作者发现对于instance segmentation也同样适用

Training:

Inference:

实验

各种指标

image image

数据集介绍

参考文章如下:1. PASCAL VOC介绍 2.COCO介绍

PASCAL VOC数据集

image

即,VOC 2012包含了VOC 0812的所有数据。普遍使用的是 VOC2007和VOC2012数据集,因为二者是互斥的。

COCO数据集

Main Results

作者对比了COCO 2015和COCO 2016的冠军模型MNC和FCIS,在without bells and whilstles(可以理解为不需要花里胡哨的东西,例如不需要OHEM、data-augment等)的情况下,Mask R-CNN with ResNet-101-FPN都能超越花里胡哨的FCIS+++(which includes multi-scale train/test, horizontal flip test, and online hard example mining)。作者虽然没有尝试,但是认为这些花里胡哨的东西用在Mask RCNN上应该也能改进。

模型对比图

​ 通过模型的一些输出图片可以发现,FCIS+++有个普遍存在的缺点,即在实例与实例的重叠处表现不好,说明其对于实例分割的基础问题,并没有很好的解决。而Mask RCNN却能应对

上面是FCIS+++,下面是Mask RCNN

消融性实验(Ablation Experiments)

消融性实验有点控制变量的意思,mask RCNN有一系列pipelines,如A、B、C等,消融性实验就是看各个部分的贡献到底有多大,各个部分是不是彼此依赖、相互促进

Bounding box detection result

消融性实验的指标针对的是最终mask的AP,现在讨论bbox

时间(速度)

Inference:

作者使用Faster RCNN的4-step alternating training方法训练

Faster RCNN的4-step training

训练:

Enhance

许多用在detection/segmentation的技巧也可以用在Mask RCNN上

image
上一篇 下一篇

猜你喜欢

热点阅读