在论文是在Faster R-CNN的基础上的改进 ,实现的效果有:

  • 目标检测:能够在输入图像中绘制出目标的边界框,预测目标位置
  • 目标分类:判别出该划定边界的目标的类别是什么,如人、车、猫和狗等类别
  • 像素级目标分割:(这就是其比Faster R-CNN多出的一个功能)能够在像素层面上对目标进行区分,将目标和背景区分开来,并使用不同的颜色进行标记

如Faster R-CNN的检测结果为:

而mask R-CNN的检测结果为:

可见mask R-CNN还能够将框中具体的目标部分使用同种颜色标记出来

mask R-CNN在Faster R-CNN上面的更改可从下面的两幅网络结构图中看出来:

Faster R-CNN的结构图为:

mask R-CNN的结构图为:

可见差别主要有两部分:

  • 首先是RoI池化层改进成了RoI Align层
  • 其次是在第二阶段中添加了一个掩模mask检测分支

Mask R-CNN能够很容易地用于其他任务中,比如能够在相同的框架下很容易地判断人类姿势。其在COCO系列挑战赛中的三种项目中都得到了最好的结果,如实例分割、边界框目标检测和人体关键点检测。

什么是实例分割?

实例分割就是不仅要正确检测出一张图片中所有的目标(即画出边界框),并且要精确地分割出每个实例(即上面图像中将边界框中准确的目标用同颜色标注,即对每个像素进行分类)

Mask R-CNN的目的就是为实例分割开发一个相对可用的框架。

首先mask分支是一个用在每个RoI上的小型FCN(全卷积网络),以像素到像素的方式预测分割掩模。掩模分支只增加了一个小的计算开销,使快速系统和快速实验成为可能

其次因为Faster R-CNN没有设计用于网络输入输出之间的像素对齐。这一点在RoIPool[13, 9]中最为明显,它实际上是用于处理实例的核心操作,对特征提取执行粗糙的空间量化。为了修正错位,我们提出了一个简单的,量化无关的层叫做RoIAlign,可以保留精确的空间位置。尽管看似一个很小的变化,RoIAlign起了很大的作用:它能将掩模准确率提高到10%至50%。而且我们发现它对于解耦掩模和类预测是至关重要的:在没有类间竞争的情况下,我们为每个类独立的预测二进制掩模。并且依赖于网络的RoI分类分支来预测类别。相比之下,FCNs通常实现每像素多类分类,分割和分类同时进行,基于我们的实验,发现它对实例分割效果不佳。

我们的模型在GPU上以200ms每帧的速度运行,使用一台有8个GPU的机器,在COCO上训练需要一到两天的时间

Mask R-CNN

Mask R-CNN采用了与Fast R-CNN相同的二阶段过程,第一阶段都使用相同的RPN网络。在第二个阶段中,在并行预测类和框偏置的同时还为每个RoI输出一个二进制掩模。这与最近大多数的系统(如[33,10,26])是相反的,最近的系统都依靠于掩模预测进行分类(而这里是将分类和掩模预测分开进行)。我们的方法遵循了Fast R-CNN并行应用边界框分类和回归的思想(大大简化了原始R-CNN的对阶段管道)。

通常,我们都会在每个采样RoI上定义一个多任务损失函数L=Lcls+Lbox+Lmask,分类损失函数Lcls和回归损失函数Lbox与Fast R-CNN中是相同的。掩模分支对每个RoI都有Km2维的输出,表示K个分辨率为m*m的二进制掩模,K表示类别数量(即对该RoI是否为K个类别中一个进行判定,且每个类别都会返回一个分辨率为m*m的二进制掩模)。为了实现它,我们对每个像素采用了sigmoid,并将Lmask定义为平均二进制交叉熵损失函数。对于某个与某真实类k相关联的RoI,Lmask仅被定义在第k个掩模上(这是因为其他的掩模输出对损失函数没有贡献)。⚠️掩模损失函数Lmask仅在RoI的正样本上定义

我们对Lmask的定义允许网络对每个类在没有类间竞争的情况下生成掩模。我们依赖与专用的分类分支去预测用于收集输出掩模的类别标签。该操作解耦了掩模和类别预测。这与通常将FCNs[23]应用于像素级的softmax和多项式交叉熵损失的语义分割做法不同。在传统做法中,掩模将会跨类别竞争。而在我们的方法中,使用了像素级的sigmoid和二进制损失函数,掩模将不会跨类别竞争(即无类别竞争)。我们通过实验发现,这种方法是改善实例分割结果的关键。

Mask Representation掩模表示

掩模编码了输入目标的空间布局。因此与在全连接层中类别标签和框偏置不可避免地缩成短的输出向量不同,这里能够通过卷积所提供的像素到像素的对应关系,很自然地抽取掩模的空间结构。

具体来说,我们使用一个FCN全卷积网络预测来自每个RoI的一个m*m的掩模。这允许在掩模分支中的每一层保持具体的m*m目标空间布局,不需要将其收缩成一个缺乏空间维度的向量表示。不像之前为了掩模预测扭曲到fc层的方法[33,34,10],我们的全卷积表示需要更少的参数,并且如实验中说明有着更高的准确度。

该像素到像素的行为需要RoI特征,其本身就是小特征图,为了更好的对齐,以准确的保留显式的像素空间对应关系,我们开发出在掩模预测中发挥关键作用的RoIAlign层,将在接下来讲到

RoIAlign

RoIAlign是从每个RoI中抽取一个小的特征映射(如7*7)的一个标准的操作。RoIPool首先将一个浮点数RoI量化为特征图的离散粒度,然后将这个量化的RoI细分为各自量化的空间bin,最后将每个bin覆盖的特征值聚合(通常通过max pooling)。量化是可执行的。例如,对在连续坐标系上的x计算[x/16],其中16是特征图步幅(缩放的比例),[.]表示四舍五入。同样的,当将RoI分成bins时(例如7×7)也执行同样的量化计算。这些量化操作使RoI与提取的特征错位。虽然这可能不会影响分类,因为分类对小幅度的变换有一定的鲁棒性,但它对预测像素级精确度的掩模有很大的负面影响。

为了解决这个问题,我们提出了一个RoIAlign层,消除了对RoIPool的粗糙量化,并将提取的特征与输入精准的对齐。我们提出的改变很简单,我们避免对RoI边界或bins进行量化(例如,我们使用x/16代替[x/16],即不进行四舍五入)。我们使用双线性插值[22](详情可见最邻近插值算法和双线性插值算法——图像缩放)在每个RoI bins中的四个常规采样位置计算输入特征的的精确值,并将结果汇总(使用最大或平均池化),即从原图根据缩放比例对应得到相应的像素值后才进行池化。我们注意到结果对抽取的4个样本位置甚至是采样多少个点并不敏感,只要不进行量化即可

正如我们在4.2节(对照实验)中所示,RoIAlign的改进效果明显。我们还比较了[10]中提出的RoIWarp操作。与RoIAlign不同,RoIWarp忽略了对齐问题,并在[10]的实现中有像RoIPool那样量化RoI。即使RoIWarp也采用了[22]中的双线性重采样,如实验所展示的那样(更多细节见表2c),它与RoIPool的效果差不多。这表明对齐起到了关键的作用。

新的网络结构为:

Make R-CNN论文学习的更多相关文章

  1. Faster RCNN论文学习

    Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了 Faster R-CNN ...

  2. 基于深度学习的恶意样本行为检测(含源码) ----采用CNN深度学习算法对Cuckoo沙箱的动态行为日志进行检测和分类

    from:http://www.freebuf.com/articles/system/182566.html 0×01 前言 目前的恶意样本检测方法可以分为两大类:静态检测和动态检测.静态检测是指并 ...

  3. 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集

    A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...

  4. R语言可视化学习笔记之添加p-value和显著性标记

    R语言可视化学习笔记之添加p-value和显著性标记 http://www.jianshu.com/p/b7274afff14f?from=timeline   上篇文章中提了一下如何通过ggpubr ...

  5. 《Explaining and harnessing adversarial examples》 论文学习报告

    <Explaining and harnessing adversarial examples> 论文学习报告 组员:裴建新   赖妍菱    周子玉 2020-03-27 1 背景 Sz ...

  6. Apache Calcite 论文学习笔记

    特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6f ...

  7. 论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet

    博客:blog.shinelee.me | 博客园 | CSDN 写在前面 论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:ht ...

  8. Fast RCNN论文学习

    Fast RCNN建立在以前使用深度卷积网络有效分类目标proposals的工作的基础上.使用了几个创新点来改善训练和测试的速度,同时还能增加检测的精确度.Fast RCNN训练VGG16网络的速度是 ...

  9. 论文学习笔记 - Classifification of Hyperspectral and LiDAR Data Using Coupled CNNs

    Classifification of Hyperspectral and LiDAR Data Using Coupled CNNs 来源:IEEE TGRS 2020 下载:https://arx ...

  10. 卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

    由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的C ...

随机推荐

  1. Python基础笔记一

    1. 分片的步长,默认为值1,表示为 xx[s:t:v] ----从索引s到索引t,每隔v,取对应索引位置的值 xx = 'hello,world' #从索引0-10,共11个字符 xx[2:] #从 ...

  2. Linux学习笔记(十六)Linux网络管理:网络基础(一)

    一.OSI7层模型协议 二.TCP/IP四层协议模型(五层) 1.网络接入层 网络接入层与OSI参考模型中的物理层和数据链路层相对应,它负责监视数据在主机和网络之间的交换.事实上,TCP/IP本身并未 ...

  3. 18计科学期总成绩明细 && 小黄衫团队预选

    1.个人所有作业+团队作业总得分排名 2.千帆竞发图 3.各团队每次作业得分汇总 根据团队成绩排名,众志陈成队得分最高,预选为小黄衫团队. 对团队成绩有异议的团队,请在成绩预选发布后的两天内私信助教解 ...

  4. k8s的高可用

    一.高可用原理   配置一台新的master节点,然后在每台node节点上安装nginx,nginx通过内部的负载均衡将node节点上需要通过访问master,kube-apiserver组件的请求, ...

  5. 进程与线程与GIL的总结

  6. CF843D Dynamic Shortest Path spfa+剪枝

    考试的T3,拿暴力+剪枝卡过去了. 没想到 CF 上也能过 ~ code: #include <bits/stdc++.h> #define N 100004 #define LL lon ...

  7. leetcode解题报告(22):Two Sum II - Input array is sorted

    描述 Given an array of integers that is already sorted in ascending order, find two numbers such that ...

  8. surprise库官方文档分析(二):使用预测算法

    1.使用预测算法 Surprise提供了一堆内置算法.所有算法都派生自AlgoBase基类,其中实现了一些关键方法(例如predict,fit和test).可以在prediction_algorith ...

  9. 新路由3newifi3路由器刷机newifi3breed解锁小白刷机教程路由器刷breed老毛子Padavan固件

    路由刷机围观33696次5条评论日期:2018-11-23字体:大中小   此教程只针对新三路由器小白玩家,大神勿喷,非常详细. 先说一下,本人2018年11月22日新入手了个新三路由器,收到货晚上8 ...

  10. mvn ssm 异常 org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'multipartResolver'

    解决方案: 添加 commons-fileupload-1.2.jar <!-- https://mvnrepository.com/artifact/commons-fileupload/co ...