语义分割:DeepLab系列总结(v1、v2、v3、v3+)

DeepLabv1

Semantic image segmentation with deep convolutional nets and fully connected CRFs

link:https://arxiv.org/pdf/1412.7062v3.pdf

引言

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)\)

\[
E(x)=\sum_i\theta_i(x_i)+\sum_{ij}\theta_{ij}(x_i,y_j)
\]

分为一元势能函数\(\theta_i(x_i)\)和二元势能函数\(\theta_{ij}(x_i,y_j)\)。

一元势能函数\(\theta_i(x_i)\)刻画观测序列对标记变量的影响。

\[
\theta_i(x_i)=-\log P(x_i)
\]

当我们观察到像素点\(i\),\(P(x_i)\)是DCNN计算像素\(i\)的输出标签的分配概率。

二元势能函数\(\theta_{ij}(x_i,y_j)\)刻画变量之间的相关性以及观测序列对其影响,实质是像素之间的相关性

\[
\theta_{ij} (x_i,y_j)=u(x_i,x_j)\sum^K_{m=1}\omega_m\cdot k^m(f_i,f_j)
\]

当\(x_i\neq x_j\)则\(u(x_i,x_j)=1\),否则为\(0\),因此每个像素对之间都会有值,是全连接的。
\(k^m(f_i,f_j)\)是\((f_i,f_j)\)之间的高斯核,\(f_i\)是像素\(i\)的特征向量,对应的权重为\(\omega_m\),高斯核为:
\[
\omega_1 \exp(\frac{||p_i-p_j||^2}{2\sigma^2_{\alpha}}-\frac{||I_i-I_j||^2}{2\sigma^2_{\beta}})+\omega_2 \exp(-\frac{||p_i-p_j||^2}{2\sigma^2_{\gamma}})
\]
\({\alpha}、\sigma_{\beta}、\sigma_{\gamma}\)控制高斯核的“尺度”。

多尺度预测

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

DeepLabv2

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

link:https://arxiv.org/pdf/1606.00915.pdf

引言

DCNN在语义分割中有三个挑战:
(1)特征分辨率下降
(2)存在物体多尺度
(3)由于DCNN的空间不变性使得空间精度下降

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

DeepLabv2结构

首先经过采用空洞卷积的DCNN如VGG-16或ResNet101得到粗略的分割结果,然后通过双线性插值将feature map恢复成原图分辨率,最后用全连接的CRF来精细化分割结果。

DeepLabv2贡献

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

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

相关工作

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

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

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

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

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

方法

空洞卷积

一维情况

一维信号,空洞卷积输入\(x[i]\),输出\(y[i]\),长度\(K\)的滤波器为\(\omega[k]\)。
\[
y[i]=\sum^K_{k=1}x[i+r\cdot k]\omega [k]
\]
\(r\)为输入信号的采样步长,标准卷积中\(r=1\)。

二维情况

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

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

ASPP

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

条件随机场

同DeepLabv1


DeepLabv3

Rethinking Atrous Convolution for Semantic Image Segmentation
link:https://arxiv.org/pdf/1706.05587.pdf

引言

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

1)连续池化或卷积带来的分辨率下降,让DCNN学习更抽象的特征表示。然而,空间不变性会阻碍分割任务,因为其需要详细的空间信息。为了解决该问题,DeepLab引入空洞卷积
2)物体存在多尺度,有许多方法解决该问题,我们主要考虑四类:

①将DCNN应用于图像金字塔来提取不同尺度输入的特征,将预测结果融合得到最终输出。
②encoder-decoder结构,利用encoder的多尺度特征到解码器上恢复分辨率。
③在原网络的顶端增加额外的模块来捕获长程信息,如DenseCRF。
④SPP空间金字塔池化具有不同采样率和感受野的卷积核,能以多尺度捕获对象。

DeepLabv3的贡献

  • 回顾了空洞卷积,在级联模块和金字塔池化框架下也能扩大感受野提取多尺度信息。
  • 改进了ASPP:由不同的采样率的空洞卷积和BN层组成,以级联或并行的方式布局。
  • 大采样率的\(3\times3\)空洞卷积由于图像边界效应无法捕获长程信息,将退化为\(1\times1\)的卷积,我们建议将图像特征融入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=(r_1,r_2,r_3)\)为block4到block7三个卷积层的unit rates。则\(rates=2\cdot(1,2,4)=(2,4,8)\)

ASPP+

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

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

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

当\(output\_stride=8\),采样率加倍。

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

encoder逐渐减小feature map并提取高层语义信息。
decoder逐渐恢复空间信息。

Depthwise separable convolution

深度可分离卷积或group convolution,在保持性能前提下,有效降低了计算量和参数量。

方法

Encoder-Decoder

空洞卷积

该部分见DeepLabv2
\[y[i]=\sum_kx[i+r\cdot k]w[k]\]

深度可分离卷积

深度可分离卷积将标准卷积分解为\(depthwise\ conv\)后跟一个\(pointwise\ conv\),有效地降低了计算复杂度。
\(depthwise\ conv\)对每个输入通道分别进行spatial conv。
\(pointwise\ conv\)合并\(depthwise\ conv\)的输出。

我们提出\(atrous\ separable\ conv\),其在保持性能前提下,有效降低了计算量和参数量。

DeepLabv3作为encoder

令\(output stride\)等于输入图像分辨率和输出分辨率的比值。
图像分类任务,最终的feature map通常比输入图像分辨率小32倍,因此\(output stride=32\)。
语义分割任务,令\(output stride=16 or8\),通过移除最后\(1or2\)个blocks并应用空洞卷积(\(rate=2or4\))来密集提取特征。

在我们的encoder-decoder结构中,采用DeepLabv3最后的feature map作为encoder的输出,包含\(256\)个通道并富含语义信息。此外,可以通过空洞卷积以任意分辨率提取特征,取决于计算量。

decoder


DeepLabv3以\(factor=16\)上采样。
DeepLabv3+首先以\(factor=4\)上采样,然后和尺寸相同的低层特征相拼接。低层特征采用\(1\times 1\)卷积降维,因为低层特征维度一般比较高(\(256or512\)),将占较大权重(我们的模型只有\(256\)),使得训练变困难。拼接之后,我们采用\(3\times 3\)的卷积来细化特征,然后再以\(factor=4\)双线性插值。

改进 Aligned Xception

Xception模型用于图像分类任务,Aligned Xception用于物体检测任务,我们对Xception做了一些变化使其可用于语义分割任务。
1)更多的层,为了计算量和内存,不对Entry flow网络结构进行修改。
2)所有池化层替换为\(depthwise\ separable\ conv\),以便采用 \(atrous\ separable\ conv\)提取任意分辨率的特征。
3)类似于MobileNet,在每个\(3\times 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

原文地址:https://www.cnblogs.com/vincent1997/p/10889430.html

时间: 2024-07-29 14:50:44

语义分割:DeepLab系列总结(v1、v2、v3、v3+)的相关文章

IGMP V1 V2 V3 定义和区别

先来认识一下IGMP这个协议吧,它的全称是Internet Group Management Protocol,它和unicast和multicast的区别是它是发往一组计算机(属于它这个组播组的所有计算机),IGMP主要用于在线的视频和在线游戏,像IPTV就是一种比较广泛的应用. 现在IGMP有3个版本V1(RFC1112),V2(RFC2236),V3(RFC3376), IGMP v1支持host membership query 和host membership report repor

一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?

一. 图像语义分割模型DeepLab v3 随着计算机视觉的发展,语义分割成为了很多应用场景必不可少的一环. 比如网络直播有着实时剔除背景的要求,自动驾驶需要通过语义分割识别路面,与日俱增的应用场景对语义分割的精度和速度的要求不断提高.同时,语义分割数据集也在不断地进化,早期的Pascal VOC2,其分辨率大多数在1000像素以下.而Cityscape的语义分割数据集分辨率全部达到了1024*2048,总共5000张图片(精细标注),包含19类.这些数据集对研究者,计算设备,甚至框架都带来了更

人工智能必须要知道的语义分割模型:DeepLabv3+

图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块.相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类,如下图的街景分割,由于对每个像素点都分类,物体的轮廓是精准勾勒的,而不是像检测那样给出边界框. 图像分割可以分为两类:语义分割(Semantic Segmentation)和实例分割(Instance Segmentation),其区别如图所示. 可以看到语义分割只是简单地对图像中各个像素点分类,但是实例分割更进一步,需要区分开不同

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录

关于图像语义分割的总结和感悟

转自:http://www.2cto.com/kf/201609/545237.html 前言 (呕血制作啊!)前几天刚好做了个图像语义分割的汇报,把最近看的论文和一些想法讲了一下.所以今天就把它总结成文章啦,方便大家一起讨论讨论.本文只是展示了一些比较经典和自己觉得比较不错的结构,毕竟这方面还是有挺多的结构方法了. 介绍 图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类 从图像上来看,就是我们需要将实际的场景图分割成下面的分割图: 不同颜色代表不同类别. 经过我阅读“大量”论

图像语义分割之FCN和CRF

http://blog.csdn.net/u012759136/article/details/52434826 前言 (呕血制作啊!)前几天刚好做了个图像语义分割的汇报,把最近看的论文和一些想法讲了一下.所以今天就把它总结成文章啦,方便大家一起讨论讨论.本文只是展示了一些比较经典和自己觉得比较不错的结构,毕竟这方面还是有挺多的结构方法了. 介绍 图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类 从图像上来看,就是我们需要将实际的场景图分割成下面的分割图:  不同颜色代表不同类

语义分割--全卷积网络FCN详解

语义分割--全卷积网络FCN详解 1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于CNN的语义分割方法是:将像素周围一个小区域(如25*25)作为CNN输入,做训练和预测.这样做有3个问题: - 像素区域的大小如何确定 - 存储及计算量非常大 - 像素区域的大小限制了感受野的大小,从而只能提取一些局部特征 为什么需要FCN? 我们分类使用的网络通常会在最后连接几层全连接层,它会将原来二

DeepLabv3+图像语义分割实战:训练自己的数据集

DeepLabv3+是一种非常先进的基于深度学习的图像语义分割方法,可对物体进行像素级分割. 本课程将手把手地教大家使用labelme图像标注工具制造自己的数据集,并使用DeepLabv3+训练自己的数据集,从而能开展自己的图像分割应用. 课程链接:https://edu.51cto.com/course/18817.html 本课程有两个项目实践: (1) CamVid语义分割 :对CamVid数据集进行语义分割 (2) RoadScene语义分割:对汽车行驶场景中的路坑.车.车道线等进行物体

基于深度学习的图像语义分割方法综述

近年来,深度学习技术已经广泛应用到图像语义分割领域.主要对基于深度学习的图像语义分割的经典方法与研究现状进行分类.梳理和总结.根据分割特点和处理粒度的不同,将基于深度学习的图像语义分割方法分为基于区域分类的图像语义分割方法和基于像素分类的图像语义分割方法.把基于像素分类的图像语义分割方法进一步细分为全监督学习图像语义分割方法和弱监督学习图像语义分割方法.对每类方法的代表性算法进行了分析介绍,并详细总结了每类方法的基本思想和优缺点,系统地阐述了深度学习对图像语义分割领域的贡献.对图像语义分割相关实