【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation

1. (23) DFANet

论文题目:DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation

代码地址:unofficial pytorch implementation of DFANet

推荐指数:★★★★☆

论文摘要:

旷视提出的用于实时语义分割方案DFANer,包含三部分:轻量级backbone、子网络、子阶段级联,利用子网、子阶段级联方案聚合差异性特征。在多尺度特征传播基础上,DFANet大胆减少了参数数量,但仍获得了足够的感受野,提高了模型的学习能力,并且在速度和分割性能之间取得平衡。
CityscapesCamVid两个数据集上进行实验,对比SOTA方法,分割速度提升两倍、FLOPS运算次数降低8倍,同时保持不错的性能。
利用Single TitanXCityscapes测试集上运算量仅1.7GFLOPS,分割速率高达160FPS,分割精度为mIOU=70.3%


1.1 方法概况

早先的实时由于与分割方法在一些benchmark上取得优秀的性能。但是对于高分辨率的特征图处理,U-shape类的方法极为耗时。早先的通过限制输入图像大小来减少计算开销或者通过减少模型冗余结构提升推理速度。这些方法尽管有效,但是很容易丢失空间细节,如边界、小物体等。同时,浅层网络降低了特征辨别能力。为克服上述缺陷,BiSeNet、ICNet等模型采用多分支结构结合空间细节和上下文信息,但是额外的分支结构限制了模型的推理速度,并且分支间的相互独立限制了模型的学习能力。

本文中为了实现实时推理,采用轻量级的模型作为backbone在限定计算开销的前提下提升语义分割性能。主流的方法是利用ASPP提升分割性能,但是计算开销大。另外为了提升模型的学习能力并且增加感受野,混合特征是非常自然的想法。

本文采用两种策略实现cross-level特征聚合:
1)复用backbone提取的高层特征消除语义信息和结构细节之间的差异。
2)结合网络结构中处理路径上的多阶段的特征提升特征表征能力。

由于在实时推理中,深度可分离卷积是最有效的操作。这里选取的backboneXception
为了追求分割精度,在backbone尾部添加fully-connection attention全连接注意力模块以保留最大的感受野。
sub-network aggregation:子网聚合将前一个backbone输出的高层特征进行上采样输入下一个backbone,以细化预测结果。
sub-stage aggregation:整合粗粒度、细粒度特征,将具有相同维度的层组合提供较大感受野和高维度结构信息。


1.1.1 特征聚合

文中介绍的特征聚合方式如下图,从左到右分别是,多分枝、空间金字塔池化、网络级特征复用以及本文提出的网络阶段特征复用。下图描述的过程给我的感觉就是很基本的encoder-decoder模型结构。
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第1张图片

图1 特征聚合方式比较
1.1.2 模型结构

本文采用的网络模型结构如下图:横向的三层淡蓝色的结构代表三个级联的backbone,可视作encoder,最后一行是decoder部分。文章中关注的是encoder中的特征聚合方式,主要包括两点:sub-network aggregation、sub-stage aggregation,下面结合这张图说明。
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第2张图片

图2 模型结构

sub-network aggregation:子网特征聚合方式为堆叠backbone,将上一个backbone的输出输入下一个backbone。表现为上图中前三行使用*4得到的特征图输入下一个backbone中。每一个backbone过程描述为: y = Φ ( x ) y=\Phi(x) y=Φ(x)
上一个encoder Φ n \Phi_{n} Φn的输出是下一个encoder Φ n + 1 \Phi_{n+1} Φn+1的输入。整个子网特征聚合过程可以描述为:
Y = Φ n ( Φ n − 1 ( … Φ 1 ( X ) ) ) Y=\Phi_{n}\left(\Phi_{n-1}\left(\ldots \Phi_{1}(X)\right)\right) Y=Φn(Φn1(Φ1(X)))


sub-stage aggregation:子阶段聚合,对应于上图中输入到C中的特征包含两部分,既有纵向的来自上一个backbone同一阶段的特征图,也有纵向的来自本backbone的上一个阶段的特征输入。

对于单一的backbone Φ n ( x ) \Phi_{n}(x) Φn(x),一个阶段的处理表示为: ϕ n i \phi_{n}^{i} ϕni。上一个backbone的同一stage表示为 ϕ n − 1 i \phi_{n-1}^{i} ϕn1i
子阶段特征聚合过程可以如下描述:
x n i = { x n i − 1 + ϕ n i ( x n i − 1 )  if  n = 1 [ x n i − 1 , x n − 1 i ] + ϕ n i ( [ x n i − 1 , x n − 1 i ] )  otherwise  x_{n}^{i}=\left\{\begin{array}{ll}{x_{n}^{i-1}+\phi_{n}^{i}\left(x_{n}^{i-1}\right)} & {\text { if } n=1} \\ {\left[x_{n}^{i-1}, x_{n-1}^{i}\right]+\phi_{n}^{i}\left(\left[x_{n}^{i-1}, x_{n-1}^{i}\right]\right)} & {\text { otherwise }}\end{array}\right. xni={xni1+ϕni(xni1)[xni1,xn1i]+ϕni([xni1,xn1i]) if n=1 otherwise 

n = 1 n=1 n=1,表示第一个backbone,在第一个Encoder中,子阶段聚合部分仅包括上一阶段的输出。
n > 1 n>1 n>1时,举个例子,第n个网络第i个阶段的输入包含第n个网络中,第i-1个阶段以及第n-1个网络中第i个阶段的特征。然后在第i个阶段学习 [ [ x n i − 1 , x n − 1 i ] ] [\left[x_{n}^{i-1}, x_{n-1}^{i}\right]] [[xni1,xn1i]]的残差表征。


1.2 实验

1.2.1 mIOU对比

作者先是在Cityscapes验证集上对比了ResNet-50Xception在不同输入尺寸、是否结合空间金字塔池化操作,对比了FLOPSmIOU两个指标,其中最后一行的Backbone A/B是指Xception A/B的基础上加上FC attention。可以看到的是加入FC attention后性能分别有6.2%3.8%的提升。
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第3张图片

图3 不同结构是否结合ASPP、多尺度输入在Cityscapes验证集上的表现

作者就encoder部分应该使用几个backbone级联做了对比实验。可以看到的是在Backbone A/B中,堆叠两个结构,性能有提升。但是堆叠3、4个性能反而下降了。
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第4张图片

图4 编码器聚合策略性能比较

但是在作者接下来的实验中,有下图:
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第5张图片

图5 DFANet在Cityscapes验证集性能,2-4行分别是堆叠1、2、3个backbone的结果

作者解释道在,只使用一个backbone的结果中包含很多噪点,然后在第二个backbone中由于整合空间细节这些噪点变得平滑了。而在第三个backbone处理之后分割结果更加精确了,作者认为是结合了细节、上下文信息的结果。

本文中没有充分设计解码器部分,作者给的原因是在Deeplabv3+中证明了并不是所有的空间信息都能提升分割性能。在解码器部分只是简单的整合了最低和最高层次的特征,如下:
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第6张图片

表4 不同解码器的性能对比

可以看到的是尽管Backbone堆叠三次得到的结果不如堆叠两次的结果(66.3对比65.1),但是结合了高层特征和底层特征之后,可以看到的是,堆叠三次得到的结果优于两次的。所以在先前网络结构图中堆叠了三次backbone。
结果是在Cityscapes验证集上堆叠三次的Backbone A结合高层特征和低层特征的分割精度达到了71.9%,同时计算开销仅仅是3.4GFLOPS;而在Backbone B上获得了68.4%的分割精度开销仅是2.1FFLOPS.


1.2.2 推理速度对比

作者最后的对比了DFANetSOTA模型的推理速度,如下图:
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第7张图片

表5 推理速度对比

注意到本文提出的DFANet A对于输入大小为1024*1024的输入,推理速度为100FPS,而将输入图像尺寸调整为512*512之后推理速度高达160FPS,同时分割精度还能保持在70.3%.

此外,作者还在Cam vid测试集上对比了推理速度。DFANet A/B的推理速度都远超SOTA模型,(但是分割精度下降的有些多)如图:
【图像分割论文阅读】DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation_第8张图片

表6 在CamVid测试集上的结果

你可能感兴趣的:(深度学习)