DeeplabV3/V3+

DeeplabV3

DeepLabv3
Rethinking Atrous Convolution for Semantic Image Segmentation

首先

首先由上图可以看出扩张卷积在卷集核大小不变的情况下,可以明显的看到感受野增大。

在这里插入图片描述

对比常见的几种多尺度multi-scale context的模型结构:

  • 图像金字塔(Image pyramid): 使用共享权重,用于多尺度输入。通过拉布拉斯金字塔对输入变换成多尺度,传入DCNN,融合输出。但因为GPU存储器的限制,对于更大/更深的模型不方便扩展。通常应用于推断阶段。
  • 编码器-解码器(Encoder-decoder): 编码器的高层次的特征容易捕获更长的距离信息,在解码器阶段使用编码器阶段的信息帮助恢复目标的细节和空间维度。例如SegNet利用下采样的池化索引作为上采样的指导;U-Net增加了编码器部分的特征跳跃连接到解码器;RefineNet等证明了Encoder-Decoder结构的有效性。
  • 上下文模块(Context module):包含了额外的模块用于级联编码长距离的上下文。一种有效的方法是DenseCRF并入DCNN中,共同训练DCNN和CRF。
  • 空间金字塔池化(Spatial pyramid pooling):采用空间金字塔池化可以捕捉多个层次的上下文。在ParseNet中从不同图像等级的特征中获取上下文信息;DeepLabv2提出ASPP,以不同采样率的并行空洞卷积捕捉多尺度信息。最近PSPNet在不同网格尺度上执行空间池化,并在多个数据集上获得优异的表现。还有其他基于LSTM方法聚合全局信息。

在这里插入图片描述

首先做了一个简单的尝试,从block4开始,把网络里边的3X3的卷积核分别替换成不同rate的扩张卷积核,保持output_stride=256(block5、6、7分别是resnet的bottleneck的扩展),从而减少细节的丢失。对比结果如下:

在这里插入图片描述

在此基础上,文章采用deelabv2提出的ASPP结构,并在DeepLabv3中向ASPP中添加了BN层,不同采样率的空洞卷积可以有效的捕获多尺度信息。但是,我们发现随着采样率的增加,滤波器的有效权重(权重有效的应用在特征区域,而不是填充0)逐渐变小。如下图所示:

在这里插入图片描述

当我们不同采样率的3×33×3卷积核应用在65×65的特征映射上,当采样率接近特征映射大小时,3×33×3的滤波器不是捕捉全图像的上下文,而是退化为简单的1×1滤波器,只有滤波器中心点的权重起了作用。为了克服这个问题,我们考虑使用图片级特征。具体来说,deeplabv3在模型最后的特征映射上应用全局平均,将结果经过1×1的卷积,再双线性上采样得到所需的空间维度。在此基础上,在block4之后采用改进的的ASPP方法,将不同rate并联起来。

在这里插入图片描述

相关结果如下表:
在这里插入图片描述

小技巧对比实验:

在这里插入图片描述

DeeplabV3+

DeeplabV3+
Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation

在这里插入图片描述
a): 即DeepLabv3的结构,使用ASPP模块获取多尺度上下文信息,直接上采样得到预测结果
b): encoder-decoder结构,高层特征提供语义,decoder逐步恢复边界信息
c): DeepLabv3+结构,以DeepLabv3为encoder,配合一个decoder模块用于逐渐恢复边界信息(连续两次四倍上采样)。

整体模型如下图所示:

在这里插入图片描述

最主要改动的两点,第一个是encoder输出的feature(output_stride=16)经过双线性上采样4倍得到FA(output_stride=4), 再取encoder中对应着相同分辨率(即output_stride=4)的特征层,经过1×1卷积降通道,此时输出的feature记为FBF。这里经过1×1卷积降通道,是因为此分辨率的特征通道较多(256或512),而FA输出只有256,故降通道以保持与FA​所占比重,利于模型学习。将FA和FB做concat,再经过一个3×3卷积细化feature,最终再双线性上采样4倍得到预测结果

第二个是encode主体部分,替换成深度扩张分离卷积网络。

深度可分离卷积:把标准卷积分解成深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)。深度卷积对每个通道独立使用空间卷积,逐点卷积用于结合深度卷积的输出。深度分离卷积可以大幅度降低参数量和计算量。

deeplabv3+将扩张卷积和深度分离卷积结合到一起,即扩张分离卷积。扩张分离卷积能够显著的减少模型的计算复杂度并维持相似的表现, 如下图:

在这里插入图片描述

主体流程如下图所示:
论文进一步改进了MSRA的工作以适应语义分割任务,具体如下:
1):更深的Xception结构,不同的地方在于不修改entry flow network的结构,为了快速计算和有效的使用内存
2):所有的最大池化操作替换成带下采样的深度分离卷积,这能够应用扩张分离卷积扩展feature的分辨率
3):在每个3×3的深度卷积后增加BN层和ReLU

在这里插入图片描述

在这里插入图片描述

从表一可以看出1X1的降维,可以明显提升性能。从表二可以看出四倍的上采样效果是最好的(当3X3的结构重复两次的时候)。
在这里插入图片描述

由表三可以看出,当增加了Deecodeer,MS 和Flip;以及训练过程中使用output_stride=16, 测试过程中使用output_stride=8效果是最好的。

在这里插入图片描述

由表四可以看出,使用MX效果有2%的提升。

在这里插入图片描述

整体的使用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上预训练

总结

  • 改进了ASPP模块,便于更好的捕捉多尺度上下文
  • xinception可以借鉴
  • 实验对比值得学习

参考:

链接:https://blog.csdn.net/u011974639/article/details/79144773
链接:https://blog.csdn.net/u011974639/article/details/79518175

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值