CNNs 在图像分割中应用简史: 从R-CNN到Mask R-CNN
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 |
目标检测算法,如R-CNN输入一张图像,确定图像中主要物体的位置和类别。
- Inputs: Image 输入是图像
- Outputs: Bounding boxes + labels for each object in the image.输出是,对于图像中的每个物体给出 Bounding boxes+标签
选择性搜索Selective Search利用多尺度的窗口搜索有纹理、颜色和强度的相邻像素。 图片来源: https://www.koen.me/research/pub/uijlings-ijcv2013-draft.pdf
- Inputs: sub-regions of the image corresponding to objects.图像对应物体的子区域
- Outputs: New bounding box coordinates for the object in the sub-region.在子区域中物体的新的边界框坐标
- 生成一组候选边界框
- 将带有候选边界框的图像输入到预训练好的AlexNet中,最后用SVM判断图像中物体在哪个框中
- 如果物体被分类了(这个框确实包含物体),就把框输入到线性模型中,输出这个框更窄tighter的坐标。
2015: Fast R-CNN -加速、简化R-CNN
- 每张图像的每个候选区域都要输入到CNN(AlexNet)中(每张图像大约2000次)
- 需要分别训练三个不同的模型-生成图像特征的CNN,预测类别的分类器(SVM)和用于缩小边界框的回归模型。
这就是Fast R-CNN做的一个技巧--RoIPool (Region of Interest Pooling)感兴趣区域池化。在上图中,每个区域的CNN特征是通过从CNN的特征图中选择对应的区域得到的,然后,每个区域的特征再经过池化(通常最大池化)这样相比于之前的每张图像需要进入CNN2000次,用这个方法后每张图像就只经过CNN一次。
Fast R-CNN的第二个insight就是在一个单独模型中,联合训练CNN、分类器和边界框回归器,R-CNN需要有不同的模型提取图像特征(CNN)、分类(SVM)和缩小边界框(回归器)。
- Inputs: Images with region proposals.带有候选区域的图像
- Outputs: Object classifications of each region along with tighter bounding boxes.每个区域的物体分类和更窄的边界框
2016: Faster R-CNN - 加速候选区域
- Inputs: Images (Notice how region proposals are not needed).图像,不需要候选区域
- Outputs: Classifications and bounding box coordinates of objects in the images.图像中物体的分类和边界框坐标。
The Region Proposal Network slides a window over the features of the CNN. At each window location, the network outputs a score and a bounding box per anchor (hence 4k box coordinates where k is the number of anchors). Source: https://arxiv.org/abs/1506.01497.
We know that the bounding boxes for people tend to be rectangular and vertical. We can use this intuition to guide our Region Proposal networks through creating an anchor of such dimensions. Image Source: http://vlm1.uta.edu/~athitsos/courses/cse6367_spring2011/assignments/assignment1/bbox0062.jpg.
- Inputs: CNN Feature Map. CNN特征图
- Outputs: A bounding box per anchor. A score representing how likely the image in that bounding box will be an object. 每个anchor一个边界框,打分代表边界框内是物体的可能性
2017: Mask R-CNN - 将Faster R-CNN拓展到像素级分割
The goal of image instance segmentation is to identify, at a pixel level, what the different objets in a scene are. Source: https://arxiv.org/abs/1703.06870.
Kaiming He, a researcher at Facebook AI, is lead author of Mask R-CNN and also a coauthor of Faster R-CNN.
- Inputs: CNN Feature Map. CNN特征图
- Outputs: Matrix with 1s on all locations where the pixel belongs to the object and 0s elsewhere (this is known as a binary mask).二值矩阵,当该像素属于物体时mask值为1,否则为0
Instead of RoIPool, the image gets passed through RoIAlign so that the regions of the feature map selected by RoIPool correspond more precisely to the regions of the original image. This is needed because pixel level segmentation requires more fine-grained alignment than bounding boxes. Source: https://arxiv.org/abs/1703.06870.
How do we accurately map a region of interest from the original image onto the feature map?
在RoIPool中我们大概选择两个像素,得到了有些不对齐的结果,然而在RoIAlign中我们避免用这样的舍入,用双线性插值得到准确的2.93。这样就可以避免RoIPool产生的不对齐。
当得到了这些masks后,Mask R-CNN用Faster R-CNN生成的分类和边界框将他们结合起来,生成精确地分割。
Mask R-CNN is able to segment as well as classify the objects in an image. Source: https://arxiv.org/abs/1703.06870.
CNNs 在图像分割中应用简史: 从R-CNN到Mask R-CNN的更多相关文章
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- python中换行,'\r','\n'及'、'\r\n'
'\r'的本意是回到行首,'\n'的本意是换行. 所以回车相当于做的是'\r\n'或者'\n\r'.'\r'就是换行并回行首, '\n'就是换行并回行首,用'\r\n'表示换行并回行首. window ...
- R(二): http与R脚本通讯环境安装
结合实际的工作环境,在开始R研究的时候,首先着手收集的就是能以Web方式发布R运行结果的基础框架,无耐的是,R一直以来常使用于个人电脑的客户端程序上,大家习惯性的下载R安装包,在自己的电脑上安装 -- ...
- 【R语言系列】R语言初识及安装
一.R是什么 R语言是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两个人共同发明. 其词法和语法分别源自Schema和S语言. R定义:一个能够自由幼小的用于统计计算和绘 ...
- 【R笔记】给R加个编译器——notepad++
R的日记-给R加个编译器 转载▼ R是一款强大免费且开源的统计分析软件,这是R的长处,可也是其“缺陷”的根源:不似商业软件那样user-friendly.记得初学R时,给我留下最深印象的不是其功能的强 ...
- THE R QGRAPH PACKAGE: USING R TO VISUALIZE COMPLEX RELATIONSHIPS AMONG VARIABLES IN A LARGE DATASET, PART ONE
The R qgraph Package: Using R to Visualize Complex Relationships Among Variables in a Large Dataset, ...
- 图像分割中的loss--处理数据极度不均衡的状况
序言: 对于小目标图像分割任务,一副图画中往往只有一两个目标,这样会加大网络训练难度,一般有三种方法解决: 1.选择合适的loss,对网络进行合理优化,关注较小的目标. 2.改变网络结构,使用atte ...
- (转)java中/r与/n还有/r/n的区别
场景:在学习spring实战,以及工作中进行写文件时候,经常遇到java中的换行问题,发现有的书上的介绍和实际使用并不一致.现在才算是搞清楚! 通过文本对比,断言应该返回正确的结果!但是事与愿违,最终 ...
- python脚本中为什么要在目录前加一个r
目的:为了避免转义,r后面的内容,全文输出: r是保持字符串原始值的意思,就是说不对其中的符号进行转义.因为windows下的目录字符串中通常有斜杠"\",比如,windows下的 ...
随机推荐
- 确认框的使用。弹出一个确认框,Ajax提交一个请求,刷新页面。
视图: <td> @if (item.ReviewProject.DeclareState == DeclareOrReviewState.正在进行 && !item.Is ...
- Java中的标识符,类名和包名规则
Java中的包.类.方法.参数和变量的名称 标识符的命名规则 1.变量必须以字母.下划线(_)或美元符号($)开头 2.余下的字符可以是下划线.美元符号或任何的字母或数字 3.不能使用JavaScri ...
- (水题)Codeforces - 4C - Registration system
https://codeforces.com/problemset/problem/4/C 用来哈希的一道题目,用map也可以强行过,但是性能慢了6倍,说明是在字符串比较的时候花费了接近6倍的时间. ...
- html页面选择图片上传时实现图片预览功能
实现效果如下图所示 只需要将下面的html部分的代码放入你的代码即可 (注意引入jQuery文件和html头部的css样式,使用的是ajax提交) <!-- 需引入jQuery 引入样式文件 引 ...
- 51nod 1416【DFS】
思路: 暴力整个图,以这个为起点,然后看一下有没有找到一条路是会指向自己且元素个数>=4: #include <bits/stdc++.h> using namespace std; ...
- Codeforces710C【数学】
n阶幻方问题::http://blog.csdn.net/fengchaokobe/article/details/7437767 学一下就好啦~ 奇幻七绝 先填上行正中央, 依次斜填切莫忘. 上格没 ...
- ajax 的三种使用方法
第一种 也是最古老的一种方法之一 from 表单直接提交数据到php文件里 action为路径 <form method="post" action="./inde ...
- python 的 数据类型
数据类型 1.1整型int py2中有int有范围,超出自动转为long长整型,py3中只有int 整除py2中无小数,可加一行代码实现 十进制转二进制 print(bin(10))十进制转八进制 p ...
- PJzhang:最基本的正则表达式实例
猫宁!!! 参考链接: https://www.cnblogs.com/fozero/p/7868687.html http://tool.oschina.net/regex/# http://too ...
- C 语言实例 - 将字符串写入文件
C 语言实例 - 将字符串写入文件 C 语言实例 C 语言实例 将字符串写入文件. 实例 #include <stdio.h> #include <stdlib.h> /* e ...