deeplab v3+---Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

本文提出DeepLabv3+模型,在DeepLabv3基础上加简单decoder模块改善分割结果,尤其提升目标边界信息。采用Xception深度可分离卷积应用于aspp和decoder模块,在PASCAL VOC 2012数据集上验证有效性,测试集性能达89%。还进行多种实验对比不同网络骨架和参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.摘要:

1.spp是什么?

问题:分割

我们提出了什么:

1.deeplab v3+ 在deeplab v3的基础上加了一个简单的decoder模块来改善分割结果,尤其是对于边界区域

2.我们采用xception当中的深度壳分离卷积,来应用到aspp和decoder模块中去,能够得到一个更好和更快的结果

结果:

我们证明了所提出的模型在PASCAL VOC 2012语义图像分割数据集上的有效性,并且在没有任何后处理的情况下在测试集上实现了89%的性能

 

二.介绍:

1.在我们的工作里,我们考虑了两种类型的神经网络

    (1).基于spp的(能够捕捉丰富的上下文信息) (2).基于编码器和解码器的(能够获得更加清楚的边界)

2.deeplabv3 采用aspp,pspnet采用池化操作和不同的网格尺度,池化会丢失一些细节信息,使用孔洞卷积可以解决这一个问题,但是会增大计算量。以ResNet-101 [27]为例,当应用atrous卷积提取比输入分辨率小16倍的输出特征时,最后3个残余块(9层)内的特征必须扩大。 更糟糕的是,如果需要比输入小8倍的输出特征,则会影响26个残余块(78层!)(???)

3.我们在deeplab v3的基础上加了一个decoder,这个可以恢复一些目标边界的信息,同时还采用了深度可分离卷积

贡献:

1.我们使用deeplab v3作为encoder,并加入了一个decoder

2.我们提出了一个encoder-decoder结构,可以通过孔洞卷积来控制encoder的特征的分辨率,来权衡准确率和计算量,这是现有目标的网络结构所没有的

3.我们采用Xception中的深度可分离卷积应用在encoder和aspp中,使得网络更强大也更快

4.我们在pascal voc 2012中取得了the state of art的结果

5.我们公开了自己的tensorflow代码.

 

图a是deeplab v3, 图b是encoder-decoder结构,图3是deeplab v3+ 的结构使用一个轻编码器

 

方法:

DeepLabv3 as encoder:

DeepLabv3中也使用atrous卷积提取特征。我们将输入和输出的分辨率比值记为output_stride,对于图像分类任务,最终的feature map 的大小一般是输入图像的 1/32,即 output_stride=32;对于语义分割任务,将下采样(普通卷积操作)替换为atrous卷积,这样就可以调整 output_stride = 16(或8),从而进行更密集的特征提取(例如,我们应用rate = 2和rate = 4到最后两个blocks,则output_stride = 8)。

DeepLabv3的ASPP模块使用了多个平行的atrous卷积,配合了图像级特征(即全局平均池化)。我们将DeepLabv3的logit前的输出特征作为encoder-decoder模型的encoder输出。此时输出的feature通道为256并包含丰富的语义信息。另外,可已通过使用 atrous 卷积来匹配计算资源的限制。
Proposed decoder:

在原先的DeepLabv3中,取预测的feature 直接双线性上采样16倍到期望尺寸,这样的简易的decoder模块不能成功的恢复分割细节。因此加入了一个有效的 decoder 模块,如下图所示:编码器特征先进行 factor=4 的双线性上采样,然后与具有相同空间分辨率的网络主干的相应低级特征(例如,在ResNet-101 [25]中跨越之前的Conv2)连接在一起。

DeepLabv3+的整体的架构如下图所示:

改进后的Xception为encodet网络主体,替换原本DeepLabv3的ResNet101.

Experiment

我们采用ImageNet-1k预训练的ResNet-101或修改后的Aligned Xception 来通过taros 卷积提取密集的特征图。采用与 DeepLabv3 相同的训练方式,简而言之,当output_stride = 16时,在训练期间使用相同的学习率计划(即[“poly”策略](Liu, W., Rabinovich, A., Berg, A.C.: Parsenet: Looking wider to see better. arXiv:1506.04579 (2015))和相同的初始学习率0.007)、crop大小513×513 、 batch normalization 参数,以及随机比例数据增强(random scale data augmentation) 。 请注意,我们还在解码器模块中包含批量标准化参数。

这里提出的模型是端到端(end-to-end)训练的,没有对每个组件进行分段预训练。。
Decoder Design Choise

用DeepLabv3作为encoder,对于f 个k×k 的卷积操作记为$[k×k,f] $,先前DeepLabv3是在输出结果上继续双线性上采样16倍得到预测结果,这在PASCAL VOC2012 验证集上达到了77.21%。论文在此基础上,提出了改进的decoder模块。关于decoder的设计有多个方案:

使用1×1卷积减少来自低级feature的通道数

下图示意部分为1×1 卷积:

在这里插入图片描述

为了评估1×1 卷积的重要性,在encoder中取了 Conv2 尺寸为[3×3,256] 为输出,减少通道数在48到32之间性能最佳。结果如下表:

最终采用了[1×1,48]来做通道降维。

是否需要3×3卷积逐步获取分割结果

即下图示意部分3×3卷积恢复信息:


实验部分包括使用1×1,256 的卷积,一组、二组、三组的3×3,256 卷积,使用3×3,128 的卷积,结果如下:

结果显示使用两组3×3,256 卷积性能最佳。

使用哪部分的低级特征帮助提供细节

即下图示意部分:

论文实验了如果使用Conv2 和Conv3 同时预测,Conv2 上采样2倍后与Conv3 结合,再上采样2倍,结果如下:

这并没有显著的提升性能,考虑到计算资源的限制,论文最终采样简单的decoder方案,即取Conv2 Conv2Conv2上采样后再与top feature concatenate。

ResNet-101 as Network Backbone

以ResNet为encoder模型,测试了以下几种变体:

    Baseline: 在下表的第一组。都没有使用decoder。测试了不同output_stride output_strideoutput_stride,多尺度输入,左右翻转操作。
    Adding decoder: 下表的第二组。采用的decoder。相对来说增加了计算消耗。
    Coarser feature maps: 测试了使用output_stride=32 ,这样计算速度更快。但是相对于output_stride=16 准确率下降了1-2%左右。

可以看到使用多尺度MS MSMS计算量计算量增加一个数量级,使用左右翻转Flip FlipFlip计算量翻倍。

Xception as Network Backbone

ImageNet pretraining: 改进后的Xception网络在ImageNet-1K上做了预训练。训练设置如下:

可以看到Modified Xception性能要好点。

整体的使用Modified Xception做为网络骨架,使用如下几种变体:

    Baseline: 不使用decoder.
    Adding decoder: 添加了decoder.
    Using depthwise separable convolution: 在ASPP和decoder中使用深度分离卷积。计算量下降了30-40%.
    Pretraining on COCO: 在MS-COCO数据集上预训练
    Pretraining on JFT: 在IamgeNet-1K和JFT-300M上预训练

可以看到使用深度分离卷积可以显著降低计算消耗。

与其他先进模型在VOC12的测试集上对比:

在目标边界上的提升

使用trimap实验测量模型在分割边界的准确度。计算边界周围扩展频带(称为trimap)内的mIoU。结果如下:

与双线性上采样相比,加decoder的有明显的提升。trimap越小效果越明显。

加了decoder的可视化结果如下:

 

部分转载:https://blog.youkuaiyun.com/Lin_Danny/article/details/87924277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值