FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation (CVPR2019)
1.摘要
目前的语义分割通常采用主干网中的扩展卷积来提取高分辨的特征图,这带来了计算复杂度和内存占用。
为了替代耗时和消耗内存的膨胀卷积,我们提出了一种新的联合上采样模块——联合金字塔上采样(joint Pyramid upsampling, JPU),将提取高分辨率特征映射的任务转化为联合上采样问题。
实验表明,JPU优于其他上采样模块,可以插入现有的多种上采样方法,降低计算复杂度,提高性能。
2.背景介绍
1.语义分割是将图像的每一个像素分配一个语义标签。
2.最初的FCN通过通过stride卷积和/或空间池化层对输入图像进行逐级采样,最终得到低分辨率的feature map,虽然最终的feature map编码了丰富的语义信息,但是精细的图像结构信息丢失了,导致了对对象边界的不准确预测。如图1a所示,原始FCN通常对输入图像进行5次降采样,最终feature map的空间分辨率降低了32倍。
3.后来,采用原始FCN作为编码器捕获高层语义信息,并设计了一个解码器,逐步恢复空间信息。如图1b所示,我们将这种方法称为EncoderDecoder,解码器产生的最终预测是高分辨率的。
4.接着,DeepLab[5]从原始的FCN上删除了最后两个下采样操作,并引入扩张(atrous)卷积,以保持接受视野不变。
5.继DeepLab之后,[38,6,36]在最终的特征地图上使用了一个多尺度上下文模块。如图1c所示,在DilatedFCN中,最后一个feature map的空间分辨率是原来FCN的4倍,因此保留了更多的结构和位置信息。
图1
(a)为原始FCN, (b)采用编码器-解码器风格,©采用膨胀卷积得到高分辨率最终特征图。
6.本文旨在解决上述扩展卷积消耗时间和内存的问题,提出了一种新的联合金字塔上采样(JPU)模块。本文使用FCN为骨干,使用JPU在没有性能损失的前提下,将输出的1/32低分辨率的特征图转换为1/8的高分辨率图。
7.所提出的JPU可以使整个分割框架的计算时间和内存占用减少3倍以上,同时获得更好的性能。
8.我们的方法在Pascal Context数据集[23]上的性能大大优于所有基线,mIoU达到了最先进的性能,为53.13%。在ADE20K数据集[40]上,我们得到了以ResNet50为骨干的mIoU值为42.75%,在val集上创造了新的记录。此外,我们的方法与ResNet-101在ADE20K数据集的测试集达到了最先进的性能。
3.相关工作
3.1 语义分割
在FCN之后语义分割表现出两个突出的方向:
(1)DilatedFCN
为了获得高分辨率最终特征图上的多尺度上下文信息,
PSPNet[38]在多个网格尺度上执行池化操作;
DeepLabV3[6]采用了名为ASPP的不同速率的并行atrous卷积;
EncNet[36]利用上下文编码模块来捕获全局上下文信息;
我们的方法提出了一个联合上采样模块JPU
(2)EncoderDecoder
为了逐步恢复空间信息,
UNet引入跳跃连接,它结合了编码器特性和相应的解码器激活。
Refinenet提出了一种多径细化网络,它明确地利用沿降采样过程的所有可用信息。
DeepLabV3+[8]结合了DilatedFCN和EncoderDecoder的优点,EncoderDecoder采用DeepLabV3作为编码器。
我们的方法是对DeepLabV3+的补充,可以在不损失性能的情况下减少DeepLabV3的计算负荷。
3.2上采样
本文所使用的JPU和以下两种上采用相关:
(1)Joint Upsampling (联合上采样)
联合上采样的目的是利用制导图像作为先验,将制导图像中的结构细节转移到目标图像中。
[17]构造了一个基于cnn的联合滤波器,学习恢复制导图像中的结构细节。[31]提出了端到端可训练引导滤波模块,该模块对低分辨率图像进行有条件的上采样。
我们的方法与上述方法相关。然而,本文提出的JPU是针对通道数量较多的特征图进行处理的,而[17,31]是专门针对3通道图像进行处理的,未能捕捉到高维特征图中复杂的关系。此外,我们的方法的动机和目标是完全不同的。
(2)Data-Dependent Upsampling (数据依赖上采样)
DUpsampling[29]也与我们的方法相关,该方法利用了分割标签空间的冗余,能够从cnn的低分辨率输出中恢复像素级预测。与我们的方法相比,DUpsampling对标签空间有很强的依赖性,很难推广到更大或更复杂的标签空间。
3.3 网络框架
为了获得高分辨率的最终特征图,DilatedFCN的方法将最后两次降采样操作从原始FCN中去除,由于增大的特征图带来了较大的计算复杂度和内存占用。
本文的目的是在不损失性能的基础上提取高分辨率的特征图,我们首先把所有被DilatedFCN删除的stride卷积放回原处,同时用常规卷积层替换所有膨胀卷积。
如图2所示,我们的方法的主干与原始FCN相同,其中5个feature maps (Conv1−Conv5)的空间分辨率逐渐降低了2倍。
为了获得类似于DilatedFCN最终特征图的特征图,我们提出了联合金字塔上采样(Joint Pyramid Upsampling, JPU)模块,该模块以后3个特征图(Conv3 ~ Conv5)为输入。然后使用多尺度上下文模块(PSP [38]/ASPP[6])或全局上下文模块(Encoding[36])产生最终的预测结果。
与DilatedFCN相比,当骨干为ResNet-101时,我们的方法在23个剩余块(69层)中消耗的计算和内存资源减少了4倍,在3个块(9层)中消耗的计算和内存资源减少了16倍。因此,我们的方法运行得比DilatedFCN快得多,同时消耗的内存更少。
图2
3.4 JPU
如图4所示。每个输入特征映射首先经过一个正则卷积块(图4a),其设计目的是:首先根据x生成Ym,然后将Fm转化为一个降维的嵌入空间。这样,所有的输入特征都映射到相同的空间中,从而实现更好的融合,降低了计算复杂度。
然后,对生成的特征图进行上采样和级联,得到yc(图1)b)。
在yc中并行使用4个膨胀率不同的可分离卷积来提取特征,不同的膨胀率对应不同的函数。具体地说,利用膨胀率为1的卷积,获取y0与ym其余部分的关系,如图5蓝框所示。或者,设计膨胀率为2、4和8的卷积是为了学习ˆh映射来转换y0分钟ys,如图5中的绿框所示。
因此,JPU可以从多级特征图中提取多尺度上下文信息,从而获得更好的性能。这与ASPP[6]有很大的不同,后者只利用上一个特性图中的信息。提取的特征编码了y0 m和ys0之间的映射以及y0和ym剩余部分之间的关系。因此,使用另一个正则卷积块,将特征转换为最终的预测(图4c)。
值得注意的是,所提出的JPU模块共同解决了两个密切相关的联合上采样问题,即(1)基于第4卷积阶段Conv3的上采样Conv4,(2)在扩大后的Conv4的指导下进行上采样(第5卷积阶段)。
图4
图5
4.实验结果
(1)表1以ResNet-50为骨干的Pascal Context数据集的val集的性能。
表1
(2)表2计算复杂度的比较
表2
(3)表3Pascal Context数据集val集上的最先进的方法。
表3
(4)结果在ADE20K数据集的val集上。
表4
(5)表5在ADE20K测试集上的结果
5.总结
本文分析了扩张卷积和跨步卷积的区别和联系。在此基础上,我们将提取高分辨率特征映射的任务制定为联合上采样问题,并提出了一种新的CNN模块JPU来解决该问题。通过将耗时和内存消耗的扩展卷积替换为JPU,计算复杂度降低了三倍以上,且没有性能损失。烧蚀实验结果表明,所提出的JPU优于其他上采样模块。通过插入JPU,几种用于语义分段的现代方法可以获得更好的性能,同时运行速度也比以前快得多。在两个分割数据集上的结果表明,该方法在显著降低计算复杂度的同时,达到了最先进的性能。