Mask R-CNN 论文学习笔记

论文基本信息

  • 标题:Mask R-CNN
  • 作者:Kaiming He Georgia Gkioxari Piotr Dollár Ross Girshick
  • 机构:Facebook AI Research (FAIR)
  • 来源:ICCV
  • 时间:2017
  • 论文地址:https://arxiv.org/abs/1703.06870
  • 代码地址:https://github.com/facebookresearch/Detectron

论文概要

解决问题

本文在Faster RCNN上进行了改进,提出了Mask RCNN用来解决分割的问题。同时该模型也可以用于目标检测、关键点检测等其他的计算机视觉任务,并且实验证明,该模型具有较好的效果。

Introduction

  • 分割任务分为实例分割和语义分割。语义分割是将不同种类的物体按像素级别分类,实例分割是不同种类的不同个体也要进行分别。
  • 本文提出了一种非常简洁、灵活并且快速的方法来实现分割任务——Mask R-CNN。在Faster RCNN的基础上增加了一个预测掩码图的分支。这个掩码的分支是一个FCN(全卷积)在每一个RoI后。
  • 在Faster RCNN中采用RoIPool 将特征图映射成固定大小的特征向量,在Mask R-CNN中提出了 RoIAlign
  • 对每一个类进行一个独立预测一个掩码图,不同的类之间不存在竞争。
  • 之前的方法是对每个像素进行多分类,即将分类与分割的任务耦合在了一起,本文是将分类和分割进行解耦。分类和分割是相互独立的分支。实验表明,这样能够提升模型的效果。

Mask R-CNN

整体框架

对Faster RCNN进行了调整,同样也是一个two-stage的框架。
backbone之后

  • 第一部分:通过RPN生成proposal建议。
  • 第二部分:对每个proposal通过RoIAlign后,分为三个分支,其中两个分支与Faster R-CNN相同,分别进行分类和位置的回归,另一个分支就是通过FCN来生成k张mask图,每一张对应一个类别。
    Mask R-CNN 论文学习笔记_第1张图片

RoIAlign

本部分引自https://zhuanlan.zhihu.com/p/402224313

  • motivation:Faster RCNN并非为pixel-to-pixel的input和output设计的,不同于另外2个分支输出class和BBox,mask分支需要提取更精细的对象空间布局。RoIPool是识别instance的核心操作,但其仅通过coarse spatial quantization来提取特征。因此本文提出RoIAlign,它可以保留exact spatial location以实现pixel-to-pixel alignment
  • RoI Pool的问题:RoI Pool使用了2次quantization(“浮点数变整数”):将原图上的RoI映射到特征图时、对特征图进行池化以得到期望size的输出时(详见https://zhuanlan.zhihu.com/p/273587749)。quantization使得RoI和RoI Pool输出的feature之间存在misalignment。这种misalignment可能不会影响classification,但它对预测pixel-accurate mask有很大的负面影响。
  • 方法:RoIAlign并不使用quantization。首先将原图上的RoI映射到特征图(不使用quantization),然后将特征图上的RoI均分成2×2个bin(RoIPool/RoIAlign输出C×N×N的feature map,则bin的数量就是N×N,这里仅以2×2 bins为例);在每个bin中平均采样得到4个point的位置,通过线性插值计算这4个point对应的value,然后对这4个point的value进行aggregation(max/avg pooling)得到该bin的value.
    Mask R-CNN 论文学习笔记_第2张图片
    就是将proposal对应的特征图上的区域分成 nn个bin(上图为22个bin),每个bin中取四个点,这四个点的值的计算,是通过线性插值计算。然后对这4个点的值进行聚合,就得到了这个bin的值。

RoIAlign对性能的提升

Mask R-CNN 论文学习笔记_第3张图片

Head Architecture–Mask 分支

Mask RCNN同Faster RCNN一样都是通过backbone 来提取特征,然后在通过RPN提取proposal,再将每个RoI送入head中,head负责分类,回归,和预测mask图。
Mask R-CNN 论文学习笔记_第4张图片

  • 输入RoI
  • 输出 nn80的mask图 (80 是种类,每个类一张mask)
    上图是两种处理方式,左边是对RoI先送入resnet中后在经过一层全卷积直接得到。右边是FPN的思想,经过四层全卷积得到。

损失函数

本文定义了多任务的算是函数:
L = L cls + L box + L mask
其中前两项同Faster RCNN相同,第三项L mask为平均二元交叉熵损失,对于一个属于第k类的RoI,Lmask只是k类的gt map与他算损失,其他类的都不影响。

实验

实例分割

在COCO的实例分割的数据集上取得了较好的效果。
Mask R-CNN 论文学习笔记_第5张图片
与FCIS的效果比较

目标检测

在目标检测数据集上也取得了较好的效果。
Mask R-CNN 论文学习笔记_第6张图片

关键点检测

Mask R-CNN 论文学习笔记_第7张图片

消融实验

Mask R-CNN 论文学习笔记_第8张图片

参考:

https://zhuanlan.zhihu.com/p/402224313(很好的作者。还有配套的视频讲解!)

小白记录学习,主要是加强自己对论文的理解,如有错误,欢迎批评指正。

你可能感兴趣的:(cnn,深度学习,计算机视觉)