卷积神经网络在图像分割中的进化史:从R-CNN到Mask R-CNN

2024-05-12 18:38

本文主要是介绍卷积神经网络在图像分割中的进化史:从R-CNN到Mask R-CNN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自量子心

卷积神经网络(CNN)不仅能用来对图像进行分类,还在图像分割任务重有着广泛的应用。

DhruvParthasarathy就职于Athelas,一家专注于深度学习技术的医疗健康公司。他在Medium上发布了一篇博客文章,介绍了在具体的图像分割任务中如何应用卷积神经网络,来得到更好的效果。

以下内容编译自Parthasarathy文章:

自从深度学习鼻祖Geoff Hinton与他的研究生Alex KrizhevskyIlya Sutskever2012ImageNet大规模视觉识别挑战赛中获得冠军,卷积神经网络(CNN)已经成为了图像分类的黄金标准。从那时起,卷积神经网络一直在改进,现在已经在辨别ImageNet数据集的1000类日常对象上超过人类了。


虽然网络分类结果令人感到欣喜,但在人类真实生活中的视觉理解要远比图像分类复杂多样。


在分类任务中,一张图像通常只具有单个焦点对象,任务是说出这个对象的类别。但是在实际的世界中,我们会看到往往不止一个物体对象,这是一项更复杂的任务。


在一个复杂的情景中,通常有多个互相重叠的对象和不同的背景,我们不仅要对这些不同的对象分类,而且也要识别对象间的边界、差异和彼此的关系。


卷积神经网络可以帮助我们处理这个复杂的任务吗?对于更复杂的图像,我们可以使用卷积神经网络来区分图像中的不同对象及其边界吗?Ross Girshick和他的同事们用最近几年的研究工作,给出了一个肯定的答案。

本文目标

这篇文章将会介绍一些用于对象检测和图像分割的主流技术,并了解其网络状态的演化过程。

具体来说,我们将介绍首先解决了这个问题的R-CNN网络,以及后来发展出来的Fast R-CNNFaster R-CNN。另外,我们还将介绍Mask R-CNN网络,这是FacebookResearch组最近发布的一篇文章,其扩展了这种对象检测技术,且提供了像素级分割的技术。以下是这篇文章所引用的论文:

1. R-CNNhttps://arxiv.org/abs/1311.2524

2. Fast R-CNNhttps://arxiv.org/abs/1504.08083

3. Faster R-CNNhttps://arxiv.org/abs/1506.01497

4. Mask R-CNNhttps://arxiv.org/abs/1703.06870

2014年:R-CNN - CNN用于对象检测的起源

受到多伦多大学Hinton实验室研究工作的启发,加州大学伯克利分校Jitendra Malik教授领导的团队,提出了一个在如今看来好像是不可避免的问题:

能否将Krizhevsky等人提出的网络模型泛化应用到对象检测上?

对象检测技术是一项通过标出图像中不同对象并对其进行分类的任务。在对象检测挑战赛PASCAL VOC上,由Ross GirshickJeff DonahueTrevor Darrel组成的这个团队,发现这个问题可以通过Krizhevsky的研究成果来进行解决。

他们写道:

这篇论文首先说明一个事实,与基于更简单的用方向梯度直方图(HOG)类特征构建的系统相比,卷积神经网络可以显着提高PASCAL VOC上的对象检测性能。

接下来,我们将会深入了解他们的Regions WithCNNs (R-CNN)架构是如何运作的。

理解R-CNN

R-CNN的目标是分析图像,并正确识别图像中主要对象,通过边界框标出对象的具体位置。

输入:图像

输出:图像中每个对象的边界框和标签

但是我们如何确定这些边界框的大小和位置呢?R-CNN网络通过以下操作完成了一个我们直观上可以完成的任务:在图像中提出了多个边框,并判断这其中的任何一个是否对应着一个具体对象。

R-CNN网络使用了选择性搜索的方法,来创建这些边界框或区域建议(region proposal)。在图6中,选择性搜索通过不同大小的边框分析图像,并且对于每个图像块,尝试通过纹理、颜色或强度将相邻像素组合在一起,以识别对象。

想深入了解选择性搜索,请阅读:
http://www.cs.cornell.edu/courses/cs7670/2014sp/slides/VisionSeminar14.pdf

创建了区域建议后,R-CNN网络将该区域块变形标准的方形,并将其输入到改进版的AlexNet网络,具体步骤如图7所示。AlexNet是在ImageNet 2012比赛中的最优网络,R-CNN灵感就来源于它。

CNN的输出层,R-CNN网络还应用了支持向量机(SVM)的方法,它能够判断该图像是否为对象,以及是什么对象。

改善边界框

现在,我们已经能在边界框中找到对象,但是还能缩小边界框来适应对象的真实尺寸吗?可以的,这就是构建R-CNN网络的最后一个步骤。R-CNN网络对区域建议进行简单的线性回归操作,来获得更贴近的边界框坐标,获得了R-CNN网络的最终输出结果。回归模型的输入和输出分别为:

输入:与对象相对应的图像子区域。

输出:子区域中对象的新边界框坐标。

所以,R-CNN网络总结为以下几个步骤:

1. 为边界框生成一组区域建议;

2. 通过预先训练好的AlexNet网络来判断边框中的图像是否为有效区域,最后通过支持向量机算法来确定边框中的图像类别;

3. 在确定边框图像的类别后,应用线性回归模型,来输出更紧密的边框坐标。

2015年:Fast R-CNN - 加速并简化R-CNN

R-CNN网络的性能很好,但是实际上训练起来很慢,有以下几个原因:

1. 单个图像的每个区域建议都需要利用AlexNet网络进行判断,每次判断大约需要2000次前向传播。

2. 此网络必须单独训练三种不同的模型:提取图像特征的CNN网络,判断类别的分类器和缩小边框的回归模型。这样子很难训练这些网络。

2015年,R-CNN网络的第一作者Ross Girshick解决了这两个问题,发明了新的网络Fast R-CNN。现在我们来了解Fast R-CNN网络的主要创新点。

创新点1:引入感兴趣区域池化(ROI Pooling

CNN的前向传递过程中,Girshick意识到,每个图像的多个区域总是互相重叠,导致我们多次运行相同的CNN计算,多达2000次。他的创新很简单:可不可以对每个图像只运行一次CNN运算,然后在2000次前向传播过程中找到一种共享这个计算结果的方法?

这正是Fast R-CNN网络用感兴趣区域池化(RoIPoolRegion ofInterest Pooling)技术所做的创新。其创新点在于,RoIPool层共享了CNN网络在图像子区域中的前向传播过程。在图9中,是从CNN的特征图谱中选择相应的区域来获取每个区域的CNN抽象特征。然后,通常使用最大池化操作来合并每个区域中的初级抽象特征。所以我们只进行了原始图像的一次前向传播操作,而不是2000次。

创新点2:将所有模型整合到一个网络中

Fast R-CNN的第二个创新点是在一个模型中联合训练卷积神经网络、分类器和边界框回归模型。在R-CNN中,我们使用了卷积神经网络来提取图像特征,用支持向量机来分类对象和用了回归模型来缩小边界框,但是Fast R-CNN使用单个网络模型来实现以上三个功能。

10Fast R-CNN网络的过程示意图。Fast R-CNNCNN输出层用softmax函数代替了SVM分类器,来输出对象类别。同时在CNN输出层,还加入了用来输出边界框坐标的线性回归层。这样单个网络就可以输出所需信息。

整个模型的输入和输出分别为:

输入:带多个区域建议的图像。

输出:具有更紧密边界框的每个区域的对象类别。

2016年:Faster R-CNN - 加快区域建议

即使Fast R-CNN的性能有了很大的改善,但是仍然存在一个短板——区域建议生成方式(region proposer)。在上面已经提到,为了检测图像中对象位置,第一步是要产生一系列随机多尺度的边界框或是待测试的感兴趣区域。在Fast R-CNN中,通过选择性搜索方法创建这些区域,这是一个相当缓慢的过程,被认为是整个流程的短板。

2015年中期,由任少卿,何恺明,Ross Girshick和孙剑组成的一个微软研究院团队发现了一种叫做“Faster R-CNN”的网络结构,几乎把边框生成过程的运算量降为0

FasterR-CNN的创新点在于,区域建议取决于通过CNN里的第一个卷积层前进传播过程中的图像特征。那为什么不对单独运行选择性搜索算法的方式进行改变,重复利用多个区域建议中相同的CNN结果呢?

这正是Faster R-CNN团队所取得的成果。图12中解释了该如何使用单个CNN网络来实现区域建议和对象分类。这样,只需要训练一个CNN网络,我们几乎不花费计算量获得了所需的区域建议。作者在文章中写道:

我们观察到,Fast R- CNN网络里区域检测器所使用的卷积特征图谱,也可用于生成区域建议,从而把区域建议的运算量几乎降为0

该模型的输入和输出分别为:

输入:图像(不需要带有区域建议)。

输出:图像中对象的类别和边界框坐标。

如何生成区域

接下来我们来看下Faster R-CNN如何从CNN特征中生成这些区域建议。Faster R-CNNCNN特征的顶部添加了一个完全卷积网络(FCN),创建了所谓的区域建议网络(Region Proposal Network)。

区域建议网络通过在CNN特征图谱上依次滑动窗口,并在每个窗口中输出k个可能的边界框和分值,来评估这些边界框包含对象的可能性。这k个边框代表了什么?

直观上,我们知道图像中的对象应该符合某些常见的纵横比和大小。例如,我们想要创建一些适合人类形状的矩形框。这样当遇到非常窄的边界框时可以排除是人类对象的可能性。以这种方式,我们创建大小为k的通用长宽比,称为锚点盒(anchor box)。对于每个这样的锚点盒,我们对应输出一个边界框坐标和每个位置的分值。

考虑到这些锚点盒,这个区域建议网络的输入和输出分别为:

输入:CNN特征图谱。

输出:每个锚点的边界框。该边界框中的图像作为对象的可能性用输出分值表示。

然后,我们只将每个可能是目标对象的边界框传递到Fast R-CNN中,以实现对象分类和缩紧边界框。

2017年:Mask R-CNN - 扩展Faster R-CNN用于像素级分割


到目前为止,我们已经了解到如何能够以许多有趣的方式使用CNN特征,来有效地用边界框定位图像中的不同对象。

我们可以进一步扩展这些技术,定位到每个对象的精确像素,而不是仅限于边框吗?这个问题就是经典的图像分割问题。何恺明和Girshick等研究人员,在Facebook人工智能研究部门里使用了一种被称为Mask R-CNN的网络结构来探索这个问题。

Fast R-CNNFaster R-CNN很相似,Mask R-CNN的基本思想是简单直观的:Faster R-CNN在物体检测上效果很好,那么我们能否将其扩展并应用到像素级分割?

MaskR-CNN通过向Faster R-CNN网络添加一个分支来输出一个二进制掩码,来说明给定像素是否为对象的一部分。在图17中的白色分支仅仅是CNN特征图谱上的完全卷积网络。

该模型的输入和输出分别为:

输入:CNN特征图。

输出:在像素属于对象的所有位置上都具有1s的矩阵,其他位置为0s,这种规则被称为二进制掩码。

Mask R-CNN网络的作者不得不进行一次小小的调整,使这个训练按预期往前推进。

RoiAlign:重新对齐RoIPool,使结果更准确

Mask R-CNN作者发现,在最初的Faster R-CNN网络结构中, RoIPool所选择的特征图谱区域与原始图像的区域略微不对齐。由于图像分割需要像素级特异性,与边框确定过程不同,这自然就导致了不准确。

作者通过调整RoIPool方法,实现更准确的对齐,巧妙地解决了这个问题,这个调整后的方法叫做RoIAlign方法。

假设我们有一个尺寸大小为128x128的图像和大小为25x25的特征图谱。如果我们想要在特征图谱中表示原始图像中左上角15x15像素的区域,该如何从特征图中选择这些像素?

我们知道原始图像中的每个像素对应于特征图谱中的25/128个像素。要从原始图像中选择15像素,我们就在特征图谱中选择15*(25/128)=2.93个像素。

RoIPool中,我们会舍弃小数点后的部分,只选择2个像素,导致轻微的错位。然而,在RoIAlign中,我们避免了这样的舍弃。相反,我们使用双线性插值来精确地得到这2.93像素中的信息。这样子在很大程度上避免了RoIPool方法造成的像素错位。

MaskR-CNN在生成这些掩码后,将它们与Faster R-CNN输出层的对象类别和边界框组合起来,产生了奇妙的精确分割。

未来展望

在过去短短的3年时间里,我们看到了对图像分割问题的研究,是如何从Krizhevsky等人的R-CNN,经过不断发展,最后得到Mask R-CNN的奇妙分割效果。

单独来看,Mask R-CNN所呈现的结果似乎是无法达到的巨大飞跃。然而,我希望大家通过这篇文章可以认识到,这些成果,实际上由多年来辛勤工作和团队合作带来的直观、渐进式提升累积而来。R-CNNFast R-CNNFaster R-CNN和最终的Mask R-CNN,每个想法并不一定都是跨越式的进步,但是叠加这些进步后,最终的Mask R-CNN却带来了非常显著的奇妙效果,使目前的计算机视觉技术向人类的视觉能力更靠近了一些。

让我感到特别兴奋的是,从R-CNN网络进化到Mask R-CNN网络,一共只用了三年时间。随着更多的资金、更多的关注和更多的支持,计算机视觉在三年后会有怎样的进展呢?让我们拭目以待。

如果想更深入了解CNN在图像分割中的进展,极其背后的原理,别忘了我们在文章开头提到的这四篇论文:

1. R-CNNhttps://arxiv.org/abs/1311.2524

2. Fast R-CNNhttps://arxiv.org/abs/1504.08083

3. Faster R-CNNhttps://arxiv.org/abs/1506.01497

4. Mask R-CNNhttps://arxiv.org/abs/1703.06870

以及文中提到的选择性搜索:
http://www.cs.cornell.edu/courses/cs7670/2014sp/slides/VisionSeminar14.pdf

 


这篇关于卷积神经网络在图像分割中的进化史:从R-CNN到Mask R-CNN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983423

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检