《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记

1. 概述

导读:一般的分割网络需要大量的浮点运算以及较长的运算时间,这个妨碍了其在实时要求较高场合的使用,这篇文章提出了基于编解码器结构的实时分割网络ENT(Efficient Neural Network)。虽然采用的结构是编解码器的结构但是在一些细节的地方做了改进,这些改进有的是为了提升运行的速度或减少运行的资源消耗,比如,对图像输入的stage修改(文中说法为:Early downsampling)、采用SegNet的upsampling操作(记录max pooling时候的位置为upsampling提供信息)而不是类似U-Net的对称连接、卷积因式分解;为了提升网络的性能,采取了如下的措施,正则化(Spatial Dropout)防止过拟合、去掉大部分ReLU并改用PReLU、采用膨胀卷积增加感受野。在这些改进的基础上最后实现了使用NVIDIA TX1在720P的图像输入下3.8FPS,在NVIDIA Titan X在1080P的图像输入下21.6FPS。

下面是使用这篇文章提出的分割方法得到的分割结果:
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记

2. 网络设计

2.1 网络结构

文章提出的ENet网络结构见下图所示,可以看出编码器阶段stride=4,这样可以提供更加丰富的低层次信息(分割不需要那么高层次的信息),并且只有3个stage。对于解码器部分其结构就没有编码器那么复杂,比较简单,其实也不需要那么复杂的。
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记

2.2 网络的输入stage:initial

在这篇文章中将网络的输入stage部分设计成如下的形式:
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记
上图中的输出是由卷积核kernel=33,stride=2kernel=3*3,stride=2的卷积与最大池化层组成的,之所以设计成这样就是为了网络加速。

2.3 残差网络的残差块设计

文章中将使用的残差网络结构设计成如下的形式:
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记
该模块中左边的支路中虚线框表达的含义是根据右侧支路的设计来选择的,主要就是维度匹配,最后将两个支路的特征图进行element-wise相加起来得到最后的输出。右侧支路中的卷积可以是inception网络中因式分解的结构(文中用asymmetric表示)、膨胀卷积的结构或是传统卷积结构,其设计可以参考表1。

2.4 网络设计中一些细节的讨论

  • 1)下采样带来的影响:下采样对于语义分割会带来图像边缘与空间位置的损失(也有优点,比如所增大感受野),在U-Net网络中是使用对称连接的方式补充损失的低层次信息。而这片文章采用的是SegNet中的做法,记录max pooling时候的位置信息,之后经过upsampling去得到分割结果;
  • 2)网路输入stage与编解码器结构:这部分使用上文2.2节中的结构,这样可以减少计算量,而且文章最后实验得出channel从16变化到32并不会带来太大的性能提升。对于编解码器的结构,文章中将编码器的结构设计得比解码器的结构复杂,这也是处于加速的目的,不过后序的方法中也证明了没必要使用那么复杂的解码器结构;
  • 3)非线性**:经过实验发现将传统的ReLU去掉之后网络性能得到提升(权值为负数),因而文章去掉大部分ReLU,并将其余的使用PReLU进行替换,从而提升网络的性能,下面是权重的分布
    《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记
  • 4)使用带有stride的卷积:文章提出将需要下采样的时候将池化操作换成带有stride的卷积会带来更多的速度提升;
  • 5)卷积因式分解与膨胀卷积:因式分解借鉴了Inception网络的结构,减少网络的计算量;膨胀卷积提升网络的感受野,从而在不增加计算量的前提下提升网络的性能,文中说在CityScapes上提了4个点;
  • 6)正则化:通常来说语义分割任务的数据集是比较少的,这就使得网络极有可能出现过拟合的情况,因而文章采用了Spatial Dropout的机制来避免这个问题;

3. 实验结果

3.1 整体分割性能

CityScapes数据集上:
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记
CamVid数据集上:
《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记

3.2 实时性能分析

《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》论文笔记