一 概述
Mske r-cnn是基于faster rcnn 提出来的一个网络架构,主要完成了目标个体的语义分割。论文的思路主要是对原有的faster rcnn进行了扩充,增加了一个分支对现有目标进行预测。
二 主要特点
- 强化的基础网络,通过 ResNeXt-101+FPN 用作特征提取网络,达到 state-of-the-art 的效果。
- ROIAlign解决对齐的问题。
- Loss Function,二分类的分类函数,对像素进行分类。
三 主要内容
对于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过程中的量化。
3.1ROIAlign
ROIAlign是roi映射到feature map后,不再进行四舍五入。然后将候选区域分割成k x k个单元, 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。
这里对上述步骤的第三点作一些说明:这个固定位置是指在每一个矩形单元(bin)中按照比例确定的相对位置。比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。
3.2 loss function
其中,对于mask分支和其他的分类分支一样,使用全卷积网络输出,输出了k类的mask。注意这里mask的输出使用了sigmoid函数。最后可以通过与阈值0.5作比较输出二值mask。这样避免了类间的竞争,将分类的任务交给专业的classification分支。
而Lmask对于每一个像素使用二值的sigmoid交叉熵损失。
4 整个网络结构
这里实际上有两个网络结构,一个就是:Mask R-CNN: overview的那副图(或者如上左边)。使用resnet-c4作为前面的卷积网络,将rpn生成的roi映射到C4的输出,并进行roi pooling,最后进行分叉预测三个目标。
参考:https://blog.csdn.net/xiamentingtao/article/details/78598511