天天看点

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

Abstract

在移动应用中,实时执行像素级语义分割的能力是至关重要的.针对这一任务的最近的深层神经网络存在着重复使用的缺点。深度神经网络有大量浮点操作,且运行时间长,阻碍了它们的可用性.本文提出了一种新的深层神经网络体系结构-高效神经网络(ENET)。相比于现有的模型,在速度加快了18×倍,浮点计算量上减少了75×,参数减少了79×,且有相似的精度。ENet在CamVid, Cityscapes and SUN datasets做了相关对比测试。

之前看的几篇论文FCN 、SegNet、DeconvNet,模型都基于VGG架构,参数多,虽然SegNet参数较少但是依然不足以在移动设备上使用。自从深度学习用于语义分割,体系结构基本都是Encoder-Decoder,E-net也不例外。本文的新奇架构在于设计的 initial block和 bottleneck module

Architecture

如下图所示,初始化阶段只有图2所示的初始化模块,stage 1~3是编码阶段,stage 4~5属于解码阶段。stage 1包括5个bottleneck模块,stage 2和stage3包括相同的结构,但是stage3没有下采样。

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

上图是论文给出的完整架构,依然是encoder-decoder,作者提出了一个新奇的看法:网络的初始层不应该直接面向分类做贡献,而且尽可能的提取输入的特征。并且与之前的SegNet之类完全镜像的encoder和decoder,作者认为大的Encoder小的Decoder是有更好效果的,原因是Encoder主要进行信息处理和过滤,和流行的分类模型相似。而decoder主要是对encoder的输出做上采样,对细节做细微调整。

基于第一个看法:网络的初始层不应该直接面向分类做贡献,而且尽可能的提取输入的特征,作者设计了一个initial module:

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

ENet initial block. MaxPooling is performed with non-overlapping 2 × 2 windows,

and the convolution has 13 filters, which sums up to 16 feature maps after concatenation.

关于bottleneck:bottleneck的主要构思应该还是Resnet思想

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

其设计分为两种情况:

下采样的bottleneck:

主线包括三个卷积层,

先是2×2投影做降采样;

然后是卷积(有三种可能,Conv普通卷积,asymmetric分解卷积,Dilated空洞卷积)

后面再接一个1×1的做升维

注意每个卷积层后均接Batch Norm和PReLU。

辅线包括最大池化和Padding层

最大池化负责提取上下文信息

Padding负责填充通道,达到后续的残差融合

融合后再接PReLU。

非下采样的bottleneck:

主线包括三个卷积层,

先是1×1投影;

然后是卷积(有三种可能,Conv普通卷积,asymmetric分解卷积,Dilated空洞卷积)

后面再接一个1×1的做升维

注意每个卷积层后均接Batch Norm和PReLU。

辅线直接恒等映射(只有下采样才会增加通道数,故这里不需要padding层)

融合后再接PReLU。

ENet bottleneck module. conv is either a regular, dilated, or full

convolution (also known as deconvolution) with 3 × 3 filters, or a 5 × 5 convolution decomposed into two asymmetric ones.

paper中的trick

1.Feature map resolution

对图像的下采样有两个缺点:首先会降低特征图分辨率,会丢失细节信息,容易丢失边界信息。其次semantic segmentation输出与输入有相同的分辨率,FCN使用32倍下采样,而作者的ENet只进行了8倍的下采样。深的下采样对应着深的上采样,这增加了模型的大小和计算量。

下采样的好处在于可以获取更大的感受野,获取更多的上下文信息,便于分类。

关于下采样降低图像分辨率导致信息缺失,不同论文探讨了不同方法:

FCN的解决办法是将encoder阶段的pool操作产生的feature map与上采样后的热图相加,增加空间信息。

SegNet的解决办法是将encoder阶段maxpooling的indices保留到decoder阶段做upsampling使用。

Unet的解决方法是将encoder不同层的图像给decoder阶段进行concate

ENet采用的是SegNet的方法,这可以减少内存需求。同时为了增加更好的上下文信息,使用dilated conv(空洞卷积)扩大上下文信息。

2.Early downsampling

视觉信息是高度空间冗余的,可以压缩更有效的表示,作者在stage 1~2实现下采样并大量压缩特征图规模。早期处理高分辨率的输入会耗费大量计算资源。正如作者提出的那样:网络的初始层不应该直接面向分类做贡献,而且尽可能的提取输入的特征。

3.Decoder size

This is motivated by the idea that the encoder should be able to work in a similar fashion to original classification architectures, i.e. to operate on smaller resolution data and provide for information processing and filtering. Instead, the role of the the decoder, is to upsample the output of the encoder, only fine-tuning the details.

4.Nonlinear operations

一般的网络架构都会在CNN之前进行ReLU 和 Batch Normalization,但是作者发现使用ReLU降低了模型精度。作者分析了ReLU没有起作用的原因是网络架构深度,ENet层数很少,较少的层需要快速过滤信息,使用PReLU。

5.Information-preserving dimensionality changes

加速推理,初始化阶段的操作大约加速了10倍的时间。

6.Factorizing filters

将n×n n×n n×n的卷积核拆为n×1 n×1n×1和1×n 1×n1×n (Inception V3提出的)。可以有效的减少参数量,并提高模型感受野。

7.Dilated convolutions

作者在实现过程中是交叉使用Dilated convolutions。

8.Regularization

Spatial Dropout

Enet现在看来效果就一般了,比Segnet要好,但是速度快,参数少 0.37M

继续阅读