【阅读笔记】《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》
本文整理了个人对论文《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》(https://arxiv.org/abs/1606.02147)的学习笔记,并附上了与之相关的源代码(GitHub仓库:https://github.com/TimoSaemann/ENet)。已更新至2019年4月17日。
文章目录
- Abstract
- 概述本文的主要贡献。
- Introduction
- 介绍研究的背景及其重要性。
- Related work
- 回顾相关领域的最新研究成果。
- Network architecture
- 描述网络架构的设计方案。
- Design choices
- 分析系统设计的关键决策。
- Results
-
展示实验结果的具体情况。
- 性能分析
- 提供详细的基准测试数据。
- 性能分析
-
Conclusion
-
Abstract
在移动应用领域实现实时性对于像素级语义分割技术至关重要。本研究提出了一种新型深度神经网络架构命名为ENet(Efficient neural network)。该架构专为减少延迟的任务优化其计算性能相比现有技术最多提升了18倍同时显著降低了计算负担仅使用75倍的浮点运算量和参数规模却能保持与现有方法相当的精度水平。此外我们还在CamVid Cityscapes和SUN数据库等常用数据集上进行了验证并评估了该模型在嵌入式系统中的适用性同时提出了若干优化建议以进一步提升性能
Introduction
可穿戴增强现实、家用自动化设备以及自动驾驶等应用都满足了能够在移动设备上运行中进行低功耗语义分割(视觉场景理解)所产生的显著需求。
像SegNet和FCN(参考博主笔记SegNet及FCN)这样的网络尽管实现了端到端的像素分割能力(通过深度学习模型实现目标检测与识别),但它们都基于复杂的网络架构设计(如VGG16等),导致在依赖复杂计算架构的应用场景中存在局限性(如对移动设备电池供电设备的支持有限)。
本文开发了一种专为快速推理和高准确率设计的神经网络结构。该图展示了ENet在图像分割任务中的应用实例。

本文工作中,在端到端系统中未采用任何后处理步骤。然而,在尝试集成所有后处理步骤时发现:对于端到端网络来说,这样做会导致最终结果的损坏。
Related work
语义分割对于理解和定位图像中的物体具有重要意义,在多个应用领域中发挥着至关重要的作用。这项技术如辅助驾驶系统、虚拟现实增强等应用场景中被广泛应用,并被视为最为关键的技术手段之一。
目前主流的神经网络架构通常由编码器和解码器两部分构成。
现有方法通常采用较简单的分类器架构,并通过CRF进行后续处理。如SegNet论文所述的这类方法,则需要较为复杂的后续处理步骤,并且在单帧图像中往往难以准确识别那些占据像素比例较少的类别。尽管如此,在结合深度神经网络(如CRFasRNN)时可以一定程度上提升分类精度。然而这种方法可能会导致整体运行速度有所下降。值得注意的是,RNN技术同样可以与各种基础框架进行有效的结合应用,并包括本文提出的方法在内的各种现有技术中得到应用
Network architecture
该表格展示了神经网络架构。该神经网络架构分为若干个阶段,在表中重点标注的部分进行了详细说明。输出尺寸根据输入图像分辨率设定为512x512。

该文借鉴了ResNet架构的基本理念,并在此基础上提出了一种创新的设计方案。具体而言,在网络结构中将主干分支出一组卷积核,并通过逐元素相加的方式将其整合回主干网络(如图所示)。该设计由三个关键组件构成:首先将输入通道数缩减至所需维度;随后是一个标准的空间域卷积操作;最后一步采用一个扩展型的投影层完成特征重构与增强。在每一层处理完毕后均需应用Batch Normalization和PReLU激活函数以维持网络稳定性和非线性特性。值得注意的是,在某些特定场景下该模型会引入额外的下采样机制以进一步优化特征提取能力。此外,在初始阶段为了确保信息传递效率并避免过早出现梯度消失问题,在第一个模块中采用两个连续的2×2标准卷积核替代原先一步骤,并在必要时引入零填充操作以维持特征图尺寸的一致性。为了进一步提升模型性能,在不同深度层次上可选择使用普通、空洞或全连接(反向传播)等不同类型的二维卷积操作,并根据具体情况调节滤波器尺寸大小以及激活函数的选择策略以达到最佳性能平衡点

初始化环节包含一个独立的block如图所示其中第一部分包含了五个关键组件随后第二至第三部分具有相同的架构但在第三部分中初始状态未进行压缩处理亦即未考虑零号组件这一特征构成了编码系统的核心部分而第四至第五部分则形成了解码系统的基础
基于cuDNN的特点,在卷积层与偏置的处理上采取了独立策略。为了降低计算资源消耗并提高效率,在这些投影操作中未引入偏差项。其对模型性能的影响微乎其微。通过Batch Normalization技术实现了层间特征的标准化处理。
在解码器模块中采用最大值无池化替代最大值池化操作,并替换成无偏置的空间卷积操作。最后一步上采样未使用池化索引信息这一设计选择是因为其输入为3通道特征图,在输出端则需生成C个特征图以提高性能为目标。值得注意的是,在此过程中最后一层采用了全卷积结构(占据了较大比重)。
Design choices
In semantic segmentation, the downsampling of feature maps has two notable drawbacks: first, the reduction in resolution leads to a loss of spatial information, such as specific boundary shapes; second, dense pixel segmentation requires the output resolution to match the input resolution. The first issue was addressed by both FCN and SegNet through different mechanisms, but the paper's author observed that excessive downsampling could negatively impact accuracy, thus they made an effort to limit downsampling as much as possible.
然而,在进行下采样后所得到的图像中应用卷积操作将具有更大的覆盖范围,在这种情况下它们能够更好地捕捉更多细节信息。这对于区分不同类别而言至关重要。例如,在道路场景中行人的行走姿态与骑行者的动作都是不可或缺的对象,在这样的背景下单纯依赖外貌特征难以满足需求而它们所处的具体场景环境同样不可或缺。经过实验研究发现采用空洞卷积结构能够在这一前提条件下有效地提取了更多细节特征并显著提升了分类性能
Early downsampling
虽然处理大规模图像的成本非常高,“尽管大家都知道这一点”,然而很少有关于该早期阶段的研究。然而这一阶段通常承担着最大的成本负担。
ENet架构中的前两个模块显著降低了输入图像的空间分辨率,并仅利用了少量的关键特征图。这一策略的核心理念在于:由于视觉信息在空间维度上的高度冗余性,在二维空间上构建高效描述性的表示具有重要意义。该研究者建议:原始网络层不宜直接应用于分类任务中;相反地,在后续特征提取过程中发挥核心作用。这一发现通过CityScapes数据集上的测试得到验证:增加特征图的数量(从16提升至32)并未带来分类精度的提升。
Decoder size
这篇论文中提出了除SegNet以外的另一种编解码结构。SegNet是一种高度对称的架构设计,在此架构中解码模块与编码模块形成镜像关系。相比之下,在本文提出的编解码结构中采用了较大的编码模块和较小的解码模块。这种设计选择背后的动机是确保编码模块能够模仿传统分类网络的工作机制,在小分辨率数据上执行处理与滤波操作。然而在 decode过程中,则需要特别注意其工作原理—— decode模块负责将编码信息进行上采样处理以补充细节部分的信息丢失现象。
Nonlinear operations
研究表明,在卷积层之前使用ReLU激活函数与批归一化(Batch Normalization)结合更为有效。然而该论文的研究人员并未直接采用这一理论,在其提出的ENet模型中未能实现这一改进。有趣的是,他们在移除原始设计中绝大多数ReLU激活单元后仍能获得更好的性能表现。这一现象非常值得探究的原因是什么。从而引发对该现象原因的深入研究。
他们替代了传统的ReL层设计,并引入了一种新的激活函数结构——PReL单元。这种设计导致每层增加了一个额外的可训练参数以实现对负半轴区域的非线性建模目标。该研究假设在这种新架构下每层中的identity函数表现更为理想,在此过程中各通道的学习权重被设定为接近1(即PReL单元),而传统ReL设置则对应于各通道的学习权重值为0(即全零激活)。具体实验结果可通过以下图形展示

初始权重的方差较大,并且呈现出略微向正方向偏移的趋势。其后部结构趋于形成一种循环模式,在主干层与标准ReLUs单元表现出高度一致性。值得注意的是,在bottleneck模块中所有权重均为负值,在某种程度上实现了函数反转并按比例缩减了这些负值的影响。研究者推测为何认为学习到一个带有损耗(即降噪)效果的函数可能源于传统架构设计上的限制因素?传统ResNet架构由于其深度可达数百层而表现出强大的表示能力。相比之下,EfficientNet(ENet)仅采用了较浅的几层结构。因此必须迅速筛选出无用信息才能实现有效的特征提取与表示优化过程。这也进一步验证了他们提出的猜想:解码器的作用仅限于精细调节上采样输出的过程。(这也验证了他们的猜想:解码器的作用仅限于精细调节上采样输出的过程吗?)
信息保持性的维度变化
在处理过程中,在对输入进行下采样是必要的;然而过于激进的维度缩减可能会对信息传递造成阻碍。其中针对这一问题提出了一种有效的解决方案的方法——DeepLab v3(详见博主笔记)。该方法通过使用步长为2的卷积操作同时完成卷积和池化任务,并将得到的特征图依次连接起来。这种做法能够在推理速度上提升大约10倍。
另外,在原始ResNet架构中发现了一个问题:在下采样过程中,默认采用步长为2的一维卷积核会导致75%输入信息的有效丢弃。若将滤波器尺寸升级至2x2则能全面涵盖所有输入信息并显著提升信息传递效率;然而这会使得计算开销增加至原来的四倍不过ENet设计中这类模块数量有限因此这种额外的计算需求并不构成显著障碍
Factorizing filters
已经被实验证明存在一定程度上的冗余性,在深度学习领域中将一个n\times n的标准卷积操作分解为两个连续的小尺寸卷积操作(具体为n\times 1和1\times n)是一种被广泛采用的技术(参考文献)。这种方法被称为对称卷积(asymmetric convolution),并且在相关文献中也有提及。在这里我们采用了n=5大小的对称卷积操作,在计算复杂度上与单个3\times 3标准卷积相当的情况下实现了相似的效果表现。这种设计策略不仅有助于增强网络模块所学习函数的多样性,并且能够扩大感受野范围以捕捉更大的空间信息。
另外,在Bottleneck模块中设计的一系列操作流程(包括映射、卷积等操作),实际上相当于将一个较大的卷积层拆解为多个更简单的子步骤进行处理,并且这种拆分方式对应于其在低秩矩阵空间中的近似特性(low-rank approximation)。这一设计不仅能够显著提升运行效率并大幅减少计算参数数量,并且由于中间各子过程均采用非线性激活函数处理机制的存在,在一定程度上也保证了整个网络模型能够学习到更为复杂的特征表达方式和多维空间信息融合能力。
Dilated convolutions
Regularization 为了解决模型过拟合的问题,在卷积模块之后(即将进行特征图融合时),采用了Spatial Dropout
Results
基于SegNet的框架下,采用Torch7框架,并结合cuDNN库进行开发。评估指标包括平均分类精度(class average accuracy)以及交并比值(IoU)。
Performance Analysis
ENet的主要设计目的是在NVIDIA TX1芯片上实现640×360分辨率的画面以超过每秒十帧的速度稳定运行,并足以支持道路场景下的图像处理需求。为此,在网络架构中引入了批归一化层和Dropout层
Inference time
下表比较了单针不同分辨率输入下的推理时间。

Hardware requirements
下表比较了不同模型的浮点运算数和参数。

软件局限性
实现这些性能的关键原因之一在于卷积层分解技术的应用。然而研究者却发现了一个问题:尽管这种方法显著减少了浮点运算量和参数数量(即模型复杂度),但它同时也增加了每个核函数的调用次数,并因此变得更高效。然而尽管如此,在某些情况下这种简便性带来的额外计算反而会增加GPU核心启动的成本(即运行成本),从而使得GPU核心启动的成本反而是超过了实际计算的成本。

Benchmarks
采用Adam优化器作为优化函数以提升模型性能
Cityscapes

其中,iIoU代表instance-level intersection over union。

CamVid
数据库图像分辨率为960x720,但是在训练前将其下采样成480x360。


SUN RGB-D
只用了RGB,没有用深度信息。


Conclusion

更多内容,欢迎加入星球讨论。
