Mask RCNN 论文阅读

mask rcnn 是对Faster R-CNN的功能上的提升,速度上仍然在200ms(5fps)。

Mask RCNN 论文阅读_第1张图片

Faster R-CNN回顾

Faster R-CNN由两个阶段组成。 第一阶段为RPN网络,提出候选对象bounding boxes。第二阶段,本质上是Fast R-CNN,从每个候选框中提取使用RoIPool的特征,并执行分类和边界框回归。

Mask R-CNN特点

Mask R-CNN在概念上很简单,与Faster R-CNN前相同只是又多加了一个输出:Faster R-CNN每个候选对象有两个输出,类标签(label)和边框偏移(bounding-box offset); 为提高精度,又添加了输出对象mask(二进制掩码)的第三个分支。但附加的Mask输出与类和框输出不同,需要提取对象的更精细的空间布局。同时,分类也取决于掩模预测。

损失上,在训练期间,将每个抽样RoI的多任务丢失定义为 L=Lcls+Lbox+Lmask 。 分类损失 Lcls 和bounding-box损失 Lbox 与Fast R-CNN中定义的相同。mask分支对于每个RoI具有 Km2 维输出,即K个分辨率 m×m 的二进制掩模编码,每个对应K中某个类别。 为此,对每个每像素使用sigmoid,并将 Lmask 定义为平均二进制交叉熵损失(the average binary cross-entropy loss)。对于与ground-truth类k相关联的RoI, Lmask 仅在第k个掩码上定义(其他掩码输出不会造成损失)。

与FCN

我们对 Lmask 的定义允许网络为每个类生成掩码,而不会在类之间有竞争;我们依靠专用分类分支预测用于选择输出掩码的类标签。这将隔离mask和类预测输出。 这与将FCN应用于通常使用每像素softmax和多项交叉熵损失的语义分割的常见做法不同。 在这种情况下,类上的mask存在竞争;在我们这种情况下,使用每像素的sigmoid和二进制损失,不会存在mask间的竞争。 通过实验显示,这种方案是良好的实例分割结果的关键。

Mask的表示

一个mask对输入对象的空间布局进行编码,如图1。 因此,无需像全链接一样reshape,可以通过卷基层进行运算输出。具体来说,我们使用FCN预测每个RoI的m×m掩码。 这允许掩模分支中的每个层保持显式的m×m对象空间布局,而不会将其折叠成缺少空间维度的向量(fc)表示。完全卷积表示需要更少的参数,并且如实验所证明的更准确。 这种像素到像素的行为需要我们的RoI特征,它们本身是小的特征图,以便良好地对齐以保留显式的每像素空间对应(应该是得到的mask与物体的像素对其)。 这促使我们开发出在掩模预测中发挥关键作用的以下RoIAlign层。

RoIAlign

RoIAlign层是对RoIPool的改进,用于可以消除RoIPool的严格量化。其实提出的改变很简单:为了避免了RoI边界或块的任何量化(即我们使用x / 16而不是[x / 16])。我们使用双线性插值来计算每个RoI中四个定期采样位置的输入特征的精确值,并将结果聚合(使用最大值或平均值)。如展示的那样,RoIAlign带来了很大的改进。
其实这一部分就是对feature map的插值计算。

网络结构

效果最好的结构是ResNeXt + FPN。这两部分也有其各自的作用:

  1. 用于整个图像上的特征提取的卷积网络结构
  2. 分别应用于每个RoI的边界盒识别(分类和回归)和掩模预测的网络头。

是下图右边的结构:
Mask RCNN 论文阅读_第2张图片

总结

这是把图像分割运用到了检测里来,算是检测功能的进一步增强。之前我就觉得这两者之间其实还是比较类似的,更进一步从检测做到分割也是理所当然。
其实最大的创新应该是分割中使用了非竞争的sigmoid代替了softmax,但具体各部分哪一点是最关键的,最提升性能的,只凭想也不能确认。以上是初步的阅读,可能有一些错误,希望与大家多交流。

S. Xie, R. Girshick, P. Doll´ar, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. arXiv:1611.05431, 2016.
T.-Y. Lin, P. Doll´ar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. arXiv:1612.03144, 2016.

你可能感兴趣的:(机器学习,maskrcnn)