图像分割在图像处理和计算机视觉中扮演着关键的角色,在许多应用中发挥着重要的作用,例如: 场景理解、医学图像分析、机器人感知、视频监视、AR和图像理解等领域。在众多文献中已经提出了各种各样的图像分割算法。最近,由于深度学习模型在广泛的视觉应用中的成功,已有大量的工作致力于使用深度学习模型优化图像分割方法。在这篇综述中,我们在撰写时对文献进行了全面的回顾,这些文献涵盖了广泛的语义和实例分割的开创性工作,包括全卷积像素标签网络、编码-解码(encoder-decoder)结构、基于金字塔和多尺度方法、循环网络、视觉注意力模型、·生成式对抗网络的设置。我们研究了这些深度学习模型的相似性、优点和挑战,使用最广泛的数据集进行测试,得出其性能表现,并讨论这领域中在未来有发展前途的方向。
图像分割在众多视觉理解系统中是一个较为基础的任务。其涉及将图像或视频分割成多个区域部分或物体。在许多应用中分割扮演着重要的角色,包括医学图像分析(例如肿瘤边界提取和病变组织体积测量)、自动驾驶、视频监视、AR。文献中已经提出了大量的图像分割算法,从最早期的方法,例如阈值计算、基于直方图的边缘检测、区域增长(region-growing)、k-means聚类、分水岭算法等;再到更多改进后的算法,例如动态轮廓(active contours)、图切割、条件和马尔科夫随机场(conditional and Markov random fields)、基于稀少量方法(sparsity-based)。在过去的几年,深度学习网络催生出新一代的图像分割模型,其有更显著的性能提升,经常在现有的基准上达到最高的准确率,因此很多人认为此领域迎来了新的时代。例如,图1展示了性能优秀的深度学习模型DeepLabv3的图像分割结果。
图像分割可以归结于具有语义标签(语义分割)或单个对象分区(实例分割)的像素级分类问题。语义分割要在整个图像像素中标注出一系列物体类别(例如人类、车、树、天空)的像素级的标签,因此语义分割一般来说比图像分类要更加困难,图像分类只需要为整个图像预测出单个的标签。实例分割比语义分割的范围更广泛,它需要进一步地在图像中识别与勾勒出每个感兴趣的图像。
我们的综述涵盖了图像分割领域中最新的文献,并讨论了在2019年之前提出的上百个基于深度学习的分割方法。我们对这些方法在不同角度提供了一个全面的视角,包括其训练数据、网络结构的选择、损失函数、训练策略和它们的关键贡献。我们对这些方法的性能做一个比较性总结,并讨论基于深度学习的图像分割模型的一些挑战和未来有潜力的方向。
我们根据基于深度学习方法的主要技术贡献,将其分为如下几类:
这篇论文的余下部分结构如下所示:Section 2展示了当前流行的深度神经网络结构的概述,这些网络结构是许多现代分割算法的支柱(backbone);Section 3全面地概括了2019年前上百个最重要的基于深度学习的分割模型,同时讨论它们较于以往研究的优势与贡献;Section 4说明了一些流行的图像分割数据集和其特征;Section 5.1介绍了衡量深度学习语义分割模型的指标,Section 5.2 我们展示了这些模型的定量结果和实验性能;Section 6讨论了关于深度学习分割算法的主要挑战和未来的方向。
在这个部分主要提供了一些用于计算机视觉的著名深度学习结构的简要概述,包括卷积神经网络(convolutional neural networks, CNNs)、循环神经网络(recurrent neural networks, RNNs)和长短期记忆网络(long short term memory, LSTM)、编码器-解码器(encoder-decoder)和生成式对抗网络(generative adversarial networks, GANs)。近些年来随着深度学习的流行,学术界又提出了其他更多的深度神经结构,例如: transformer、胶囊网络(capsule networks)、门控循环单元(gated recurrent units)、空间变换网络(spatial transformer networks)等。
Convolutional Neural Networks, CNNs
CNNs是在深度学习领域内最为成功和用途最为广泛的结构之一,特别是在计算机视觉任务中更为重要。CNNs由Fukushima在他开创性的论文首先提出,是基于Hubel和Wiesel提出的视觉皮层的层次感应域原理。随后Waibel等人引入了具有在时间感应域之间共享权重和反向传播训练的CNNs用于语音识别。LeCun(CNN之父、“深度学习三巨头”之一、2019图灵奖得主之一)提出了一种用于文本识别的CNN结构,如图2所示:
CNN重要由以下三种网络层结构构成:
这些层内的单元相互连接,每个单元从其前一层的一个小邻域中接受权重输入,我们将其称之为感受域(视野)。通过堆叠神经网络层来形成多分辨率金字塔,较高层次的神经网络层从更广泛的感受野中学习特征。CNNs其主要的计算优势是在同一层中的所有感受野都共享权重,因此相较于全连接神经网络(fully-connected neural networks),CNNs的参数数量更少。一些著名的CNN结构有: AlexNet、VGGNet、ResNet、GoogleNet、MobileNet和DenseNet等。
Recurrent Neural Networks (RNNs) and the LSTM
RNNs广泛用于处理序列型数据,例如语音、文本、视频和时间序列相关的问题,这些数据在任何给定的时间/位置上取决于以前相关的数据。在每个时间戳内,模型从当前时间 X i X_i Xi和前一步骤的隐层状态 h i − 1 h_{i-1} hi−1中得到输入数据,输出目标值和新的隐层状态(如图3所示)。
在处理长序列数据时,RNNs通常存在一些问题,因为RNNs不能获取许多现实世界应用中的长期的依赖关系,即使他们在这方面的理论没有显示出其局限性,同时RNNs还经常会出现梯度弥散或爆炸等问题。因此,研究学者设计出了一种称之为长短期记忆网络(Long Short Term Memory, LSTM)的RNN网络,来解决以上问题。LSTM的结构如图四所示,其包含了三种门控: 输入门、输出门、遗忘门(input gate, output gate, forget gate),这些门控机制调节信息流进出记忆细胞(memory cell),记忆细胞以一定量的时间间隔对值进行存储。
输入、隐藏状态与不同门控之间的关系如下所示:
f t = σ ( W ( f ) x t + U ( f ) h t − 1 + b ( f ) ) , i t = σ ( W ( i ) x t + U ( i ) h t − 1 + b ( i ) ) , o t = σ ( W ( o ) x t + U ( o ) h t − 1 + b ( o ) ) , c t = f t ⊙ c t − 1 + i t ⊙ t a n h ( W ( c ) x t + U ( c ) h t − 1 + b ( c ) ) , h t = o t ⊙ t a n h ( c t ) \begin{aligned} f_t &= \sigma(W^{(f)}x_{t} + U^{(f)}h_{t-1} + b^{(f)}), \\ i_t &= \sigma(W^{(i)}x_{t} + U^{(i)}h_{t-1} + b^{(i)}),\\ o_t &= \sigma(W^{(o)}x_{t} + U^{(o)}h_{t-1} + b^{(o)}),\\ c_t &= f_t \odot c_{t-1} + i_t \odot tanh(W^{(c)}x_{t} + U^{(c)}h_{t-1} + b^{(c)}),\\ h_t &= o_t \odot tanh(c_t) \end{aligned} ftitotctht=σ(W(f)xt+U(f)ht−1+b(f)),=σ(W(i)xt+U(i)ht−1+b(i)),=σ(W(o)xt+U(o)ht−1+b(o)),=ft⊙ct−1+it⊙tanh(W(c)xt+U(c)ht−1+b(c)),=ot⊙tanh(ct)
其中 x t ∈ R d x_t \in R^d xt∈Rd是第t个时长的输入, d d d代表着每个单词的特征维度, σ \sigma σ表示对逐个元素进行操作的sigmoid函数(将输入的值映射在区间[0, 1]内), ⊙ \odot ⊙表示矩阵运算中对应的元素相乘, c t c_t ct代表着记忆细胞,其作用是降低梯度消失/爆炸的风险(所以与传统RNNs相比,LSTM能够从更长的时间内学习数据间的依赖关系)。遗忘门 f t f_t ft可以重置记忆细胞,而 i t i_t it和 o t o_t ot表示输入门和输出门,分别控制输入和输出的记忆细胞。
Encoder-Decoder and Auto-Encoder Models
编码器-解码器模型是一个网络系列,其通过两阶段网络学习将数据点从输入域映射到输出域: 编码器由编码函数 z = f ( x ) z = f(x) z=f(x)所表示,将输入压缩为潜在空间表示;解码器由函数 y = g ( z ) y = g(z) y=g(z)表示,其目的是为了从潜在空间表示中预测出输出。这里的潜在表示在本质上是指特征(向量)表示,能够从输入中捕捉潜在的语义信息,有助于对输出的预测。这些模型在图像-图像翻译问题和NLP的序列模型问题中非常流行。图5描述了编码器-解码器模型的一个简单样例。
这些模型通常以最小化重构函数(reconstruction loss) L ( y , y ^ ) L(y, \hat{y}) L(y,y^)来进行训练,重构损失函数描述了真值输出 y y y和重构序列 y ^ \hat{y} y^之间的差异。这里的输出也可以是图像的增强版本(例如去模糊的图像或者超像素),或是语义映射。
自编码是编码器-解码器的一种特例,其输入和输出是相同的。目前已提出几种不同版本的自编码器变体。其中最流行的是多层降噪自编码器(stacked denoising auto-encoder, SDAE),堆叠了多个自编码器用于图像降噪。另外较为流行的变体是变分自编码器(variational auto-encoder, VAE),其在潜在空间中增加了先验分布(prior distribution)。VAEs可以从所给的数据分布里生成真实的样本。还有一种变体是对抗自编码器(adversarial auto-en),其在潜在表述中引入了一种对抗损失(adversarial loss),以促使它们近似先验分布。
Generative Adversarial Networks (GANs)
GANs是一种更新的深度学习模型体系。如图6所示,GANs包含两种网络: 生成器(generator)和判别器(discriminator)。
在传统的GANs中,生成网络 G = z → y G = z \rightarrow y G=z→y学习从具有先验分布的噪声数据 z z z到目标分布 y y y的映射,类似于“真实”样本。判别器网络 D D D从真实样本中区分出那些被生成的假样本。GANs的损失函数写为:
L G A N = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] L_{GAN} = \mathbb{E}_{x \sim p_{data}(x)}[logD(x)] + \mathbb{E}_{z \sim p_{z}(z)}[log(1-D(G(z)))] LGAN=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
我们可以将GAN视为求 G G G和 D D D之间的极值策略,其中 D D D试图去最小化从真实样例中区分假样本的分类误差,从而最大化损失函数; G G G最大化判别器网络的误差,进而最小化损失函数。在对模型进行训练之后,已训练过的生成器模型将成为: G ∗ = a r g m i n G m a x D L G A N G^* = arg \ min_G \ max_D \ L_{GAN} G∗=arg minG maxD LGAN。事实上,此损失函数并未提供足够的梯度来有效地训练 G G G,尤其是初始化。除了最小化 E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{z \sim p_{z}(z)}[log(1-D(G(z)))] Ez∼pz(z)[log(1−D(G(z)))],一种可行的解决方法是最大化 E x ∼ p d a t a ( x ) [ l o g D ( x ) ] \mathbb{E}_{x \sim p_{data}(x)}[logD(x)] Ex∼pdata(x)[logD(x)]。
自从GANs被提出以来,研究学者试图从不同方面提升或改进GANs。例如,Radford等人提出了一种卷积GAN模型,当用于图像生成时这种模型比全连接网络的效果更好。Mirza提出了条件GAN模型,这种模型可以生成基于类标签的图像,即生成指定标签的样本。Arjovsky等人提出了一种基于Wasserstein距离的新型损失函数,可以更好的去估计实际样本和生成样本的分布在不重叠情况下的距离。
Transfer Learning
在一些情况下,深度学习模型可以在一些新的应用或数据集中进行重新训练(假设有足够数量的标记训练数据),但是在大多数情况下,并没有足够数量的标记数据可供模型从新训练,此时可以使用迁移学习解决这个问题。在迁移学习中,在某个任务中训练过的模型可以通过适应性过程在另一个相关的任务中进行重新训练。例如,在ImageNet(大型图像分割数据集)上训练过的图像分类模型可以适应于不同的任务中,如纹理分类或是面部识别等。在图像分割中,许多人使用在ImageNet上训练过的模型,作为编码器网络的一部分对初始权重进行重新训练。理论依据的假设是:这些预训练的模型能够捕捉图像中的语义信息,因此能够用较少的标记样本来训练模型。