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下的 ...
随机推荐
- CCF 201512-4 送货 (并查集+DFS,欧拉路)
问题描述 为了增加公司收入,F公司新开设了物流业务.由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道.然而,F公司现在只安排了小明一个人负责所有街道的服 ...
- kuangbin带你飞 - 合集
[题目列表] 之前有一些做过了的,这次从数论开始?
- [Swift 开发] 使用闭包传值(typealias)
在Swift中使用闭包来实现两个界面的传值 例如:有A类和B类. B类 //声明闭包 typealias valueBlock = (Float)->() var returnPrice: va ...
- 我不知道的C#—字符串池机制
字符串具有值类型的特点对字符串,对同一个字符串大量修改或者对多个引用赋值同一个字符串对象时会产生大量的临时字符串对象,影响性能,但是CLR为我们做了一些工作来消除这些弊端. 对同一个字符串大 ...
- TyvjP1863 [Poetize I]黑魔法师之门(2014-8-27)
P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源 ...
- hyperledger fabric 1.0.5 分布式部署 (五)
梳理fabric e2e_cli 测试程序的具体步骤 作者在 hyperledger fabric 1.0.5 分布式部署 (一)中给读者们介绍了如何从零开始部署一个测试的 demo 环境,如果细心的 ...
- Bootstrap里的文件作用
Bootstrap里的文件分别表示什么?都有什么用? bootstrap.css bootstrap.min.css bootstrap-responsive.css bootstrap-respon ...
- sessionStorage 、localStorage
localStorage和sessionStorage使用时使用相同的API: localStorage.setItem("key","value");//以“ ...
- [題解](單調隊列/水)luogu_P3088擠奶牛
d長度內區間最大值,單調隊列維護即可 由於需要滿足左右同時有2倍高度的牛才能更新答案,所以正反跑兩次 #include<bits/stdc++.h> using namespace std ...
- [题解]数学期望_luogu_P1850_换教室
数学期望dp,题面第一次见很吓人,然而从CCF语翻译成人话就简单多了, 开始一般会想到用 f [ i ] [ j ]表示前 i 个课程申请 j 次的期望,然而其实会发现转移的时候还和上一次的情况有关( ...