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 ...
随机推荐
- Linux指令(Terminal命令):
刚开始学习Linux,整理了一下常用指令和快捷键,不足的日后补充. 指令:# cd:进入目录 pwd:查看当前所在路径 ls:查看当前所在目录下的所有子目录或者子文件 ls-l | l ...
- R ggplot学习笔记1
R 可视化学习笔记 记参数挺费劲的,还是用的时候查官方文档吧,现在记个大概就行吧~ 1.ggplot2分层次绘图 1.1 核心理念 把绘图与数据分离,把数据相关的绘图与数据无关的绘图分离,按图层作图. ...
- gulp常用插件之gulp-if使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-if这是一款条件判断插件. 注意:与gulp-if一起使用时,表现不佳的插件通常会变得更糟.通常,修复不在gulp-if中. 注意:与l ...
- 常见sql注入的类型
这里只讲解sql注入漏洞的基本类型,代码分析将放在另外一篇帖子讲解 目录 最基础的注入-union注入攻击 Boolean注入攻击-布尔盲注 报错注入攻击 时间注入攻击-时间盲注 堆叠查询注入攻击 二 ...
- 积分题1之来自G.Han的一道积分题
今天,收到G.Han的提问,第一个是计算积分 \[\int_0^{\infty}{\frac{\ln x}{(x^2+1)^n}dx}\]顿时不明觉厉,然后在宝典<Table of Integr ...
- js异步执行 按需加载 三种方式
js异步执行 按需加载 三种方式 第一种:函数引用 将所需加载方法放在匿名函数中传入 //第一种 函数引用 function loadScript(url,callback){ //创建一个js va ...
- 简单理解Linux系统的挂载是什么鬼
转载自http://c.biancheng.net/view/2859.html Linux系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中.在 Linux 看来,任何硬件设备也都 ...
- KafkaUtils.createDirectStream报错Cannot resolve symbol createDirectStream
一开以为是自己导包导错了,但是对比了一下之前的程序发现并没有错, import org.apache.spark.streaming.kafka.{HasOffsetRanges, KafkaUtil ...
- 记录 shell学习过程(10 ) shell 对文件的操作
0.sed 常用内部命令 a 在匹配后面添加 i 在匹配前面添加 p 打印 d 删除 s 查找替换 c 更改 y 转换 N D P 下面用a来演示 1.sed 'a 追加内容' 文件 # sed 'a ...
- [Agc005D/At2060] Minimum Sum - 单调栈
鉴于早上那题让我怀疑单调栈白学,特意来复习下单调栈 题意 考虑按照每个元素对答案的贡献来统计,那么我们只需要找到每个元素左边右边第一个比它小的就可 这题给的又是排列,简直不能再良心 #include ...