Mask-RCNN ICCV2017

Mask-RCNN ICCV2017

参考1
参考2
计算过程解读

创新点

Mask R-CNN是在Faster R-CNN的基础上添加了一个预测分割mask的分支。将RoI Pooling 层替换成了RoIAlign层;添加了并列的FCN层(mask层),输出每个ROI的mask。

在这里插入图片描述

  1. 使用ResNeXt-101+FPN用作特征提取网络,基础网络增强
  2. 采用 ROIAlign 替代 RoiPooling(改进池化操作)。引入了一个插值过程,先通过双线性插值到14 * 14,再 pooling到 7 * 7。说白了就是对 feature map 的插值,直接的ROIPooling的那种量化操作会使得得到的mask与实际物体位置有一个微小偏移
  3. 分割 loss 的改进,由原来的 FCIS 的 基于单像素softmax的多项式交叉熵变为了基于单像素sigmod二值交叉熵

作者对网络中涉及特征图尺寸变化的环节都不使用取整操作,而是通过双线性差值填补非整数位置的像素。这使得下游特征图向上游映射时没有位置误差,不仅提升了目标检测效果,还使得算法能满足语义分割任务的精度要求

RoiPool和RoiAlign

二者目的都是在输出特征图提取上该ROI坐标所对应的特征

ROI Pool的输入是ROI的坐标和某一层的输出特征,在Faster R-CNN中,由于最后的全连接层的输入要求size统一,但是RPN网络生成的ROI尺寸大小是不一致的,因此有一个ROI Pool层用于将不同size的ROI处理成统一size的7x7输出,然后才作为全连接层的输入。

  • RPN网络会提出若干RoI的坐标以[x,y,w,h]表示,然后输入RoI Pooling变成7x7,但是, 如果ROI网络输出的RoI大小是8*8的,那么无法保证输入像素和输出像素是一一对应,这样输入和输出的ROI像素点的位置对应关系不能保证一致,不能用于分割。

举个例子:

  • 输入800x800的图像,假定在提取特征时,有五个池化,每次都是2,最终获得feature map的大小为800/32 x 800/32 = 25x25。
  • 图像中的一个object的BB大小是665x665,将狗的BB对应到feature map上面,我们得到的结果是665/32 x 665/32 = 20.78 x 20.78,结果是浮点数,含有小数,进行量化操作(取整),变成20x20.
  • 接下来是将含有上面这个object的ROI转化成固定的7x7的ROI feature, 20 /7 x 20/7 = 2.86 x 2.86,需要第二次量化操作,变成2x2。

ROIAlign 则不进行量化操作。就用浮点数的坐标&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值