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上做了实验。
Introduction
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。
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能够在实现较高的推断速度的同时维持较高的精度。
Method
整个网络的结构如图

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

其中有两组asymmetric conv,前一组是正常的conv,后一组是dilated conv,这种asymmetic conv可以减少33%的计算量,并且只会带来少量的性能下降。
另外一个技术就是DenseNet中的连接方式,将新学到的特征和输入进行concat,即,m是其中的第m个模块,这样的连接结构能够大量的提高处理效率,并且众所周知更深的层有着更大的感知野,比如两个3x3 conv的堆叠相当于一个5x5 conv的感知野,因此dense连接可以将具有不同感知野的模块的特征进行concat,让网络来聚集更多的信息,这让该网络在低计算量之下也具有更好的分割结果。
对于网络结构的设计,使用了ENet的initial 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用于正则化。
Experiment
我们在这里主要关注cityscapes上的实验。在训练的时候将图片downsample为512x1024的尺寸进行训练,在validation的时候将输出特征通过双线性插值的方式upsampling为1024x2048的原始尺寸,这里略去其中的一些训练细节,EDANet的训练细节,最后的实验结果分为两部分,一部分是ablation study的结果,另一部分是cityscapes上与其他网络结构相比的实验结果。
| Method | mIoU (%) | Params | Multi-Adds |
|---|---|---|---|
| EDANet | 65.10 | 0.68M | 8.97B |
| (a) Core module | |||
| EDA-non-asym | 65.11 | 0.81M | 11.41B |
| EDA-non-dense | 63.92 | 0.73M | 8.87B |
| (b) Extra context module | |||
| EDA-shallow | 58.09 | 0.55M | 7.77B |
| EDA-ASPP | 60.64 | 3.41M | 41.42B |
| (c) Decoder | |||
| EDA-ERFdec | 65.56 | 0.78M | 12.95B |
| (d) Downsampling block | |||
| EDA-DenseDown | 61.63 | 0.42M | 8.51B |
消融实验的结果
与其他网络相比在cityscapes上的实验结果
| Method | Extra data | Sub | mIoU (%) | Time | Speed (FPS) | Params |
|---|---|---|---|---|---|---|
| ESPNet (Mehta et al. 2018) | no | 2 | 60.3 | 8.9ms | 112.9 | 0.36M |
| ENet (Paszke et al. 2016) | no | 2 | 58.3 | 13ms | 76.9 | 0.36M |
| ERFNet (Romera et al. 2017) | no | 2 | 68.0 | 24ms | 41.7 | 2.1M |
| ContextNet (Poudel et al. 2018) | no | 2 | 66.1 | 55ms | 18.3 | 0.85M |
| SegNet (Badrinarayanan, Kendall, and Cipolla 2015) | ImN | 4 | 56.1 | 60ms | 16.7 | 29.5M |
| FCN-8s (Long, Shelhamer, and Darrell 2015) | ImN | 2 | 65.3 | 0.5s | 2 | 134.5M |
| Dilation10 (Yu and Koltun 2016) | ImN | 2 | 67.1 | 4s | 0.25 | 140.8M |
| DFN (Yu et al. 2018) | ImN + coa. | 2 | 80.3 | n/a | n/a | n/a |
| DeepLabv3+ (Chen et al. 2018) | ImN + coa. | 2 | 82.1 | n/a | n/a | n/a |
| EDANet (ours) | no | 2 | 67.3 | 12.3ms | 81.3 | 0.68M |
在Cityscapes上与其他网络的对比实验结果(“Sub”:输入图片的下采样倍数;“ImN”:ImageNet 数据集;“coa.”:Cityscapes 的粗标注集)