maskrcnn实现.md
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
- 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的方法,在这种方法中,他们在不同的点上采样特征图并应用双线性插值。
- 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
最后,现在我们有了对象蒙版,让我们使用它们来应用颜色飞溅效果。方法非常简单:创建一个灰度版本的图像,然后在由对象蒙版标记的区域中,从原始图像中复制颜色像素。下面是一个例子:

maskrcnn实现.md的更多相关文章
- win10编译maskrcnn benchmark
步骤 1. 按照官网的Option1安装步骤安装 https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL. ...
- 好用的Markdown编辑器一览 readme.md 编辑查看
https://github.com/pandao/editor.md https://pandao.github.io/editor.md/examples/index.html Editor.md ...
- github上readme.md 格式
参考:https://github.com/guoyunsky/Markdown-Chinese-Demo/edit/master/README.md
- .md文件的语法
md全称是Macdown,.md文件可以当记事本一样使用,作为编辑软件,还可以自己添加样式,图片,链接等,可以用记事本打开,也可以保持样式排版转换为html文件,语法比较简单..md除了编辑容易的优势 ...
- md语法之行内代码和代码片续集
md语法之行内代码和代码片 一行之内嵌入一小段代码, 简称行内代码. 其方法为: 用撇号把代码围起来. 比如: import numpy as ny就可以了. 代码片的方法: 三个连续的撇号+pyth ...
- md语法之行内代码和代码片
md语法之行内代码和代码片 比如说要在行内写上一句或者半句代码(代码的意思就是某种脚本语言), 用撇号围起来就可以了. 比如: import pandas as pd 写代码片(单独的一块脚本语言)的 ...
- bootstrap 之 xs,sm,md,lg && 主要颜色
mobile – xs ( <768px ) tablet – sm ( 768~991px ) desktop – md ( 992~1170px ) large desktop – lg ( ...
- Markdown(MD)写作
简洁的写作 目前正逐步使用Makedown来写博客或其它的文档,本文记录一下Markdown的相关知识 Markdown语法 标题 # 内容 (一级标题) ## 内容 (二级标题) ### 内容 (三 ...
- /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题
一.MD(d).MT(d)编译选项的区别 1.编译选项的位置 以VS2005为例,这样子打开: 1) 打开项目的Property Pages对话框 2) 点击左侧C/C ...
随机推荐
- GSS 系列题解
GSS GSS1 随便猫树或者线段树,就可以过了 猫树不说,线段树可以维护左边最大,右边最大,区间最大,区间值然后就做出来了. //Isaunoya #pragma GCC optimize(2) # ...
- 深入理解Java内存模型中的虚拟机栈
深入理解Java内存模型中的虚拟机栈 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都会有各自的用途,以及创建和销毁的时间,有的区域会随着虚拟机进程的启 ...
- MyEclipse CI 2019.4 完美激活版(含离线包+激活工具+安装教程)
ps:MyEclipse目前已更新至2019.12.5,但是目前还没有有效的激活方式,本次文章以2019.4为例; 该文章使用离线安装的方式进行安装,在线安装不保证不会出现各类小问题,离线安装包及激活 ...
- unity中ContentSizeFitter刷新不及时的问题
ContentSizeFitter,自适应宽高脚本要在下一帧的时候才会适应宽高.如果想立即生效,可以调用 LayoutRebuilder.ForceRebuildLayoutImmediate(rec ...
- php redis使用
访问连接 远程访问 //实例化 $redis=new Redis(); try{ $redis->connect('47.98.55.11','6379'); $redis->auth(' ...
- nginx反向代理https访问502, nginx反向代理, 支持SNI的https回源,SNI源点,nginx反向代理报错
正常nginx配置了SSL是可以通过HTTPS访问后端的,但是对有配置SNI + https后端的支持有点麻烦. 编译安装nginx后,看一下是否支持SNI /usr/local/nginx/sbin ...
- python创建字典的三种方式
创建空字典: dict_eq={} print(type(dict)) 直接赋值创建字典: dict_eq={'a':1,'b':2,'c':'adbc'} 通过关键字dict和关键字参数创建 dic ...
- Selenium3+python自动化009-iframe定位
iframe 一.frame:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素: 二.操作Frame中的页面元素 定位元素: 1.id定位driver.switch_to.fr ...
- python求极值点(波峰波谷)
python求极值点主要用到scipy库. 1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfit import pandas as pd import matplotli ...
- rest_framework:解析器
一.解析器的作用 根据请求头content-type选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格式 二 ...