原文链接:《SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation》
作者:Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla, Senior Member
提出了一种新颖实用的用于语义像素分割的深度全卷积神经网络结构SegNet。其核心的分割网络由一个编码器网络、一个对应的解码网络和一个像素级分类层组成。编码器网络的结构在拓扑上与VGG16网络中的13个卷积层相同。解码器网络的作用是将低分辨率编码器的特征映射到全输入分辨率的特征图,以进行像素级分类。SegNet的新颖之处在于解码器对其低分辨率输入特征映射进行上采样的方式。具体地说,解码器使用在对应编码器的最大池化步骤中计算的池索引来执行非线性上采样。
这就消除了学习向上采样的需要。上采样的地图是稀疏的,然后用可训练的卷积层卷积得到稠密的特征地图。我们将我们提出的结构与广泛采用的FCN以及著名的DeepLab LargeFOV,DeconvNet结构进行了比较。这种比较揭示了实现良好分割性能所涉及的内存与精度的权衡。
SegNet的主要针对场景理解应用。因此,它在被设计时,兼具在推理过程中在内存和计算时间方面的有效性。SegNet的可训练的参数量比其它的网络结构显著减少,并且它可以通过随机梯度下降算法进行端对端地训练。在道路场景和 SUN RGB-D 室内场景分割任务中,我们还执行了SegNet和其他架构的受控基准测试
。这些定量评估表明,与其他体系结构相比,SegNet在在推理过程中,具有时间和内存方面的良好性能。我们还提供了SegNet的Caffe实现和web演示,参见: http://mi.eng.cam.ac.uk/projects/segnet/
语义分割有着广泛的应用,从场景理解、推断目标间的支持关系到自动驾驶。早期依赖低水平视觉线索的方法已经被流行的机器学习算法所取代。特别是最近,深度学习在手写数字识别、语音、整幅图像分类和图像中目标检测方面取得了巨大成功。现在研究者们对语义像素级标记产生了浓厚的兴趣。然而,最近的一些方法尝试直接采用为类别预测而设计的深层架构来进行像素标记。结果虽然非常令人鼓舞,但似乎很粗糙。这主要是因为最大池和子采样降低了特征映射的分辨率。我们设计SegNet的动机是因为需要将低分辨率特征映射到输入分辨率,以便进行像素级分类。这种映射必须产生对精确边界定位有用的特征。
我们的架构SegNet是为像素级语义分割而设计的。它主要针对道路场景的理解应用,这些应用需要建模外观、形状以及理解不同类别(如道路和人行道)之间的空间关系。在典型的道路场景中,大多数像素属于道路、建筑物等大类,因此网络必须产生平滑的分割。尽管它们体积很小,SegNet还必须能够根据物体的形状来描绘物体。因此,在提取的图像表示中保留边界信息是非常重要的。从计算的角度来看,在推理过程中,网络在内存和计算时间上的有效性也是必须的。使用诸如随机梯度下降(SGD)之类的有效权重更新技术进行端到端训练,以联合优化网络中的所有权重,这是一个额外的好处,因为它更容易重复。SegNet的设计源于满足这些标准的需要。
SegNet中的编码器网络在拓扑上与VGG16中的卷积层相同。我们删除了VGG16的完全连接层,这使得SegNet编码器网络比许多其他最近的体系结构明显更小并且更易于训练。 SegNet的关键组件是解码器网络,该网络由与每个编码器相对应的一个解码器按层次构成。其中,合适的解码器使用从相应编码器接收的最大池索引来对其输入特征图进行非线性上采样。这个想法的灵感来自为无监督特征学习设计的体系结构。在解码过程中重用最大池索引有一些实际的优势:(i)改善边界描绘;(ii)减少端到端训练的参数数量;(iii)这种上采样形式可以合并到任何编码器-解码器体系结构中,只需稍作修改。
本文的主要贡献之一是分析了SegNet解码技术和广泛应用的全卷积网络(FCN)[2]。这是为了传达在设计分段架构时所涉及的实际权衡。最新的深度分割体系结构都有相同的编码网络,即VGG16,但在解码网络的形式、训练和推理方面有所不同。另一个共同的特点是它们的可训练参数约为数亿,因此在执行端到端训练时遇到困难[4]。训练这些网络的困难导致了多阶段训练[2],将网络附加到预先训练的体系结构(如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中的链接)。图1显示了一些示例结果,这些结果是根据Google的随机采样道路场景图像和SUN RGB-D数据集[23]的室内测试场景生成的。
论文的其余部分安排如下。第2部分,回顾了近期的相关文献;在第三部分,描述了SegNet的网络结构和分析;在第四部分,评估了SegNet在室内和室外场景数据集上的性能;在第五部分,是关于我们的方法的一般性讨论,并且指向了未来的工作;在第六部分,对文章进行了总结。
语义像素级分割是一个很火的研究课题,受到了具有挑战性的数据集的推动。在深层网络出现之前,性能最好的方法大多依赖于手工设计的独立像素分类特征。通常,一个patch被输入到分类器中。例如,使用随机森林和Boosting去预测中心像素的类别概率。CamVid道路场景理解测试[22]探索了基于外观[27]或SfM和外观[28]、[29]、[30]的特征。这些来自分类器的每像素噪声预测(通常称为一元项)然后通过使用成对或更高阶CRF[29]、[30]进行平滑处理,以提高精度。最近的一些方法试图通过预测补丁中所有像素的标签来生成高质量的一元,而不是只预测中心像素。这改善了基于随机林的一元数的结果[31],但细结构类的分类很差。从CamVid视频计算的密集深度图也被用作使用随机森林分类的输入[32]。另一种方法主张使用流行的手工设计特征和时空超级像素化相结合来获得更高的精确度[33]。CamVid测试的最佳执行技术[30]通过在CRF框架中结合目标检测输出和分类器预测来解决标签频率之间的不平衡。所有这些技术的结果表明需要改进特征来进行分类。
自纽约大学数据集发布以来,室内RGBD像素语义分割也得到了广泛的应用[25]。这个数据集显示了深度通道对改进分割的有用性。他们的方法使用RGB-SIFT、深度SIFT和像素位置等特征作为神经网络分类器的输入来预测像素一元。然后使用CRF平滑噪声。通过使用更丰富的特征集(包括LBP和区域分割)进行改进,以获得更高的精确度[34],然后使用CRF。在最近的研究[25]中,类分割和支持关系都是使用RGB和基于深度的线索的组合来推断的。另一种方法侧重于实时联合重建和语义分割,其中使用随机森林作为分类器[35]。Gupta等人,[36]在进行类别分割之前,使用边界检测和分层分组。所有这些方法的共同特点是使用手工设计的特征对RGB或RGBD图像进行分类。
深卷积神经网络在对象分类中的成功,使得研究者们开发其用于结构化预测问题(如分割)的特征学习能力。也有人试图将设计用于对象分类的网络应用于分割,特别是通过复制块中最深层的特征来匹配图像尺寸[7]、[37]、[38]、[39]。然而,由此产生的分类是块状的[38]。另一种使用递归神经网络的方法[40]合并了几个低分辨率预测,以创建输入图像分辨率预测。这些技术已经比手工设计的功能有所改进[7],但它们描绘边界的能力很差。
专门为分割而设计的较新的deep架构[2]、[4]、[10]、[13]、[18]通过学习解码或将低分辨率图像表示映射到像素级预测,提高了最先进的技术水平。在所有这些结构中产生这些低分辨率表示的编码器网络是VGG16分类网络[1],它有13个卷积层和3个完全连接的层。此编码器网络权重通常在大型ImageNet对象分类数据集上预先训练[。解码器网络在这些结构之间变化,是负责为每个像素生成多维特征以进行分类。
全卷积网络(FCN)体系结构中的每个解码器学习向上采样其输入特征图,并将其与相应的编码器特征图组合以产生到下一个解码器的输入。在SegNet的结构中,编码网络中有大量可训练参数,占134M,解码网络参数量很少,仅占0.5M。该网络的总体规模很大,因此很难对相关任务进行端到端的训练。因此,作者采用了阶段性的训练过程。这里,解码器网络中的每个解码器被逐步地添加到现有的训练网络中。直到没有观察到性能进一步提高,网络才会增长。这种增长在三个解码器之后停止,因此忽略高分辨率特征映射肯定会导致边缘信息的丢失[4]。除了与训练相关的问题外,在解码器中重用编码器特征映射的需要使得测试时间占用大量内存。我们更详细地研究这个网络(解码网络),因为它是其他最新架构的核心。
通过在FCN中加入一个循环神经网络(RNN)[10],并在大数据集上对其进行微调,进一步提高了FCN的预测性能[21]、[42]。RNN层在利用FCN的特征表示能力的同时,模仿了CRF的清晰边界描绘能力,与FCN-8相比,RNN层有了显著的改进,但也表明,当使用更多的训练数据来训练FCN-8时,这种差异会减小。当CRF-RNN与诸如FCN8这样的体系结构进行联合训练时,它的主要优势就显现出来了。联合训练有帮助的事实也在最近的其他结果中有所体现[43],[44]。有趣的是,反卷积网络[4]的性能明显优于FCN,尽管代价是更复杂的训练和推理。然而,这提出了一个问题,即随着核心前馈分段引擎的改进,CRF-RNN的感知优势是否会降低。在任何情况下,CRF-RNN网络可以附加到任何深度分段架构中,包括SegNet。
多尺度的深层结构也在被研究[13],[44]。它们有两种风格,(i)使用一些比例的输入图像和相应的深层特征提取网络,以及(ii)结合单一深层结构不同层的特征地图[45][11]。通常的想法是使用在多个尺度上提取的特征来提供局部和全局上下文[46],并且早期编码层的使用特征映射保留了更多高频细节,从而导致更清晰的类边界。其中一些架构由于其参数大小而难以训练[13]。因此,在数据扩充的同时采用了多阶段的训练过程。对于多个卷积路径进行特征提取,这种推断也很昂贵。其他人[44]在他们的多尺度网络中附加一个CRF,并联合训练他们。但是,这些在测试时不是前馈的,需要优化以确定映射标签。
最近提出的一些用于分割的深层结构在推理时间[4]、[3]、[18]上没有前馈。它们需要通过CRF[44]、[43]进行地图推理,或借助区域建议[4]进行推理。我们认为,使用CRF获得的感知性能提高是由于其核心前馈分割引擎缺乏良好的解码技术。另一方面,SegNet使用解码器来获取精确像素分类的特征。
最近提出的反卷积网络[4]及其半监督变体解耦网络[18]使用编码器特征映射(池索引)的最大位置在解码器网络中执行非线性上采样。这些架构的作者,独立于SegNet(首先提交给 VCPR2015),提出了在解码网络中解码的思想。然而,他们的编码器网络由VGG-16网络的完全连接层组成,VGG-16网络包含了整个网络约90%的参数。这使得培训他们的网络变得非常困难,因此需要额外的帮助,例如利用区域建议来进行训练。此外,在推理过程中使用了这些建议,这大大增加了推理时间。从基准测试的角度来看,这也使得在没有其他辅助工具的情况下很难评估其体系结构(编解码器网络)的性能。在这项工作中,我们丢弃了VGG16编码器网络的完全连接层,这使得我们能够使用SGD优化的相关训练集来训练网络。另一个最近的方法[3]显示了在不牺牲性能的情况下显著减少参数数量、减少内存消耗和改进推理时间的好处。
我们的研究灵感来自Ranzato等人提出的无监督特征学习架构。关键学习模块是一个编解码网络。编码器由滤波器组卷积、单元非线性、最大池和子采样组成。对于每个样本,在池中计算的最大位置的索引被存储并传递给解码器。解码器使用存储的池索引对特征映射进行上采样。它使用一个可训练的解码器滤波器组卷积这个上采样的映射来重建输入图像。该体系结构用于无监督的分类前训练。有点类似的解码技术用于可视化训练的卷积网络[47],用于分类。兰扎托等人的结构,主要研究基于小输入块的分层特征学习。Kavukcuoglu等人对此进行了扩展。[48]接受完整的图像大小作为输入,学习分层编码器。然而,这两种方法都没有尝试使用深度编解码器网络进行无监督的特征训练,因为它们在每次编码器训练后都会丢弃解码器。在这里,SegNet不同于这些架构,因为深度编解码器网络是为监督学习任务联合训练的,因此解码器在测试时是网络的组成部分。
使用深度网络进行像素级预测的其他应用包括图像超分辨率[49]和单个图像的深度图预测[50]。[50]中的作者讨论了学习从低分辨率特征地图上采样的必要性,这是本文的中心主题。
SegNet有一个编码器网络和一个相应的解码器网络,然后是最后的像素分类层。该架构如图3所示。编码器网络由13个卷积层组成,对应于VGG16网络[1]中用于对象分类的前13个卷积层。因此,我们可以从训练用于大数据集分类的权重初始化训练过程[41]。我们还可以丢弃完全连接的层,以便在最深的编码器输出处保留更高分辨率的特征映射。与其他最新架构相比,这也显著减少了SegNet编码器网络中的参数数量(从134M减少到14.7M)[2],[4](请参阅。表6)。每个编码器层具有对应的解码器层,因此解码器网络具有13层。最终的解码器输出被输入到一个多类软最大分类器,以产生每个像素独立的类概率。
编码器网络中的每个编码器与滤波器组进行卷积以产生一组特征映射。然后批量标准化[51],[52])。然后采用单元整流线性非线性(ReLU)max(0,x)。然后,使用2×2窗口和步长2(非重叠窗口)执行最大池化,结果输出以因子2进行子采样。最大池用于在输入图像中实现小空间位移的平移不变性。子采样会为特征映射中的每个像素生成一个大的输入图像上下文(空间窗口)。当多层最大池和子采样可以获得更好的鲁棒分类的平移不变性时,相应地,特征映射的空间分辨率也会损失。越来越有损(边界细节)的图像表示不利于边界划分至关重要的分割。因此,在执行子采样之前,有必要在编码器特征映射中捕获并存储边界信息。如果推理过程中的内存不受限制,那么所有的编码器特征映射(子采样后)都可以被存储。在实际应用中通常不是这样,因此我们提出了一种更有效的方法来存储这些信息。它只涉及存储最大池索引,即每个池窗口中最大特征值的位置被存储在每个编码器特征映射中。原则上,对于每个2×2池窗口,这可以使用2位来完成,因此与以浮点精度存储特征映射相比,存储效率更高。正如我们稍后在这项工作中展示的,5这种较低的内存存储会导致精度的轻微损失,但仍然适用于实际应用。
我们在这里补充说,另外两种架构,DeconvNet[53]和U-Net[16]与SegNet共享一个类似的架构,但有些不同。DevNet具有更大的参数化,需要更多的计算资源,并且更难进行端到端的培训(表6),这主要是由于使用了完全连接的层(尽管是以卷积的方式),我们在后面的第节中报告了与DevNet的一些比较。
与SegNet相比,U-Net[16](为医学成像界提出)不重用池索引,而是将整个特征映射(以更多内存为代价)传输到相应的解码器,并将其连接到上采样(通过反褶积)解码器特征图。U-Net中没有VGGNet架构中的conv5和max pool 5块。另一方面,SegNet使用来自VGG的所有预训练卷积层权重作为预训练权重。
许多分段体系结构[2]、[3]、[4]共享相同的编码器网络,它们只在解码器网络的形式上有所不同。其中,我们选择SegNet解码技术与广泛使用的全卷积网络(FCN)解码技术进行比较[2],[10]。
为了分析SegNet并将其性能与FCN(译码器变体)进行比较,我们使用了一个更小版本的SegNet,称为SegNet-Basic,它有4个编码器和4个解码器。SegNet Basic 中的所有编码器执行最大池和子采样,相应的解码器使用接收到的最大池索引对其输入进行上采样。在编码器和解码器网络中,在每个卷积层之后都使用批标准化。卷积后不使用任何偏差,解码器网络中不存在ReLU非线性。此外,在所有编码器和解码器层上选择7×7的恒定内核大小以提供用于平滑标记的宽上下文,即,可以将最深层特征映射(层4)中的像素追溯到106×106像素的输入图像中的上下文窗口。这个小尺寸的SegNet Basic允许我们探索许多不同的变体(解码器),并在合理的时间内训练它们。同样地,我们创建了FCN Basic,一个FCN的可比版本,用于我们分析使用相同编码器网络的SegNet,但是FCN解码技术用在了所有的解码器中,如图3所示。
图3的左侧是SegNet(也是SegNet Basic)使用的解码技术,其中上采样步骤不涉及学习。然而,上采样图被卷积成可训练的多通道解码器卷积,以加密其稀疏输入。每个解码器卷积具有与上采样特征图数相同的通道数。较小的变体是解码器卷积是单通道的,即它们只卷积相应的上采样特征图。这种变体(segnbasic单通道解码器)显著减少了可训练参数的数量和推理时间。
图3的右侧是FCN(也是FCN Basic)解码技术。FCN模型的重要设计元素是编码器特征图的降维步骤。这压缩编码器特征图,然后在相应的解码器中使用。编码器特征图(例如64个通道)的维数降维是通过用1×1×64×K可训练滤波器卷积来实现的,其中K是类的数目。压缩后的K通道最终编码器层特征映射是解码器网络的输入。在该网络的译码器中,上采样采用固定或可训练的多通道上采样核进行逆卷积。我们将内核大小设置为8×8。这种上采样方式也称为反卷积。注意,相比之下,SegNet使用可训练解码器卷积的多通道卷积是在上采样到加密特征图之后执行的。FCN中的上采样特征图有K个通道。然后将其逐元素添加到相应的分辨率编码器特征图中,以生成输出解码器特征图。上采样核使用双线性插值权进行初始化[2]。
FCN解码器模型要求在推理过程中存储编码器特征图。对于嵌入式应用程序,这可能是内存密集型的;例如,以180×240分辨率以32位浮点精度存储FCN Basic第一层的64个特征图需要11MB。这可以通过对11个特征图进行降维来缩小,这需要大约1.9MB的存储空间。另一方面,SegNet对池索引的存储成本几乎可以忽略不计(如果每2×2个池窗口使用2位存储,则为0.17MB)。我们还可以创建一个FCN基本模型的变体,该模型放弃编码器特征映射添加步骤,只学习上采样核(FCN Basic NoAddition)。
除了上述变量外,我们研究了使用固定双线性插值权重的上采样,因此上采样(双线性插值)不需要学习。在另一个极端,我们可以将每层的64个编码器特征图添加到来自SegNet解码器的相应输出特征图,以创建SegNet的内存密集型变体。这里使用了上采样的两个池索引,然后使用卷积步骤来加密其稀疏输入。然后在相应的编码器特征图中添加元素,以产生解码器输出。
另一个和更占用内存的FCN基本变量(FCN Basic NoDimReduction)是没有针对编码器特征图执行维度缩减的情况。这意味着与FCN Basic不同,最终编码器特征图在传递到解码器网络之前不会压缩到K个通道。因此,每个解码器末端的通道数与相应的编码器相同(即64)。
我们还尝试了其他通用的变体,其中特征图只是通过复制进行上采样,或者通过固定矩阵的索引进行上采样。与上述变体相比,它们的表现相当糟糕。在编码器网络中没有最大池和子采样的变量(解码器是冗余的)消耗更多的内存,需要更长的时间来收敛,并且性能较差。最后,请注意,为了鼓励复制我们的结果,我们发布了所有变体的Caffe实现。
我们使用CamVid道路场景数据集来测试解码器变体的性能。这个数据集很小,由367个训练图像和233个测试RGB图像(白天和黄昏场景)组成,分辨率为360×480。我们面临的挑战是分割11个类别,如道路、建筑、汽车、行人、标志、电线杆、人行道等。我们对RGB输入执行局部对比度标准化[54]。
编码器和解码器的权重都是使用何凯明等人描述的技术初始化的。[55]。为了训练所有变量,我们使用随机梯度下降(SGD),固定学习率为0.1,动量为0.9[17],使用SegNet Basic的Caffe实现[56]。我们训练这个模型直到损失值收敛。在每个epochs之前,训练集被打乱,然后按顺序挑选每个小批次(12幅图像),从而确保每个图像在一个epochs中只使用一次。我们选择在验证数据集上性能最高的模型。
我们用交叉熵损失作为训练网络的目标函数。在一个小批量中,所有像素的损失总和。当训练集中每个类的像素数量有很大变化时(例如道路、天空和建筑物像素主导CamVid数据集),则需要根据真实类别对损失进行不同的加权。这被称为阶级平衡。我们使用中值频率平衡[13],其中在损失函数中分配给一个类的权重是在整个训练集上计算的类频率的中值除以类频率的比率。这意味着训练集中较大的类的权重小于1,最小类的权重最高。我们还试验了在没有类平衡或等效使用自然频率平衡的情况下训练不同的变体。
为了比较不同解码器变体的量化性能,我们使用三种常用的性能度量:全局精度(G),它测量在数据集中正确分类的像素7的百分比,类平均精度(C)是所有类的预测精度和所有类的平均交集(mIoU)的平均值,如Pascal VOC12挑战[21]所用。mIoU度量是一个比类平均精度更严格的度量,因为它会惩罚假阳性预测。然而,mIoU度量并没有直接针对类平衡交叉熵损失进行优化。
mIoU指标(又称Jacard指数)最常用于基准测试。然而,Csurka等人表明该指标并不总是符合人类对高质量细分的定性判断(等级)。他们举例说明mIoU倾向于区域平滑,而不评估边界精度,这一点最近也被FCN的作者提到[58]。因此,他们建议用基于伯克利轮廓匹配分数的边界度量来补充mIoU度量,该分数通常用于评估无监督图像分割质量[59]。Csurka等人简单地将其扩展到语义分割,并表明与mIoU度量结合使用的语义轮廓精度度量更符合人类对分割输出的排序。
计算语义轮廓分数的关键思想是评估F1度量值[59],其中包括计算给定像素容差距离的预测值和基本真实类边界之间的精确度和召回值。我们使用图像对角线的0.75%作为公差距离。对存在于地面真实性测试图像中的每个类的F1度量值进行平均,以生成图像F1度量值。然后计算整个测试集的平均值,用图像F1测量值的平均值表示边界F1测度值(BF)。
我们在CamVid验证集上每1000次优化迭代后测试每个架构变量,直到训练损失收敛。对于12个小批量训练,这相当于在训练集中大约每33个时期(通过)进行一次测试。我们选择在验证集的评估中全局精度最高的迭代。在这一点上,我们报告了所有三种性能测量方法。虽然我们在训练变体时使用了类平衡,但是为了获得整体平滑的分割结果,获得高的全局精度仍然很重要。另一个原因是,分段对自动驾驶的贡献主要是划分道路、建筑物、人行道、天空等类别。这些类控制着图像中的大多数像素,高全局精度对应于这些重要类的良好分割。我们还观察到,当类平均值最高时报告数值性能通常对应于低全局精度,这表明感知噪声分割输出。
在表1中,我们报告了我们分析的数值结果。给出了可训练参数的大小以及最大池化和子采样后的最高分辨率的特征映射或共享索引存储内存,即第一层特征映射的存储空间。我们用我们的Caffe实现展示了一次正向通过的平均时间,在NVIDIA Titan GPU上使用cudnn_v3加速的360×480输入,平均超过50次测量。我们注意到,SegNet变体中的上采样层没有使用cuDNN加速度进行优化。我们展示了在所选迭代中所有变量的测试和训练的结果。结果也被列为表格,没有阶级平衡(自然频率)的训练和测试精度。下面我们用类平衡分析结果。
从表1可以看出,基于双线性插值的上采样不需要任何学习,在所有精度度量的基础上表现最差。所有其他方法,无论是使用上采样的学习(FCN基本和变量)还是上采样后的学习解码器滤波器(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的解码器更大。这两种方法都可以学习生成密集的特征映射,或者直接通过学习像FCN基本无加法那样执行反褶积,或者通过首先上采样,然后使用经过训练的解码器滤波器进行卷积。SegNet Basic的性能优越,部分原因是它的解码器尺寸更大。与FCN-Basic相比,FCN-Basic算法的精度也较低。这表明,为了获得更好的性能,捕获编码器特征映射中的信息是至关重要的。特别要注意的是,这两个变量之间的BF测量值有很大的下降。这也可以部分解释SegNet Basic优于FCN BasicNoAddition的部分原因。
FCN Basic NoAddition NoDimReduction模型的大小略大于SegNet Basic,因为最终的编码器特征映射没有被压缩以匹配K类的数量。这使得它在模型大小方面是一个公平的比较。这种FCN变体在测试中的性能比segnetbasic差,但在相同的训练周期数下,其训练精度也较低。这说明使用较大的解码器是不够的,但是捕获编码器的特征映射信息以更好地学习,特别是细粒度的轮廓信息(注意BF度量的下降)。这里还有一个有趣的发现,与FCNBasic NoDimReduction等更大的模型相比,SegNet Basic具有竞争性的训练精度。
FCN BasicNoAddition和SegNet基本单通道解码器之间的另一个有趣的比较表明,使用最大池索引进行上采样和整体较大的解码器可以获得更好的性能。这也证明了SegNet是一种很好的分段体系结构,特别是当需要在存储成本、准确性和推理时间之间找到折衷点时。在最好的情况下,当内存和推理时间都不受约束时,更大的模型(如FCN Basic NoDimReduction和SegNet EncoderAddition)都比其他变量更精确。特别是,在FCN基本模型中丢弃维数降维将导致FCN基本变量中具有较高的BF分数的最佳性能。这再次强调了分割架构中内存和准确性之间的权衡。
1的最后两列显示了不使用类平衡时的结果(自然频率)。在这里,我们可以观察到,如果不加权,所有变量的结果都较差,特别是对于类平均精度和mIoU度量。由于场景的大部分由天空、道路和建筑像素控制,因此全局精度在没有权重的情况下是最高的。除此之外,所有从变量的比较分析中得出的结论也适用于自然频率平衡,包括BF测量的趋势。segnbasic的性能与FCN-Basic相当,并且优于更大的FCN-Basic NoAddition NoDimReduction。较大但效率较低的FCN-Basic-NoDimReduction和SegNet Encoder Addition模型的性能优于其他变体。
我们现在可以用以下几点概括上述分析。
1) 当编码器特征映射被完全存储时,性能最佳。这在语义轮廓描绘度量(BF)中反映得最清楚。
2) 当推理过程中的内存受到限制时,可以存储压缩形式的编码器特征映射(维数缩减、最大池索引)并与适当的解码器(例如SegNet类型)一起使用,以提高性能。
3) 较大的解码器可以提高给定编码器网络的性能。
我们使用我们的Caffe实现来量化SegNet在两个场景分割基准上的性能。第一个任务是道路场景分割,这是目前各种自主驾驶相关问题的现实兴趣所在。第二个任务是室内场景分割,这是一些增强现实(AR)应用的直接兴趣。两个任务的输入RGB图像均为360×480。
我们将SegNet与其他几种广泛采用的深度细分架构,如FCN[2]、DeepLabLargFOV[3]和DeconvNet[4]进行了对比。我们的目标是了解在相同的数据集上进行端到端训练时这些体系结构的性能。为了实现端到端的训练,我们在每个卷积层之后添加了批处理规范化[51]层。对于DeepLab LargeFOV,我们将max pooling 3步幅改为1,以获得45×60的最终预测分辨率。我们将devnet的完全连接层中的特征尺寸限制为1024个,以便能够使用与其他模型相同的批量大小进行训练。这里需要注意的是,DeepLab LargeFOV[3]的作者也报告说,通过减小完全连接层的大小,性能几乎没有损失。
许多道路场景数据集可用于语义分析[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明显优于固定双线性上采样的FCN。解网是最大的模型,也是训练效率最高的。它的预测没有保留小类。
许多道路场景数据集可用于语义分析[22]、[26]、[60]、[61]。其中,我们选择使用CamVid数据集[22]对SegNet进行基准测试,因为它包含视频序列。这使我们能够将我们提出的架构与那些使用运动和结构的架构[28]、[29]、[30]和视频片段[33]进行比较。我们还结合了[22]、[26]、[60]、[61]组成3433张图像的集合,以训练SegNet以获得额外的基准。对于道路场景分割的web演示(见脚注3),我们将CamVid测试集包含到这个更大的数据集中。在此,我们要指出的是,针对SegNet和本文中使用的其他竞争架构,我们已经对道路场景执行了另一个最新的独立分段基准测试[62]。然而,基准测试是不受控制的,这意味着每个体系结构都被训练成一个单独的配方,具有不同的输入分辨率,有时还包括一个验证集。因此,我们相信,我们更具控制力的基准可以用来补充他们的努力。
表2中的结果显示了SegNet Basic,与使用CRF的方法相比,SegNet获得了具有竞争力的结果。这显示了deep体系结构从输入图像中提取有意义的特征并将其映射到精确平滑的类段标签的能力。这里最有趣的结果是,当使用组合[22]、[26]、[60]、[61]获得的大型训练数据集用于训练SegNet时,类平均值和mIOU指标的性能有了很大提高。相应地,SegNet的定性结果(见图4)明显优于其他方法。它能够很好地分割小班和大班。我们在这里指出,我们在训练SegNet Basic和SegNet时使用了中值频率类平衡[50]。此外,有一个整体平滑的分割质量很像什么是典型的CRF后处理。虽然结果随着训练集的增加而提高这一事实并不令人惊讶,但使用预先训练的编码器网络和该训练集获得的百分比改善表明,该体系结构可以用于实际应用。我们对来自互联网的城市和公路图像的随机测试(见图1)表明,SegNet可以吸收大量的训练集,并很好地推广到不可见的图像。这也表明,当有足够的训练数据时,先验(CRF)的贡献可以减少。
在表3中,我们将SegNet的性能与现在广泛采用的完全卷积结构进行分段比较。与表2中的实验相比,我们没有使用任何类平衡来训练任何深层架构,包括SegNet。这是因为我们发现很难训练更大的模型,例如具有中值频率平衡的解Vnet。我们在40K、80K和>80K的迭代下对性能进行了基准测试,在给定小批量大小和训练集大小的情况下,大约对应于50100和>100个时期。对于最后一个测试点,我们还报告了最大迭代次数(这里至少有150个时代),超过了这个数量,我们没有观察到精度的提高,或者在过度拟合的情况下。我们报告了训练阶段的三个阶段的指标,以揭示这些指标如何随训练时间而变化,特别是对于较大的网络。这一点很重要,要了解在设定精度增加的情况下,额外的培训时间是否合理。还请注意,对于每个评估,我们对数据集执行了一次完整的运行,以获得批处理规范统计信息,然后使用此统计信息评估测试模型(请参见http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html代码)。在大型训练集上执行这些评估代价高昂,因此我们只在训练阶段的三个时间点报告指标。
从表3可以看出,与其他模型相比,SegNet、DevNet在所有指标中得分最高。DeconvNet具有更高的边界划分精度,但SegNet比devnet更有效。这可以从表6中的计算统计数据中看出。具有完全连接层(转变为卷积层)的DeconvNet训练速度要慢得多,并且具有与SegNet相当或更高的前向传播时间。这里我们还注意到,在训练这些较大的模型时,过度拟合并不是一个问题,因为在与SegNet的可比迭代中,它们的指标显示出一种增加的趋势。
对于FCN模型,学习反卷积层而不是用双线性插值权值来固定它们可以提高性能,尤其是BF分数。它还可以在更短的时间内实现更高的指标。这一事实与我们先前在3.3节的分析一致。
令人惊讶的是,DeepLab LargeFOV被训练成以45×60的分辨率预测标签,它在参数化方面是最小的模型,而且训练时间最快,如表6所示。但是,边界精度较差,这是其他体系结构所共有的。经过很长时间的训练,DeconvNet的BF得分高于其他网络。根据我们在第3.3节的分析,它与SegNet由相似类型的结构。
密集CRF[63]后处理的影响可以在DeepLab LargeFOV-denseCRF的最后一个时间点看到。全球和mIoU都有所改善,但班级平均水平有所下降。然而,BF分数有了很大的提高。在这里,由于在超密网格上没有一组昂贵的参数集,所以在这里通过一个密集的搜索过程获得了一个有效的CRF子集。
SUN RGB-D[23]是一个非常具有挑战性的大型室内场景数据集,有5285个训练图像和5050个测试图像。这些图像由不同的传感器捕捉,因此有不同的分辨率。该任务是分割37个室内场景类,包括墙、地板、天花板、桌子、椅子、沙发等。由于对象类具有不同的形状、大小和不同的姿势,这项任务变得困难。由于在每个测试图像中通常存在许多不同的类,因此经常出现部分遮挡。这些因素使这成为最难的细分挑战之一。我们只使用RGB模式进行训练和测试。使用深度模式将需要对架构进行修改/重新设计[2]。此外,当前相机的深度图像质量需要仔细的后处理,以填补缺失的测量值。它们也可能需要使用多个帧的融合来稳健地提取特征进行分割。因此,我们认为使用深度进行分割值得一个单独的工作,这不在本文的范围之内。我们还注意到,早期的基准数据集NYUv2[25]作为该数据集的一部分被包括在内。
道路场景图像的变化有限,无论是在感兴趣的类别及其空间安排方面。当从移动车辆上拍摄时,摄像机位置几乎总是平行于路面,限制了视点的可变性。这使得深度网络更容易学会稳健地划分它们。相比之下,室内场景的图像更为复杂,因为视点可以有很大的变化,并且在场景中出现的类的数量和它们的空间排列都没有多少规律性。另一个困难是由于场景中对象类的大小变化很大。图5显示了最近SUN RGB-D数据集[23]中的一些测试样本。我们观察到一些大班很少的场景,还有一些场景杂乱无章(下一行和右边)。外观(纹理和形状)在室内场景中也会有很大的变化。因此,我们认为这是计算机视觉中分割结构和方法面临的最大挑战。其他的挑战,如Pascal VOC12[21]突出对象分割已经占据了研究人员更多的精力[66],但我们相信室内场景分割更具挑战性,在AR和机器人等领域有着更广泛的实际应用。为了鼓励在这个方向上进行更多的研究,我们在大型SUN RGB-D数据集上比较了著名的深度架构。
SegNet对卧室、客厅、实验室、会议室、浴室等不同类型室内场景样本的定性结果如图5所示。我们看到,当类的规模较大时,SegNet在不同的视角下得到了合理的预测。这是特别有趣的,因为输入模式只是RGB。RGB图像还可用于分割较薄的结构,如椅子和桌子的腿,灯具,这是很难实现使用现有传感器的深度图像。这可以从图5中的SegNet、DEVNET的结果中看出。它还可以用于分割装饰性对象,例如用于AR任务的墙上的绘画。然而与室外场景相比,分割质量有更多的噪声。
表4中的定量结果表明,所有深体系结构都共享低mIoU和边界度量。全球平均值和班级平均值(与mIou的相关性很好)也很小。SegNet在G、C、BF指标方面优于所有其他方法,其mIoU略低于DeepLab LargeFOV。作为一个独立的实验,我们使用中值频率类平衡[67]训练SegNet,并且指标更高(见表4),这与我们在Sec中的分析一致。3.3条。有趣的是,使用基于网格搜索的最优超参数对密集型CRF恶化了,除了DeepLab LargeFOVdenseCRF的BF评分指标。也许可以找到更为优化的设置,但是由于密集crf的推理时间太长,网格搜索过程太过昂贵。
总体性能较差的一个原因是在这个分割任务中有大量的类,其中许多类只占图像的一小部分,并且很少出现。表5中报告的精度清楚地表明,较大的等级具有合理的精确度,较小的等级具有较低的精确度。这可以通过更大的数据集和类分布感知训练技术来改进。性能差的另一个原因可能是这些深层架构(都是基于VGG架构[6])无法在室内场景中实现较大的可变性。我们这方面的推测是基于这样一个事实,即最小的模型DeepLab LargeFOV在mIoU方面产生了最好的精度,相比之下,DeconvNet中更大的参数化,FCN即使在更长的训练时间(DeconvNet)下也没有改善性能。这表明,在所有体系结构中,性能不佳可能有一个共同的原因。需要更多的受控数据集来验证这一假设。
由于大量数据集的可用性以及模型深度和参数化的扩展,深度学习模型常常取得越来越大的成功。然而,在实践中,在从大量的模型库中选择模型时,记忆和训练和测试期间的计算时间等因素是需要考虑的重要因素。训练时间成为一个重要的考虑因素,特别是当性能增益与增加的训练时间不相称时,如我们的实验所示。测试时内存和计算负载对于在专门的嵌入式设备上部署模型非常重要,例如在AR应用程序中。从整体效率的角度来看,我们认为对于用于道路场景理解和AR等实时应用的更小、更大内存、更省时的模型的关注较少。这是提出SegNet的主要动机,SegNet明显比其他竞争架构更小、更快,但我们已经证明,这对于理解道路场景等任务是有效的。
像Pascal[21]和MS-COCO[42]这样的分割挑战是对象分割的挑战,在任何测试图像中都存在一些类。由于室内场景的高度可变性和需要同时分割大量的类,场景分割更具挑战性。随着自主驾驶、机器人技术、增强现实等应用的发展,室内外场景分割的任务也越来越面向实际。
我们选择的基准各种深度分割架构的指标,如边界F1测量(BF)是为了补充现有的更偏向于区域精度的指标。从我们的实验和其他独立基准[62]可以清楚地看出,从移动的汽车上捕捉到的室外场景图像更容易分割,而深层建筑的性能也很好。我们希望我们的实验能鼓励研究人员将注意力集中到更具挑战性的室内场景上。
在对不同参数化的不同深层架构进行基准测试时,我们必须做出的一个重要选择是训练它们的方式。这些体系结构中的许多都使用了大量的支持技术和多阶段的训练方法来获得数据集的高精度,但是这使得很难收集关于它们在时间和内存限制下的真实性能的证据。相反,我们选择了执行一个受控的基准测试,我们使用批处理标准化来支持使用同一个解算器(SGD)进行端到端的培训。然而,我们注意到,这种方法不能完全分离模型与求解器(优化)在获得特定结果方面的影响。这主要是因为训练这些网络涉及到梯度反向传播,这是不完美的,并且优化是一个非常大维数的非凸问题。认识到这些缺点,我们希望这种受控分析可以补充其他基准[62],并揭示不同知名架构中涉及的实际权衡。
对于未来,我们希望利用我们对从分析中收集到的分段体系结构的理解,为实时应用程序设计更高效的体系结构。我们还对从模型的不确定性中估计出的结构感兴趣。
我们提出了一种用于语义分割的深卷积网络结构SegNet。SegNet背后的主要动机是需要设计一种高效的道路和室内场景理解架构,在内存和计算时间方面都是高效的。我们分析了SegNet,并将其与其他重要变体进行了比较,以揭示在设计分段体系结构时所涉及的实际权衡,特别是训练时间、内存与准确性。
那些存储编码器网络特征图的结构性能最佳,但是在推理过程中,会消耗更多的内存和时间。另一方面,SegNet效率更高,因为它只存储特征映射的最大池索引,并在其解码器网络中使用它们来获得良好的性能。在大型和知名的数据集上,SegNet具有竞争力,在道路场景理解方面取得高分。深度分段体系结构的端到端学习是一个更困难的挑战,我们希望看到这个重要问题得到更多的关注。