摘要:

提出了一种新颖而实用的深度全卷积神经网络结构用于语义像素分割称为SegNet。这个核心的可训练分割引擎包括一个编码器网络,一个相应的解码器网络,以及一个像素级的分类层。编码器网络的架构与VGG16网络中的13个卷积层拓扑结构相同。解码器网络的作用是将低分辨率的编码器特征映射到全输入分辨率的特征映射,以便按像素分类。SegNet的新奇之处在于解码器对其低分辨率输入特征图进行采样的方式。具体来说,译码器使用在对应编码器的最大池步骤中计算的池索引来执行非线性上采样。这就消除了学习上样例的需要。上采样的地图是稀疏的,然后用可训练的过滤器卷积产生密集的特征地图。我们将我们提出的架构与广泛采用的FCN[2]以及众所周知的DeepLab-LargeFOV[3]、DeconvNet[4]架构进行了比较。这一比较揭示了实现良好的分割性能所涉及的内存与精度之间的权衡。SegNet的主要动机是场景理解应用程序。因此,它被设计为在推理期间在内存和计算时间方面都是高效的。它的可训练参数的数量也明显小于其他竞争结构,可以使用随机梯度下降端到端训练。我们还在道路场景和SUN RGB-D室内场景分割任务上执行了SegNet和其他架构的受控基准测试。这些定量评估表明,与其他架构相比,SegNet在竞争推理时间和最有效的推理内存方面提供了良好的性能。

1介绍

语义分割具有广泛的应用,从场景理解,推断物体之间的支持关系到自动驾驶。早期依赖于低层次视觉线索的方法已经很快被流行的机器学习算法所取代。特别是,最近深度学习在手写体数字识别、语音、整张图像分类和图像[5][6]中的目标检测方面取得了巨大成功。现在人们对语义像素标记[7-9],[2][4],[10-6]很感兴趣。然而,最近的一些方法已经尝试直接采用为分类预测而设计的深层结构来对像素标记[7]。结果,虽然结果很好,但看起来还是很粗糙的[3]。这主要是因为最大池化和子采样降低了特征图的分辨率。本文设计SegNet的动机源于将低分辨率特性映射到输入分辨率以进行像素分类的需要。这种映射必须产生对精确的边界定位有用的特征。

我们的架构SegNet被设计为有效的架构为pixel-wise的语义分割。它的主要动机是理解道路场景的应用,这需要建模外观(道路,建筑),形状(汽车)的能力以及理解不同类别(如道路和人行道)之间的空间关系(上下文)。在典型的道路场景中,大部分像素属于大的类,如道路、建筑,因此网络必须产生平滑的分割。该引擎还必须能够根据物体的形状来勾画出物体的轮廓,尽管它们体积很小。因此,在提取的图像表示中保留边界信息是很重要的。从计算的角度来看,在推理过程中,网络必须在内存和计算时间方面保持高效。另外一个优点是利用随机梯度下降(SGD)[17]等有效的权值更新技术,端到端训练以联合优化网络中的所有权值,因为它更容易复验。SegNet的设计源于符合这些标准的需要。

SegNet中的编码器网络与VGG16[1]中的卷积层拓扑结构相同。我们去掉了VGG16的完全连接层,这使得SegNet编码器网络明显更小,比许多其他最近的架构[2][4][11][18]更容易训练。SegNet的关键组件是解码器网络,它由一个解码器层次结构组成,每个解码器对应一个编码器。其中,适当的解码器使用从相应编码器接收到的最大池索引来对其输入特征映射执行非线性上采样。这个想法的灵感来自为无监督特性学习[19]设计的架构。在译码过程中重用最大池索引有几个实际的优点;(i)它改善了边界的划分,(ii)它减少了支持端到端训练的参数的数量,(iii)这种形式的上采样只需稍加修改就可以被整合到任何编码器-解码器架构中,如[2]、[10]。

本文的主要贡献之一是分析了分段译码技术和广泛应用的全卷积网络[2]。这是为了传达在设计分割架构时涉及到的实际权衡。大多数最近的深度架构分割有相同的编码器网络,例如VGG16,但有着不同的解码器网络的形式,训练和推理。另一个共同的特征是,它们的可训练参数数量级为数亿,因此在进行端到端[4]训练时会遇到困难。训练这些网络的困难导致了多级培训[2],附加网络pre-trained架构如FCN[10],使用支持的辅助手段,如区域建议的推论[4],不相交的训练分类和分割网络[18]和使用的额外训练数据训练[11][20][10]或完整的训练。此外,性能提升后处理技术[3]也很流行。尽管所有这些因素都能提高[21]基准测试的性能,但不幸的是,从它们的定量结果中很难找出实现良好性能所必需的关键设计因素。因此,我们分析了其中一些[2]和[4]的解码过程,并揭示了它们的优缺点。

我们评估了SegNet在CamVid道路场景分割[22]和SUN RGB-D室内场景分割[23]两种场景分割任务上的性能。Pascal VOC12[21]多年来一直是分割的基准挑战。但是,这个任务的大部分都有一个或两个前景被高度不同的背景所包围的阶级。这隐含地有利于用于检测的技术,正如最近在一个解耦的分类-分割网络[18]上的工作所示,其中分类网络可以用大量的弱标记数据进行训练,独立分割网络的性能得到改善。[3]的方法也使用带有独立CRF后处理技术的分类网络特征图进行分割。性能也可以通过使用额外的推理辅助来提高,如区域建议[4],[24]。因此,它不同于场景理解,其中的想法是利用共同发生的物体和其他空间上下文来执行鲁棒分割。演示SegNet的功效,我们提出一个实时在线演示的道路场景分割成11类的兴趣自主驾驶(见链接图。1)。一些例子测试结果产生随机抽样从谷歌和室内测试现场道路场景图像从太阳RGB-D数据集[23]如图上所示。

本文的其余部分组织如下。在第二节中,我们回顾了相关的近期文献。我们将在第3节描述SegNet架构及其分析。在第4节中,我们评估了SegNet在室外和室内场景数据集上的性能。接下来是关于我们在第5节中使用指针指向未来工作的方法的一般性讨论。

2 文献综述

基于像素的语义分割是一个活跃的研究主题,[21],[22],[23],[25],[26]数据集具有挑战性。在深度网络到来之前,性能最好的方法大多是依靠人工设计的特征对像素进行独立分类。通常,一个补丁被输入一个分类器,例如Random Forest[27],[28]或Boosting[29],[30]来预测中心像素的类概率。基于外观[27]或SfM的功能,以及外观[28]、[29]、[30],已经在CamVid道路场景理解测试[22]中进行了探索。然后使用成对或更高阶的CRF[29]、[30]来平滑这些来自分类器的每像素噪声预测(通常称为一元术语),以提高准确性。最近的一些方法旨在通过预测一块补丁中所有像素的标签来生成高质量的unaries,而不是只对中心像素进行预测。这提高了基于随机森林的unaries[31]的结果,但是瘦结构类的分类很差。从CamVid视频计算出的稠密深度地图也被用作使用随机森林[32]进行分类的输入。另一种方法主张使用流行的手工设计特征和时空超像素化的组合,以获得更高的精度[33]。在CamVid测试[30]上的最佳性能技术是通过在CRF框架中结合目标检测输出和分类器预测来解决标签频率之间的不平衡。所有这些技术的结果表明,需要改进特征分类。

自纽约大学数据集[25]发布以来,室内RGBD像素级语义分割也得到了普及。该数据集显示了深度通道对提高分割的有效性。他们的方法使用RGB-SIFT、深度sift和像素位置等特征作为神经网络分类器的输入来预测像素元。然后使用CRF平滑有噪声的unaries。使用更丰富的特征集包括LBP和区域分割进行改进,以获得更高的精度[34]和CRF。在最近的工作[25]中,使用RGB和基于深度的线索组合来推断类分割和支持关系。另一种方法是实时联合重建和语义分割,使用随机森林作为分类器[35]。Gupta等人[36]在进行类别分割之前,采用边界检测和分层分组的方法。所有这些方法的共同特点是在RGB或RGBD图像分类时使用手工设计的特征。

深度卷积神经网络在目标分类方面的成功,最近促使研究人员将其特征学习能力用于分割等结构化预测问题。也有人尝试将为目标分类而设计的网络用于分割,特别是将最深层次的特征分块复制,以匹配图像尺寸[7]、[37]、[38]、[39]。但是,得到的分类结果是块状[38]。另一种方法使用递归神经网络[40]合并几个低分辨率的预测来创建输入图像的分辨率预测。这些技术相对于人工设计的功能[7]已经是一个进步,但是它们描绘边界的能力很差。

较新的深度架构[2][4][10][13][18],特别为分割而设计,通过学习解码或映射低分辨率图像表示到像素级预测,已经提高了技术水平。在所有这些架构中产生这些低分辨率表示的编码器网络是VGG16分类网络[1],它有13个卷积层和3个完全连接层。这种编码器网络权重通常是在大型ImageNet对象分类数据集[41]上预先训练的。解码器网络在这些体系结构中各不相同,是负责为每个像素生成多维特征用于分类的部分。

全卷积网络(FCN)[2]架构中的每一个解码器都学习对其输入特征映射进行采样,并将它们与相应的编码器特征映射结合起来,生成下一个解码器的输入。它是一种具有大量可训练参数的编码器网络(134M),但非常小的解码器网络(0.5M)的架构。这个网络的总体规模很大,因此很难对相关任务进行端到端的培训。因此,作者采用了阶段性的训练过程。在这里,解码器网络中的每个解码器被逐步添加到一个现有的训练过的网络中。网络会一直增长,直到没有进一步的性能提升。这种增长在三个解码器之后停止,因此忽略高分辨率feature map肯定会导致边缘信息[4]的丢失。除了训练相关的问题,在解码器中重用编码器特征图的需要使得它在测试时间上内存密集。我们更详细地研究这个网络,因为它是其他近期架构[10]和[11]的核心。

通过向FCN附加递归神经网络(RNN)[10],并在大数据集[21]、[42]上对其进行微调,FCN的预测性能得到了进一步提高。在利用FCN的特征表示能力的同时,RNN层模拟了CRFs的清晰边界描绘能力。它们比FCN-8有了显著的改善,但也表明,当使用更多的训练数据来训练FCN-8时,这种差异有所减少。CRF-RNN的主要优点是当它与像FCN- 8这样的架构联合训练时显露出来的。联合训练的帮助也在其他最近的结果[43],[44]中得到了体现。有趣的是,反卷积网络[4]的性能明显优于FCN,尽管代价是更复杂的训练和推断。然而,这提出了一个问题,即当核心前馈分割引擎变得更好时,CRF-RNN的感知优势是否会降低。在任何情况下,CRF-RNN网络可以附加到任何深度分割体系结构,包括SegNet。

多尺度的深层架构[13]、[44],它们有两种类型,一种是使用不同尺度的输入图像和相应的深度特征提取网络,另一种是将单一深度架构[45][11]的不同层次的特征图结合起来。通常的想法是使用多尺度提取的特征来提供局部和全局上下文[46],使用早期编码层的特征图保留更多的高频细节,从而使类边界更清晰。其中一些架构由于其参数大小[13]而难以训练。因此,采用了一个多阶段的训练过程和数据增加。由于需要多个卷积路径来提取特征,推理的代价也很高。其他的[44]将CRF附加到他们的多尺度网络中,并共同训练他们。但是,这些在测试时不是前馈,需要优化以确定地图标签。

最近提出的一些深层分割架构在推理时间[4],[3],[18]中不是前馈。它们需要对CRF[44]、[43]的映射推理,或者对区域建议[4]的辅助推理。我们认为,使用CRF获得的感知性能提高是由于其核心前馈分割引擎缺乏良好的解码技术。另一方面,SegNet使用解码器获取特征,以便精确地按像素分类。

最近提出的反卷积网络[4]和它的半监督变体解耦网络[18]利用编码器特征映射(池索引)的最大位置在解码器网络中执行非线性上采样。这些架构的作者,独立于SegNet(首先提交给CVPR 2015[12]),提出了在解码器网络中进行解码的思想。然而,他们的编码器网络由vgg16网络的完全连接层组成,vgg16网络包含了整个网络90%的参数。这使得培训它们的网络非常困难,因此需要额外的帮助,例如利用区域建议来开展培训。此外,在推理过程中使用了这些建议,这大大增加了推理时间。从基准测试的角度来看,这也使得在没有其他帮助的情况下评估其架构(编码器-解码器网络)的性能变得困难。在这项工作中,我们放弃了VGG16编码器网络的全连接层,它使我们能够使用使用SGD优化的相关训练集来训练网络。另一种最新的方法[3]显示了在不牺牲性能、减少内存消耗和改进推理时间的情况下显著减少参数数量的好处。

我们的工作受到Ranzato等人[19]提出的无监督特性学习架构的启发。关键的学习模块是编解码器网络。编码器由滤波器组的卷积、元素的非线性、极大池和子采样组成。对于每个示例,存储在池中计算的最大位置的索引并将其传递给解码器。解码器通过使用存储的池索引对特征映射进行采样。它使用一个可训练的解码器滤波器组对这个上采样的映射进行卷积来重建输入图像。这种结构被用于无监督的分类前培训。一种有点类似的译码技术被用于可视化训练好的卷积网络[47]来进行分类。Ranzato等人的架构主要关注于使用小输入块进行分层特征学习。这是由Kavukcuoglu等人的[48]扩展,接受全图像大小作为输入,以学习分层编码器。但这两种方法都没有尝试使用深度编解码器网络进行无监督的特征训练,因为它们在每次编码器训练后都会丢弃解码器。在这里,SegNet不同于这些架构,因为深度编码器-解码器网络是共同训练的监督学习任务,因此解码器是网络在测试时间不可分割的一部分。

使用深度网络进行像素预测的其他应用包括图像超分辨率[49]和单幅图像[50]的深度地图预测。[50]的作者讨论了从低分辨率特征图学习上样的必要性,这是本文的中心话题。

3方法/框架

SegNet具有编码器网络和相应的解码器网络,然后是最后的像素级分类层。这种体系结构如图3所示。编码器网络由13个卷积层组成,对应于用于对象分类的VGG16网络[1]的前13个卷积层。因此,我们可以通过在大数据集[41]上训练分类的权重来初始化训练过程。我们还可以放弃完全连接的层,以便在最深的编码器输出中保留更高分辨率的特征图。与其他最近的架构[2],[4]相比,这也大大减少了SegNet编码器网络中的参数数量(从134M到147m)。表6).每个编码器层都有对应的解码器层,因此解码器网络有13层。译码器的最终输出被馈给一个多类软最大分类器,以独立地产生每个像素的类概率。

编码器网络中的每个编码器与滤波器组进行卷积以产生一组特征图。然后批量规范化[51],[52])。然后,从元素角度校正线性非线性(ReLU) max(0;应用x)。在此之后,执行具有2个窗口和stride 2(不重叠窗口)的最大池化,并将结果输出按2的倍数进行次采样。利用最大池技术实现了输入图像在小的空间位移上的平移不变性。对特征图中的每个像素进行子采样,得到一个大的输入图像上下文(空间窗口)。而多层的最大池和子采样可以实现更强的平移不变性,从而提高鲁棒分类的鲁棒性。在边界轮廓至关重要的情况下,越来越多的有损(边界细节)图像表示不利于分割。因此,在进行子采样之前,有必要在编码器特征图中捕获并存储边界信息。如果推理期间内存没有受到限制,那么所有的编码器特征图(在子抽样之后)都可以存储。在实际应用中通常不是这样,因此我们提出了一种更有效的方式来存储这些信息。它只涉及存储最大池索引i。e,记住每个编码器特征图的最大特征值在每个池窗口中的位置。原则上,这可以对每个2 - 2池窗口使用2位元来完成,因此与用浮点精度记忆特征图相比,存储效率更高。正如我们在后面的工作中所展示的,这种较低的内存存储会造成精度的轻微损失,但仍然适合于实际应用。

解码器网络中适当的解码器使用从相应编码器特征映射中记忆的最大池索引向上采样其输入特征映射。这一步生成稀疏特征图。这种分段译码技术如图3所示。这些特征图然后与可训练的解码器滤波器组进行卷积,以产生密集的特征图。然后对每个映射应用批处理规范化步骤。请注意,对应于第一个编码器(最接近输入图像)的解码器产生一个多通道特征映射,尽管它的编码器输入有3个通道(RGB)。这不同于网络中的其他解码器,它们产生与编码器输入相同大小和通道数的特征图。最终译码器输出的高维特征表示被提供给可训练的软最大分类器。这个软件对每个像素进行独立分类。软最大分类器的输出是概率为K个通道的图像,其中K为类的数量。在每个像素上,预测的分割对应的是概率最大的类。

我们在这里添加两个其他的架构,DeconvNet[53]和U-Net[16]与SegNet共享一个类似的架构,但有一些区别。DeconvNet的参数化要大得多,需要更多的计算资源,而且端到端训练也比较困难(表6),这主要是因为它使用了完全连接的层(尽管是以卷积的方式)。

与SegNet相比,U-Net[16](为医学成像社区提出)不重用池索引,而是将整个特征图(以消耗更多内存为代价)传输给相应的解码器,并将它们连接到上采样(通过反褶积)解码器特征图。与VGG网络架构不同,U-Net中没有conv5和max-pool 5块。另一方面,SegNet使用所有来自VGG net的预定义卷积层权值作为预定义权值。

3.1解码器变体

许多分割架构[2]、[3]、[4]共享相同的编码器网络,它们只是在解码器网络的形式上有所不同。其中我们选择分段译码技术与广泛使用的全卷积网络(FCN)译码技术[2],[10]进行比较。为了分析SegNet并与FCN(译码器变体)比较它的性能,我们使用了一个更小的SegNet版本,称为SegNet- basic 1,它有4个编码器和4个解码器。SegNet-Basic中的所有编码器都执行最大池化和子采样,相应的解码器使用接收到的最大池化索引对输入进行上采样。在编码器和解码器网络中,在每个卷积层之后都使用批处理归一化。卷积后不存在任何偏差,解码器网络中不存在任何ReLU非线性。进一步,一个常数内核大小7 7所有编码器和译码器层选择提供一个广泛的上下文光滑标签即最深的层中的一个像素特征映射(第4层)可以追溯到一个上下文窗口输入106 106像素的图像。这个小型的SegNet-Basic允许我们探索许多不同的变体(解码器),并在合理的时间内训练它们。类似地,我们创建了FCN- basic,一个FCN的可比版本用于我们的分析与SegNet-Basic共享相同的编码器网络,但在其所有解码器中使用FCN译码技术(见图3)。图3的左边是SegNet(也叫SegNet- basic)使用的解码技术,在上行采样步骤中不涉及学习。然而,上采样的映射是与可训练的多通道解码器滤波器卷积,以加强其稀疏输入。每个解码器滤波器的通道数与上采样特征映射数相同。一种较小的变体是解码器滤波器为单通道;例如,他们只对相应的上采样特征图进行卷积。这个变体(SegNetBasic-SingleChannelDecoder)大大减少了可训练参数的数量和推理时间。

图3中的右边是FCN(也是FCN- basic)解码技术。FCN模型的重要设计元素是编码特征图的降维步骤。这压缩编码器特征图,然后在相应的解码器中使用。编码器特征映射的维数降低,比如64个通道,是通过与1x1x64xK可训练过滤器进行卷积来实现的,其中K是类的数量。压缩的K通道最终的编码器层特征图是输入到解码器网络。在该网络的解码器中,上采样是通过使用固定或可训练的多通道上采样核进行逆卷积来实现的。我们将内核大小设置为8 8。这种上采样方式也称为反褶积。值得注意的是,相比之下,使用可训练解码器滤波器的分段多通道卷积是在上采样致密化特征映射后执行的。FCN的上采样特征图有K个通道。然后将其按元素方式添加到相应的分辨率编码器特征图中,以生成输出解码器特征图。利用双线性插值权值[2]对上采样核进行初始化。

FCN解码器模型需要在推理期间存储编码器特性映射。这对于嵌入式应用程序来说是内存密集型的;例如,存储fcn- basic第一层的64幅特征图,分辨率为180x240, 32位浮点精度为11MB。这可以通过将需要1.9MB存储空间的11个feature map降维来缩小。另一方面,SegNet对池索引的存储成本几乎可以忽略不计(如果每2个池窗口使用2位存储,则需要17MB)。我们还可以创建一个fcn - basic模型的变体,它抛弃了编码器特征图添加步骤,只学习上采样内核(FCN-Basic-NoAddition)。

除了上述变量之外,我们使用固定的双线性插值权值来研究上采样,因此不需要学习上采样(双线性插值)。在另一个极端,我们可以在每一层添加64个编码器特征映射到SegNet解码器的相应输出特征映射,以创建一个内存密集型的SegNet变体(SegNet- basicencoderaddition)。这里使用了上行采样的两种池化指标,然后进行卷积步骤来密集其稀疏输入。然后将其元素明智地添加到相应的编码器特性映射中,以生成解码器输出。

另一种内存密集型的fcc - basic变体(fcc - basic - nodimreduction)是对编码器特征映射不进行维度降低。这意味着与FCN-Basic不同的是,最终的编码器特征映射在传递到解码器网络之前没有被压缩到K个通道。因此,每个解码器末端的通道数与对应的编码器相同。(例,64).

我们还尝试了其他通用变体,其中特性映射通过复制[7]简单地向上采样,或者使用固定的(稀疏)用于上采样的指数数组。与上述变体相比,这些性能相当差。编码器网络中没有最大池和子采样(解码器是冗余的)的变体会消耗更多的内存,需要更长的时间来收敛,性能也很差。最后,请注意,为了鼓励重新生成结果,我们发布了所有变种的Caffe实现。

3.2训练

我们使用CamVid道路场景数据集来测试解码器变体的性能。这个数据集很小,由367张训练和233张测试RGB图像(白天和黄昏场景)组成,分辨率为360×480。挑战是划分11个类,如道路,建筑,汽车,行人,标志,杆子,人行道等。我们对RGB输入[54]进行局部对比归一化。编码器和解码器的权重都使用He等[55]中描述的技术进行初始化。为了训练所有的变量,我们使用随机梯度下降(SGD)与固定学习率0.1和动量0.9[17]使用我们的Caffe实现SegNet-Basic[56]。我们训练变种直到训练损失收敛。在每个epoch之前,对训练集进行洗牌,然后挑选出每个小批(12张图像),以确保每张图像在一个epoch中只使用一次。我们选择在验证数据集上执行最高的模型。

我们使用交叉熵损失[2]作为训练网络的目标函数。损失是在一个小批中对所有像素进行汇总。当训练集中每个类的像素个数变化较大时(e。然后就需要根据真实的类对损失进行不同的加权。这被称为类平衡。我们使用中值频率平衡[13],在损失函数中分配给一个类的权重是整个训练集计算的类频率的中值除以类频率的比值。这意味着训练集中较大的类的权值小于1,最小的类的权值最大。我们还尝试在不使用类平衡或使用固有频率平衡的情况下训练不同的变体。

3.3 分析

比较的量化性能不同的译码器变异,我们使用三个常用的绩效指标:全球精度(G)衡量的百分比pixels7正确分类的数据集,类平均精度(C)的均值预测精度对所有类和意味着十字路口在联盟(mIoU)中使用的所有类Pascal VOC12挑战[21]。mIoU度量是一个比类平均精度更严格的度量,因为它惩罚假阳性预测。然而,mIoU度量并没有直接通过类平衡交叉熵损失进行优化。

mIoU度量,也称为Jacard指数,在基准测试中最常用。然而,Csurka等人[57]注意到,这个度量并不总是与人类对高质量分割的定性判断(等级)相对应。他们用例子表明mIoU偏好区域光滑性,而不评估边界精度,这一点最近也被FCN[58]的作者提及。因此,他们提出用一种基于Berkeley轮廓匹配分数的边界测度来补充mIoU度量,该边界测度通常用于评价无监督图像分割质量[59]。Csurka等人[57]将其简单地扩展到语义分割,并表明结合mIoU度量使用的语义轮廓精度度量更符合人类对分割输出的排序。

计算语义轮廓分数的关键思想是对f1测度的[59]进行评价,这涉及到在给定像素容差距离下计算预测值和ground truth类边界之间的精度和召回值。我们使用图像对角线0:75%的值作为容忍距离。对地面真值测试图像中出现的每个类的F1-测量值进行平均,生成图像F1-测量值。然后计算整个测试集的平均值,用图像F1值的平均值表示边界F1-measure (BF)。

在CamVid验证集上进行1000次优化后,我们测试每种架构变体,直到训练损失收敛。培训mini-batch大小12这对应测试大约每33时代通过训练集(传球)。我们选择迭代在全球中精度最高的评估验证集。我们报告所有的三个措施的性能在这一点上伸出CamVid测试集。尽管我们使用类平衡训练变异的时候,在整体平滑的分割中,获得高的全局精度仍然是重要的。另一个原因是,分割对自动驾驶的贡献主要是划分类别,如道路、建筑、人行道、天空。这些类控制了图像中的大部分像素,对这些重要类进行良好的分割才能获得较高的全局精度。我们还观察到,当类平均值最高时,报告数值性能通常对应于表示感知噪声分割输出的较低的全局精度。

在表1中,我们报告了我们分析的数值结果。我们还显示了可训练参数的大小和最高分辨率特征图或池索引存储内存,例如,最大池化和子采样后的第一层特征图。我们用我们的Caffe实现显示了一次向前传递的平均时间,在NVIDIA Titan GPU cuDNN v3加速下使用360×480输入平均超过50次测量。我们注意到,在SegNet变体中的上采样层没有使用cuDNN加速进行优化。我们在选中的迭代中显示测试和训练所有变量的结果。为了提高训练和测试的准确性,结果表中没有类平衡(固有频率)。下面我们分析一下班级平衡的结果。

从表1中,我们可以看到,基于上采样的双线性插值在所有精度度量上的表现是最差的。所有其他使用上采样学习(FCN-Basic和变式)或上采样后学习解码器滤波器(SegNet-Basic及其变式)的方法的性能都明显更好。这就强调了学习分割解码器的必要性。这也被其他作者收集的实验证据所支持,当比较FCN和节段型解码技术[4]。

当我们比较SegNet-Basic和FCN-Basic时,我们看到两者在这个测试中在所有精度度量上都表现得同样好。区别在于,SegNet在推理期间使用的内存更少,因为它只存储最大池索引。另一方面,FCN-Basic完全存储编码器特征图,这会消耗更多的内存(11倍多)。SegNet-Basic有一个解码器,在每个解码器层中有64个特征映射。相比之下,使用降维方法的FCN-Basic在每个解码器层中拥有更少的(11)特征图。这减少了译码网络中的卷积数,因此FCN-Basic在推理(转发)时速度更快。从另一个角度来看,SegNet-Basic中的解码器网络使其总体上比FCN-Basic更大。这使得它具有更大的灵活性,在相同的迭代次数下,比FCN-Basic获得更高的训练精度。总的来说,我们看到SegNet-Basic比FCN-Basic在推理时间内存受限但推理时间可能受到一定影响的情况下具有优势。

在解码器方面,SegNet- basic与fcn - basic - no加法最相似,尽管SegNet的解码器更大。两者都学习生成密集的特征图,要么直接学习执行fcc - basic - no加法中的反褶积,要么先上采样,然后用经过训练的解码器滤波器进行卷积。SegNet-Basic的性能优越,部分原因是它的解码器更大。FCN-Basic- no加法的准确性也低于FCN-Basic。这表明,为了获得更好的性能,捕获编码器特性映射中的信息至关重要。特别地,注意在这两个变种之间的高炉测量的大下降。这也可以解释为什么SegNet-Basic优于fcn - basicno加法的部分原因。

fcn - basic - noaddi- nodimreduction模型的大小略大于SegNet-Basic,因为最终的编码器特征图没有被压缩以匹配k类的数量。这使得它在模型的大小上是一个公平的比较。在测试中,该FCN变体的性能较SegNet-Basic差,但在相同的训练epoch数下,其训练精度较低。这表明,使用一个更大的解码器是不够的,但它也是重要的捕获编码器的特征地图信息,以更好地学习,特别是细粒度的轮廓信息(注意BF测量下降)。在这里,与fcnbasic - nodimreduce等更大的模型相比,SegNet-Basic具有具有竞争力的训练准确度,这一点也很有趣。

另一个有趣的fcc - basicno加法和SegNet-Basic-SingleChannelDecoder之间的比较表明,对上采样使用最大池索引和整体更大的解码器可以获得更好的性能。这也证明了SegNet是一个很好的分段架构,特别是当需要在存储成本、准确性和推理时间之间找到折衷时。在最好的情况下,当内存和推理时间都不受限制时,更大的模型(如FCN-Basic-NoDimReduction和segnet - encoder加法)都比其他变体更精确。特别地,在FCN-Basic模型中,丢弃维数减少将导致FCN-Basic变体中具有高BF得分的最佳性能。这再次强调了分割架构中内存和准确性之间的权衡。

表1的最后两列显示了不使用类平衡时的结果(自然频率)。在这里,我们可以观察到,在没有加权的情况下,所有变量的结果都比较差,尤其是类平均精度和mIoU度量。全局精度是最高的,没有加权,因为大部分场景是由天空,道路和建筑像素。除此之外,所有从变量比较分析得出的推论也适用于固有频率平衡,包括高炉测量的趋势。SegNetBasic的性能和FCN-Basic一样好,并且优于较大的FCN-Basic- noaddi- nodimreduction。更大但效率较低的模型fcn -Basic- nodimreduction和segnetencoder加法比其他变体表现更好。

我们现在可以用以下几个要点来总结上述分析。

1)编码器特征图全部存储时性能最佳。这在语义轮廓勾画度量(BF)中体现得最为明显。

2)在推理过程中,当内存受到限制时,可以存储压缩形式的编码器特征映射(降维,最大池索引),并与适当的解码器(如SegNet类型)一起使用,以提高性能。

3)对于给定的编码器网络,较大的解码器可以提高性能。

4基准测试

我们使用Caffe实现在两个场景分割基准上量化了SegNet的性能。第一项任务是道路场景分割,这是当前针对各种与自动驾驶相关的问题所具有的实用价值。第二个任务是室内场景分割,这是几个增强现实(AR)应用的直接兴趣。这两个任务的RGB图像输入为360×480。

我们将SegNet与其他一些被广泛采用的深度分割架构(如FCN[2]、DeepLabLargFOV[3]和DeconvNet[4])进行了比较。我们的目标是理解在相同数据集上进行端到端训练时这些架构的性能。为了实现端到端训练,我们在每个卷积层之后添加了[51]层。对于deeplabl - largefov,我们将最大pooling 3 stride改为1,以实现最终的预测分辨率为45 60。我们将DeconvNet的全连接层的feature size限制为1024,以便与其他模型以相同的batch size进行训练。这里注意到DeepLab-LargeFOV[3]的作者也报告了通过减少全连接层的大小,性能几乎没有损失。

为了执行受控基准测试,我们使用相同的SGD求解器[17],学习速率为0.001,动量为0.9。通过数据集进行了超过100个epoch的优化,直到没有观察到进一步的性能提高。Droupout=0.5被加到所有网络深层卷积深的末尾,来缓解过拟合。对于有11个类的道路场景,我们使用5个小批量,对于有37个类的室内场景,我们使用4个小批量。

4.1道路场景分割

许多道路场景数据集可用于语义解析[22][26][60][61]。其中,我们选择使用CamVid数据集[22]对SegNet进行基准测试,因为它包含视频序列。这使我们能够将我们提出的架构与那些使用运动和结构[28],[29],[30]和视频片段[33]的架构进行比较。我们还将[22],[26],[60],[61]组合成3433张图像的集合,以训练SegNet作为额外的基准。对于道路场景分割的web演示(参见脚注3),我们将CamVid测试集包含到这个更大的数据集中。在这里,我们想指出的是,最近针对SegNet和本文中使用的其他竞争架构,在道路场景上进行了另一个独立的分割基准测试[62]。但是,基准测试是没有控制的,这意味着每个架构都是用不同的输入分辨率的单独配方进行训练的,有时还包括验证集。因此,我们相信,我们更可控的基准可以用来补充他们的努力。

SegNet预测与其他深层架构的定性比较如图4所示。定性的结果表明,该架构能够在道路场景中分割出更小的类别,同时产生一个平滑的整体场景分割。事实上,在受控的基准设置下,SegNet显示了优越的性能,与一些较大的模型相比。DeepLab-LargeFOV是最有效的模型,与CRF后处理可以产生竞争的结果,尽管更小的类损失。学习反褶积的FCN明显优于固定双线性上采样。DeconvNet是最大的模型,也是最低效的。它的预测不保留小类别。

我们也使用这个基准首先比较SegNet与几个非深度学习方法,包括随机森林[27],提升[27],[29]结合基于CRF的方法[30]。这样做是为了让用户了解使用深度网络与基于经典特征工程的技术相比所取得的精度改进。

表2中的结果显示SegNet- basic,与使用CRFs的方法相比,SegNet获得了竞争的结果。这表明deep架构能够从输入图像中提取有意义的特征,并将其映射到精确、平滑的类段标签。这里最有趣的结果是,使用组合[22][26][60][61]获得的一个大型训练数据集来训练SegNet时,类平均和mIOU指标的性能有了很大的提高。相应地,SegNet的定性结果(图4)明显优于其他方法。它能很好地划分小班和大班。我们在这里说明,我们在训练SegNet- basic和SegNet时使用了中值频率类平衡[50]。此外,分割的整体平滑质量很像通常用CRF后处理得到的。虽然更大的训练集可以提高结果这一事实并不令人惊讶,但是使用预训练的编码器网络和这个训练集所获得的百分比提高表明这个架构可以被实际设备部署。我们对来自互联网的城市和公路图像的随机测试(见图1)表明,SegNet可以吸收大量的训练集,并很好地推广到不可见的图像。它还表明,在提供足够数量的训练数据时,先验(CRF)的贡献可以减少。

在表3中,我们将SegNet的性能与目前广泛采用的全卷积架构进行了比较。与表2中的实验相比,我们没有使用任何类切换来训练任何深度架构,包括SegNet。这是因为我们发现很难训练具有中值频率平衡的大型模型,如DeconvNet。我们在40K、80K和>80K迭代下进行性能测试,给定小批量大小和训练集大小,其性能约为50;100和100个时代。对于最后的测试点,我们还报告了迭代的最大次数(这里至少150个epoch),超过这个次数,我们观察到精度没有提高,或者当过拟合设置时。我们报告了训练阶段的三个阶段的指标,以揭示指标是如何随训练时间变化的,特别是对于较大的网络。这是很重要的一点,要了解当设置额外的训练时间来对抗精度增加时,是否合理。还请注意,对于每个评估,我们都在数据集中执行了一次完整的运行,以获得批处理规范统计信息,然后使用该统计信息评估测试模型(请参阅http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html了解代码)。在大型训练集上执行这些评估是昂贵的,因此我们只在训练阶段报告三个时间点的度量。

从表3中我们可以立即看出,SegNet、DeconvNet与其他模型相比,在所有指标中得分最高。DeconvNet具有较高的边界划分精度,而SegNet与DeconvNet相比效率更高。这可以从表6的计算统计中看出。FCN拥有完全连接层(变成卷积层)的反卷积网络,其训练速度要慢得多,并且与SegNet相比,具有相当或更高的向前向后传递时间。在这里,我们还注意到过度拟合在训练这些更大的模型中不是一个问题,因为在类似的迭代中SegNet他们的指标显示了一个增加的趋势。

对于FCN模型来说,学习反卷积层而不是用双线性插值权值固定它们可以提高性能,特别是BF评分。它还能在更短的时间内达到更高的指标。这一事实与我们之前在3.3节中的分析一致。

令人惊讶的是,DeepLab-LargeFOV经过训练可以在45 60的分辨率下预测标签,鉴于它是参数化方面最小的模型,而且训练时间也是最快的,因此它的性能具有竞争力,见表6。然而,边界精度较差,这被其他架构所共享。长时间训练后,DeconvNet的BF得分高于其他网络。鉴于我们在第3.3节中的分析,以及它共享一个SegNet类型架构的事实。

CRF[63]后处理的影响可以在deeplb - largefov - densecrf的最后一个时间点看到。全球和mIoU都提高了,但平均水平降低了。然而,BF评分得到了较大的改善。这里请注意,密集的CRF超参数是通过在训练集的一个子集上进行昂贵的网格搜索过程获得的,因为没有可用的验证集。

4.2 SUN RGB-D室内场景

SUN RGB-D[23]是一个非常具有挑战性的大型室内场景数据集,拥有5285张训练图像和5050张测试图像。这些图像是由不同的传感器捕获的,因此具有不同的分辨率。任务是分段37个室内场景类,包括墙,地板,天花板,桌子,椅子,沙发等。由于对象类具有不同的形状、大小和不同的姿态,因此这项任务很难完成。有频繁的部分遮挡,因为有许多不同的类出现在每个测试图像。这些因素使这成为最艰难的细分挑战之一。我们只在训练和测试中使用RGB模式。使用深度模式将有必要对建筑进行修改/重新设计[2]。此外,当前相机的深度图像质量需要仔细的后处理,以填补缺失的测量值。它们也可能需要融合多个帧来稳健地提取特征进行分割。因此,我们认为使用深度细分值得单独的工作,这不在本文的范围。我们还注意到,这个数据集包含了一个早期的基准数据集NYUv2[25]。

道路场景图像有有限的变化,在兴趣的类别和他们的空间安排。当从移动的车辆上拍摄时,摄像机的位置几乎总是平行于路面,限制了视点的可变性。这使得深度网络更容易学会牢固地将它们分割开来。相比之下,室内场景的图像要复杂得多,因为视点可以变化很多,而且场景中出现的类的数量和它们的空间排列都没有那么规律。另一个困难是场景中对象类的大小变化很大。一些来自SUN RGB-D数据集[23]的测试样本如图5所示。

我们观察了一些只有少数大类的场景和一些密集杂乱的场景(底部和右边)。外观(纹理和形状)在室内场景中也有很大的不同。因此,我们认为这是计算机视觉中分割架构和方法面临的最大挑战。其他的挑战,比如Pascal VOC12[21]显著对象分割已经占用了研究者更多的时间[66],但我们认为室内场景分割更具挑战性,在AR和机器人技术等领域有更多的实际应用。为了鼓励在这个方向上进行更多的研究,我们比较了大型SUN RGB-D数据集上著名的深层架构。

SegNet对卧室、客厅、实验室、会议室、浴室等不同类型室内场景样本的定性结果如图5所示。我们看到,当类的大小在不同的视图下很大时,SegNet获得了合理的预测。这特别有趣,因为输入模式只有RGB。RGB图像也有助于分割更薄的结构,如椅子和桌子的腿,灯,这是难以实现的深度图像,目前可用的传感器。图5的SegNet、DeconvNet结果可以看出这一点。对于AR任务来说,分割装饰对象(如墙上的画)也是有用的。但是相比于外景的分割质量显然噪声多。当杂乱增加时,质量显著下降(见中间列的结果样本)。

表4中的定量结果表明,所有深层架构共享低mIoU和边界度量。全球平均水平和班级平均水平(与mIou密切相关)也很小。SegNet在G,C, BF指标方面优于所有其他方法,并有一个略低于mIoU比DeepLab-LargeFOV。作为一个独立实验,我们使用中值频率类平衡训练了SegNet[67],其指标更高(见表4),这与我们在第3.3节的分析一致。有趣的是,使用基于网格搜索的密度- crf的最优超参数,除了deeplabl - largefovdensecrf BF评分指标之外,其他所有指标都恶化了。也许可以找到更优的设置,但是考虑到稠密crfs的推理时间太长,网格搜索过程过于昂贵。

整体性能较差的一个原因是在这个分割任务中有大量的类,其中很多类占据了图像的一小部分,很少出现。从表5报告的准确率可以清楚地看出,大班具有合理的准确率,小班准确率较低。这可以通过更大的数据集和类分布感知训练技术得到改善。性能差的另一个原因可能是这些深层架构(都基于VGG架构[6])在室内场景中无法实现较大的可变性。我们的这一推测是基于最小的模型DeepLab-LargeFOV在mIoU方面产生了最好的精度,相比之下,在DeconvNet中,更大的参数化FCN并没有提高性能,即使训练时间更长(DeconvNet)。这表明在所有架构中都存在性能差的常见原因。需要更多的控制数据集[68]来验证这一假设。

5讨论和未来工作

由于大量数据集的可用性以及模型深度和参数化的扩展,深度学习模型取得了越来越大的成功。然而,在实践中,训练和测试期间的记忆和计算时间等因素是从大量模型中选择模型时要考虑的重要因素。训练时间成为一个重要的考虑因素,特别是当性能增益与增加的训练时间不相称时,如我们的实验所示。测试时间、内存和计算负载对于在特定的嵌入式设备(例如AR应用程序)上部署模型非常重要。从整体效率的观点来看,我们觉得小则较少受到关注,更多的内存,时间等实时应用程序的有效模型道路场景的理解和基于“增大化现实”技术。这是SegNet的建议背后的主要动机,这是小得多的速度比其他竞争架构,但我们展示了高效的任务,比如道路场景的理解。

分割的挑战,如Pascal[21]和MS-COCO[42]是对象分割的挑战,其中有几个类存在于任何测试图像。由于室内场景的高度可变性和需要同时分割大量的类,场景分割更具挑战性。室外和室内场景分割的任务也更加面向实际,与目前的应用,如自动驾驶,机器人和AR。

我们选择的指标基准的各种深度分割架构,如边界f1 -measure(BF)是为了补充现有的指标,更偏向于区域精度。很明显,从我们的实验和其他独立的基准[62]中,从移动的汽车捕捉到的室外场景图像更容易分割,深层架构的执行更稳健。我们希望我们的实验将鼓励研究人员将他们的注意力投入到更具挑战性的室内场景分割任务。

在对不同的不同参数化深层架构进行基准测试时,我们必须做出的一个重要选择是培训它们的方式。这些架构中有许多使用了大量的支持技术和多阶段训练方法来达到数据集的高精确度,但这使得在时间和内存的限制下很难收集关于它们真实性能的证据。相反,我们选择执行一个受控的基准测试,其中我们使用批处理标准化来启用同一个求解器(SGD)的端到端培训。然而,我们注意到,这种方法不能完全分离模型与求解器(优化)在实现特定结果中的影响。这主要是由于这些网络的训练涉及到梯度反向传播,这是不完善的,优化是一个非常大维度的非凸问题。认识到这些缺点,我们希望这种可控的分析能够补充其他的基准[62],并揭示在不同的知名架构中涉及的实际的权衡。

对于未来,我们希望利用我们从分析中获得的对分割架构的理解,为实时应用程序设计更高效的架构。我们也感兴趣的是估计模型的不确定性预测从深度分割架构[69],[70]。

6 总结

我们提出了一种用于语义分割的深度卷积网络结构SegNet。SegNet背后的主要动机是需要为理解道路和室内场景设计一个高效的架构,这在记忆和计算时间方面都是高效的。我们分析了SegNet,并将其与其他重要变体进行比较,以揭示在设计分割架构时涉及到的实际权衡,特别是在训练时间、记忆和准确性方面。完全存储编码器网络特性映射的体系结构性能最好,但在推理期间消耗更多内存。另一方面,SegNet的效率更高,因为它只存储特征图的最大池索引,并在其解码器网络中使用它们,以实现良好的性能。在大型和众所周知的数据集SegNet执行竞争,为道路场景理解取得高分。深度分割架构的端到端学习是一个更大的挑战,我们希望看到更多的关注这个重要的问题。

制作自己的segnet数据集_语义分割【论文解读】经典网络SegNet 值得仔细反复阅读...相关推荐

  1. camvid数据集介绍_语义分割的数据集

    背景 语义分割指的是把图像中的每个像素都划分到某一个类别上. 实现算法上,有传统时代的grab cut.ML时代的TextonForest.DL时代的FCN .SegNet .Dilated Conv ...

  2. 无人驾驶常用数据集---图像语义分割数据集--Cityscapes数据集的解读(for 小白)

    ** 无人驾驶常用数据集–图像语义分割数据集–Cityscapes数据集的解读(for 小白) ** 一.什么是Cityscapes数据集? Cityscapes是关于城市街道场景的语义理解图片数据集 ...

  3. 史上最全语义分割综述(FCN,UNet,SegNet,Deeplab,ASPP...)

    目录 语义分割综述 摘要 语义分割领域研究现状 灰度分割 条件随机场 深度学习方法 数据集与评价指标 常用数据集 评价指标 模型介绍 语义分割综述 摘要 语义分割(全像素语义分割)作为经典的计算机视觉 ...

  4. PyTorch中的MIT ADE20K数据集的语义分割

    PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...

  5. 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记

    使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记 https://www.bilibili.com/video/BV1rq4y1w7xM?spm_id_from=33 ...

  6. tensorflow2.3实现猫狗数据集图像语义分割(一)

    tensorflow2.3实现猫狗数据集图像语义分割 语义分割(semantic segmentation) 对图像而言,常见的任务是: 图像分类:提取类别特征,如:VGG19网络 目标检测:提取类别 ...

  7. 语义分割算法性能比较_语义分割江湖那些事儿

    今天的分享者是旷视余昌黔,来自旷视研究院 Detection 组,他将向我们分享旷视研究院 Detection 组近两年持续在做的 Semantic Segmentation 相关工作,代表性成果主要 ...

  8. FEANet——基于 RGBT的实时语义分割特征增强注意力网络

    Overview Title:FEANet: Feature-Enhanced Attention Network for RGB-Thermal Real-time Semantic Segment ...

  9. 多篇开源CVPR 2020 语义分割论文

    多篇开源CVPR 2020 语义分割论文 前言 DynamicRouting:针对语义分割的动态路径选择网络 Learning Dynamic Routing for Semantic Segment ...

最新文章

  1. pandas使用transpose函数对dataframe进行转置、将dataframe的行和列进行互换(flip the rows and columns in dataframe)
  2. 04. Mybatis的resultMap基本应用
  3. CNN应用之基于Overfeat的物体检测-2014 ICLR-未完待续
  4. spring jaxb_自定义Spring命名空间使JAXB变得更容易
  5. linux shell脚本举例,Shell脚本去重的几种方法实例
  6. Springboot Failed to parse configuration class [x]; nested exception
  7. Photoshop 入门教程「6」如何更改图像大小?
  8. 常用的sql语句集锦
  9. 图解机器学习算法(14) | PCA降维算法详解(机器学习通关指南·完结)
  10. Excel表格合并单元格丢失边框
  11. 微盟集团上半年业绩逆势增长:抢滩在线新经济未来前景获看好
  12. 使用VBA实现数据统计
  13. TCP、UDP的区别
  14. 13.JVM-垃圾回收相关概念
  15. tensorflow 学习率的下降策略
  16. 小程序前端 wxml注释
  17. C#使用VLCPlayer播放视频并对视频抓图失败的解决方法
  18. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
  19. 2022年全国大学生数学建模竞赛A题思路
  20. CentOS 7.5_1804.iso镜像下载

热门文章

  1. Linuxprobe,红帽linux网络课程学习贴
  2. 3 - 组合逻辑代码设计和仿真
  3. 魅力数学(国内外知名数学家、数学教育家参编)
  4. 易优cms后台登陆常见问题汇总 Eyoucms快速入门
  5. js对象的直接赋值、浅拷贝与深拷贝
  6. 几行Python代码实现人像动漫化
  7. dell设置从ssd启动_戴尔笔记本如何设置从ssd启动系统
  8. 科技政策 | 《深圳市加快加快推动人工智能高质量发展高水平应用行动方案(2023—2024年)》发布
  9. python聊天小程序支持私聊和多人_利用Python打造一个多人在线匿名聊天的小程序!(前后端完整开发)...
  10. 怎么把jpg转换成docx格式