Paper Reading: Mask R-CNN
Introduction
本文提出了一个概念简单,灵活且通用的实例分割
框架.扩展了Faster R-CNN
,再其基础上,添加了一个用于掩码预测的掩码分支
与Faster R-CNN
现有的边缘框预测分支并行.
Faster R-CNN
并没有设计成网络输入与输出的每个像素都对齐,主要原因是处理实例的核心操作RolRool
是粗略的空间量化特征提取,为了解决像素对齐问题,本文提出了简单的,无关量化的RolAlign
层.且RoIAlign
对结果有很大的提升:将Mask的准确性提高了10%-50%,并且在更严格的指标下展现出更大的效益.
Mask R-CNN
可以以每秒5帧的速度运行在单个GPU上,在COCO
数据集上只用一台8-GPU机器训练2天
Mask R-CNN
在COCO
数据集的实例分割
任务上比先前最先进的网络还要更好,除此之外Mask R-CNN
通过极小的修改(将每个关键点看作一个单独的二元掩码)也能用在姿势关键点检测,且超过了2016年COCO
关键点检测的冠军
Mask R-CNN
Faster R-CNN: Faster R-CNN
包含两个阶段:
- 通过
RPN
生成候选框. - 使用
RoIPool
对个候选框进行分类和边缘框回归。
Mask R-CNN: 同样包含两个阶段:
- 如
Faster R-CNN
一样,通过RPN
生成候选框. - 在预测类别和边缘框的同时,Mask R-CNN还为每个
RoI
输出一个二元掩码。
训练中,定义了一个多任务损失函数,且对每个采样后的RoI进行计算
其中,分类损失,与边缘框损失与Fast R-CNN
中的相同.
遮罩分支
每个RoI
输出为个分辨率为的二元掩码,为类别数,为每个像素进行Sigmoid
,将定义为交叉熵损失函数
,仅在真实类别的掩码上计算损失(对于k类,则计算第k个掩码的损失,其他舍去,通过实验表明,这种掩码与类别分离预测是取得良好实例分割结果的关键。)
遮罩表示: 掩码对输入对象的空间布局进行编码.因此,与类标签或箱体偏移量不同,全连接
层会导致其丢失空间信息.提取遮罩的空间结构可以通过使用FCN
来自然解决,也只需要更少的参数,而且更准确.
RoIAlign: 传统RoIPool
会进行两次取整(量化)操作,会导致原始输入与特征像素无法对应,产生偏差,虽然不影响分类,但它对预测像素精确的掩码会有很大影响.
为了解决这个问题,本文提出没有取整(量化)的RoIAlign
.RoI
的每个bin
都有四个采样点,RoIAlign
从特征图上附近的网格点通过双线性插值
计算每个采样点的值。 不对任何涉及 RoI、其 bin 或采样点的坐标执行量化,这样,既能保存精确的浮点数坐标,也能得到对应的像素值.
网络架构:
-
用于整个图像的特征提取的
骨干网络
:我们评估了50和101层ResNet
和ResNeXt
网络.用Faster R-CNN
第4阶段最终提取特征的卷积层,我们称之为C4
.例如,这种带有ResNet-50
的骨干网络
被称为ResNet-50-C4
. -
用于每个RoI的边界箱识别(分类和回归)和掩码预测的
网络头
:我们严格遵循以前的工作中提出的架构,并在此基础上增加了一个FCN
的掩码分支
左/右图显示了ResNet-C4
和FPN
骨干网络的网络头
。,所有的卷积核
都是3x3,除了输出卷积
是1x1,反卷积
卷积核大小为2x2,步长为2,隐藏层中使用ReLU
,图中箭头代表卷积、反卷积或全连接层,左图的res5
代表ResNet
的第五阶段,为了简单起见,我们改变了它,使第一个卷积在7×7的RoI上操作,步长为1(原来是的17×14的RoI执行步长为2的卷积).
ResNet-C5
主干网已经包括了一个res5
,因此可以使用一个更简单的头。
Implementation Details
超参数
同 Faster R-CNN
,IOU
不小于0.5则为正样本
,否则为负样本
,掩码损失函数仅在RoI
的正样本
上计算.掩码是RoI
及其对应的边缘框
之间的掩码.在测试时,C4主干网络
中的候选数量为300,FPN
为1000.在这些候选上执行检测框预测分支,随后进行nms
.然后将掩码分支
应用于评分最高100个检测框.尽管这与训练中使用的并行计算不同,但它可以加速推理并提高精度(由于使用更少,更准确的RoI).对于每个RoI只使用第k个掩码,其中k是分类分支预测的类别.然后将m×m浮点数掩码输出的大小调整为RoI大小,并使用阈值0.5将其二元化.