Mask RCNN笔记

mask rcnn简介

mask rcnn是何凯明基于以往的faster rcnn架构提出的新的卷积网络,一举完成了object instance segmentation. 该方法在有效地目标的同时完成了高质量的语义分割。 文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检测对目标进行并行预测。同时,这个网络结构比较容易实现和训练,速度5fps也算比较快点,可以很方便的应用到其他的领域,像目标检测,分割,和人物关键点检测等。并且比着现有的算法效果都要好,在后面的实验结果部分有展示出来。

场景理解


这里写图片描述

Mask R-CNN: overview


这里写图片描述

从上面可以知道,mask rcnn主要的贡献在于如下:
1. 强化的基础网络
通过 ResNeXt-101+FPN 用作特征提取网络,达到 state-of-the-art 的效果。
2. ROIAlign解决Misalignment 的问题
3. Loss Function

细节描述

1. resnet +FPN

作者替换了在faster rcnn中使用的vgg网络,转而使用特征表达能力更强的残差网络

另外为了挖掘多尺度信息,作者还使用了FPN网络。

2. ROIAlign

说到这里,自然要与roi pooling对比。
我们先看看roi pooling的原理,这里我们可以看https://github.com/deepsense-ai/roi-pooling 的动图,一目了然。

对于roi pooling,经历了两个量化的过程:
第一个:从roi proposal到feature map的映射过程。方法是[x/16],这里x是原始roi的坐标值,而方框代表四舍五入。
第二个:从feature map划分成7*7的bin,每个bin使用max pooling。

这里写图片描述
这两种情况都会导致证输入和输出之间像素级别上的一一对应(pixel-to-pixel alignment between network input and output)。

因此作者设计了ROI Align layer。

作者的ROI Align layer想法很简单,就是去掉ROI Pooling过程中所有的量化过程,包括从原图proposal到最后一层feature map映射,以及把feature map划分成m*m的bin过程中的量化。

我们使用何凯明在iccv2017的ppt来说明。可以在百度云盘下载。链接: https://pan.baidu.com/s/1jHRubfK 密码: jh5c

这里写图片描述

如上,roi映射到feature map后,不再进行四舍五入。然后将候选区域分割成k x k个单元, 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。

这里对上述步骤的第三点作一些说明:这个固定位置是指在每一个矩形单元(bin)中按照比例确定的相对位置。比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。显然这些采样点的坐标通常是浮点数,所以需要使用插值的方法得到它的像素值。在相关实验中,作者发现将采样点设为4会获得最佳性能,甚至直接设为1在性能上也相差无几。事实上,ROI Align 在遍历取样点的数量上没有ROIPooling那么多,但却可以获得更好的性能,这主要归功于解决了misalignment的问题。值得一提的是,在做实验的时候发现,ROI Align在VOC2007数据集上的提升效果并不如在COCO上明显。经过分析为造成这种区别的原因是COCO上小目标的数量更多,而小目标对misalignment问题的影响更为明显(比如,同样是0.5个像素点的偏差,对于较大的目标而言显得微不足道,但是对于小目标,误差的影响就要高很多)

下面摘取上面百度云盘里的一个ppt的插图,更加细致地描述roialign。


这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

也可以参考:http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b

上面这篇文章还介绍了ROI Align的反向传播算法。
roi pooling的求导可以参考:http://ow680yzep.bkt.clouddn.com/iccv15_tutorial_training_rbg.pdf

下图对比了三种方法的不同,其中roiwarp来自:J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades
这里写图片描述

3. loss function

损失函数就是分类,回归加mask预测的损失之和。
这里写图片描述
其中,对于mask分支和其他的分类分支一样,使用全卷积网络输出,输出了k类的mask。注意这里mask的输出使用了sigmoid函数。最后可以通过与阈值0.5作比较输出二值mask。这样避免了类间的竞争,将分类的任务交给专业的classification分支。

而Lmask对于每一个像素使用二值的sigmoid交叉熵损失。

参考theano的文档,二值的交叉熵定义如下: 这里的o就是sigmoid输出。
这里写图片描述

4. 整个网络结构

这里写图片描述
这里实际上有两个网络结构,一个就是:Mask R-CNN: overview的那副图(或者如上左边)。使用resnet-c4作为前面的卷积网络,将rpn生成的roi映射到C4的输出,并进行roi pooling,最后进行分叉预测三个目标。

另一个网络就是这里的faster rcnn with fpn。
这里写图片描述

上述图像同样来自何凯明的ICCV2017 ppt
如上,使用fpn网络,每一个阶层连接一个三分支网络。考虑了多尺度信息,因此可以检测更加小的目标。
至于是否像之前的FPN在各阶层共享三分支网络,不太清楚。

总结

mask rcnn的主要贡献其实就是roi align以及加了一个mask分支。
目前开源代码有:

  • https://github.com/TuSimple/mx-maskrcnn

    • https://github.com/CharlesShang/FastMaskRCNN

    • CAFFE :https://github.com/jasjeetIM/Mask-RCNN

期待官方的源码放出~~

参考文献

  1. Mask R-CNN论文导读
  2. 如何评价 Kaiming He 最新的 Mask R-CNN?
  3. Mask-RCNN技术解析 [重点推荐]
  4. ROI Align 原理解析和实现细节 [重点推荐]
  5. 论文阅读-《Mask R-CNN》
  6. Mask R-CNN - Notes
  7. Notes: From Faster R-CNN to Mask R-CNN
  8. Implementing Mask R-CNN[重点推荐]
  9. Instance segmentation with Mask R-CNN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS开发之----常用函数和常数--秀清

介绍一下Objective-c常用的函数,常数变量 算术函数 【算术函数】函数名说明int rand()随机数生成。(例)srand(time(nil)); //随机数初期化int val rand()P; //0~49之间的随机数int abs(int a)整数的绝对值(例&#…

网页设计中常用的19个Web安全字体

来自http://www.jb51.net 在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的font-face属性来引入特殊的浏览器加载字体。但多数情况下,考虑各个因素的影响我们还是在尽量充分利用这些默认调用的字…

python slice是共享内存吗_python共享内存实现进程通信

1.概述共享内存可以说是最有用的进程间通信方式.两个不同的进程共享内存的意思是:同一块物理内存被映射到两个进程的各自的进程地址空间.一个进程可以及时看到另一个进程对共享内存的更新,反之亦然.采用共享内存通信的一个显而易见的好处效率高,因为进程可以直接读写内存,而不需…

FCN-数据篇

从本篇开始,我们来记录一下全卷积网络用来做语义分割的全过程。 代码:https://github.com/shelhamer/fcn.berkeleyvision.org 下面我们将描述三方面的内容: 1. 官方提供的公开数据集 2. 自己的数据集如何准备,主要是如何标注…

深圳本地网店代运营公司

◆★◆深圳本地网店代运营,淘宝代运营多少钱,微博运营公司,代运营平台,天猫京东代运营,网站代运营图 片, 北京京东代运营,网店代运营协议,京东店铺代运营,网站代运营服务…

搜索专题题解

题目链接: codeforces 277A - Learning Languages 题目描述: 一个团体有n个人,每个人都掌握了一些语言,每个人学一门语言有1个花费,两个人之间可以通过其他人的翻译,问最少花费多少使得这个团体的任意两个人…

Facebook 开源的快速文本分类器 FastTex

FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText 原理fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。下面我们一一介绍。 1.1 模型架构 …

FCN-加载训练与测试数据

当我们生成了数据后,我们来看看FCN是如何加载数据的。 FCN 代码预览 其中: - data : 训练测试数据 - ilsvrc-nets:存放预训练的模型 - 剩下的框:不同数据集的训练测试prototxt - voc_layers,siftflow_layers等&am…

怎么撤销定时说说_已注册商标遇到撤三申请怎么办

很多企业的商标都遇到过商标撤三的情况,撤三简单的说就是,注册商标没有正当理由连续三年不使用的,任何单位或者个人可以向商标局申请撤销该注册商标。所以说,无论您的企业多大,商标持有的再多,也要做好商标…

windows下架设SVN服务器并设置开机启动

1、安装SVN服务器,到http://subversion.apache.org/packages.html上下载windows版的SVN,并安装,在命令行下运行svn命令,如下所以,则svn服务器安装成功。 C:\Documents and Settings\Administrator>svn 使用“svn …

Spartan-6 FPGA SelectIO Resources User Guide 笔记2 SelectIO Attributes/Constraints

1.Location Constraint 用于分配I/O端口 NET <I/O_NAME> LOC "<EXTERNAL_PORT_IDENTIFIER>"; Example: NET MY_IO LOCR7; 2.IOSTANDARD Attribute 用于选择IO标准如LVCMOS25&#xff0c;LVDS_25等 NET <I/O_NAME> IOSTANDARD”<IOSTANDARD V…

python合并pdf 加书签_Python生成pdf目录书签的实例方法

有时候我们用的一些pdf资料是没有目录的&#xff0c;这样找寻我们想到的东西比较麻烦。本篇文章就为大家带来python来生成pdf目录书签的方法。首先&#xff0c;我们需要下载一个软件FreePic2Pdf,利用它我们可以将我们的pdf文件导入书签工具下载&#xff1a;https://www.jb51.ne…

正则表达式及其在python上的应用

今天学习了一早上正则表达式。如下内容部分转载自《读懂正则表达式就这么简单》 一、什么是正则表达式 正则表达式是一种特殊的字符串模式&#xff0c;用于匹配一组字符串&#xff0c;就好比用模具做产品&#xff0c;而正则就是这个模具&#xff0c;定义一种规则去匹配符合规…

安全专家在硬盘固件中发现NSA的网络间谍程序

本周安全专家在硬盘固件中发现了美国国家安全局&#xff08;NSA&#xff09;的网络间谍程序&#xff0c;这些程序非常难以被检测或者删除。来自卡巴斯基的研究者公布了该恶意程序用来“Phone Home”的URL地址&#xff0c;NSA利用这些随机、凌乱的地址来收集硬盘上的敏感数据。 …

SVN 分支/合并/切换

本文无条理性&#xff0c;仅作自我参考。 花费了两个半下午&#xff0c;走马观花的看了一下说明文档&#xff0c;SVN设计的太复杂&#xff0c;对我这样的&#xff0c;不在一个集体的的业余开发者&#xff0c;要理解起来真是太难了。。。。 分支 Make branches as often as yo…

使用Firefox或Chrome的雇员表现更好不频繁跳槽

一家销售软件帮助雇主招募雇员和留住雇员的公司Cornerstone OnDemand称&#xff0c;使用非默认浏览器如Firefox或Chrome的雇员表现更好不频繁跳槽。 这项研究旨在帮助那些跳槽率过高的行业&#xff0c;比如呼叫中心的年跳槽率高达45%。对50000名在线工作评估参与者的数据进行分…

关于FCN的数据集着色说明

前方我们讲解了《 FCN-数据篇》。里面包含了如何制作类似pascal voc的label。很大篇幅在谈如何着色&#xff0c;如何转化为索引图像。 由于一些内容参考网上的资料&#xff0c;所以对里面的一些操作含义也有些糊涂。 其实网上的东西也不都对&#xff0c;很多人云亦云。所以需要…

mongobd python_Python操作MongoDB数据库PyMongo库使用方法

引用PyMongo复制代码 代码如下:>>> import pymongo创建连接Connection复制代码 代码如下:>>> import pymongo>>> conn pymongo.Connection(localhost,27017)或复制代码 代码如下:>>> from pymongo import Connection>>> conn C…

Android Property Animation动画

3.0以前&#xff0c;android支持两种动画模式&#xff0c;tween animation,frame animation&#xff0c;在android3.0中又引入了一个新的动画系统&#xff1a;property animation&#xff0c;这三种动画模式在SDK中被称为property animation,view animation,drawable animation…

angular实现select的ng-options

ng实现简单的select <div ng-controller"ngSelect"><select ng-model"vm.selectVal" ng-options"o.title for o in vm.optionsData"><option value"">请选择</option></select> </div> var app …