本文翻译自A 2017 Guide to Semantic Segmentation with Deep Learning,方便自己学习和参考。若有侵权,请联系删除
语义分割一直是计算机视觉领域非常重要的研究方向,随着深度学习的发展,语义分割任务也得到了十足的进步。本文从论文出发综述语义分割方法,当前语义分割的研究大多采用自然图像数据集,鉴于这方面的研究自然图像比医学影像成熟得多,本文主要还是针对自然图像的语义分割,结论可能并不直接适用于医学影像。
本文的组织结构如下:1. 解译语义分割问题;2. 综述一些语义分割的方法;3. 概述一些重要的论文。
语义分割是指像素级的图像理解,即对图像中的每个像素标注所属的类别。示例图如下所示:
左图:输入图像;右图:图像的语义分割结果(源于:PASCAL VOC2011 Example SegmentationsPASCAL VOC2011 Example Segmentations)
除了识别图中的摩托车和车手外,我们还要标注每个目标的边界。因此,不同于图像分割,语义分割需要模型能够进行密集的像素级分类。
其中,VOC2012和MSCOCO是语义分割领域重要的数据集。
在深度学习广泛应用于计算机视觉领域之前,人们一般使用TextonForest和Random Forest based classifiers的方法进行语义分割。CNN(Convolutional Neural Network,卷积神经网络)不仅有助于图像识别,在图像的语义分割问题中同样取得了成功。
深度学习方法中常见的一种语义分割方法是图像块分类(patch classification),即利用像素周围的图像块对每一个像素进行分类。的原因是网络模型通常包含全连接层(fully connect layer),而且要求固定大小的图像输入。
2014年,加州大学伯克利分校的Long等人提出全卷积网络(Fully Convolutional Networks,FCN),使得卷积神经网络不需要全连接层就可以实现密集的像素级分类,从而成为当前非常流行的像素级分类CNN架构。由于不需要全连接层,所以可以对任意大小的图像进行语义分割,而且比传统方法要快上很多。之后,语义分割领域几乎所有的先进方法都是基于该模型进行扩展的。
除了全连接层,池化层(pooling layer)是CNN语义分割中的另一个主要问题。CNN中池化层能够扩大感受野,丢弃位置信息(where information)从而聚合上下文信息。但是语义分割要求类别图完全贴合(exact alignment),因此需要保留位置信息。本文将介绍两种不同的分类架构解决这个问题。
一种是编码器-解码器(encoder-decoder)架构。编码器通过池化层逐渐减少空间维度,解码器则逐渐恢复物体的细节和空间维度。编码器到解码器之间通常存在快捷连接(shortcut connections),从而更好地恢复物体的细节信息。U-Net是这类架构中最常用的模型之一。
U-Net: 编码器-解码器架构 (源于:Convolutional Networks for Biomedical Image Segmentation)
第二种这类架构使用空洞/带孔卷积(dilated/atrous convolutions)结构,从而去除池化层。
Dilated/atrous卷积结构。当rate=1时退化为普通的卷积结构. (源于:[1706.05587] Rethinking Atrous Convolution for Semantic Image Segmentation)
条件随机场(Conditional Random Field,CRF)后处理操作通常用于进一步改善分割的效果。CRFs是一种基于底层图像的像素强度进行“平滑”分割(‘smooth’ segmentation)的图模型,其工作原理是相似强度的像素更可能标记为同一类别。CRFs一般能够提升1-2%的精度。
CRF示意图。(b)一元分类结合CRF;(c, d, e)是CRF的变体,其中(e)是广泛使用的一种CRF。(源于:[1210.5644] Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials)
接下来我们将概述从FCN以来一些具有代表性的图像语义分割的论文及其对应的架构,这些架构使用VOC2012 评估服务器进行基准测试。
关于语义分割一些代表性论文如下(按照提出时间排序):
我们列出了每篇论文的主要贡献并稍加解释,同时还展示了他们在VOC2012测试数据集下的基准测试分数值(IOU均值)。
FCN
Fully Convolutional Networks for Semantic Segmentation
Submitted on 14 Nov 2014
Arxiv Link
主要贡献:
相关解译:
论文的关键点在于分类网络模型中全连接层可以看作使用卷积核覆盖整个输入区域的卷积操作。这相当于基于重叠的输入块评估原始分类网络,但由于图像块重叠部分的计算共享,使得这种方法更高效。尽管这些结论并不是这篇论文独有的(参考Integrated Recognition, Localization and Detection using Convolutional Networks,There is a trend at CVPR 2015 of renaming existing deep learning techniques following minor modifications),但是大大提升了VOC2012数据集上语义分割的性能。
全卷积层作为卷积层(源于:[1411.4038] Fully Convolutional Networks for Semantic Segmentation)
将VGG等ImageNet预训练网络中的全连接层卷积化之后,由于CNNs中的池化操作,网络中的特征图还需要上采样操作。不同于简单的双线性插值,论文中解卷积层从数据中学习插值的相关参数。解卷积层也被称作:上卷积(upconvolution),完全卷积(full convolution),转置卷积(transposed convolution)或者微步卷积(fractionally-strided convolution)。
但是,由于池化操作造成的信息损失,上采样(即使采用解卷积操作)只能生成粗略的分割结果图。因此,论文从高分辨率的特征图中引入跳跃连接(shortcut/skip connection)操作改善上采样的精细程度。
Benchmarks (VOC2012):
Score Comment Source
62.2 - leaderboard
67.2 More momentum. Not described in paper leaderboard
个人评论:
SegNet
SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
Submitted on 2 Nov 2015
Arxiv Link
主要贡献:
相关解释:
尽管FCN网络中使用了解卷积层和少量跳跃连接,但输出的分割图比较粗略,因此本文引入更多的跳跃连接。但是,SegNet并没有复制FCN中的编码器特征,取而代之的是复制最大池化索引。因此,SegNet相对于FCN来说更节省内存。
SegNet架构(源于:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation)
Benchmarks (VOC2012):
Score Comment Source
59.9 - leaderboard
评论:
Dilated Convolutions
Multi-Scale Context Aggregation by Dilated Convolutions
Submitted on 23 Nov 2015
Arxiv Link
主要贡献:
解释:
池化操作能够增加接受野,从而提升分类网络模型的性能。但是池化操作会降低分辨率,并不是语义分割的最佳方法。因此,作者提出空洞卷积层,其工作原理如下:
空洞/带孔卷积(Dilated/Atrous Convolutions,源于:vdumoulin/conv_arithmetic)
空洞卷积层(DeepLab中称作带孔卷积层)能够不减少空间维度的前提下,使感受野呈现指数级增长。
从预训练分类网络(VGG)中移除最后的两个池化层,之后的卷积层均采用空洞卷积。模型设置pool-3和pool-4层之间所有卷积层的扩张程度(dilation)为2,pool-4之后卷积层的空洞值(dilation)为4。上述模块在论文中称作前端模块(frontend module),使用上述模块之后,无需增加参数即可实现密集的像素级类别预测。另一个模块在论文中称作上下文模块(context module),使用前端模块的输出作为输入单独训练。该模块由多个不同扩张程度(dilation)的空洞卷积级联而成,因此能够聚合不同尺度的上下文信息,从而改善前端模块输出的预测结果。
Benchmarks (VOC2012):
Score Comment Source
71.3 frontend reported in the paper
73.5 frontend + context reported in the paper
74.7 frontend + context + CRF reported in the paper
75.3 frontend + context + CRF-RNN reported in the paper
评论:
DeepLab (v1 & v2)
v1 : Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
Submitted on 22 Dec 2014
Arxiv Link
v2 : DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
Submitted on 2 Jun 2016
Arxiv Link
主要贡献:
解释:
带孔/空洞卷积层能够不增加参数的情况下扩大感受野,网络结构的修改详情见空洞卷积论文(dilated convolutions paper)。
通过将原始图的不同尺度传递到CNN网络的并行分支(图像金字塔)中,或者使用不同采样率的多个并行空洞卷积层(ASPP),实现多尺度处理。
结构化的预测可以通过全连接的CRF实现,CRF的训练或微调作为后处理的步骤单独进行。
DeepLab2流程图.(源于:Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs)
Benchmarks (VOC2012):
Score Comment Source
79.7 ResNet-101 + atrous Convolutions + ASPP + CRF leaderboard
RefineNet
RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
Submitted on 20 Nov 2016
Arxiv Link
主要贡献:
解释:
采用空洞/带孔卷积的方法也存在缺点。空洞卷积需要大量的高分辨率特征图,因此对计算量和内存的消耗都很大,这也限制方法无法应用于高分辨率的精细预测。例如DeepLab中分割结果图采用原始输入图像的1/8大小。
因此,论文提出一种编码器-解码器的架构。编码器是ResNet-101模块,解码器则是RefineNet模块,其连接/融合编码器的高分辨率特征和先前RefineNet块中的低分辨率特征。
RefineNet架构.(源于:[1611.06612] RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation)
每一个RefineNet模块都有两个组件,一个组件通过对低分辨率特征的上采样操作融合不同的分辨率特征,另一个组件基于步幅为1、大小为5*5的重复池化层来获取背景信息。这些组件遵循单位映射(identity map)的思想,并采用了残差连接(residual connection)的设计。
RefineNet模块.(源于:[1611.06612] RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation)
Benchmarks (VOC2012):
Score Comment Source
84.2 Uses CRF, Multiscale inputs, COCO pretraining leaderboard
PSPNet
Pyramid Scene Parsing Network
Submitted on 4 Dec 2016
Arxiv Link
主要贡献:
解释:
全局的场景分类能够提供图像语义分割的类别分布信息,因此非常重要。金字塔池化模块(pyramid pooling module)通过使用较大核的池化层获取这些信息。如上述空洞卷积论文(dilated convolutions paper)中所述,PSPNet也使用了空洞卷积改善ResNet,并增加了金字塔池化模块。金字塔池化模块连接ResNet的特征图和并行池化层的上采样结果,其中,并行池化层分别采用核大小为整幅、一半和小部分图像的卷积核。
在ResNet的第四个阶段之后(即输入到金字塔池化模块的阶段),在主分支损失( loss on main branch)之外增加了辅助损失。这种思想在其他论文中也被称作中间监管(intermediate supervision)。
PSPNet 架构.(源于:[1612.01105] Pyramid Scene Parsing Network)
Benchmarks (VOC2012):
Score Comment Source
85.4 MSCOCO pretraining, multi scale input, no CRF leaderboard
82.6 no MSCOCO pretraining, multi scale input, no CRF reported in the paper
Large Kernel Matters
Large Kernel Matters -- Improve Semantic Segmentation by Global Convolutional Network
Submitted on 8 Mar 2017
Arxiv Link
主要贡献:
相关解释:
语义分割需要同时进行分割,并对分割目标分类。由于语义分割架构中无法使用全连接层,文中采用带有大核函数的卷积替代全连接层。
采用大型核卷积的另外一个原因是,虽然ResNet等更深层的网络拥有较大的感受野,但相关研究表明网络更宜收集较小区域(有效感受野)内的信息。
大型核的卷积拥有更多参数,所以需要耗费更多计算量。因此,论文将的卷积近似表示为、和的卷积的加和,论文中称该模块为全局卷积网络(Global Convolution Network,GCN)。
至于网络架构,编码器由ResNet(没有空洞卷积)构成,解码器则由GCNs和反卷积构成。此外,架构还用到了叫做边界细化(Boundary Refinement,BR)的简单残差块。
GCN架构.(源于:[1703.02719] Large Kernel Matters -- Improve Semantic Segmentation by Global Convolutional Network)
Benchmarks (VOC2012):
Score Comment Source
82.2 - reported in the paper
83.6 Improved training, not described in the paper leaderboard
DeepLab v3
Rethinking Atrous Convolution for Semantic Image Segmentation
Submitted on 17 Jun 2017
Arxiv Link
主要贡献:
相关解释:
与DeepLabv2和空洞卷积(dilated convolutions)论文一样,论文也采用空洞/扩张卷积改进ResNet模型。改进后的ASPP包括图像层级特征连接、一个的卷积以及三个不同比率的空洞卷积,并构成序列。每个并行卷积层之后采用批量归一化操作。
级联模块是一个ResNet模块,但其卷积层由不同比率的空洞卷积构成。该模块类似于空洞卷积(dilated convolutions)论文中的上下文模块(context module),不同点在于该模块直接应用于中间特征图(intermediate feature maps),而不是可信度地图(belief maps,可信度地图是通道数等于类别个数的CNN特征图)。
论文分别测试了这两个模型,他们的性能在验证集上表现相当,而带有ASPP的模型性能稍微好一点,这里的模型均没有使用CRF。
这两个模型性能均优于DeepLabv2中最优的模型。作者指出性能的提升得益于批量归一化操作和改进的多尺度上下文编码方式。
DeepLabv3 ASPP.(源于:[1706.05587] Rethinking Atrous Convolution for Semantic Image Segmentation)
Benchmarks (VOC2012):
Score Comment Source
85.7 used ASPP (no cascaded modules) leaderboard
资源 | 从全连接层到大型卷积核:深度学习语义分割全指南