Efficient Dense Modules of Asymmetric Convolution for Real-Time Semantic Segmentation

Abstract

之前的用于segmentation的网络要么速度比较慢,要么精度比较低,这里设计了一种EDANet模块,将asymmtric conv,dilated conv,dense connectivity相结合。在各个方面上都比FCN要好,并且不具有decoder structure,context module,post-processing scheme和pretrained model。在cityscapes和camvid上做了实验。

1.Introduction

EDANet与其他一些网络的对比如下EDANet与其它网络的性能对比

然后对于EDANet有几个关键的组成,分别为asymmetric conv,DenseNet的densely connected structure,dilated conv。

asymmetric conv:将nxn conv分成1xn和nx1两个conv,可以减小参数量并且只有少量的性能下降

densely connected structure:来自于DenseNet,本来最开始设计用于图像分类的,但是其中的多层特征融合对于分割任务是很有用的

dilated conv:可以增大感知野

为了效率和精度上的平衡,没有增加decoder structure,context module,post-processing scheme。

2.Related Work

CNN最初是用于图像分类的任务,FCN是第一个将CNN用于语义分割的网络,将VGG中的FC层用卷积层替代进行像素级的语义分割,从此语义分割进入了基于CNN的时代。

高精度的网络中,UNet使用了encoder-decoder结构,从浅层网络层中收集空间信息用于增强深层的信息。DeconvNet提出了与encoder相对称的encoder,对encoder的输出进行上采样,不过这样的网络由于大量的decoder的存在计算量很大。Dilation10将扩展率逐渐增加的扩展卷积层相堆积,创造了一种上下文模块,来聚合多尺度的上下文信息。deeplab引入了一种ASPP模块,利用多个并行的扩展的卷积核来探索多尺度的表达,两种模块都需要大量的计算量和推断时间,并不实用。

高效率的网络中,ENet是第一个针对于实时语义分割的网络,继承了ResNet的结构,并且修剪了卷积的数量来减少计算量,而ESPNet在空间金字塔前面使用了1x1 conv来减少计算量,这两者都很高效但是准确率并不高。

对于Dense连接的网络结构,DenseNet在图像分类任务中取得了很好的结构。已经有一些任务利用DenseNet来进行语义分割的任务,FC-DenseNet利用DenseNet作为encoder,然后构建了额外的decoder结构。SDN利用DenseNet作为骨架,将堆积起来的deconv结构与之相结合,这个方法将DenseNet进行了简单的改善,并没有进行额外的优化,这样的改善同时也增加了计算量和计算时间。

这里使用非对称卷积来减少参数量和计算消耗,同样将dense连接的思想应用在该网络的结构设计中,EDANet能够在实现较高的推断速度的同时维持较高的精度。

3.Method

整个网络的结构如图EDANet网络结构

主要分为这么几个模块,Downsampling Block和EDA Block和最后的Projection Layer。其中的EDA Block又包括多个EDA module。其中EDA module的结构如下所示:EDA module

其中有两组asymmetric conv,前一组是正常的conv,后一组是dilated conv,这种asymmetic conv可以减少33%的计算量,并且只会带来少量的性能下降。

另外一个技术就是DenseNet中的连接方式,将新学到的特征和输入进行concat,即ym=[Hm(ym1),ym1]y_m=[H_{m}(y_{m-1}),y_{m-1}],m是其中的第m个模块,这样的连接结构能够大量的提高处理效率,并且众所周知更深的层有着更大的感知野,比如两个3x3 conv的堆叠相当于一个5x5 conv的感知野,因此dense连接可以将具有不同感知野的模块的特征进行concat,让网络来聚集更多的信息,这让该网络在低计算量之下也具有更好的分割结果。

对于网络结构的设计,使用了ENet的initial block作为downsampling block,并且分成了两种模式,其表示如下downsampling block的结构

这样的downsampling block可以让网络具有更大的感知野,用于收集上下文信息,然而减少feature map的解析度将会失去一些细节,这对于pixel的segmentation是很有害的,因此这里仅使用了3个downsampling block。在最后,相对于全解析度的输入图片,特征尺寸变为了1/8,而其他的网络比如SegNet特征尺寸则变为了1/32。

为了计算速度这里并没有使用decoder,而是在最后加了一层1x1 conv作为projection layer,采用双线性插值resize的方式来将图像还原为全解析度的尺寸。这样会轻微降低一些精度但是能够节省大量的计算量。

这里使用了post-activation的方式,即使用的conv-bn-relu的顺序,将这样的结构应用在所有的conv层上,在训练的过程中也加入了0.02的dropout用于正则化。

4.Experiment

我们在这里主要关注cityscapes上的实验。在训练的时候将图片downsample为512x1024的尺寸进行训练,在validation的时候将输出特征通过双线性插值的方式upsampling为1024x2048的原始尺寸,这里略去其中的一些训练细节,EDANet的训练细节,最后的实验结果分为两部分,一部分是ablation study的结果,另一部分是cityscapes上与其他网络结构相比的实验结果。

ablation study的结果

与其他网络相比在cityscapes上的实验结果对比实验结果