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下的 ...
随机推荐
- HDOJ-2054
A == B ? Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- [Xcode 实际操作]九、实用进阶-(15)屏幕截屏:截取当前屏幕上的显示内容
目录:[Swift]Xcode实际操作 本文将演示如何截取屏幕画面,并将截取图片,存入系统相册. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UI ...
- 自然语言处理(二)——PTB数据集的预处理
参考书 <TensorFlow:实战Google深度学习框架>(第2版) 首先按照词频顺序为每个词汇分配一个编号,然后将词汇表保存到一个独立的vocab文件中. #!/usr/bin/en ...
- assembly x86(nasm)修改后的日常
data segment ENG db 'SUNdayS Coming I Wanna Drive My Car,SUN,SUN$' ;9,3 sun1 db 'SUN' swcount db 0ah ...
- jdbc学习day1
- idea下载
- tagName
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Caffe实战五(Caffe可视化方法:编译matlab接口)
接上一篇文章,这里给出配置caffe后编译matlab接口的方法.(参考:<深度学习 21天实战Caffe 第16天 Caffe可视化方法>) 1.将Matlab目录更新至Caffe的Ma ...
- 洛谷1072(gcd的运用)
已知正整数a0,a1,b0,b1,设某未知正整数x满足: 1. x 和 a0 的最大公约数是 a1: 2. x 和 b0 的最小公倍数是b1. Hankson 的“逆问题”就是求出满足条件的正整数 ...
- Spring+JCaptcha验证码使用示例
1,导入jcaptcha.jar包,这里用的是1.0版本 2,编写captcha-context.xml配置文件(非必须,可在spring配置文件中直接添加): <?xml version=&q ...