点击上方卡片,关注“AI学术工坊”公众号
点击上方卡片,关注“AI学术工坊”公众号
各种重磅干货,第一时间送达
各种重磅干货,第一时间送达
摘要
我们提出了一种新颖且实用的深度全卷积神经网络架构,用于语义像素级分割,称为 SegNet。这个核心可训练分割引擎由一个编码器网络、一个相应的解码器网络和一个像素级分类层组成。编码器网络的架构在拓扑上与 VGG16 网络 [1] 中的 13 个卷积层相同。解码器网络的作用是将低分辨率编码器特征图映射到全输入分辨率特征图,以进行像素级分类。SegNet 的新颖之处在于解码器对其低分辨率输入特征图进行上采样的方式。具体而言,解码器使用在相应编码器的最大池化步骤中计算的池化索引来执行非线性上采样。这消除了学习上采样的需要。上采样的图是稀疏的,然后与可训练的过滤器进行卷积以生成密集的特征图。我们将我们提出的架构与广泛采用的 FCN [2] 以及众所周知的 DeepLab-LargeFOV [3]、DeconvNet [4] 架构进行了比较。这种比较揭示了实现良好分割性能所涉及的内存与准确度的权衡。SegNet 主要受场景理解应用的推动。因此,它在推理过程中在内存和计算时间方面都设计得非常高效。与其他竞争架构相比,它的可训练参数数量也明显较少,并且可以使用随机梯度下降进行端到端训练。我们还在道路场景和 SUN RGB-D 室内场景分割任务上对 SegNet 和其他架构进行了受控基准测试。这些定量评估表明,与其他架构相比,SegNet 提供了良好的性能,具有竞争力的推理时间和最高效的推理内存。
论文链接:https://arxiv.org/abs/1511.00561
论文标题:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
作者:Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla
1.关键字
深度卷积神经网络、语义像素分割、室内场景、道路场景、编码器、解码器、池化、上采样
2.引言
语义分割具有广泛的应用范围,从场景理解、推断物体之间的支持关系到自动驾驶。早期依赖低级视觉线索的方法很快被流行的机器学习算法所取代。特别是,深度学习最近在手写数字识别、语音、对整个图像进行分类和检测图像中的物体方面取得了巨大的成功[5]。现在人们对语义像素级标记产生了浓厚的兴趣[2],[3],[4],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15]。然而,其中一些最近的方法试图直接采用为类别预测设计的深度架构进行像素级标记[6]。结果虽然非常令人鼓舞,但看起来很粗糙[3]。这主要是因为最大池化和子采样降低了特征图分辨率。我们设计 SegNet 的动机源于需要将低分辨率特征映射到输入分辨率以进行像素级分类。这种映射必须产生对准确边界定位有用的特征。
我们的架构 SegNet 旨在成为一种高效的逐像素语义分割架构。它主要由道路场景理解应用推动,这些应用需要能够对外观(道路、建筑物)、形状(汽车、行人)进行建模,并理解不同类别(如道路和人行道)之间的空间关系(上下文)。在典型的道路场景中,大多数像素属于道路、建筑物等大类别,因此网络必须产生平滑的分割。引擎还必须能够根据其形状描绘物体,尽管它们的尺寸很小。因此,在提取的图像表示中保留边界信息非常重要。从计算的角度来看,网络在推理过程中必须在内存和计算时间方面都具有效率。能够进行端到端训练,以便使用高效的权重更新技术(例如随机梯度下降 (SGD) [16])共同优化网络中的所有权重,这是另一个好处,因为它更容易重复。SegNet 的设计源于满足这些标准的需求。
SegNet 中的编码器网络在拓扑上与 VGG16 [1] 中的卷积层相同。我们删除了 VGG16 的全连接层,这使得 SegNet 编码器网络比许多其他最近的架构 [2]、[4]、[10]、[17] 更小且更容易训练。SegNet 的关键组件是解码器网络,它由一个解码器层次结构组成,每个解码器对应一个解码器。其中,适当的解码器使用从相应编码器接收的最大池化索引对其输入特征图执行非线性上采样。这个想法的灵感来自为无监督特征学习设计的架构 [18]。在解码过程中重复使用最大池化索引有几个实际优势;(i)它改善了边界描绘,(ii)它减少了实现端到端训练的参数数量,(iii)这种形式的上采样只需稍加修改就可以合并到任何编码器-解码器架构中,如[2]、[9]。
本文的主要贡献之一是对 SegNet 解码技术和广泛使用的全卷积网络 (FCN) [2] 的分析。这是为了传达设计分割架构所涉及的实际权衡。最近的深度分割架构具有相同的编码器网络,即 VGG16,但在解码器网络、训练和推理的形式上有所不同。另一个共同特点是它们具有数亿个可训练参数,因此在执行端到端训练时遇到困难 [4]。训练这些网络的困难导致了多阶段训练 [2]、将网络附加到预训练架构(如 FCN [9])、使用区域提议等支持辅助工具进行推理 [4]、分类和分割网络的不相交训练 [17] 以及使用额外的训练数据进行预训练 [10]、[19] 或进行全面训练 [9]。此外,性能提升后处理技术 [3] 也很受欢迎。尽管所有这些因素都能提高具有挑战性的基准 [20] 上的性能,但遗憾的是,很难从它们的定量结果中理清实现良好性能所必需的关键设计因素。因此,我们分析了其中一些方法中使用的解码过程 [2]、[4],并揭示了它们的优缺点。
我们评估了 SegNet 在两个场景分割任务上的性能,即 CamVid 道路场景分割 [21] 和 SUN RGB-D 室内场景分割 [22]。多年来,Pascal VOC12 [20] 一直是分割的基准挑战。然而,这项任务的大部分内容是一两个前景类,周围是高度多样化的背景。这隐含地支持用于检测的技术,如最近对解耦分类分割网络 [17] 的研究所示,其中可以使用大量弱标记数据训练分类网络,并且独立分割网络性能得到改善。[3] 的方法还使用分类网络的特征图和独立的 CRF 后处理技术来执行分割。通过使用额外的推理辅助工具(例如区域提议 [4]、[23]),也可以提高性能。因此,它不同于场景理解,场景理解的理念是利用物体和其他空间上下文的共现来执行稳健的分割。为了证明 SegNet 的有效性,我们提供了一个实时在线演示,将道路场景分割成 11 个自动驾驶感兴趣的类别(见图 1 中的链接)。图 1 显示了在 Google 随机采样的道路场景图像和 SUN RGB-D 数据集 [22] 的室内测试场景上生成的一些示例测试结果。
本文的其余部分组织如下。第 2 节回顾了相关的最新文献。第 3 节描述了 SegNet 架构及其分析。第 4 节评估了 SegNet 在室外和室内场景数据集上的性能。随后在第 5 节中对我们的方法进行了一般性讨论,并指出了未来的工作。第 6 节总结了本文。
3.架构
SegNet 有一个编码器网络和一个相应的解码器网络,后面跟着一个最终的像素分类层。该架构如图 2 所示。编码器网络由 13 个卷积层组成,这些卷积层对应于 VGG16 网络 [1] 中为对象分类而设计的前 13 个卷积层。因此,我们可以从在大型数据集上训练分类的权重 [40] 来初始化训练过程。我们还可以丢弃完全连接的层,以便在最深的编码器输出处保留更高分辨率的特征图。与其他最近的架构 [2]、[4](参见表 6)相比,这也显着减少了 SegNet 编码器网络中的参数数量(从 134 个减少到 14.7 M)。每个编码器层都有一个对应的解码器层,因此解码器网络有 13 层。最终的解码器输出被馈送到多类软最大分类器,以独立生成每个像素的类概率。
编码器网络中的每个编码器都与滤波器组进行卷积以生成一组特征图。然后对这些特征图进行批量归一化 [50]、[51])。然后应用逐元素整流线性非线性 (ReLU) maxð0; xÞ。随后,执行具有 2 2 窗口和步幅 2(非重叠窗口)的最大池化,并将结果输出以 2 的倍数进行子采样。最大池化用于在输入图像的小空间移位上实现平移不变性。子采样会为特征图中的每个像素产生较大的输入图像上下文(空间窗口)。虽然多层最大池化和子采样可以实现更多的平移不变性以实现稳健分类,但相应地会损失特征图的空间分辨率。越来越有损的(边界细节)图像表示不利于分割,因为边界描绘至关重要。因此,在执行子采样之前,有必要捕获并存储编码器特征图中的边界信息。如果推理期间的内存不受限制,则可以存储所有编码器特征图(子采样后)。在实际应用中通常并非如此,因此我们提出了一种更有效的方法来存储此信息。它仅涉及存储最大池化索引,即为每个编码器特征图记忆每个池化窗口中最大特征值的位置。原则上,这可以使用每个 2 2 池化窗口的 2 位来完成,因此与以浮点精度记忆特征图相比,存储效率要高得多。正如我们在本工作后面所展示的那样,这种较低的内存存储会导致准确性略有损失,但仍然适用于实际应用。
解码器网络中的相应解码器使用来自相应编码器特征图的记忆最大池化索引对其输入特征图进行上采样。此步骤生成稀疏特征图。图 3 说明了此 SegNet 解码技术。然后,这些特征图与可训练的解码器滤波器组进行卷积,以生成密集特征图。然后对每个图应用批量归一化步骤。请注意,与第一个编码器(最接近输入图像)相对应的解码器生成多通道特征图,尽管其编码器输入有三个通道(RGB)。这与网络中的其他解码器不同,它们生成的特征图的大小和通道数与编码器输入相同。最终解码器输出的高维特征表示被馈送到可训练的软最大分类器。此软最大分类器独立地对每个像素进行分类。软最大分类器的输出是 K 通道概率图像,其中 K 是类数。预测的分割对应于每个像素上概率最大的类。
我们在此补充的是,另外两个架构 DeconvNet [52] 和 U-Net [15] 与 SegNet 具有相似的架构,但也存在一些差异。DeconvNet 具有更大的参数化,需要更多的计算资源,并且更难进行端到端训练(表 6),这主要是由于使用了完全连接的层(尽管是以卷积方式)。我们将在本文第 4 节中报告与 DeconvNet 的几次比较。
与 SegNet 相比,U-Net [15](针对医学成像社区提出)不重复使用池化索引,而是将整个特征图(以更多内存为代价)传输到相应的解码器,并将它们连接到上采样(通过反卷积)解码器特征图。U-Net 中没有像 VGG 网络架构中那样的 conv5 和 max-pool 5 块。另一方面,SegNet 使用 VGG 网络中的所有预训练卷积层权重作为预训练权重。
3.1 解码器变体
许多分割架构 [2]、[3]、[4] 共享相同的编码器网络,它们仅在解码器网络的形式上有所不同。其中,我们选择将 SegNet 解码技术与广泛使用的全卷积网络解码技术 [2]、[9] 进行比较。
为了分析 SegNet 并将其性能与 FCN(解码器变体)进行比较,我们使用了 SegNet 的较小版本,称为 SegNet-Basic,1 它有四个编码器和四个解码器。SegNet-Basic 中的所有编码器都执行最大池化和子采样,相应的解码器使用收到的最大池化索引对其输入进行上采样。在编码器和解码器网络中的每个卷积层之后都使用批量归一化。卷积后不使用偏差,解码器网络中不存在 ReLU 非线性。此外,在所有编码器和解码器层上选择恒定的 7 7 内核大小,以提供广泛的上下文以实现平滑标记,即,最深层特征图(第 4 层)中的像素可以追溯到输入图像中 106 106 像素的上下文窗口。SegNet-Basic 的这种小尺寸使我们能够探索许多不同的变体(解码器)并在合理的时间内训练它们。同样,我们创建了 FCN-Basic,这是 FCN 的一个可比版本,用于我们的分析,它与 SegNet-Basic 共享相同的编码器网络,但其所有解码器都使用 FCN 解码技术(见图 3)。
图 3 左侧是 SegNet(也称为 SegNet-Basic)使用的解码技术,其中上采样步骤不涉及学习。但是,上采样图与可训练的多通道解码器滤波器进行卷积,以使其稀疏输入密集化。每个解码器滤波器的通道数与上采样特征图的数量相同。较小的变体是解码器滤波器是单通道的,即它们仅卷积其相应的上采样特征图。此变体(SegNet Basic-单通道解码器)显着减少了可训练参数的数量和推理时间。
图 3 右侧是 FCN(也称为 FCN-Basic)解码技术。FCN 模型的重要设计元素是编码器特征图的降维步骤。这会压缩编码器特征图,然后将其用于相应的解码器。编码器特征图(例如 64 个通道)的降维是通过将它们与 个可训练过滤器进行卷积来实现的,其中 是类别数。压缩的 通道最终编码器层特征图是解码器网络的输入。在该网络的解码器中,使用固定或可训练的多通道上采样内核通过逆卷积执行上采样。我们将内核大小设置为 8 8。这种上采样方式也称为反卷积。请注意,相比之下,SegNet 使用可训练解码器过滤器的多通道卷积是在上采样到密集特征图之后执行的。FCN 中的上采样特征图有 个通道。然后将其逐个元素添加到相应的分辨率编码器特征图中,以生成输出解码器特征图。上采样内核使用双线性插值权重初始化 [2]。
FCN 解码器模型需要在推理过程中存储编码器特征图。这对于嵌入式应用程序来说可能是内存密集型的;例如,以 分辨率存储 32 位浮点精度的 FCN-Basic 第一层的 64 个特征图需要 11 MB。可以使用降维将其缩小到 11 个特征图,这需要 1.9 MB 存储空间。另一方面,SegNet 所需的池化索引存储成本几乎可以忽略不计(如果使用每 2 2 池化窗口 2 位存储,则为 0.17 MB)。我们还可以创建 FCNBasic 模型的变体,该模型丢弃编码器特征图添加步骤,仅学习上采样内核(FCNBasic-NoAddition)。
除了上述变体之外,我们还研究了使用固定双线性插值权重的上采样,因此上采样不需要学习(双线性插值)。在另一个极端,我们可以将每层的 64 个编码器特征图添加到 SegNet 解码器的相应输出特征图中,以创建内存密集型的 SegNet 变体(SegNet-Basic-EncoderAddition)。这里使用了两个用于上采样的池化索引,然后进行卷积步骤以使其稀疏输入密集化。然后将其逐元素添加到相应的编码器特征图中以产生解码器输出。
另一个更占用内存的 FCN-Basic 变体 (FCN-Basic-NoDimReduction) 是不对编码器特征图执行降维。这意味着与 FCN-Basic 不同,最终编码器特征图在传递到解码器网络之前不会压缩到 K 个通道。因此,每个解码器末端的通道数与相应的编码器相同(即 64)。
我们还尝试了其他通用变体,其中特征图只是通过复制 [6] 进行上采样,或者使用固定(且稀疏)的索引数组进行上采样。与上述变体相比,这些变体表现相当差。编码器网络中没有最大池化和子采样的变体(解码器是冗余的)会消耗更多内存,需要更长的时间才能收敛并且性能不佳。最后,请注意,为了鼓励我们复制我们的结果,我们发布了所有变体的 Caffe 实现。
3.2 训练
我们使用 CamVid 道路场景数据集对解码器变体的性能进行基准测试。该数据集很小,由 367 张训练和 233 张测试 RGB 图像(白天和黄昏场景)组成,分辨率为 。挑战在于分割 11 个类别,例如道路、建筑物、汽车、行人、标志、电线杆、人行道等。我们对 RGB 输入执行局部对比度归一化 [53]。
编码器和解码器权重均使用 He 等人 [54] 中描述的技术进行初始化。为了训练所有变体,我们使用随机梯度下降法,固定学习率为 0.1,动量为 0.9 [16],使用我们的 Caffe 实现的 SegNet-Basic [55]。我们训练变体,直到训练损失收敛。在每个时期之前,训练集都会被打乱,然后按顺序挑选每个小批量(12 张图像),从而确保每个图像在一个时期内只使用一次。我们选择在验证数据集上表现最好的模型。
我们使用交叉熵损失 [2] 作为训练网络的目标函数。损失是对小批量中的所有像素求和。当训练集中每个类别的像素数量存在很大差异时(例如,道路、天空和建筑物像素在 CamVid 数据集中占主导地位),则需要根据真实类别对损失进行不同的加权。这称为类别平衡。我们使用中值频率平衡 [12],其中在损失函数中分配给某个类别的权重是整个训练集上计算的类别频率中值除以类别频率的比率。这意味着训练集中较大的类别的权重小于 1,最小类别的权重最高。我们还尝试了不使用类别平衡或等效地使用自然频率平衡来训练不同的变体。
3.3 分析
为了比较不同解码器变体的定量性能,我们使用了三种常用的性能指标:全局准确度 (G),它衡量数据集中正确分类的像素的百分比;类平均准确度 (C),它是所有类的预测准确度的平均值;以及所有类的平均交并比 (mIoU),如 Pascal VOC12 挑战赛 [20] 中所用。mIoU 指标比类平均准确度更为严格,因为它会惩罚假阳性预测。然而,mIoU 指标并未通过类平衡交叉熵损失直接进行优化。
mIoU 指标(也称为 Jacard 指数)在基准测试中最常用。然而,Csurka 等人 [56] 指出,该指标并不总是与人类对高质量分割的定性判断(排名)相对应。他们通过示例表明,mIoU 有利于区域平滑度,并且不评估边界准确性,这一点最近也被 FCN 的作者 [57] 提及。因此,他们建议用基于伯克利轮廓匹配分数的边界测量来补充 mIoU 指标,该分数通常用于评估无监督图像分割质量 [58]。Csurka 等人 [56] 简单地将其扩展到语义分割,并表明与 mIoU 指标结合使用的语义轮廓准确性测量与人类对分割输出的排名更加一致。
计算语义轮廓得分的关键思想是评估 F1 测量值 [58],这涉及在给定像素容差距离的情况下计算预测和地面真实类边界之间的精度和召回率值。我们使用图像对角线的 0.75% 作为容差距离。对地面真实测试图像中存在的每个类的 F1 测量值进行平均以生成图像 F1 测量值。然后我们通过平均图像 F1 测量值来计算整个测试集平均值,将其表示为边界 F1 测量值 (BF)。
我们在 CamVid 验证集上每 1,000 次优化迭代后测试每个架构变体,直到训练损失收敛。训练小批量大小为 12,这相当于大约每 33 个 epoch(通过)测试一次训练集。我们选择在验证集评估中全局准确度最高的迭代。我们在保留的 CamVid 测试集上报告此时的所有三个性能指标。虽然我们在训练变体时使用类平衡,但实现较高的全局准确度以实现整体平滑分割仍然很重要。另一个原因是,分割对自动驾驶的贡献主要是用于划分道路、建筑物、人行道、天空等类别。这些类别占据了图像中大多数像素,较高的全局准确度对应于对这些重要类别的良好分割。我们还观察到,当类别平均值最高时报告数值性能通常可能对应于较低的全局准确度,这表明分割输出在感知上存在噪声。
在表 1 中,我们报告了分析的数值结果。我们还显示了可训练参数的大小和最高分辨率特征图或池化索引存储内存,即最大池化和子采样后的第一层特征图。我们展示了使用 Caffe 实现的一次前向传递的平均时间,该时间是在具有 cuDNN v3 加速的 NVIDIA Titan GPU 上使用 输入对 50 次测量进行平均。我们注意到,SegNet 变体中的上采样层未使用 cuDNN 加速进行优化。我们展示了所选迭代中所有变体的测试和训练结果。结果也在没有类平衡(自然频率)的情况下制成表格,用于训练和测试准确度。下面我们分析了具有类平衡的结果。
从表 1 中,我们可以看出,基于双线性插值的上采样(没有任何学习)在所有准确度指标上表现最差。所有其他使用学习进行上采样(FCN-Basic 及其变体)或在上采样后学习解码器滤波器(SegNet-Basic 及其变体)的方法表现都明显更好。这强调了学习解码器进行分割的必要性。其他作者在比较 FCN 与 SegNet 类型解码技术时收集的实验证据也支持了这一点 [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-NoAddition 的解码器最为相似,尽管 SegNet 的解码器更大。两者都学会了生成密集特征图,要么直接通过学习执行反卷积(如 FCNBasic-NoAddition 中那样),要么先进行上采样,然后与经过训练的解码器滤波器进行卷积。SegNet-Basic 的性能更优越,部分原因是其解码器尺寸更大。与 FCN-Basic 相比,FCN-Basic-NoAddition 的准确率也较低。这表明,为了获得更好的性能,捕获编码器特征图中存在的信息至关重要。特别要注意这两个变体之间的 BF 测量值大幅下降。这也可以解释 SegNet-Basic 优于 FCNBasic-NoAddition 的部分原因。
FCN-Basic-NoAddition-NoDimReduction 模型的大小略大于 SegNet-Basic,因为最终的编码器特征图未压缩以匹配 K 类的数量。这使得它在模型大小方面具有公平的比较。此 FCN 变体在测试中的表现比 SegNet-Basic 差,而且在相同数量的训练时期内,其训练准确率也较低。这表明使用更大的解码器是不够的,但捕获编码器特征图信息以更好地学习也很重要,特别是细粒度轮廓信息(注意 BF 测量的下降)。这里也很有趣地看到,与更大的模型(如 FCN-Basic-NoDimReduction)相比,SegNet-Basic 具有具有竞争力的训练准确率。
FCN-BasicNoAddition 和 SegNet-Basic-SingleChannelDecoder 之间的另一个有趣比较表明,使用最大池化索引进行上采样和使用整体更大的解码器可以获得更好的性能。这也证明了 SegNet 是一种很好的分割架构,特别是当需要在存储成本、准确性和推理时间之间找到一个折衷点时。在最佳情况下,当内存和推理时间都不受限制时,较大的模型(例如 FCN-Basic-NoDimReduction 和 SegNet-EncoderAddition)都比其他变体更准确。特别是,在 FCN-Basic 模型中放弃降维可以在具有高 BF 分数的 FCN-Basic 变体中实现最佳性能。这再次强调了分割架构中内存和准确性之间的权衡。
表 1 的最后两列显示了未使用类平衡(自然频率)时的结果。在这里,我们可以观察到,如果不加权,所有变体的结果都较差,特别是类平均准确度和 mIoU 指标。由于场景的大部分由天空、道路和建筑物像素主导,因此不加权时全局准确度最高。除此之外,从变体比较分析中得出的所有推论也适用于自然频率平衡,包括 BF 测量的趋势。SegNet-Basic 的表现与 FCNBasic 一样好,并且优于更大的 FCN-Basic-NoAdditionNoDimReduction。更大但效率较低的模型 FCN-Basic-NoDimReduction 和 SegNet-EncoderAddition 比其他变体表现更好。
现在我们可以用以下几点来总结上述分析。
当编码器特征图完整存储时,可实现最佳性能。这最明显地反映在语义轮廓描绘度量 (BF) 中。 当推理期间的内存受到限制时,可以存储压缩形式的编码器特征图(降维、最大池化索引),并与适当的解码器(例如 SegNet 类型)一起使用以提高性能。 更大的解码器可提高给定编码器网络的性能。
4.基准测试
我们使用 Caffe 实现量化了 SegNet 在两个场景分割基准上的性能。3 第一个任务是道路场景分割,这是目前各种自动驾驶相关问题的实际关注点。第二个任务是室内场景分割,这是几个增强现实 (AR) 应用程序的直接关注点。两个任务的输入 RGB 图像均为 。
我们对 SegNet 进行了基准测试,并将其与其他几种广为采用的深度分割架构进行了比较,例如 FCN [2]、DeepLab-LargFOV [3] 和 DeconvNet [4]。我们的目标是了解这些架构在相同数据集上进行端到端训练时的性能。为了实现端到端训练,我们在每个卷积层后添加了批量归一化 [50] 层。对于 DeepLab-LargeFOV,我们将最大池化 3 步长更改为 1,以实现 的最终预测分辨率。我们将 DeconvNet 的全连接层中的特征大小限制为 1,024,以便能够使用与其他模型相同的批量大小进行训练。请注意,DeepLabLargeFOV [3] 的作者也报告说,通过减小全连接层的大小,性能几乎没有损失。
为了执行受控基准测试,我们使用了相同的 SGD 求解器 [16],其固定学习率为 ,动量为 0.9。对数据集进行了超过 100 个epoch的优化,直到没有观察到进一步的性能提升。在所有模型中,在更深的卷积层末尾添加了 0.5 的 Dropout 以防止过度拟合。对于具有 11 个类别的道路场景,我们使用了 5 的小批量大小,对于具有 37 个类别的室内场景,我们使用了 4 的小批量大小。
4.1 道路场景分割
有许多道路场景数据集可用于语义解析 [21]、[25]、[59]、[60]。其中,我们选择使用 CamVid 数据集 [21] 对 SegNet 进行基准测试,因为它包含视频序列。这使我们能够将我们提出的架构与使用运动和结构 [27]、[28]、[29] 和视频片段 [32] 的架构进行比较。我们还结合了 [21]、[25]、[59]、[60] 形成 3433 幅图像的集合,以训练 SegNet 进行额外的基准测试。对于道路场景分割的网络演示(见脚注 3),我们将 CamVid 测试集包含到这个更大的数据集中。在这里,我们想指出,已经针对 SegNet 和本文中使用的其他竞争架构执行了另一个最近的独立道路场景分割基准测试[61]。然而,基准测试不受控制,这意味着每个架构都使用单独的配方进行训练,输入分辨率各不相同,有时还包含验证集。因此,我们相信我们更受控制的基准测试可以用来补充他们的努力。
图 4 显示了 SegNet 预测与其他深度架构的定性比较。定性结果表明,所提出的架构能够在道路场景中分割较小的类别,同时对整个场景进行平滑分割。事实上,在受控的基准设置下,SegNet 与一些较大的模型相比表现出卓越的性能。DeepLab-LargeFOV 是最有效的模型,使用 CRF 后处理可以产生具有竞争力的结果,尽管较小的类别会丢失。具有学习反卷积的 FCN 明显优于固定双线性上采样。DeconvNet 是最大的模型,也是训练效率最低的模型。它的预测不会保留小类别。
我们还使用此基准首先将 SegNet 与几种非深度学习方法进行比较,包括随机森林 [26]、Boosting [26]、[28] 以及基于 CRF 的方法 [29]。这样做是为了让用户了解与基于传统特征工程的技术相比,使用深度网络所实现的准确度的提高。
表 2 中的结果表明,与使用 CRF 的方法相比,SegNet-Basic、SegNet 获得了有竞争力的结果。这表明深度架构能够从输入图像中提取有意义的特征并将其映射到准确且平滑的类段标签。这里最有趣的结果是,当使用通过结合 [21]、[25]、[59]、[60] 获得的大型训练数据集来训练 SegNet 时,类平均值和 mIOU 指标的性能得到了很大的提升。相应地,SegNet 的定性结果(见图 4)明显优于其他方法。它能够很好地分割小类和大类。我们在此指出,我们在训练 SegNet-Basic 和 SegNet 时使用了中位数频率类平衡 [49]。此外,分割的整体平滑质量与通常使用 CRF 后处理获得的质量非常相似。虽然使用较大的训练集可以改善结果这一事实并不令人惊讶,但使用预训练编码器网络和此训练集获得的百分比改进表明该架构可以部署用于实际应用。我们对来自互联网的城市和高速公路图像进行的随机测试(见图 1)表明,SegNet 可以吸收大量训练集并很好地推广到未见过的图像。它还表明,当提供足够数量的训练数据时,先验(CRF)的贡献可以减少。
在表 3 中,我们将 SegNet 的性能与现在广泛采用的用于分割的完全卷积架构进行了比较。与表 2 中的实验相比,我们没有使用任何类平衡来训练包括 SegNet 在内的任何深度架构。这是因为我们发现很难使用中值频率平衡来训练更大的模型,例如 DeconvNet。我们在 40 K、80 K 和 > 80 K 次迭代下对性能进行了基准测试,考虑到小批量大小和训练集大小,这大约对应于 50、100 和 > 100 个时期。对于最后一个测试点,我们还报告了最大迭代次数(这里至少 150 个 epoch),超过该次数,我们观察到没有准确度改进或过度拟合。我们在训练阶段的三个阶段报告指标,以揭示指标如何随训练时间而变化,特别是对于较大的网络。这对于了解在与准确度增加相对应的情况下是否有必要增加训练时间非常重要。还请注意,对于每次评估,我们都对数据集进行了完整的运行,以获得批量标准统计数据,然后使用该统计数据评估测试模型。在大型训练集上执行这些评估的成本很高,因此我们仅报告训练阶段三个时间点的指标。
从表 3 中我们立即看到,与其他模型相比,SegNet、DeconvNet 在所有指标中都取得了最高分。DeconvNet 具有更高的边界描绘精度,但与 DeconvNet 相比,SegNet 的效率要高得多。这可以从表 6 中的计算统计数据中看出。具有完全连接层(变成卷积层)的 FCN、DeconvNet 训练速度要慢得多,并且与 SegNet 相比具有相当或更高的前向-后向传递时间。这里我们还注意到,过度拟合在训练这些较大的模型时不是问题,因为在与 SegNet 相当的迭代中,它们的指标呈现出上升趋势。
对于 FCN 模型,学习反卷积层而不是用双线性插值权重固定它们可以提高性能,尤其是 BF 分数。它还可以在更短的时间内实现更高的指标。这一事实与我们在第 3.3 节中的先前分析一致。
令人惊讶的是,DeepLab-LargeFOV 经过训练以 45 60 的分辨率预测标签,其性能极具竞争力,因为它是参数化方面最小的模型,并且训练时间最快(如表 6 所示)。然而,边界精度较差,其他架构也有同样的问题。DeconvNet 的 BF 得分在训练时间很长时高于其他网络。根据我们在第 3.3 节中的分析,以及它共享 SegNet 类型架构的事实。
在 DeepLab-LargeFOV-denseCRF 的最后一个时间点,我们可以看到密集 CRF [62] 后处理的影响。全局和 mIoU 均有所改善,但类平均值有所降低。然而,BF 分数获得了很大的改进。请注意,由于没有可用的验证集,因此密集 CRF 超参数是通过在训练集子集上进行昂贵的网格搜索过程获得的。
4.2 SUN RGB-D室内场景
SUN RGB-D [22] 是一个非常具有挑战性的大型室内场景数据集,包含 5,285 张训练图像和 5,050 张测试图像。这些图像由不同的传感器捕获,因此具有不同的分辨率。任务是分割 37 个室内场景类别,包括墙壁、地板、天花板、桌子、椅子、沙发等。由于对象类别具有各种形状、大小和不同的姿势,因此这项任务很难完成。由于每个测试图像中通常存在许多不同的类别,因此经常出现部分遮挡。这些因素使其成为最困难的分割挑战之一。我们仅使用 RGB 模态进行训练和测试。使用深度模态将需要修改/重新设计架构 [2]。此外,当前相机的深度图像质量需要仔细的后处理来填补缺失的测量值。它们可能还需要使用多帧融合来稳健地提取分割特征。因此,我们认为使用深度进行分割值得开展一项单独的工作,但这不在本文的讨论范围内。我们还注意到,早期的基准数据集 NYUv2 [24] 也包含在该数据集中。
道路场景图像的变化有限,无论是感兴趣的类别还是其空间排列。当从移动车辆上拍摄时,摄像机位置几乎总是与路面平行,从而限制了视点的变化。这使得深度网络更容易学习对它们进行稳健的分割。相比之下,室内场景的图像更为复杂,因为视点可能会有很大变化,并且场景中存在的类别数量及其空间排列的规律性都较低。另一个困难是由场景中对象类别的大小差异很大造成的。图 5 显示了最近的 SUN RGB-D 数据集 [22] 中的一些测试样本。我们观察到一些场景中只有少数大类,而另一些场景中则杂乱无章(底行和右行)。室内场景的外观(纹理和形状)也可能有很大差异。因此,我们认为这是计算机视觉中分割架构和方法面临的最困难的挑战。其他挑战,如 Pascal VOC12 [20] 显著物体分割,已经占用了研究人员更多的时间[65],但我们认为室内场景分割更具挑战性,并且在 AR 和机器人等领域有更多实际应用。为了鼓励在这个方向上进行更多的研究,我们在大型 SUN RGB-D 数据集上比较了众所周知的深度架构。
图 5 显示了 SegNet 对卧室、客厅、实验室、会议室、浴室等不同类型的室内场景样本的定性结果。我们看到,当不同视角下的类别大小较大时,SegNet 会获得合理的预测。这特别有趣,因为输入模态只有 RGB。RGB 图像还可用于分割较薄的结构,例如椅子和桌子的腿、灯,而使用当前可用的传感器的深度图像很难实现。这可以从图 5 中 SegNet、DeconvNet 的结果中看出。它还可用于分割装饰性物体,例如墙上的绘画,以用于 AR 任务。然而,与室外场景相比,分割质量显然更嘈杂。当杂乱增加时,质量会显著下降(参见中间一列的结果样本)。
表 4 中的定量结果表明,所有深度架构都具有较低的 mIoU 和边界指标。全局和类平均值(与 mIou 相关性良好)也很小。SegNet 在 G、C、BF 指标方面优于所有其他方法,并且 mIoU 略低于 DeepLab-LargeFOV。作为一个独立的实验,我们使用中频类平衡 [66] 训练了 SegNet,指标更高(见表 4),这与我们在第 3.3 节中的分析一致。有趣的是,使用基于网格搜索的密集 CRF 最佳超参数使 DeepLab-LargeFOV-denseCRF 的所有 BF 分数指标都恶化了。也许可以找到更优化的设置,但考虑到密集 CRF 的推理时间很长,网格搜索过程的成本太高。
整体表现不佳的一个原因是此分割任务中的类别数量过多,其中许多类别仅占图像的一小部分并且很少出现。表 5 中报告的准确度清楚地表明,较大的类别具有合理的准确度,较小的类别具有较低的准确度。这可以通过更大的数据集和类分布感知训练技术来改进。表现不佳的另一个原因可能是这些深度架构(均基于 VGG 架构)无法在室内场景中产生较大的变化。我们对此的推测是基于这样一个事实:最小的模型 DeepLab-LargeFOV 在 mIoU 方面产生了最佳准确度,相比之下,DeconvNet、FCN 中更大的参数化即使经过更长的训练(DeconvNet)也没有提高性能。这表明所有架构的性能不佳可能有一个共同的原因。需要更多受控数据集 [67] 来验证这一假设。
5.讨论和未来工作
由于拥有大量数据集以及不断扩展的模型深度和参数化,深度学习模型通常取得了越来越大的成功。然而,在实践中,在从大量模型中选择模型时,训练和测试期间的内存和计算时间等因素是需要考虑的重要因素。训练时间成为一个重要的考虑因素,特别是当性能提升与增加的训练时间不相称时,如我们的实验所示。测试时间内存和计算负载对于在专用嵌入式设备上部署模型非常重要,例如在 AR 应用程序中。从整体效率的角度来看,我们觉得对于道路场景理解和 AR 等实时应用的更小、内存更多、时间效率更高的模型的关注较少。这是 SegNet 提案背后的主要动机,它比其他竞争架构小得多、速度更快,但我们已经证明它对于道路场景理解等任务是有效的。
诸如 Pascal [20] 和 MSCOCO [41] 之类的分割挑战是对象分割挑战,其中任何测试图像中都存在少数类别。场景分割更具挑战性,因为室内场景变化性高,需要同时分割大量类别。室外和室内场景分割任务也更注重实际,面向当前的应用,例如自动驾驶、机器人和 AR。
我们选择用来对各种深度分割架构进行基准测试的指标(例如边界 F1 测量 (BF))是为了补充现有的更偏向区域精度的指标。从我们的实验和其他独立基准测试 [61] 中可以清楚地看出,从移动汽车上拍摄的室外场景图像更容易分割,深度架构表现稳健。我们希望我们的实验能够鼓励研究人员将注意力转向更具挑战性的室内场景分割任务。
在对不同参数化的不同深度架构进行基准测试时,我们必须做出的一个重要选择是训练它们的方式。许多此类架构都使用了大量支持技术和多阶段训练方法,以在数据集上获得高精度,但这使得很难收集有关它们在时间和内存限制下的真实性能的证据。相反,我们选择执行受控基准测试,其中我们使用批量标准化来实现使用相同求解器 (SGD) 的端到端训练。但是,我们注意到,这种方法不能完全解开模型与求解器 (优化) 在实现特定结果方面的影响。这主要是因为训练这些网络涉及不完善的梯度反向传播,并且优化是极大维度上的非凸问题。认识到这些缺点,我们希望这种受控分析能够补充其他基准测试 [61],并揭示不同知名架构所涉及的实际权衡。
未来,我们希望利用从分析中收集到的对分割架构的理解,为实时应用设计更高效的架构。我们还对评估深度分割架构预测的模型不确定性感兴趣[68],[69]。
6.结论
我们介绍了 SegNet,一种用于语义分割的深度卷积网络架构。SegNet 背后的主要动机是需要设计一种高效的架构来理解道路和室内场景,该架构在内存和计算时间方面都很高效。我们分析了 SegNet 并将其与其他重要变体进行了比较,以揭示设计分割架构所涉及的实际权衡,特别是训练时间、内存与准确性。那些完整存储编码器网络特征图的架构性能最佳,但在推理期间会消耗更多内存。另一方面,SegNet 效率更高,因为它只存储特征图的最大池化索引并在其解码器网络中使用它们来实现良好的性能。在大型和众所周知的数据集上,SegNet 表现出色,在道路场景理解方面取得了高分。深度分割架构的端到端学习是一个更艰巨的挑战,我们希望看到更多人关注这个重要问题。