RCNN系列(4):Mask R-CNN

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/86488836

论文地址: Mask R-CNN
pytorch实现:github链接
  Mask R-CNN这篇论文为实例分割提出了一个简单灵活的框架,在进行目标检测的同时产生一个质量较高的分割掩码。在Faster R-CNN的基础上,添加一个对每一额哥RoI进行分割掩码预测的分支,该分支与已存在的预测分类的和位置的分支并行,也就是说三个分支,模型结构如下图所示,
在这里插入图片描述具体地,模型架构如下:
在这里插入图片描述
  可以看到Mask R-CNN的主要贡献在于:

  • 使用Resnet+FPN为特征提取网络
  • 使用RoIAlign解决输入输出的对齐问题
  • 类FCN结构的mask预测分支
      重点看一下用于替换RoI池化层的RoIAlign,RoI池化层的作用是根据候选框的位置坐标将响应区域池化为固定尺寸的特征图,以便分类和回归,由于候选框的位置通常是通过回归得到的,所以一般是浮点数,为了固定尺寸RoI做了两次量化操作:
    • 候选框边界量化为整数点坐标值,采用最近邻插值的方法
    • 量化后的边界区域平均分割成 k × k k\times k 个单元,对每一个单元进行量化。

  经过这两次量化,位置会与最考试的候选框有一定的偏差,虽然可能仅仅是几个像素的偏差,但是映射到原图尺寸可能是几十个像素单元的偏差。
  为此设计了RoIAlign,思路就是取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,将整个特征聚集过程转化为一个连续的操作。具体操作中,RoIAlign并不简单地补充出候选区域边界上的坐标点,然后将这些坐标点进行池化,而是:

  • 遍历每一个候选区域,保持浮点数边界不做量化
  • 将候选区域分割为 k × k k \times k 个单元,每个边界不做量化
  • 再每个单元中计算固定四个坐标位置,用双线性内插计算这四个位置的值,然后进行最大池化操作

  其中第三点中的固定位置是指每一个矩形单元中按照固定规则确定的位置,比如采样点数是1,那么就是这个单元的中心点,采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点,这种方式对小目标的影响更大。而且不像最近邻插值会损失损失空间对称性 。

欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/86488836