mask rcnn学习

Mask R-CNN实现(https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46)

数据传输流程以及基本概念:

1、Backbone:

(standard convolutional neural network (typically, ResNet50 or ResNet101)

早期层检测低层特征(边缘和角落),后期层依次检测高层特征(汽车、人、天空)。

转换成feature map,为以下层提供输入

Feature Pyramid Network

特征金字塔网络(FPN)是由与Mask R-CNN相同的作者提出的一种扩展,可以更好地表示多尺度的对象。

FPN通过添加第二个金字塔来改进标准的特征提取金字塔,该金字塔从第一个金字塔获取高级特征并将其传递到较低的层。通过这样做,它允许每个级别的特性同时访问较低级别和较高级别的特性。

ResNet101 + FPN backbone

  1. Region Proposal Network (RPN)

RPN扫描这么多锚的速度有多快?非常快,

滑动窗口由RPN的卷积特性处理,它允许RPN并行扫描所有区域(在GPU上)。此外,RPN不直接扫描图像(即使我们在图像上绘制锚点以作说明)。相反,RPN扫描backbone映射内容,通过这些优化,RPN可以在大约10毫秒内运行,这是根据介绍RCNN的论文得出的结论。

做法:

RPN为每个锚点生成两个输出:

1、前景或背景、前景暗示可能在盒子里的是一个前景对象

2、对象可能不在图像中间,因此RPN估计一个增量(x、y、宽度、高度变化的百分比)来改进锚盒以更好地适应对象。

锚点过多:使用RPN预测,我们选择可能包含对象的顶部锚,并细化它们的位置和大小。如果多个锚点重叠过多,我们将保留前景得分最高的锚点,而放弃其余的锚点(称为非最大抑制)。在那之后,我们有最后的建议(感兴趣的地区)

输出顺序

3、ROI Classifier & Bounding Box Regressor

此阶段在RPN提出的感兴趣区域(ROIs)上运行。就像RPN一样,它为每个ROI产生两个输出:

1、ROI中对象的类。不像RPN,它有两个类(FG/BG),这个网络更深入,并有能力将区域划分为特定的类(人、车、椅子等)。它还可以生成一个后台类,这将导致ROI被丢弃。

2、包围框细化:与RPN中的细化非常相似,其目的是进一步细化包围框的位置和大小以封装对象。

ROI Pooling

ROI池是指裁剪功能图的一部分并将其调整为固定的大小,但是实现细节不是这样,Mask R-CNN的作者提出了一种他们称之为ROIAlign的方法,在这种方法中,他们在不同的点上采样特征图并应用双线性插值。

  1. Segmentation Masks

这就比以前的faster-RCNN更好点,掩码分支是一个卷积网络,它接受ROI分类器选择的正区域并为其生成掩码。生成的掩模是低分辨率的:28x28像素。但是它们是软掩码,用浮点数表示,因此它们比二进制掩码包含更多的细节、我们将预测的掩码放大到ROI边界框的大小,这样就得到了最终的掩码,每个对象一个掩码。

其他

数据集训练选择:

Flickr 上找到75张图片训练

为什么没有用百万数据训练:首先,学习迁移。这只是意味着,我不再从头开始训练模型,而是从一个在COCO数据集上训练过的权值文件开始(我们在github repo中提供了这个文件)。虽然COCO数据集没有包含一个气球类,但是它包含了很多其他的图像(~120K),所以训练的权重已经学习了很多在自然图像中常见的特征,这真的很有帮助。其次,考虑到这里的简单用例,我并不要求这个模型具有很高的准确性,所以微小的数据集就足够了。

图像标注工具的选择:有很多工具可以对图像进行注释。由于它的简单性,我最终使用了VIA (VGG图像注释器)。它是您下载并在浏览器中打开的单个HTML文件。最初几张图片的注释非常慢,但是一旦我习惯了用户界面,我就会在一分钟内注释一个对象。

VIA工具将注释保存在JSON文件中,每个掩码是一组多边形点。我没有找到这种格式的文档,但是通过查看生成的JSON很容易就能找到。我在代码中加入了注释来解释如何进行解析。

为新数据集编写代码的一个简单方法:是复制cocoa .py并根据需要进行修改。我就是这么做的。我将新文件保存为balloons.py

配置……

……..

训练:遮罩R-CNN是一个相当大的模型。特别是我们的实现使用了ResNet101和FPN。所以你需要一个拥有12GB内存的现代GPU。也许少一点也行,但我没试过。我使用了Amazon的P2实例来训练这个模型,对于这个小数据集,训练花费不到一个小时。

训练结果如右:

Color splash

最后,现在我们有了对象蒙版,让我们使用它们来应用颜色飞溅效果。方法非常简单:创建一个灰度版本的图像,然后在由对象蒙版标记的区域中,从原始图像中复制颜色像素。下面是一个例子:


enter description here

maskrcnn实现.md的更多相关文章

  1. win10编译maskrcnn benchmark

    步骤 1. 按照官网的Option1安装步骤安装 https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL. ...

  2. 好用的Markdown编辑器一览 readme.md 编辑查看

    https://github.com/pandao/editor.md https://pandao.github.io/editor.md/examples/index.html Editor.md ...

  3. github上readme.md 格式

    参考:https://github.com/guoyunsky/Markdown-Chinese-Demo/edit/master/README.md

  4. .md文件的语法

    md全称是Macdown,.md文件可以当记事本一样使用,作为编辑软件,还可以自己添加样式,图片,链接等,可以用记事本打开,也可以保持样式排版转换为html文件,语法比较简单..md除了编辑容易的优势 ...

  5. md语法之行内代码和代码片续集

    md语法之行内代码和代码片 一行之内嵌入一小段代码, 简称行内代码. 其方法为: 用撇号把代码围起来. 比如: import numpy as ny就可以了. 代码片的方法: 三个连续的撇号+pyth ...

  6. md语法之行内代码和代码片

    md语法之行内代码和代码片 比如说要在行内写上一句或者半句代码(代码的意思就是某种脚本语言), 用撇号围起来就可以了. 比如: import pandas as pd 写代码片(单独的一块脚本语言)的 ...

  7. bootstrap 之 xs,sm,md,lg && 主要颜色

    mobile – xs ( <768px ) tablet – sm ( 768~991px ) desktop – md ( 992~1170px ) large desktop – lg ( ...

  8. Markdown(MD)写作

    简洁的写作 目前正逐步使用Makedown来写博客或其它的文档,本文记录一下Markdown的相关知识 Markdown语法 标题 # 内容 (一级标题) ## 内容 (二级标题) ### 内容 (三 ...

  9. /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题

    一.MD(d).MT(d)编译选项的区别 1.编译选项的位置 以VS2005为例,这样子打开: 1)         打开项目的Property Pages对话框 2)         点击左侧C/C ...

随机推荐

  1. ECMAScript基本对象——Math数学对象

    1.创建 不用创建直接使用.直接Math.方法名(): 2.方法 ①random():返回0.0-1.0的随机数,左闭有开 区间有开区间和闭区间,其中又分为全开区间( ),全闭区间[ ],左开右闭区间 ...

  2. 跨站请求伪造(Cross-site request forgery), 简称为 XSRF

    跨站请求伪造(Cross-site request forgery), 简称为 XSRF,是 Web 应用中常见的一个安全问题.前面的链接也详细讲述了 XSRF 攻击的实现方式. 当前防范 XSRF ...

  3. 洛谷 P4708 画画

    题意 在所以置换下,本质不同的各个极大连通子图均含有欧拉闭迹的\(n\)阶图个数 做法 务必先做完这题再看此题解,因为会省略大部分分析了 仍是从边入手,隔外限制:各个点度数是偶数 某个因子内\((m= ...

  4. Qt Gui 第六章布局管理

    1.QRadioButton之间如何互斥 其中一种方法是将各个QRadioButton控件放在同一个toolbarsLayout或者toolbarsGroupBox即可:如下所示 toolbarsGr ...

  5. Spark Streaming数据限流简述

      Spark Streaming对实时数据流进行分析处理,源源不断的从数据源接收数据切割成一个个时间间隔进行处理:   流处理与批处理有明显区别,批处理中的数据有明显的边界.数据规模已知:而流处理数 ...

  6. 深入理解IP之CIDR

    现代IP基于分类的IP越来越少,而基于CIDR的方式的越来越多.那么可以看下面这篇文章: https://www.cnblogs.com/hark0623/p/6547432.html 这篇文章对CI ...

  7. 在CSS中,link里 的rel="stylesheet"是什么意思?

    rel是relationship的英文缩写,它描述了当前页面与href所指定文档的关系:stylesheet就是样式表的意思:CSS是 Cascading Style Sheet(级联样式表)的缩写 ...

  8. b站德云社相声合集

    每天都做德云小可爱呀 郭德纲于谦相声合集搜索: 75314217.75079477 62444678.60874866 60745041.60514509 之前在喜马拉雅上面听过,部分高清的要会员,只 ...

  9. archlinux下安装nvidia驱动解决Nvidia显卡显示问题

    root下使用以下命令: sudo pacman -S nvidia nvidia-libgl

  10. 《深入理解java虚拟机》读书笔记九——第十章

    第十章 早期(编译期)优化 1.Javac的源码与调试 编译期的分类: 前端编译期:把*.java文件转换为*.class文件的过程.例如sun的javac.eclipseJDT中的增量编译器. JI ...