语义分割丨DeepLab系列总结「v1、v2、v3、v3+」
花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅。
DeepLabv1
引言
DCNN在像素标记存在两个问题:信号下采用和空间不变性(invariance)
第二个问题是分类器获得以对象为中心的决策需要空间不变性,从而限制了DCNN的空间精度,DeepLabv1通过条件随机场(CRF)提高模型捕获精细细节的能力。
DeepLabv1主要贡献
速度:带孔算法的DCNN速度可达8fps,全连接CRF平均预测只需0.5s。
准确:在PASCAL语义分割挑战中获得第二名。
简洁:DeepLab可看作DCNN和CRF的级联。
相关工作
DeepLab有别于two stage的RCNN模型,RCNN没有完全利用DCNN的feature map。
DeepLab和其他SOTA模型的主要区别在于DCNN和CRF的组合。
方法
空洞卷积
一维空洞卷积
kernel size=3,Input stride=2,stride=1。
理解空洞卷积
feature map变小主要是由于卷积层和池化层引起的,若另所有层的stride=1,输出feature map将会变大。
原始情况下Pooling layer stride=2,receptive field=4
另Pooling layer stride=1,receptive field=3,输出更dense,但感受野变小。
采用空洞卷积后,receptive field=4
跟第一张图相比,在蓝色节点的基础上多了红色节点,在保持感受野使输出更加dense。
条件随机场
全连接CRF模型使用的能量函数
E(x)
一元势能函数 刻画观测序列对标记变量的影响。
二元势能函数 刻画变量之间的相关性以及观测序列对其影响,实质是像素之间的相关性。
多尺度预测
DeepLabv2
引言
DCNN在语义分割中有三个挑战:
(1)特征分辨率下降
(2)存在物体多尺度
(3)由于DCNN的空间不变性使得空间精度下降
(2)物体存在多尺度,解决该问题的一个标准方法是将图片缩放成不同尺寸,汇总特征得到结果。这种方法可以提高性能,但是增加了计算成本。受SPPNet启发,DeepLabv2提出一个类似结构,对给定输入以不同采样率的空洞卷积进行采样,以多比例捕捉图像上下文,称为ASPP(astrous spatial pyramid pooling)。
(3)分类器要求空间不变性,从而限制了DCNN的空间精度。解决该问题的一个方法是使用跳级结构融合不同层的特征从而计算最终的分割结果。DeepLabv2更高效的方法是采用条件随机场增强模型捕捉细节的能力。
DeepLabv2结构
DeepLabv2贡献
相关工作
方法
空洞卷积
一维情况
二维情况
首先下采样将分辨率降低2倍,做卷积,再上采样得到结果。本质是和原图的1/4位置做响应。 对全分辨率图做r=2的空洞卷积,直接得到结果。可以计算整张图的响应。
ASPP
条件随机场
DeepLabv3
link:https://arxiv.org/pdf/1706.05587.pdf
引言
语义分割中,应用DCNN有两个挑战
2)物体存在多尺度,有许多方法解决该问题,我们主要考虑四类:
①将DCNN应用于图像金字塔来提取不同尺度输入的特征,将预测结果融合得到最终输出。
②encoder-decoder结构,利用encoder的多尺度特征到解码器上恢复分辨率。
③在原网络的顶端增加额外的模块来捕获长程信息,如DenseCRF。
④SPP空间金字塔池化具有不同采样率和感受野的卷积核,能以多尺度捕获对象。
DeepLabv3的贡献
回顾了空洞卷积,在级联模块和金字塔池化框架下也能扩大感受野提取多尺度信息。
改进了ASPP:由不同的采样率的空洞卷积和BN层组成,以级联或并行的方式布局。
大采样率的3×3空洞卷积由于图像边界效应无法捕获长程信息,将退化为1×1的卷积,我们建议将图像特征融入ASPP。
阐述训练细节和方法。
相关工作
现有多个工作表明全局特征或上下文之间的互相作用有助于做语义分割,我们讨论四种不同类型利用上下文信息做语义分割的全卷积网络。
图像金字塔
同一模型使用共享权重,适用于多尺度输入。
小尺度输入的特征相应编码了长程的语义信息,大尺度输入的特征相应保留了小对象的细节。
该方法通过拉普拉斯金字塔将输入变换成多尺度,并送入DCNN。
主要缺点是由于GPU存储的限制,在更大更深的DCNN上不能很好地拓展,通常其用于测试阶段。
编码器-解码器
该模型主要包含两部分:
1)编码器,该阶段feature map的维度逐渐降低并且深层次的特征容易捕获远程信息。
2)解码器,该阶段恢复物体细节和空间维度。
SegNet、U-Net、RefineNet
上下文模块
模型包含额外的模块来编码远程上下文信息。
DenseCRF
空间金字塔池化
采用SPP来捕获多尺度上下文。
ParseNet、DeepLabv2(ASPP)、PSPNet(PSP)
DeepLabv3提出将空洞卷积作为上下文模块和空间金字塔池化的工具。
方法
回顾空洞卷积如何提取密集特征、讨论空洞卷积模块以级联(串行)和并行布局。
空洞卷积
见DeepLabv1、v2
级联ResNet
将空洞卷积应用于级联结构,在ResNet最后一个block(block4)后连接许多级联模块。
图(a)中整体信息汇聚到非常小的feature map,实验表明其不利于分割。
Multi-grid Method
定义
ASPP+
当采样率变大,卷积核的有效权重变小。
在 的feature map上以不同采样率采用 的卷积核。当采样率接近于feature map尺寸时, 退化为 卷积核,只有中心的权重是有效的。
最终ASPP包含
(a)一个 的卷积和三个
(b)图像级特征。将特征做全局平均池化,后卷积,再上采样。
(a)中不同 rates的空洞卷积通过控制不同的 padding输出相同的尺寸,(b)中上采样后与(a)尺寸一致。
所有分支的结果被拼接起来并经过 的卷积(256+BN),最后经过 卷积生成分割结果。
当 ,采样率加倍。
DeepLabv3+
Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Link:https://arxiv.org/abs/1802.02611.pdf
引言
语义分割中的DCNN主要有两种结构:空间金字塔池化SPP和编码器-解码器encoder-decoder
SPP通过多种感受野池化不同分辨率的特征来挖掘上下文信息。
Encoder-decoder逐步重构空间信息来更好的捕捉物体的边缘。
DeepLabv3+对DeepLabv3进行了拓展,在encoder-decoder结构上采用SPP模块。encoder提取丰富的语义信息,decoder恢复精细的物体边缘。encoder允许在任意分辨率下采用空洞卷积。
DeepLabv3+贡献
提出一个encoder-decoder结构,其包含DeepLabv3作为encoder和高效的decoder模块。
encoderdecoder结构中可以通过空洞卷积来平衡精度和运行时间,现有的encoder-decoder结构是不可行的。
在语义分割任务中采用Xception模型并采用depthwise separable convolution,从而更快更有效。
相关工作
SPP
PSPNet、DeepLab
Encoder-decoder
decoder逐渐恢复空间信息。
Depthwise separable convolution
方法
Encoder-Decoder
空洞卷积
深度可分离卷积
depthwise tstride等于输入图像分辨率和输出分辨率的比值。
语义分割任务,令outputstride=16or8,通过移除最后1or2个blocks并应用空洞卷积(rate=2or4)来密集提取特征。
decoder
DeepLabv3以factor=16上采样。
DeepLabv3+首先以factor=4上采样,然后和尺寸相同的低层特征相拼接。低层特征采用1×1卷积降维,因为低层特征维度一般比较高(256or512),将占较大权重(我们的模型只有256),使得训练变困难。拼接之后,我们采用3×3的卷积来细化特征,然后再以factor=4双线性插值。
改进 Aligned Xception
Xception模型用于图像分类任务,Aligned Xception用于物体检测任务,我们对Xception做了一些变化使其可用于语义分割任务。
1)更多的层,为了计算量和内存,不对Entry flow网络结构进行修改。
2)所有池化层替换为
3)类似于MobileNet,在每个3×3后添加额外的BN和ReLU。
总结
DeepLabv1 | DeepLabv2 | DeepLabv3 | DeepLabv3+ | |
---|---|---|---|---|
Backbone | VGG-16 | ResNet | ResNet+ | Xception |
Atrous Conv | √ | √ | √ | √ |
CRF | √ | √ | × | × |
ASPP | × | ASPP | ASPP+ | ASPP+ |
Encoder-decoder | × | × | × | √ |
参考
[1]Chen L C, Papandreou G, Kokkinos I, et al. Semantic image segmentation with deep convolutional nets and fully connected crfs[J]. arXiv preprint arXiv:1412.7062, 2014.
[2]Chen L C, Papandreou G, Kokkinos I, et al. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 40(4): 834-848.
[3]Chen L C, Papandreou G, Schroff F, et al. Rethinking atrous convolution for semantic image segmentation[J]. arXiv preprint arXiv:1706.05587, 2017.
[4]Chen L C, Zhu Y, Papandreou G, et al. Encoder-decoder with atrous separable convolution for semantic image segmentation[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 801-818.
[5]https://www.imooc.com/article/35025
[6]http://hellodfan.com/2018/01/22/语义分割论文-DeepLab系列/
[7]https://www.twblogs.net/a/5ca1c085bd9eee59d3326c76/zh-cn
[8]https://zhuanlan.zhihu.com/p/33796585
(本文出自平台合作作者Vincent,cs硕士在读)