张 婧,张 策*,张 茹,王宇彬,张 展,苏子旸,吕为工
(1.哈尔滨工业大学(威海) 计算机科学与技术学院,山东 威海 264209;2.哈尔滨商业大学 管理学院,黑龙江 哈尔滨 150076;3.哈尔滨工业大学 计算机科学与技术学院,黑龙江 哈尔滨 150001)
随着科学技术水平的不断提升,许多智能化领域都离不开图像处理技术,而图像分割作为其重要组成部分,在医学影像处理、可穿戴计算、自动驾驶、智能安防等领域都具有广阔的应用前景。例如,在医学影像处理领域能够利用图像分割发现病灶实现计算机辅助诊断,在可穿戴计算领域可利用图像分割实现手势识别等智能人机交互技术等。图像分割[1]通常作为图像处理的基础工作和关键步骤,为后续工作提供精简可靠的图像信息,分割的质量直接影响后续视觉任务的有效性,因此分割质量的高低就显得尤为重要。
图像分割作为计算机视觉的重要组成部分和图像处理中的经典难题,从问题提出至今几十年的时间里,不断有研究人员投身其中,提出了许多经典的算法,使得分割的质量得到不断提高。尤其是全卷积网络(Fully Convolutional Network,FCN)[2]的提出,首次把深度学习应用在图像分割领域,使得分割算法能够提取图片的高级语义信息,实现图像的语义分割[3],使分割的结果取得了突破性的进展。
该文对图像分割方法进行述评,根据图像分割领域发展的历程,将其分为基于阈值和区域的图像分割算法、基于图论和聚类的算法以及基于深度学习的算法三大类,并对每个类中的典型常用算法进行梳理总结,通过对比分析列出了这些算法的优缺点和适应场景,可为相关领域的应用实践提供一定的参考。
图像分割是指在像素水平上对图像进行分类,其含义是依据一张图片所含的表层信息或者语义信息把图片中的像素点都归类到不相交且有意义的区域,要求同一区域的像素点之间有一定的相关性,不同区域的像素点有一定的相异性[4],将每个区域都使用不同的颜色进行标记,而不管这个区域到底是什么类别。
图像分割为图像中的每个像素都分配一个预先定义好的类别标签,其中,深度学习语义分割与传统图像分割相比又充分利用了图像的语义信息,最具有代表性,在此给出基于深度学习的语义分割的工作流程。其工作流程可分为特征提取和生成分割结果两个部分,在特征提取部分中,将输入的图像通过特征编码提取高级语义特征,在这个过程中,可能会通过特征选择再利用特征融合来增强特征,然后进入生成分割结果部分,将得到的特征图通过像素分类得到粗糙的分割结果图,并可以采取手段进行处理来优化分割结果。把基于深度学习的语义分割的工作流程抽象为工作逻辑,如图1所示,两个部分用虚线分隔,图中实线箭头表示一般过程,虚线箭头表示可选过程。
图1 深度学习语义分割工作逻辑图
常用的评价图像分割准确率的指标主要为平均交并比(Mean Intersection over Union,MIoU)。
MIoU是图像分割最常用的度量,它计算图像分割所有类别中每一类真实值集合和预测值集合的交集和并集之比后求平均,该指标简单且最具代表性,目前大多数研究人员都使用这个指标来评价图像语义分割结果。
该文按照时间的跨度对图像分割的各类方法进行梳理和介绍。如图2所示[5-26],2000年以前,数字图像的处理基本上主要针对图像的底层特征,也就是轮廓、边缘、颜色、纹理和形状等,这一阶段主流的图像分割算法是基于阈值和基于区域的,在本节的第一部分中介绍这类早期的图像分割方法,对其中的经典算法进行阐述。2000年到2010年左右,图像分割方法中基于图论和基于聚类的方法迎来了发展和进步,在本节第二部分会对这两类方法中的主流算法进行相关叙述。从2014年FCN模型的提出开始,应用深度神经网络对图像进行语义分割的算法层出不穷,对于图像处理领域的发展有极大的促进作用。同样的,在本节的第三部分会对使用深度学习的一部分经典的图像分割算法进行详细的介绍。
图2 图像分割算法发展进程
2.1.1 基于阈值的分割算法
通过图像阈值[27]来对图像进行分割是数字图像处理早期出现的一种方法,也是最简单的图像分割方法,其实现较为简单,并且计算量小。该方法适用于目标和背景占据不同灰度级范围的图像。其用一个或多个阈值将图像的灰度级分为不相互重叠的部分,并认定同一个部分的像素属于同一个物体。
基于阈值的图像分割方法的研究集中在2000年之前,在这之后该类算法就不是主流了。阈值分割法的优点在于易于理解和实现,并且计算量小,效率高,通常用来作为其他方法的预处理操作或者也能和其他算法结合起来使用。
2.1.2 基于区域的分割算法
基于区域的图像分割算法同样是借助于图像中同一类别中像素的相似性来进行区域划分的。主要有区域生长法和分裂合并法。
区域生长法[28]是从一个像素点开始作为初始的区域,不断将具有相似特征的像素点与之进行合并生成新区域来实现图像分割的过程[29]。
分裂合并法是把整张图片不断分裂形成众多区域,然后再通过合并或分裂操作来满足分裂要求,最后将图片分割成不同区域[30]。
基于区域进行图像分割的优点是充分利用了图像的局部空间信息,克服了其他图像分割算法中存在的空间不连续的问题,具有较好的区域特征。
2.2.1 基于图论的图像分割算法
基于图论的图像分割算法把图像的分割问题转化成了图的划分,把图像的分割问题看做求解最优解的问题,通过不同的图划分准则和不同的权值计算函数等,衍生出了许多不同的基于图论的算法,目的是让划分得到的子图内部相似性最大,子图之间的相似性最小。
Felzenszwalb和Huttenlocher提出了FH算法[9],它是一种基于图论中最小生成树的算法。通过区域内和区域间的差异性对图中的顶点进行聚类来实现分割,算法的时间复杂度为O(NlogN),从而运行的速度较快。
Boykov和Funka-Lea提出了一种基于图论的经典分割算法Graph Cuts[10]。该算法利用图像的像素灰度信息和区域边界信息,通过最优化求解保证分割效果,但运算量较大,分割结果倾向于对具有相同的类内相似度的图像进行分割。
2.2.2 基于聚类的图像分割算法
将聚类的思想应用到图像分割领域,就是把具有相似特征的像素聚类到同一区域中,通过不断的迭代最终得到图像分割的结果。聚类分割算法的技术在不断更新,最初由Fukunaga[31]提出meanshift算法,通过把具有相同模点的像素聚类到同一区域实现图像分割,随后Cheng[32]定义了核函数和权值函数,使meanshift得到了更广泛的应用,Sheikh等人[11]同样在meanshift算法的基础上提出了mediodshift算法。后来Levinshtein等人[12]提出了几何流的超像素快速生成算法TurboPixels。Achanta等人[13]提出一种简单的超像素方法,称为SLIC(Simple Linear Iterative Clustering)。SLIC算法流程如图3所示。
SLIC算法和k-means算法的思想基本一致,由于其生成的超像素紧凑整齐,并且在运行速度、超像素紧凑度、轮廓保持方面都有一定优势,需要的超参数较少。
图3 SLIC算法流程
随着深度学习应用到计算机视觉中,图像处理领域的发展日新月异,图像分割方面更迎来了突破性的进展。比起原来大多利用图像的底层信息的算法,现在更多的研究人员利用更为抽象的语义信息来实现图像的语义分割,使得分割的精度变得更高,图像分割的应用变得更广泛。
图像语义分割是指通过图像所含的语义特征来对图像实现像素级别的分类,即为每一个像素都分配一个类别。基于深度学习的图像分割[33]通常由两部分组成,第一部分使用深度网络进行特征提取,第二部分将提取的特征输入到分类器中,实现像素级别的分类。图像语义分割在医学影像分割[34]、汽车自动驾驶[35]、可穿戴计算领域都有着非常重要的应用地位。本节将对FCN,U-Net,SegNet,DenseASPP,ENet和BiSeNet进行重点介绍。
2.3.1 FCN模型
2014年,Long等人[2]提出的FCN(Fully Convolutional Networks for Semantic Segmentation)推广了CNN(Convolutional Neural Network)结构,将原来CNN网络的全连接层全部转换为1×1的卷积核所对应等同向量长度的多通道卷积层。由于整个网络模型全部由卷积层组成,没有全连接层产生的向量,使得FCN模型可以接收任意大小的图片输入并实现像素级的密集预测,真正意义上实现了端到端的图像语义分割。为了达到更精准的分割效果,FCN还创新提出了网络跳跃连接,输入图像经过多次卷积池化操作,得到了许多不同层级的特征图,再通过把深层信息与浅层信息相结合,实现了全局语义信息和局部位置信息的充分融合。
FCN模型作为深度学习应用到语义分割领域的开山之作,开辟了基于深度学习的图像分割的道路,同时,也存在一些不足之处:
(1)结果的精确度不够高,上采样的结果较为模糊和平滑,对图像中细节不敏感。
(2)没有充分考虑像素之间的关系,忽略了空间规整步骤,缺乏空间一致性。
(3)网络规模大,参数多,运行速度较慢。
2.3.2 U-Net模型
2015年,Ronneberger等人[14]提出了U-Net语义分割模型,该模型主要应用于医学细胞检测上,其不仅精度高,普适性也较强。采用对称的编码器解码器架构,结构像字母“U”,左侧是编码器网络,通过不断的卷积和池化提取图像特征,之后再通过右侧的解码器把获得的特征重新映射到更大的图中用于每一个像素点的分类。
U-Net网络不仅可以通过弹性形变增加数据,还可以通过镜像边缘更好地处理边缘,该网络能很容易地应用到其他各个领域,其U型的结构也启发了众多算法的出现。但U-Net上采样时的拼接方法过于粗糙,连接的两个卷积层输入具有较大的语义差别,因而加大了网络学习的难度,有待改进。
2.3.3 SegNet模型
2017年,Badrinarayanan等人[15]提出了SegNet网络模型,是一个经典的编码器解码器框架模型,属于对FCN的扩展。其中编码器部分采用去掉全连接层的VGG16模型,由卷积、池化和批标准化操作构成,获取输入图像局域特征,对图像的低级区域像素值进行归类与分析来获得语义信息。解码器部分对特征图进行上采样,对上采样的图像进行卷积,弥补细节损失,创新之处在于上采样操作只存在于解码器部分,且和编码器的池化层一一对应,上采样仅利用池化索引,降低了学习成本,使模型的参数量相比FCN明显降低。
图像语义分割模型常常用到编码器解码器框架,如LinkNet[36],DFANet[22],FFNet[37],PP-LiteSeg[38]等。编码器可以看作是特征提取网络,通常使用图像分类的网络,例如VGG,ResNet,缩减输入图像的尺寸,提取重要特征。解码器用于将小尺寸的特征通过上采样反卷积的手段恢复目标的细节和原图的空间维度,以此获得像素级分类。
SegNet模型在分割性能较好的同时,使得参数量和推理时间都有显著的降低,适合移动设备上的推理。
2.3.4 DenseASPP模型
2018年,Yang等人[20]提出了针对街景的语义分割网络DenseASPP(Dense Atrous Spatial Pyramid Pooling),该模型的思想就是利用密集的空洞卷积和金字塔池化来弥补深度卷积网络为获取高级语义信息而多次池化,丢失许多细节的问题。
扩张卷积常用来解决特征图分辨率和感受野之间的矛盾,利用多尺度信息进一步强化分割效果,能保持特征图分辨率不变的情况下增大感受野,但扩张卷积只利用了单一尺度的特征。所以提出了空洞空间卷积池化金字塔(Atrous Spatial Pyramid Pooling,ASPP)[26],其利用不同的扩张率把多个扩张卷积特征图以不同的扩张速率串联起来,编码多尺度信息,提高网络性能。但ASPP产生的多尺度特征对于自动驾驶应用来说不够密集,因而作者提出DenseASPP,在不显著增大网络模型的基础上,获得更大感受野并获得更加密集的特征。原来的ASPP模块是四个分支并行处理前馈,而DenseASPP模块通过跳层共享了连接信息,大和小扩张率的卷积相互依赖,不仅构成了密集的特征金字塔,同时也获得了更大的接收野。
DenseASPP在CityScapes数据集上的平均交并比达到了80.6%,在当时达到了SOTA(state-of-the-art)的效果。虽然它的分割准确率较高,但其参数量大,分割速度较慢。
2.3.5 ENet模型
2016年,Paszke等人[16]提出了ENet模型。ENet实现了专门针对嵌入式系统、移动设备的实时语义分割,与当时其他的分割网络相比较,在速度快18倍、参数要少79倍的基础上,还能保持较高的准确率。ENet在分割速度上的提高是从特征提取的角度进行改进的,因为FCN,SegNet等网络基于vgg16[39]网络体系,该体系具有网络参数多、运行时间长等不足,于是ENet的网络结构参考ResNet并进行了其他的设计选择,最终极大地提高了语义分割的速度。许多分割模型的主干网络都选择ResNet,其最主要的贡献是发现了网络层的退化现象,即随着深度学习中随着层数的增加,模型的准确率在不断提高达到最大值后出现大幅度降低。并且针对退化现象提出了残差单元。
ENet的网络结构同源于ResNet[40],将其结构描述为一个主分支与一个带有卷积核的附加分支,最后进行像素级的相加融合。网络结构采用较大的编码部分和较小的解码部分,大大削减了参数数量。作者意识到处理体积较大的图片需要消耗更多资源,因此将网络的初始部分用作降采样,极大减少了输入的尺寸。同时采用PReLUs激活函数确保分割的精度。模型除此之外还使用了空洞卷积、正则化等设计选择不断提高分割效果和分割速度。
ENet为了追求极其紧凑的框架而丢弃了模型的最后阶段,虽然ENet达到了满足实时语义分割的速度,但由于ENet抛弃了最后阶段的下采样,模型的感受野不足以涵盖大物体,导致其判别能力较差,适用于注重轻量化、实时性,而对分割精度要求不高的可穿戴技术应用。
2.3.6 BiSeNet模型
2018年,Yu等人[21]提出了双向分割网络(Bilateral Segmentation Network,BiSeNet)语义分割模型。双向分割网络的网络结构主要包含两个部分:空间分支路径(Spatial Path)和上下文分支路径(Context Path)。空间分支路径通过保留原输入图像的空间尺度来解决空间信息缺失的问题,编码了比较丰富的空间信息。上下文分支路径在轻量级模型Xception[41]末端添加一个全局平均池化进行快速下采样,得到一个较大的感受野,其中还包含注意力优化模块(ARM)来优化每一阶段的输出特征。最后使用一个特征融合模块(FFM)将这两部分特征进行结合。
双向分割网络从多分支的角度在精度和速度之间进行权衡,在提升速度的同时也关注了空间信息,因此同时提升了实时语义分割的速度与精度。但其对空间信息进行编码的额外路径耗时较长,并且由于使用原本用于图像分类的预训练网络作为主干网络都会影响效率。
2.3.7 基于深度学习的图像分割算法比较
基于深度学习的图像分割算法各有利弊,为了更好地进行比较,在此汇总了上述的语义分割模型,结果如表1所示。
表1 基于深度学习的图像分割算法对比
续表1
基于深度学习的图像分割方法自2014年后,不断有研究者提出效果更好的新模型,在准确率和分割速度上获得了明显的提升。其中FCN,Unet,DenseASPP都在牺牲一定速度的基础上追求更高的分割精度,而SegNet,ENet,BeSiNet都是为了更好地应用在嵌入式系统及移动设备上而平衡精度和速度之间的关系,在不损失过多精度的前提下做出了提高实时性的设计来满足需求。
这里,对第三节分类的图像分割的经典算法进行汇总和比较,结果如表2所示。
表2 图像分割核心算法对比
尽管深度学习应用在图像处理领域,给图像语义分割技术带来巨大的发展,但在对该领域进行一定了解后,发现目前图像分割仍存在许多挑战,并列出了一些具有挑战性的发展方向。
(1)实时图像语义分割。目前越来越多的实际应用要求在极短的响应时间内达到精确分割的结果,尤其在可穿戴计算领域。由于可穿戴设备微小和可移动的特性,当涉及到图像处理时需要兼顾极高的图像处理速度和处理精度。Yu等人[23]进一步改进双向分割网络,深化其中的细节路径来编码更多细节,同时还设计了基于深度卷积的轻量级语义路径组件,使准确率和速度都得到了提升;Jiang W等人[24]提出了LRNNet模型,提出了效果更好的分解卷积块(FCB)和简化的non-local模块来建立高效的模型。但现阶段的实时语义分割仍不够完善,方法大多不能满足实时的需求,如何处理分割速度和精度的关系依然需要研究人员不断去探索发现。
(2)弱监督或非监督语义分割。语义分割训练集需要所有像素都有真值标注,尤其是以人工标注的方式,真值标注的生成是极度耗时耗力的,因此衍生出了弱监督或非监督的语义分割方法。然而目前这些方法的分割效果都不是很理想,因此需要进一步的研究。
(3)三维场景的语义分割。尽管语义分割在一维、二维的数据处理上取得了极大的成功,但在三维数据上的发展缺极为缓慢,这其中有数据集获取的困难,也有提取三维图像语义信息的困难,这都需要研究人员未来进行攻克。
该文对图像分割发展过程中的一些经典方法分别进行了阐述和比较,从中可以看出图像分割经历了从利用底层信息到利用高级语义信息完成像素级分割的过程。图像分割在2000年前的主流算法是基于阈值和基于区域的分割方法,在2000年之后,则涌现了大量基于图论和聚类的分割方法,并且从2014年至今,基于深度学习的图像分割方法已经成为了新的主流算法,图像分割的精度得到了极大提高。在分割的精度得到不断提升的同时,图像分割还针对不同的应用需求进行多方向的发展。特别是面对可穿戴技术、嵌入式系统等应用场景,由于可穿戴设备有着微型化、低功耗的特征,未来研究的具体方向就是轻量级的实时语义分割,要在图像处理达到理想精度的情况下将算法的参数量以及处理速度控制在一定范围内。因此在实际的分割任务中,需要根据不同的应用需求,灵活变通地选择图像分割算法,甚至可以将一些算法进行结合来达到最佳结果。