ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mask R-CNN 论文学习

2021-09-16 19:58:26  阅读:275  来源: 互联网

标签:bin RoI Faster mask 论文 Mask CNN RCNN


论文基本信息

论文概要

解决问题

本文在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图,每一张对应一个类别。
    在这里插入图片描述

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.
    在这里插入图片描述
    就是将proposal对应的特征图上的区域分成 nn个bin(上图为22个bin),每个bin中取四个点,这四个点的值的计算,是通过线性插值计算。然后对这4个点的值进行聚合,就得到了这个bin的值。

RoIAlign对性能的提升

在这里插入图片描述

Head Architecture–Mask 分支

Mask RCNN同Faster RCNN一样都是通过backbone 来提取特征,然后在通过RPN提取proposal,再将每个RoI送入head中,head负责分类,回归,和预测mask图。
在这里插入图片描述

  • 输入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的实例分割的数据集上取得了较好的效果。
在这里插入图片描述
与FCIS的效果比较
在这里插入图片描述

目标检测

在目标检测数据集上也取得了较好的效果。
在这里插入图片描述

关键点检测

在这里插入图片描述
在这里插入图片描述

消融实验

在这里插入图片描述

参考:

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

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

标签:bin,RoI,Faster,mask,论文,Mask,CNN,RCNN
来源: https://blog.csdn.net/weixin_43179892/article/details/120331937

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有