ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation----2016年 论文翻译解读

ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation

Abstract

在移动应用程序中,实时执行像素级语义分割的能力至关重要。 针对该任务的最新的深度神经网络的缺点是需要大量的浮点运算,并且运行时间长,阻碍了其可用性。 在本文中,我们提出了一种名为**ENet(高效神经网络)**的新型深度神经网络体系结构,专门针对需要低延迟操作的任务而创建。 ENet速度提高了18倍,所需FLOP减少了75倍,参数减少了79倍,并提供了与现有模型相似或更高的精度。 我们已经在CamVid,Cityscapes和SUN数据集上对其进行了测试,并报告了与现有最新方法的比较以及网络的准确性和处理时间之间的权衡。 我们提出了对嵌入式系统上所提议体系结构的性能评估,并提出了可能使ENet更快的软件改进建议。

1 Introduction

最近人们对增强现实可穿戴设备,家庭自动化设备和自动驾驶汽车产生了兴趣,这使得人们对可在低功耗移动设备上实时运行的语义分割(或视觉场景理解)算法产生了强烈的需求。 这些算法使用对象类别之一标记图像中的每个像素。 近年来,更大的数据集和强大的计算能力已帮助深度卷积神经网络(CNN)[1、2、3、4]超越了许多传统的计算机视觉算法[5、6、7]。 尽管CNN在分类和分类任务上越来越成功,但是当应用于图像的像素标记时,它们提供的空间结果很粗糙。 因此,它们经常与其他算法进行级联以完善结果,例如基于颜色的分段[8]或条件随机字段[9]等。

为了在空间上对图像进行分类和细分,已经提出了几种神经网络架构,例如SegNet [10,11]或完全卷积网络[12]。 所有这些作品都基于VGG16 [13]体系结构,该体系结构是为多类分类设计的超大型模型。 这些参考文献提出了具有大量参数和长推理时间的网络。 在这种情况下,它们无法用于许多需要以高于10 fps的速率处理图像的移动或电池供电的应用。

在本文中,我们提出了一种针对快速推理和高精度而优化的新神经网络架构。 使用ENet进行分割的图像示例如图1所示。在我们的工作中,我们选择不使用任何后处理步骤,这些步骤当然可以与我们的方法结合使用,但会降低端到端CNN的性能。

在这里插入图片描述

在第3节中,我们提出了一种名为ENet的快速紧凑的编解码器架构。 它是根据最近在文献中出现的规则和思想而设计的,我们将在第4部分中讨论所有这些规则和思想。建议的网络已针对Cityscapes [14]和CamVid [15]进行了驾驶场景评估,而SUN数据集[16 ]已用于在室内情况下测试我们的网络。 我们在NVIDIA Jetson TX1嵌入式系统模块以及NVIDIA Titan X GPU上进行基准测试。 结果可以在第5节中找到。

2 Related work

语义分割对于理解图像的内容和找到目标对象很重要。这项技术在诸如驾驶辅助和增强现实等应用中至关重要。此外,实时操作对于它们来说是必须的,因此,精心设计CNN至关重要当代的计算机视觉应用广泛使用了深度神经网络,而深度神经网络现在是用于许多不同任务(包括语义分割)的最广泛使用的技术之一。这项工作提出了一种新的神经网络体系结构,因此我们旨在与其他文献进行比较以相同的方式执行绝大多数推理。

最新的场景解析CNN使用两种单独的神经网络架构结合在一起:编码器和解码器。受概率自动编码器[17,18]的启发,编码器-解码器网络体系结构已在SegNet-basic [10]中引入,并在SegNet [11]中得到进一步改进。编码器是vanilla CNN(例如VGG16 [13]),经过训练可以对输入进行分类,而解码器用于对编码器[12、19、20、21、22]的输出进行上采样。由于其庞大的体系结构和众多参数,推理过程中速度较慢。与全卷积网络(FCN)[12]不同,VGG16的全连接层在SegNet的最新版本中被丢弃,以减少浮点运算的数量和内存占用,使其成为这些网络中最小的网络。尽管如此,它们都无法实时运行。

其他现有架构使用更简单的分类器,然后将它们与条件随机场(CRF)进行级联,作为后处理步骤[9,23]。如图[11]所示,这些技术使用了繁重的后处理步骤,并且常常无法标记占用一帧中较少像素的类。CNN也可以与递归神经网络结合[20]以提高准确性,但是他们遭受速度下降的困扰。同样,必须记住,用作后处理步骤的RNN可以与任何其他技术结合使用,包括本工作中介绍的一种。

3 Network architecture

在这里插入图片描述
图2:(a)ENet初始块。 MaxPooling是在不重叠的2×2窗口中执行的,卷积具有13个过滤器,连接后最多可汇总16个特征图。这是受到[28]的启发。(b)ENet bottleneck模块。 conv是带有3×3过滤器,膨胀或完全卷积(也称为反卷积),或者是将5×5卷积分解为两个不对称的卷积。
在这里插入图片描述
表1给出了我们网络的体系结构。它分为几个阶段,如表中的水平线和每个块名称后面的第一位突出显示。报告输出大小,示例输入图像分辨率为512×512。我们采用ResNets [24]的视图,将其描述为具有单个主分支和带有与其分离的卷积过滤器的扩展,然后与逐个元素的加法合并,如图2b所示。每个块由三个卷积层组成:一个减小尺寸的1×1投影,一个主卷积层(图2b中的conv)和一个1×1展开。我们在所有卷积之间放置批归一化[25]和PReLU [26]。与原始论文一样,我们将它们称为bottleneck模块。如果bottleneck正在下采样,则会在主分支上添加一个最大池化层,并且将第一个1×1投影替换为两个步长均为2的2×2卷积。我们将激活零填充,以匹配特征图的数量。 conv是具有3×3滤镜的规则,膨胀或完全卷积(也称为反卷积或分数跨步卷积)。有时我们用不对称卷积代替它,即5×1和1×5卷积的序列。对于正则化器,我们使用Spatial Dropout [27],其中bottleneck2.0之前的p = 0.01,之后瓶颈的p = 0.1。

初始阶段包含一个块,如图2a所示。阶段1由5个bottleneck块组成,而阶段2和3具有相同的结构,除了阶段3在开始时不对输入进行下采样(我们忽略了第0个bottleneck)。这三个第一阶段是编码器。阶段4和5属于解码器。

为了减少内核调用和整体内存操作的数量,我们没有在任何预测中使用偏置项,因为cuDNN [29]使用单独的内核进行卷积和偏差加法。此选择对准确性没有任何影响。在每个卷积层之间和随后的非线性之间,我们使用批处理归一化[25]。**在解码器中,最大池化被最大解池所代替,填充被空间卷积所取代而没有偏置。**我们没有在最后一个上采样模块中使用池索引,因为初始块在输入帧的3个通道上运行,而最终输出具有C个特征图(对象类的数量)。同样,出于性能原因,我们决定仅将完全卷积作为网络的最后一个模块,仅此一项就占用了解码器处理时间的一大部分。

4 Design choices

在本节中,我们将讨论最重要的实验结果和直觉,它们影响了ENet的最终体系结构。

Feature map resolution 在语义分割期间对图像进行下采样有两个主要缺点。首先,**降低特征图分辨率会导致空间信息的损失,例如精确的边缘形状。其次,全像素分割要求输出具有与输入相同的分辨率。这意味着强大的下采样将需要同样强大的上采样,这会增加模型大小和计算成本。**在FCN [12]中,通过添加编码器生成的特征图解决了第一个问题,在SegNet [10]中,通过保存在最大池化层中选择的元素的索引,并使用它们在解码器中生成稀疏的上采样图,解决了第一个问题。我们遵循SegNet方法,因为它可以减少内存需求。尽管如此,我们发现强的下采样会损害精度,并尝试尽可能地限制它。

但是,**下采样具有一大优势。在降采样图像上运行的滤镜具有更大的接收场,从而使它们可以收集更多上下文。**在尝试区分道路场景中的骑手和步行者等类别时,这一点尤其重要。网络仅了解人们的外观是不够的,他们出现的环境同样重要。最后,我们发现为此目的最好使用膨胀卷积[30]。

Early downsampling 实现良好性能和实时操作的一个关键直觉是认识到处理大型输入帧非常昂贵。 这听起来似乎很明显,但是许多流行的体系结构并没有过多地关注网络的早期阶段的优化,而这通常是迄今为止最昂贵的。

ENet的前两个块极大地减少了输入大小,并且仅使用了少量的功能图。其背后的想法是视觉信息在空间上是高度冗余的,因此可以被压缩为更有效的表示形式。 同样,我们的直觉是初始网络层不应该直接对分类做出贡献,相反,它们应该充当良好的特征提取器,并且仅对网络的后续部分进行预处理。 这种见解在我们的实验中效果很好;将特征图的数量从16增加到32并没有提高Cityscapes [14]数据集的准确性。

Decoder size 在这项工作中,我们希望提供与[11]中介绍的不同的编码器-解码器体系结构视图。 SegNet是一个非常对称的体系结构,因为编码器是编码器的精确镜像。 取而代之的是,**我们的架构由一个大型编码器和一个小型解码器组成。**这是因为编码器应该能够以与原始分类架构类似的方式工作,即可以在较小分辨率的数据上进行操作并提供信息处理功能。 和过滤。 相反,解码器的作用是对编码器的输出进行上采样,仅对细节进行微调

Nonlinear operations 最近的一篇论文[31]报告说,在卷积之前使用ReLU和Batch Normalization层是有益的。我们尝试将这些想法应用于ENet,但这对准确性有不利影响。相反,我们发现删除网络初始层中的大多数ReLU可以改善结果。这是一个令人惊讶的发现,因此我们决定调查其原因。

我们用PReLUs [26]替换了网络中的所有ReLU,PReLUs在每个特征图中使用一个附加参数,目的是学习非线性的负斜率。我们期望在同一性是优选传递函数的层中,PReLU权重的值将接近1,反之,如果ReLU更可取,则PReLU权重将接近0。实验结果如图3所示。

初始层权重显示出较大的方差,并且略微偏向正值,而在编码器的后期部分中,它们稳定为重复模式。主分支中的所有层的行为几乎与常规ReLU完全一样,而瓶颈模块内部的权重为负,即该函数反转并按比例缩小负值。我们假设身份由于其深度有限而无法在我们的体系结构中很好地工作。之所以了解这种有损功能,可能是因为原始的ResNets [31]是可以深度数百层的网络,而我们的网络仅使用了几层,因此需要快速过滤掉信息。值得注意的是,解码器的权重变得更大,并且学习的功能更接近于身份。这证实了我们的直觉,即解码器仅用于微调上采样的输出。
在这里插入图片描述
Information-preserving dimensionality changes 尽早输入,但大幅降低尺寸也会阻碍信息流。在[28]中已经提出了一个很好的方法来解决这个问题。有人认为,VGG体系结构使用的一种方法,即执行池化操作,然后进行卷积扩展维数,但是相对便宜,却引入了代表性的瓶颈(或迫使人们使用更多数量的过滤器,从而降低了计算效率另一方面,卷积后的合并会增加特征图的深度,在计算上是昂贵的。因此,如[28]中所提出的,我们选择与步幅2的卷积并行执行池化操作,并连接结果特征图。该技术使我们可以将初始块的推理时间加快10倍。

此外,我们在原始ResNet架构中发现了一个问题。下采样时,在两个维度上以2的步幅执行卷积分支的第一个1×1投影,这有效地丢弃了75%的输入。将过滤器的大小增加到2×2可以考虑全部输入,从而提高了信息流和准确性。当然,这使这些层的计算量增加了4倍,但是在ENet中,这些层很少开销并不明显。

Factorizing filters 已经表明,卷积权重具有相当大的冗余度,并且每个n×n卷积可以分解为彼此相邻的两个较小的卷积:一个具有n×1过滤器,另一个具有1×n过滤器[32]。这个想法也已经在[28]中提出过,从现在开始我们采用它们的命名约定并将其称为不对称卷积。我们在网络中使用了n = 5的不对称卷积,因此这两个运算的成本相似到单个3×3卷积。这允许增加由块学习的功能的多样性并增加接受场。

此外,bottleneck模块中使用的一系列运算(投影,卷积,投影)可以看作是将一个大的卷积层分解为一系列较小和较简单的运算,即其低秩近似。这种分解可以大大提高速度,并极大地减少了参数的数量,从而减少了冗余[32]。此外,由于在层之间插入了非线性运算,因此可以使它们的计算功能更丰富。

Dilated convolutions 如上所述,网络具有广阔的接受领域非常重要,因此它可以通过考虑更广泛的上下文来执行分类。 我们希望避免对特征图进行过分下采样,因此决定使用膨胀卷积[30]来改进我们的模型。 他们以最小的分辨率替换了几个bottleneck模块中的主要卷积层。 通过将Cityscapes上的IoU提升约4个百分点,而无需增加额外成本,这些功能显着提高了准确性。 当我们将它们与其他瓶颈模块(规则的和非对称的)交织时,我们获得了最佳的准确性,而不是像[30]中那样按顺序排列它们。

Regularization 大多数按像素细分的数据集相对较小(约1000张图像),因此诸如神经网络之类的表达模型很快就开始过拟合。 在最初的实验中,我们使用L2权重衰减几乎没有成功。 然后,在[33]的启发下,我们尝试了随机深度,以提高精度。 然而,显而易见的是,丢弃整个分支(即,将其输出设置为0)实际上是应用Spatial Dropout [27]的一种特殊情况,其中所有通道或不忽略任何通道,而不是选择随机子集 。 我们将空间辍学放在卷积分支的末尾,即在添加之前,结果比随机深度要好得多。

5 Results

我们在三个不同的数据集上对ENet的性能进行了基准测试,以演示实时和准确的实际应用。 我们对道路场景的CamVid和Cityscapes数据集以及室内场景的SUN RGB-D数据集进行了测试。 我们将SegNet [11]设置为基准,因为它是最快的细分模型之一,与FCN相比,它具有更少的参数且所需的内存更少。 我们所有的模型,训练,测试和性能评估脚本都使用了带有cuDNN后端的Torch7机器学习库。 为了比较结果,我们使用类平均准确度和工会交集(IoU)指标。

5.1 Performance Analysis

我们报告了在广泛使用的NVIDIA Titan X GPU以及NVIDIA TX1嵌入式系统模块上的推理速度的结果。 ENet旨在在NVIDIA TX1板上实现10 fps以上的速度,输入图像尺寸为640×360,足以用于实际的道路场景解析应用。 为了进行推断,我们将批处理归一化和辍学层合并到卷积滤波器中。
在这里插入图片描述
Inference time 表2比较了分辨率不同的单个输入帧的推理时间。 我们还报告每秒可以处理的帧数。 破折号表明,由于内存不足,我们无法获得测量结果。 ENet比SegNet快得多,它为实时应用提供了高帧速率,并允许实际使用具有编码器-解码器体系结构的超深度神经网络模型。
在这里插入图片描述
Hardware requirements** 表3报告了不同模型使用的浮点运算数量和参数的比较。 ENet的效率显而易见,因为它的要求要小两个数量级。 请注意,我们报告了将模型参数保存为半精度浮点格式所需的存储空间。 ENet的参数太少,所需的空间仅为0.7MB,这使整个网络适合嵌入式处理器中极快的片上存储器。 同样,这也减轻了对模型压缩的需求[34],从而可以使用通用的神经网络库。但是,如果需要在难以置信的严格内存约束下运行,这些技术仍然可以应用于ENet。

Software limitations 卷积层分解是使我们达到这些性能水平的最重要技术之一,但是,我们发现了一个令人惊讶的缺点,尽管应用此方法可以大大减少浮点运算和参数的数量,但是增加了单个内核调用的数量,从而使每个内核调用更小。

我们发现其中一些操作变得如此便宜,以至于GPU内核启动的成本开始超过实际计算的成本。另外,由于内核无法访问以前的寄存器中保存的值,因此内核必须在启动时从全局内存中加载所有数据,并在工作完成后保存它们。这意味着使用更多数量的内核会增加内存事务的数量,因为必须不断保存和重新加载功能图。这在非线性操作的情况下尤其明显。在ENet中,PReLU消耗了超过四分之一的推理时间。由于它们只是简单的逐点操作,并且很容易并行化,因此我们假设它是由上述数据移动引起的。

这些是严重的局限性,但是可以通过在现有软件中执行内核融合来解决它们,即创建将非线性直接应用于卷积结果的内核,或者在一次调用中执行许多较小的卷积。 GPU库(例如cuDNN)的这一改进可以进一步提高我们网络的速度和效率。

5.2 Benchmarks

我们已经使用亚当优化算法[35]训练网络。 它使ENet能够非常迅速地收敛,并且使用四个Titan X GPU在我们使用的训练的每个数据集上仅花了3-6个小时。它分两个阶段执行:首先我们仅训练编码器对输入图像的降采样区域进行分类, 然后我们附加了解码器并训练了网络以执行上采样和逐像素分类。 5e-4的学习率和2e-4的L2权重衰减以及10的批量大小始终提供最佳结果。 我们使用了一个自定义类加权方案,定义为在这里插入图片描述

与逆类概率加权相反,权重在概率接近0时有界。 c是一个附加的超参数,我们将其设置为1.02(即,我们将类权重限制在[1,50]的区间内)。
在这里插入图片描述
Cityscapes** 该数据集由5000张带批注的图像组成,其中2975张可用于训练,500张可用于验证,其余1525张已被选作测试集[14]。 城市景观对我们而言是最重要的基准,因为其出色的质量和变化多端的路况(通常有许多行人和骑自行车的人)。 我们对官方评估脚本中选定的19个类进行了训练[14]。 如表4所示,ENet在类IoU和iIoU以及类IoU上均优于SegNet,如表4所示.ENet目前是Cityscapes基准测试中最快的模型,来自验证集的图像预测示例如图4所示。

CamVid 我们测试了ENet的另一个汽车数据集是CamVid。 它包含367个训练图像和233个测试图像[15]。 有11种不同的类别,例如建筑物,树木,天空,汽车,道路等。而第十二类包含未标记的数据,我们在训练时将其忽略。 该数据集的原始帧分辨率为960×720,但是我们在训练之前将图像降采样为480×360。 在表5中,我们将ENet的性能与现有的最新算法进行了比较.ENet在六类中优于其他模型,由于它们对应于较小的对象,因此很难学习。 例如,来自测试集的图像的ENet输出可在图5中找到。
在这里插入图片描述
在这里插入图片描述
SUN RGB-D** SUN数据集包含5285个训练图像和5050个测试图像以及37个室内对象类别。在这项工作中,我们没有使用任何深度信息,仅在RGB数据上训练了网络。在表6中,我们将ENet与SegNet [11]的性能进行了比较,后者是唯一报告此数据集准确性的神经网络模型。我们的结果尽管在整体平均准确度和IoU方面较差,但在班级平均准确度方面却可比。由于全局平均准确度和IoU是有利于对占据大图像斑块的类进行正确分类的指标,因此研究人员通常会在语义分割的情况下强调其他指标的重要性。一个值得注意的例子是iIoU度量的引入[14]。类平均准确度的可比结果表明,我们的网络几乎可以区分较小的对象,而且可以区分SegNet。而且,准确性的差异不应掩盖这两个网络之间巨大的性能差距。 ENet可以实时处理图像,比嵌入式平台上的SegNet快近20倍。 SUN测试集的示例预测如图6所示。

6 Conclusion

我们提出了一种全新的神经网络体系结构,该体系结构是专为语义分割而专门设计的。 与成熟的深度学习工作站相比,我们的主要目标是有效利用嵌入式平台上可用的稀缺资源。 我们的工作在完成此任务方面大有裨益,同时可以匹配并有时超过现有的基线模型,而基线模型具有更大的计算量和内存需求。 ENet在NVIDIA TX1硬件上的应用体现了实时便携式嵌入式解决方案。

即使主要目标是在移动设备上运行网络,我们也发现它在NVIDIA Titan X等高端GPU上也非常有效。这可能在需要处理大型数据中心的数据中心应用中很有用。 高分辨率图像的数量。 ENet允许以更快,更高效的方式执行大规模计算,这可能会节省大量资金。

发布了47 篇原创文章 · 获赞 21 · 访问量 7244

猜你喜欢

转载自blog.csdn.net/qq_18315295/article/details/103432776