本文为论文阅读笔记,不当之处,敬请指正。
A Review on Deep Learning Techniques Applied to Semantic Segmentation: 原文链接
摘要
图像语义分割正在逐渐成为计算机视觉及机器学习研究人员的研究热点。大量应用需要精确、高效的分割机制,如:自动驾驶、室内导航、及虚拟/增强现实系统。这种需求与机器视觉方面的深度学习领域的目标一致,包括语义分割或场景理解。本文对多种应用领域语义分割的深度学习方法进行概述。首先,我们给出本领域的术语及主要背景知识。其次,介绍主要的数据集及难点,以帮助研究人员找到合适的数据集和研究目标。之后,概述现有方法,及其贡献。最后,给出提及方法的量化标准及其基于的数据集,接着是对于结果的讨论。最终,对于基于深度学习的语义分割,指出未来重点并得出结论。
关键词:语义分割;深度学习;场景标记;对象分割
1 引言
现在,2D图像、视频、甚至是3D或体数据的语义分割,是计算机视觉领域的一个关键问题。整体而言,语义分割是一种旨在于场景理解的高难度任务。场景理解作为计算机视觉的核心问题,在从图像提取知识应用数量急剧增长的今天显得尤为重要。这些应用包括:自动驾驶、人机交互、计算机摄影、图像搜索引擎、及增强现实。这些问题在过去已经使用多种计算机视觉及机器学习的方法得以解决。尽管这些方法深受欢迎,但深度学习已经改变了这个局面,许多计算机视觉的问题—包括语义分割—正在被使用深度框架解决,通常是CNNs(Convolutional Neural Networks,卷积神经网络),其能够显著地提高准确率,有时甚至是效率。然而,深度学习相比机器学习及计算机视觉的其他分支还远未成熟。鉴于此,关于深度学习现状的概述及回顾还较少。由于大量的文献的发表,这让研究人员开始研究、紧跟发展趋势变得异常耗时。这让了解语义分割发展趋势,并且合适地解读他们的方案,修正欠佳结果,验证结果变得相对困难。
据我们所知,这是对基于深度学习的语义分割的第一次概述。多种语义分割综述已经存在,如【12 】【13】的工作,其对现有方法进行总结和分类、讨论了数据集和度量标准、提供了未来研究方向的设计选择。然而,他们缺少一些最近的数据集,没有分析框架,并且没有提供深度学习技术的细节。鉴于此,我们认为我们的工作是新颖的、有价值的,对领域研究具有一定贡献。
图 1:物体识别或场景理解从粗到细粒度的过程:分类、检测、定位,语义分割及对象分割。
本论文的主要贡献如下:
- 针对基于深度学习的语义分割项目可能有用的数据集进行广泛的概述。
- 对基于深度学习的语义分割中最著名的方法的结构、贡献进行了深刻、条例的概述。
- 给出了通用的算法性能评估量化标准,如精确度、执行时间、及内存消耗。
- 列出了提及算法的结果,以及可能的未来工作、改进方向,最终总结了领域现状。
2 术语及背景概念
语义分割不是一个孤立的问题,而是图像推理从粗粒度到细粒度的过程中一个自然的步骤。
- 分类(classification),对整个输入进行预测,即预测图像中是什么物体、或者给出物体的链表如果图中有多个物体。
- 定位或检测(localization and detection)是细粒度推测的进一步发展,不只提供物体的类别,同时提供这些类的位置,例如:图心或边界框。
- 语义分割(semantic segmentation)进行稠密预测(dense prediction)推断每个像素点的类标签,通过这种方式,区域或物体内的像素点被标记为相应的类别。
- 物体分割(instance segmentation):分别标记同一类的不同物体,甚至是基于部分的分割(part based segmentation),将已经分割出的类进一步分割为底层的组成部分。
像素分类问题可以被简化为以下问题:对于随机变量集合 X={x1,x2,...,xn} 中的任一元素,寻找一种方法来分配类标签 L={l1,l2,...,lk} 。每个类标签 l 代表不同的类或物体,例如,飞机、汽车、交通标志或者背景。标签空间有 k 中可能的状态,其通常会被拓展到 k+1 并且将 l0 作为背景或者空类。通常 X 为 W×H=N 的 2D 图片中的像素值。
2.1 常用的深度网络架构
2.1.1 AlexNet
AlexNet是首个深度CNN架构,以84.6%的精确度赢得了ILSVRC-2012的前5名,其最接近的对手使用传统方法在相同的挑战中的精确度为73.8%。Krizhevsky et al. [14] 提出这种架构,其相对简单。包含5个卷积层,最大池化,线性整流单元( Rectified Linear Units,ReLUs)作为非线性单元,3个全连接层,和丢弃(dropout)。其网络结构如图2所示。
2.1.2 VGG
VGG(Visual Geometry Group,视觉几何组)是牛津大学视觉几何组提出的一种CNN模型。他们提出了多种深度CNNs模型及其配置,其一参加了ILSVRC-2013(ImageNet Large Scale Visual Recognition Challenge,ImageNet大规模视觉识别挑战赛)。
- 该模型即众所周知的VGG-16,由于其16个权重层而命名,并且以92.7%的准确率取得前5。其配置如图3所示。
- VGG-16与其前网络架构的主要不同之处在于使用较小感受野的卷积层作为第一层,而非使用几层大感受野。这减少了参数的数量,增强了非线性化程度,因此判决函数更容易区别、模型更容易被训练。
2.1.3 GoogleNet
GoogleNet是Szegedy et al. [16]提出的网络架构,以93.3%的准确度赢得了ILSVRC-2014挑战前5名。
- 该网络架构相对复杂,由22层组成,并且引入名为起始模块(Inception module)的新结构。该方法证明了CNN层之间可以有不同的组合方式,而不一定要采用传统的顺序连接方式。
- 这些模块包含Network in Network(NIN)层、池化、大型卷积层、小型卷积层。它们被平行计算,之后是一个 1×1 的卷积操作以降低维度。
2.1.4 ResNet
微软的ResNet以96.4%的准确率赢得了ILSVRC-2016挑战,而尤为著名。
- 该网络还以其152层的深度而出名,并且引入残差模块(见图5)。该残差模块旨在解决极深网络的训练问题,通过引入同源跳跃连接(identity skip connection)而将层的输入复制到下一层。
- 其动机是为了确保下一层能够学习到与输入不同的新的知识(通过提供上一次的输出及其输入),同时这种连接方式也可客服梯度消失的问题。
2.1.5 ReNet
为了拓展RNNs(Recurrent Neural Networks,递归神经网络)到多维任务。
- Graves et al. [18]提出了一种MDRNN(Multi-dimensional Recurrent Neural Network,多维递归神经网络),其使用d连接(d connection)替代标准RNN中的单递归连接,其中d为时-空数据的维度。
- Visin el al. [19] 提出ReNet架构,他们没有使用多维RNNs而是顺序RNNs(sequence RNNs),从而根据输入图像(2d)将每层RNNs的数量线性地增大到d。该方法中每个卷积层(卷积+池化)被水平和竖直方向扫视图像的4个RNNs所替代,如图6所示。
2.2 迁移学习(Transfer Learning)
从头开始训练一个深度神经网络通常是比较困难的,由于:
- 要求有充分大小的数据集
- 达到收敛需要大量时间
- 从预训练的权重开始而非随机初始化的权重开始训练通常是有帮助的
从预训练好的权值开始进行微调(fine-tuning),继续进行训练是迁移学习的主要情景。
Yosinski et al. [22]证明即使是从不同的任务中迁移特征也优于使用随机初始化,在考虑预训练任务与目标任务越不相同,其特征的可迁移性就越低的情况下。
即使如此,迁移学习也不是容易的。
- 一方面,网络架构的参数要能够对应。由于通常不使用全新的网络结构,为了能够迁移学习,通常我们会重用现有网络架构。
- 另一方面,微调与重头训练的训练过程略有不同。选择哪一层进行微调是重要的,通常是网络中较高的层,因为底层通常是用来获得通用的特征。选择合适的学习率也是重要的,通常采用更小的学习率,因为预训练好的权重有相对较好,而不用彻底改变它们。
2.3 数据预处理及扩张
数据扩张是一种常用的手段,已被证明有益于机器学习模型的训练特别是深度框架。能够加速收敛速度、或起到正则化的作用,从而避免过拟合同时增强泛化能力。
数据扩张通常包含数据或者特征空间的转换,或者两者均有。最常用的数据空间的扩张。
- 数据空间:对现有数据进行转化,生成新的样本。转化的方法包括:平移、旋转、弯曲、缩放、色彩空间转换、修建等。其目的是生成更多的样本以形成更大的数据集,以防过拟合、正规化模型,平衡数据集中类的样本数,甚至生成更加适用手头任务的数据集。
- 扩张对于小数据集尤为有用。例如在[26]中,一个含有1500张肖像的数据集通过4种尺度缩放(0.6, 0.8, 1.2, 1.5),4种旋转(-45,-22,22,45)和4种gamma变换(0.5, 0.8, 1.2, 1.5)从而生成19000训练图像。将肖像分割的 Intersection over Union (IoU)准确度从73.09提升到94.20。