其他分享
首页 > 其他分享> > 语义分割丨DeepLab系列总结「v1、v2、v3、v3+」

语义分割丨DeepLab系列总结「v1、v2、v3、v3+」

作者:互联网

花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅。

DeepLabv1

Semantic image segmentation with deep convolutional nets and fully connected CRFs

引言

DCNN在像素标记存在两个问题:信号下采用和空间不变性(invariance)

第一个问题是由于DCNN中重复的最大池化和下采样造成分辨率下降,DeepLabv1通过带孔(atrous)算法解决。
第二个问题是分类器获得以对象为中心的决策需要空间不变性,从而限制了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)

在这里插入图片描述
分为一元势能函数θi(xi)和二元势能函数θij(xi,yj)。

一元势能函数θi(xi)刻画观测序列对标记变量的影响。

在这里插入图片描述
当我们观察到像素点i,P(xi)是DCNN计算像素i的输出标签的分配概率。

二元势能函数θij(xi,yj)刻画变量之间的相关性以及观测序列对其影响,实质是像素之间的相关性。

在这里插入图片描述
当xi≠xj则u(xi,xj)=1,否则为0,因此每个像素对之间都会有值,是全连接的。
km(fi,fj)是(fi,fj)之间的高斯核,fi是像素i的特征向量,对应的权重为ωm,高斯核为:

在这里插入图片描述

多尺度预测

多尺度预测有性能提升,但是不如CRF明显。

DeepLabv2

DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

引言

DCNN在语义分割中有三个挑战:

(1)特征分辨率下降 (2)存在物体多尺度 (3)由于DCNN的空间不变性使得空间精度下降

(1)是由于DCNN中的重复池化和下采样降低了空间分辨率,一种方法是采用转置卷积(deconvolutional layer),但是需要额外的空间和计算量。DeepLabv2在最后几个最大池化层用空洞卷积替代下采样,以更高的采样密度计算feature map。
(2)物体存在多尺度,解决该问题的一个标准方法是将图片缩放成不同尺寸,汇总特征得到结果。这种方法可以提高性能,但是增加了计算成本。受SPPNet启发,DeepLabv2提出一个类似结构,对给定输入以不同采样率的空洞卷积进行采样,以多比例捕捉图像上下文,称为ASPP(astrous spatial pyramid pooling)。
(3)分类器要求空间不变性,从而限制了DCNN的空间精度。解决该问题的一个方法是使用跳级结构融合不同层的特征从而计算最终的分割结果。DeepLabv2更高效的方法是采用条件随机场增强模型捕捉细节的能力。

DeepLabv2结构

在这里插入图片描述
DeepLabv2贡献

采用多尺度处理和ASPP达到了更好的性能。

在DeepLab基础上将VGG-16换成ResNet,在PASCAL VOC 2012和其他数据上上达到SOTA。

相关工作

语义分割的核心是将分割与分类结合。

语义分割中DCNN模型主要有三类:

(1)采样基于DCNN的自下而上的图像分割级联。

(2)依靠DCNN做密集计算得到预测结果,并将多个独立结果做耦合。

(3)使用DCNN直接做密集的像素级分类。

方法

空洞卷积
一维情况

一维信号,空洞卷积输入x[i],输出y[i],长度K的滤波器为ω[k]。

在这里插入图片描述
r 为输入信号的采样步长,标准卷积中r=1。

在这里插入图片描述
二维情况

在这里插入图片描述
1、首先下采样将分辨率降低2倍,做卷积,再上采样得到结果。本质是和原图的1/4位置做响应。
2、对全分辨率图做r=2的空洞卷积,直接得到结果。可以计算整张图的响应。

使用空洞卷积可以增大感受野,采样率为r的空洞卷积插入r−1个零,将k×k的卷积核变为ke=k+(k−1)(r−1)而不增加计算量。

ASPP

并行采用多个采样率的空洞卷积提取特征,再将特征进行融合,该结构称为空洞空间金字塔池化(atrous spatial pyramid pooling)。

在这里插入图片描述
条件随机场
同DeepLabv1


DeepLabv3

Rethinking Atrous Convolution for Semantic Image Segmentation

引言

语义分割中,应用DCNN有两个挑战

1)连续池化或卷积带来的分辨率下降,让DCNN学习更抽象的特征表示。然而,空间不变性会阻碍分割任务,因为其需要详细的空间信息。为了解决该问题,DeepLab引入空洞卷积。
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
定义Multi_Gird=(r1,r2,r3)为block4到block7三个卷积层的unit rates。则rates=2⋅(1,2,4)=(2,4,8)

ASPP+
在ASPP中加入BN层。
当采样率变大,卷积核的有效权重变小。
在65×65的feature map上以不同采样率采用3×3的卷积核。当采样率接近于feature map尺寸时,3×3退化为1×1卷积核,只有中心的权重是有效的。

为了解决该问题并在模型中整合全局上下文信息,我们对最后的feature map采用全局池化,并经过256个1×1的卷积核(BN),然后双线性插值到所需空间维度。

最终ASPP包含
(a)一个1×1的卷积和三个3×3、rates=(6,12,18)、output_stride=16的空洞卷积(256+BN)。
(b)图像级特征。将特征做全局平均池化,后卷积,再上采样。
(a)中不同rates的空洞卷积通过控制不同的padding输出相同的尺寸,(b)中上采样后与(a)尺寸一致。
所有分支的结果被拼接起来并经过1×1的卷积(256+BN),最后经过1×1卷积生成分割结果。

在这里插入图片描述
当output_stride=8,采样率加倍。

标签:DeepLab,采样率,DCNN,卷积,尺度,v1,空洞,v3,池化
来源: https://blog.csdn.net/niuxuerui11/article/details/110008043