Mask-RCNN技术解析

MaskR-CNN

摘要

提出了一个概念简单,灵活,通用的对象实例分割框架。本方法有效地检测图像中的对象,同时为每个实例生成高质量的分割掩码。该方法称为Mask R-CNN,通过在已有的包围盒识别分支的基础上增加一个预测对象掩模的分支,使R-CNN扩展得更快。Mask R-CNN训练简单,仅为速度更快的R-CNN增加少量开销,运行速度为5 fps。此外,Mask R-CNN易于推广到其他任务,例如,允许在相同的框架中估计人体姿势。展示了COCO系列挑战的所有三个轨迹的最佳结果,包括实例分割、包围盒对象检测和人的关键点检测。不需要经过修饰,Mask R-CNN在每一项任务上都胜过所有现有的单模式参赛作品,包括COCO 2016挑战赛的获胜者。简单有效的方法将作为一个坚实的基线,并有助于在实例级识别的未来研究。

一. Mask-RCNN 介绍

Mask-RCNN,看着比较好理解,就是在 RCNN 的基础上添加 Mask。

Mask-RCNN 来自于Facebook的 Kaiming He,通过在 Faster-RCNN 的基础上添加一个分支网络,在实现目标检测的同时,把目标像素分割出来。

假设大家对 Faster 已经很熟悉了,其中,黑色部分为原来的 Faster-RCNN,红色部分为在 Faster网络上的修改

1)将 Roi Pooling 层替换成了 RoiAlign;

2)添加并列的 FCN 层(mask 层);

Mask-RCNN 的几个特点

1)在边框识别的基础上添加分支网络,用于 语义Mask 识别;

2)训练简单,相对于 Faster 仅增加一个小的 Overhead,可以跑到 5FPS;

3)可以方便的扩展到其他任务,比如人的姿态估计 等;

4)不借助 Trick,在每个任务上,效果优于目前所有的 single-model entries;包括 COCO 2016 的Winners。

二. Mask-RCNN 技术要点

Mask R-CNN基本结构:与Faster RCNN采用了相同的two-state步骤:首先是找出RPN,然后对RPN找到的每个RoI进行分类、定位、并找到binary mask。这与当时其他先找到mask然后在进行分类的网络是不同的。

● 技术要点1 - 强化的基础网络

通过 ResNeXt-101+FPN 用作特征提取网络,达到 state-of-the-art 的效果。

● 技术要点2 - ROIAlign

采用 ROIAlign 替代 RoiPooling(改进池化操作)。引入了一个插值过程,先通过双线性插值到14*14,再 pooling到7*7,很大程度上解决了仅通过 Pooling 直接采样带来的 Misalignment 对齐问题。

虽然 Misalignment 在分类问题上影响并不大,但在 Pixel 级别的 Mask 上会存在较大误差。

后面把结果对比贴出来(Table2 c & d),能够看到 ROIAlign 带来较大的改进,可以看到,Stride 越大改进越明显。

● 技术要点3 - Loss Function

每个 ROIAlign 对应 K * m^2 维度的输出。K 对应类别个数,即输出 K 个mask,m对应 池化分辨率(7*7)。Loss 函数定义:

Lmask(Cls_k) = Sigmoid (Cls_k),平均二值交叉熵 (average binary cross-entropy)Loss,通过逐像素的 Sigmoid 计算得到。

Why 有K个mask?通过对每个 Class 对应一个 Mask 可以有效避免类间竞争(其他 Class 不贡献 Loss )。

通过结果对比来看(Table2 b),也就是作者所说的 Decouple 解耦,要比多分类 的 Softmax 效果好很多。

三. 对比实验效果

Training:

1.当IoU与Ground Truth的IoU大于0.5时才会被认为有效的RoI,只把有效RoI计算进去。

2.采用image-centric training,图像短边resize到800,每个GPU的mini-batch设置为2,每个图像生成N个RoI,对于C4 backbone的N=64,对于FPN作为backbone的,N=512。使用了8块GPU,所以总的minibatch是16,迭代了160k次,初始lr=0.02,在迭代到120k次时,将lr设定到 lr=0.002,另外学习率的weight_decay=0.0001, momentum = 0.9。如果是resnext,初始lr=0.01,每个GPU的mini-batch是1。

3.RPN的anchors有5种scale,3种ratios。为了方便剥离、如果没有特别指出,则RPN网络是单独训练的且不与Mask R-CNN共享权重。RPN和Mask R-CNN使用一个backbone,所以他们的权重是共享的。

(Ablation Experiments 为了方便研究整个网络中哪个部分其的作用到底有多大,需要把各部分剥离开)

Inference: 在测试时,使用C4 backbone情况下proposal number=300,使用FPN时proposal number=1000。然后在这些proposal上运行bbox预测,接着进行非极大值抑制。mask分支只应用在得分最高的100个proposal上。顺序和train是不同的,但这样做可以提高速度和精度。mask 分支对于每个roi可以预测k个类别,只要背景和前景两种,所以只用k-th mask,k是根据分类分支得到的类型。然后把k-th mask resize成roi大小,同时使用阈值分割(threshold=0.5)二值化。

另外,给出了很多实验分割效果,下面是一张 和 FCIS 的对比图(FCIS 出现了Overlap 的问题):

四. Mask-RCNN 扩展

Mask-RCNN 在姿态估计上的扩展,效果不错。

rcnn 改进mask_Mask-RCNN技术解析相关推荐

  1. 基于深度学习的目标检测技术的演进:从R-CNN到Faster R-CNN

    导语 什么是Objection Detection?就是在给定的图片中精确的找到物体所在位置,并且标注出物体的类别.目标检测要解决的问题就是物体在哪里?是什么?这样的问题.然而,这个问题并不是那么容易 ...

  2. 目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    一. 从图像识别的任务说起   1.1 思路一:看做回归问题   1.2 思路二:取图像窗口 二. R-CNN横空出世 三. SPP Net 四.Fast R-CNN 五.Faster R-CNN 看 ...

  3. 目标检测技术演化:从R-CNN到Faster R-CNN

    摘要: 一文了解目标检测技术发展,不要错过哟. 目标检测旨在准确地找到给定图片中物体的位置,并将其正确分类.准确地来讲,目标检测需要确定目标是什么以及对其定位. 然而,想要解决这个问题并不容易.因为, ...

  4. faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

    RCNN 这个网络也是目标检测的鼻祖了.其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式.在RCNN中 ...

  5. cnn 回归 坐标 特征图_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

    RCNN 这个网络也是目标检测的鼻祖了.其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式.在RCNN中 ...

  6. 肺结节目标检测_基于改进Faster R-CNN的肺结节检测

    基于改进 Faster R-CNN 的肺结节检测 肺癌在我国乃至全球范围内 , 都是发病率及死亡率最高的恶性肿瘤.其早期 的表现形式是直径不超过 30mm 的肺内圆形或不规则形结节. 肺癌的早期诊断与 ...

  7. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  8. Faster R-CNN改进篇(二): RFCN ● RON

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/linolzhang/article/details/75137050 @改进1:RFCN 论文:R- ...

  9. ResNet50上天 | DDQ改进Sparse RCNN让ResNet50在coco上来到了49.8的AP

    在 DETR 出现之后,端到端的目标检测得到了迅速的发展.DETR 使用一组稀疏查询来替换大多数传统检测器中的密集候选框.相比之下,稀疏查询不能保证作为密集先验的高召回率.但是,在当前框架中,使查询变 ...

最新文章

  1. 使Apache实现gzip压缩
  2. ZjDroid工具介绍及脱壳详细示例
  3. java异常处理图片_Java处理图片时出现异常
  4. python基础入门(Peak带你学python)
  5. VM异常关闭后导致虚拟机无法打开问题解决办法【已解决】
  6. ultilize什么意思_ultilize是什么意思
  7. (数据库系统概论|王珊)第四章数据库安全性:习题
  8. python - 环境搭建
  9. 51nod1118--简单DP
  10. 一、Spark安装与部署
  11. MRPT笔记——MRPT在VS2013中的配置
  12. 企业纳税证明(社保完税证明)如何导出
  13. 异步电路中时钟同步的方法
  14. 计算机文献中的经典语录,经典文献语录摘抄
  15. 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
  16. android 背光控制,Android P背光策略分析(一)
  17. 读书笔记---《如何高效学习》
  18. OTA自动化测试解决方案
  19. 你以为SSL是安全的吗?
  20. xp无法访问win7计算机,手把手为你处理解决XP不能访问win7共享文件的方法

热门文章

  1. 冷知识讲解:语法糖、语法盐、语法糖精
  2. OpenGL之鼠标控制坐标系旋转、缩放、移动
  3. C语言I———博客作业04
  4. 谣言检测论文分享(三)
  5. vSAN架构细节(2) - 对象和组件
  6. 替换word文档中的换行符
  7. JavaScript基础学习之对象
  8. cs5 dreamweaver ox_Dreamweaver CS5中文版安装向导图文教程
  9. 以程序员的名义,分析 “人民的名义”
  10. Freemarker页面静态化