Mask R-CNN论文笔记

Mask R-CNN

提出目的

基于全景分割,精细分割效果貌似不如UNet
实现目标实例语义分割(object instance segmentation).

改进点(Faster RCNN)

  1. ROI Pooling->ROIAlign
  2. 在原来的faste rcnn 部分并联一个mask分支(FCN实现)
  3. 解耦分类和语义分割mask,mask分支负责生成mask,class分支就负责判断类别
  4. Mask R-CNN is based on an instance-first strategy

在这里插入图片描述

比较

  1. mask rcnn是一个小的应用在每个RoI上的FCN,生成分割蒙版(segmentation mask),独立分割,不再预测类别。
  2. 经典语义分割目标是将每个像素分类到一个固定的类别集合中,而不区分对象实例,先分割出来再预测类别。
  3. 经典目标检测目标是分类并用bounding box定位。

GAP 和FCN

  1. 两个作用差不多,减少参数,起到FC作用。FCNpadding可调。
  2. FCN做语义分割会在最后加上一层转置卷积,上采样变成原图大小。
  3. FCN卷积操作和全连接相乘再相加操作一样,可以把FC里每一个节点的权重reshape后当作conv的一个卷积核的参数。
  4. 现在在代替FC方面GAP用来替代FCN,因为FCN参数过大。

优点

  1. 并联结构独立预测更快
  2. 用了RoIAlign更准

RoIAlign

注意:RoI在原图

roi pooling过程:
  1. 原图的候选框映射到feature map上,例如665* 665 映射到feature map25* 25上为665/32=20.78,取整为20,这是第一次量化
  2. 如果pooling输出为7*7,那么会把上面映射的feature划分成49个同等大小的bin,每个bin大小为20/7=2.86,取整后为2,这是第二次量化
  3. 每个bin里取最大,max poolng,得到7*7大小的feature map
roialign过程:

由于上述roi pooling过程的两次量化(取整操作)会造成misalignment,为了做精细的语义分割,roialign实现了pixel-to-pixel alignment,没有取整操作。

在这里插入图片描述

下图align输出为2* 2,和我解释的7*7不一样:

在这里插入图片描述

  1. 原图的RoI映射到feature map上不取整(Figure 3中align输出为2* 2),假设还是665/32=20.78,保留浮点数
  2. 直接将映射的feature map分割为7* 7大小(align输出大小)的feature map,划分成几个同等大小的区域
  3. 文章中采样点数为4,表示对每个bin,平分四份,取中心点位置(红叉),中心点的像素采用双线性插值法计算(中心和其所在的feature方格的四个顶点,左上角顶点才是方格的值对应的点),一个bin得到四个值(左上角)
  4. 每个bin分别取max作为其值,得到最终输出。

对于有较多小物体的图片使用RoIAlign会更加精确。

关于最终的采样结果对采样点的位置,以及采样点的个数并不敏感。

单线性插值

已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值

这里写图片描述

这里写图片描述

双线性插值

有两个方向和对应的值

在两个方向分别进行一次单线性插值

这里写图片描述

我们想得到未知函数 f 在点 P = (x, y) 的值

已知函数 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值

首先在 x 方向进行线性插值

这里写图片描述

然后在 y 方向进行线性插值

这里写图片描述

mask分支

在这里插入图片描述

上图是针对不同backbone mask分支的结构。右边灰色部分忽略了几个卷积层。和class的RoIAlign输出大小不一样

在这里插入图片描述

X4:3*3,s1,p1

输入:

Roi在Feature map上的映射图

实现:

FCN(?),最后做转置卷积上采样,最后对256个通道做一次1* 1卷积得到28* 28*numcls大小的masks,最后根据fast rcnn分支给出的类别拿出对应的mask。

原本是class

输出:

mask

LOSS:L = Lcls + Lbox + Lmask

Lmask is only defined on the k-th mask (other mask outputs do not contribute to the loss).

Mask RCNN总体架构

img

消融实验

Backbone Architecture:resnet 50、101、resnet 50-fpn、resnet 101-fpn、resnext-101-fpn最终resnext-101-fpn效果最好,AP均高于其他几个backbone6-1个点。

多任务/独立mask:独立的强。

RoIAlign(ResNet-50-C4),RoIAlign (ResNet-50-C5, stride 32) 都优于于roipooling 。

Mask Branch (ResNet-50-FPN) FCNs improve results as they take advantage of explicitly encoding spatial layout.MLP稍微落后AP1-2个点。

后面还做了迁移,用于人体姿态检测。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值