Mask RCNN 是基于Faster RCNN提出的,在高效完成目标检测的同时实现了高质量的实例分割

Faster R-CNN系列改进回顾


Mask R-CNN相对于Faster R-CNN的改进主要有三点

  1. 引入FPN结构进行特征提取
  2. 采用RoI Align代替RoI pooling
  3. 在分类和回归的分支基础上,加入Mask分支

特征金字塔FPN

使用单一尺寸的特征(Faster R-CNN)的做法,在经过CNN逐层的下采样,到达最后特征层的时候图片中小物体的有效信息较少,检测性能急剧下降 (图b)

而图像金字塔 (图a) 将输入图片做成多个尺寸,来生成不同尺度的特征来解决多尺度的问题,这种做法计算量大,非常耗时

特征层分层预测 (图c) 语义信息差距太大,高分辨率的低层特征不具备足够的检测能力

基于以上几种做法,提出了特征金字塔FPN (图d),从高层携带信息传给低层,再分层预测

首先自底向上提取语义信息,然后依次进行上采样,各层进行$1\times 1$卷积降低通道数 (使通道数变为256),将浅层定位细节与上采样的高层语义结合 (逐元素相加),最后用$3\times 3$卷积做融合 (消除上采样的重叠效应)

关于FPN,更多信息可以参考原文

RoI Align

Mask R-CNN对Faster R-CNN第二个改进是用RoI Align层替代了RoI Pooling层,RoI Pooling层存在两次取整操作,导致RoI特征与回归得到的位置存在一定的偏差,这个问题被称为不匹配问题(Missalignment)

RoI Align通过双线性插值来解决这个问题 (即坐标和大小都保留浮点数)

比如将RoI切分为$2\times 2$的网格,每个网格中采样$4$个点,则将每个单元格子均分成四个小方格后取每个方格的中心点作为采样点即可,对每个单元格内的采样点进行最大池化,就得到了最终RoI Align的结果

Mask分支属于图像分割领域的知识,这里不详细展开了解