A 2017 Guide to Semantic Segmentation with Deep Learning

概述——用深度学习做语义分割

Posted by Simon Duan on July 23, 2017

原文链接 A 2017 Guide to Semantic Segmentation with Deep Learning

什么是语义分割?

语义分割是指在认知图像时具体到像素级别,也就是说,给图像中的每一个像素分配某个类别。
输入图像 语义分割结果

我们不仅要识别出摩托车和驾驶员,还需要标出每个对象的边界,因此与分类不同,我们的模型要具有密集的像素级别的预测能力。

目前用于予以分割的最重要的两个数据集VOC2012 and MSCOCO


相关方法综述

在深度学习的方法应用到计算机视觉之前,大家通常用TextonForest(纹理基元森林) 和 Random Forest based classifiers(基于分类器的随机森林)的方法做语义分割。不仅仅在图像分类领域,分割问题中卷积神经网络(CNN)也取得了巨大的成功。

patch classification(图像块分类)是常用的深度学习的方法,即利用像素周围的图像块将每一个像素分类。使用图像块的主要原因是分类网络通常有全连接层,其输入为固定尺寸的图像。

2014年,来自Berkeley的Long等人提出了完全卷积网络(FCN),推广了不带有全连接层的具有密集预测能力的CNN结构。这就允许任何尺寸的图像都能生成分割图象,同时也比图像块分类的方法速度快了很多。随后的关于语义分割的方法几乎都采用了这种结构。

除了全链接层,用CNN处理语义分割的另一个问题是池化层。池化层增大了视野也能聚合背景信息,因此会丢弃部分位置信息。但是语义分割要求类别图谱精确,因此,需要保留丢弃了的位置信息。为了解决这个问题,人们提出两种不同的结构方法。

第一种是编码器-解码器结构,编码器使用池化层逐步缩小空间维度,解码器则逐步恢复目标细节和空间维度。两者之间通常有直接的连接来帮助解码器回复目标的细节。这种方法中U-Net网络是一种典型的结构。

U-Net : An encoder-decoder architecture


另一种方法使用了叫做空洞卷机的结构,而且去掉了池化层。


An encoder-decoder architecture


CRF(条件随机字段后处理)方法通常用来提高语义识别的效果,CRF方法是一种基于底层图像强度的对平滑分割的图像模型。它运行时将像素强度相近的标记为同一类别。CRFs可以提高1-2%的评分。

接下来我们会从FCN开始介绍一些分割结构演变过程中的代表性论文。这些结构都适用于VOC2012数据集。

  • FCN
  • SegNet
  • Dilated Convolutions
  • DeepLab (v1 & v2)
  • RefineNet
  • PSPNet
  • Large Kernel Matters
  • DeepLab v3

FCN

  • 论文
    • Fully Convolutional Networks for Semantic Segmentation
    • Submitted on 14 Nov 2014
    • Arxiv Link
  • 主要贡献
    • 将端对端的卷集网络推广到语义分割。
    • 重新将预训练好的imagenet网络应用于语义分割。
    • 使用反卷积层进行上采样。
    • 提出跳跃式链接改善上采样粗糙的情况。
  • 详细解释

    本文主要观点在于:分类网络中的全链接层可以被看作一种使用卷积核遍历输入区域的卷积。这相当于评估重叠输入图像块的原始分类网络,但是更高效因为在图像块的重叠取悦计算是共享的。尽管这种方法并不是这篇论文中独有的,但它显著的提高了在VOC2012数据集上的效果。

    在将类似于VGG等预训练网络进行全链接层卷积之后,由于CNN的池化操作仍需要对特征图谱进行上采样。反卷积层会学习实现插值而不是简单的双线性插值。反卷积层也被称作上卷积、完全卷积、转置卷积或fractionally-strided卷积。

    然而上采样操作会产生粗糙的分割图,因为在池化操作时丢失了部分信息。因此提出了高分辨率特征图中的直接/跳跃连接。

  • 个人评价

    在该领域贡献很重要,但新的研究他已经提升了很多。

SefNet

  • 论文
    • SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
    • Submitted on 2 Nov 2015
    • Arxiv Link
  • 主要贡献

    最大池化指数被转移到解码器中,改善了分割的效果。

  • 详细

    FCN网络中,上卷积层和一些直接连接产生了粗糙的分割图谱,因此引入了更多的直接链接。然而与FCN复制编码器特征不同,SefNet网络复制了最大池化指数,因此SegNet比FCN更高效

  • 个人观点
    • FCN和SegNet都是最开始的编码器-解码器结构的网络.
    • SegNet网络的基准还不能满足实际使用。

Dilated Convolutions

  • 论文
    • Multi-Scale Context Aggregation by Dilated Convolutions
    • Submitted on 23 Nov 2015
    • Arxiv Link
  • 主要贡献,
    • 使用了可用于密集预测的空洞卷积层。
    • 提出使用多尺度聚合的空洞卷积的的背景模型。
  • 详细

    由于感受野的扩大,池化操作有助于实现分类网络。但在分割过程中,池化操作却却并不是最好的因为他降低了分辨率。因此作者提出空洞卷积。

    空洞卷积层在不降低空间维度的前提下提高了感受野指数。

    预训练好的分类网络中移除了最后两个池化层,随后的卷积层也被空洞卷积层替代。特别的是,在池化层3和池化层4之间的卷积操作是空洞卷积层2,在池化层4之后的卷积操作是空洞卷积层4。在这种模型下,不用增加参数数量也能获得密集预测结果。

    文章所提出的模型(context module)单独训练了模型前端模块的输出作为该模型的输入。该模型由不同扩张度的空洞卷积层串联而成,因此可以聚合多尺度的背景从而改善前端预测的效果。

  • 个人评论

    需要注意改模型预测分割图的尺寸为原图的1/8,这几乎是所有方法中都存在的问题。将以内插值的方法获得最终的分割图。

Deep Lab(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
  • 主要贡献
    • 使用了空洞卷机层。
    • 提出了空间维度的金字塔形的空洞池化(ASPP)。
    • 使用了全链接CRF。
  • 详细

    空洞卷积层在不增加参数数量的前提下增加了感受野,分割网络也根据空洞卷积的论文加以改进。

    将原始图像的多个重缩放版本传给CNN网络的并行分支,或者使用不同采样率的多种并行的空洞卷积层,都可以实现多尺度的处理。

    全链接的CRF可以实现有结构的预测,CRF已经被单独作为一个后期处理步骤。

Refine Net

  • 论文
    • RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
    • Submitted on 20 Nov 2016
    • Arxiv Link
  • 主要贡献
    • 提出带有解码器模块的编码器-解码器结构
    • 所有组件遵循残差连接的设计
  • 详细

    空洞卷积的方法也有缺点,他的计算成本昂贵,需要大量内存(因为用于处理大规模的高分辨率的特征图谱)。这妨碍了高分辨率预测的计算研究。DeepLab 预测结果只有原始输入图像的1/8。

    所以本文提出了编码器-解码器结构,编码器部分是ResNet-101模块,解码器部分是RefineNet中融合编码器的高分辨率特征和先前模块中低分辨率特征的模块。

    RefineNet中的每个模块都包含一个能对融合由低分辨率特征进行上采样产生的多种分辨率特征的组件,和一个能基于步幅为1的5X5的重复的池化层获取背景信息的组件。这些组件都使用了遵循恒等映射思想的残差连接设计。

PSPNet

  • 论文
    • Pyramid Scene Parsing Network
    • Submitted on 4 Dec 2016
    • Arxiv Link
  • 主要贡献:
    • 提出用金字塔池化模型聚合背景。
    • 使用了附加损失值。
  • 详细

    全局场景分类很重要,因为它提供了分割类别的分布线索。金字塔池化模型可以用最大内核池化层获得这一信息。

    PSPNet用空洞卷积网络来完善Resnet结构,同时也添加了一个金字塔池化模块。这个模块来讲ResNet的特征图谱和并行池化层的上采样输出连接起来,其中各自的内核分别覆盖了整个区域、一半区域和小块区域。

    在ResNet的第四阶段,除了主分支损失之外又增加了附加损失值。这在别的领域也被叫做中级监督。

Large Kernel Matters

  • 论文
    • Large Kernel Matters – Improve Semantic Segmentation by Global Convolutional Network
    • Submitted on 8 Mar 2017
    • Arxiv Link
  • 主要贡献
    • 提出了带有很大卷积核的编码器-解码器结构。
  • 详细

    语义分割不仅仅要求分割,还要求对分割目标进行分类。尽管全链接层不能用于分割结构,但大卷积内核可以。

    另一个采用大内核的原因是,尽管想ResNet等的深层网络具有很大的感受野,但研究发现网络更倾向于在小得多的区域获取信息。

    大内核结构不仅计算成本高,而且需要很多参数,因此kK的卷积被近似为1k和K*1两种卷积组合,这个模型叫做GCN。

    在结构上,ResNet组成了编码器部分,GCN网络和反卷积层组成解码器部分。这里还使用了一种叫做BR的简单残差模块。

DeepLab V3

  • 论文
    • Rethinking Atrous Convolution for Semantic Image Segmentation
    • Submitted on 17 Jun 2017
    • Arxiv Link
  • 主要贡献
    • 改善了ASPP
    • 该模型级连了多个空洞卷积层。
  • 详细

    这里也用空洞卷积来改善ResNet模型。

    改善ASPP包含像素级别特征的连接、一个11的卷积层和不同比率的33的空洞卷机层,每个并行的卷积层之后还进行了批量归一化处理。

    级联模块是一个ResNet网络模块,但其中卷积层是有多个不同比率的空洞卷积组成的。这个模块和空洞卷积论文里的背景模块一类似,但它被直接应用于中间特征图谱而不是置信图谱。

    论文独立的评估了两个提出的模型,尝试结合两者但并没有提高实际效果。两者在验证集上表现相似,带有ASPP结构的模型效果稍微好点。在评估时没有使用CRF。

    这两种模型的效果都比DeepLabv2好,作者指出效果的改善来自于批量归一化处理和更优的多尺度背景编码方式。