王龙宝,张珞弦,张 帅,徐 亮,曾 昕,徐淑芳
(1.河海大学 计算机与信息学院,南京 210000;2.河海大学 水利部水利大数据技术重点实验室,南京 210000;3.中国电建集团 昆明勘测设计研究院有限公司,昆明 650000;4.长江生态环保集团有限公司,武汉 430061)
在过去的30年里,图像语义分割是计算机视觉中的关键任务之一,现实生活中也有越来越多的应用场景需要从影像中推理出相关的知识或语义。图像语义分割是在像素级别上的分类,属于同一类的像素都将被归为一类,即将图像中的所有像素划分为有意义的对象类,因此图像语义分割是从像素级别来理解图像的。图像语义分割与实例分割不同,语义分割不会将同一类的实例进行区分,只关注每个像素的类别,如果输入的对象中有两个具有相同类别的对象,那么语义分割不将其划分为单独的对象,而实例分割是需要对对象个体进行区分的,即实例分割对同一类的不同对象也会进行分割。
由于图像语义分割技术有助于理解图像中的具体内容,并且能够帮助人们确定物体之间的关系,因此图像分割的应用对于各种领域的发展都有所帮助[1-5],比如自动驾驶、卫星图像分析、人脸识别、医学影像诊断等。具体而言,结合图像语义分割使得机器可以智能地对医疗影像进行分析,大大减少了运行诊断测试所需的时间的同时也很大程度的降低了医生的工作负担。此外,在自动驾驶过程中利用图像语义分割技术实时分割道路场景,使得自动驾驶汽车有环境感知的能力,以便自动驾驶车辆可以在道路上进行安全行驶。
当前,图像语义分割方法分为传统图像语义分割方法和基于深度学习的图像语义分割方法。
传统的图像语义分割算法通常是基于聚类方法,并且往往还需要利用额外的轮廓、边缘等信息进行辅助分析[1,6]。假定同一区域内的像素点为同一类别,利用已有的聚类方法,将这些像素点聚类即可实现图像的分割。近年来,各研究者对基于聚类图像分割的技术进行了许多改进和发展,其中最著名、最重要的技术之一是使用马尔可夫过程进行建模。除此方法外,文献[7]将边缘提取、图像分割以及层次分析法结合起来。文献[8]对SAR影像无监督学习范围的扩大进行了研究。尽管传统的图像语义分割方法能够实现对图像的分割,并且对许多领域的发展都有一定的促进作用,但是,它仅仅是通过提取图片的低级特征信息来进行分割,并没有将图像的语义信息纳入到其中,所以,传统的图像语义分割方法的图像分割效果非常有限[9]。
与传统方法相比,基于深度学习的图像语义分割方法显著提高了分割效果,且从分割结果可以直接清楚的知道分割出来的具体是什么物体。基于深度学习的图像语义分割算法,可以有效地克服大部分传统的图像语义分割算法中所忽视的目标边缘问题,并且对椒盐噪声也具有鲁棒性[10-11]。深度学习[12-13]在计算机视觉中被广泛使用,通过增加模型的深度可以提高算法的性能和准确性,利用深度学习可以快速地从非常大的数据集中提取图像特征。
卷积神经网络(CNN,convolutional neural network)[14-15]是一种人工神经网络,其可以类似人一样具有简单的决定能力和简单的判断能力,在图像和语音识别方面可以给出更好的结果,在图像识别领域也被广泛应用。CNN的结构可以分为三层,分别是卷积层、池化层和全连接层。卷积层的主要作用是进行特征提取以及特征映射;池化层进行下采样以降低空间分辨率和训练参数;全连接层就是一个完全连接的神经网络,通常在CNN尾部对卷积层以及池化层得出的特征进行重新拟合,通过调整权重和网络连接得到分类的结果,减少特征信息损失。CNN本质上是多层感知器,成功的关键在于其网络连接和共享权重的方式。这种方法一方面降低了过度拟合的风险,另一方面减少了权重的数量,使得优化整个网络比其他方法更容易。然而,CNN不能够训练不同大小的图像,由于全连接层的输入层中的神经元数量是固定的,因此卷积层的输入图像的尺寸大小是固定的。
全卷积神经网络(FCN,fully convolutional networks)将CNN最后一层全连接层替代为卷积层,消除了全连接层输入神经元个数的限制,解决了CNN卷积层必须是相同输入大小的问题,FCN能够接受任意大小的输入图像。FCN通过反卷积将上一层的特征图上采样,将其还原为与输入图像一致的尺寸大小,在保持原输入图像的空间信息的前提下,对每一幅图像都生成一个预测,并在此基础上对图像进行逐像素分类。此外,由于在卷积过程中避免了使用像素块带来的重复存储和计算卷积的问题,因此与CNN相比,FCN减少了模型中的参数,提高了算法的运算效率。
然而,FCN方法仍然存在一些问题,输出特征图通过卷积层和池化层的交替传播进行下采样,因此FCN直接预测通常是低分辨率的,目标边界也相对较为模糊。为了解决这个问题,最近提出了各种基于FCN的方法。例如,文献[16]中提出了一种多尺度卷积网络,包括多个具有不同分辨能力的子网络,以便逐步改进粗预测。文献[17]提出高低层特征融合,即在多层的输出后是一个反卷积层,用于对高密度的像素输出进行双线性的上采样,从而有效增强了图像语义信息特征以及空间信息特征。文献[18]为了精确地重构物体边界的高度非线性结构,用一个深度反卷积网络代替了文献[17]中的简单反卷积处理,以识别像素级的类别标记。此外,FCN中全卷积的设计模式仍然保留使用了卷积神经网络中的池化层,忽略了高分辨率的特征图必然会导致边缘信息的丢失。同时,FCN解码器中复用编码器特征图的方式使其在测试时显存消耗也很大,忽略了图像的位置信息以及减小了特征图的分辨率。
编码器和解码器结构是解决以上问题的关键,大多数基于深度学习的语义分割技术都使用编码器和解码器架构。编码器负责将输入转化为特征,解码器则负责将特征转化为目标。SegNet[19]和U-Net[20]是两个典型的用于图像语义分割的编码-解码器结构。SegNet是基于全卷积神经网络搭建的一种编码-解码器网络结构,通过编码器提取图像特征后,再通过解码器逐步还原到与原图相同分辨率的分割结果。U-Net是为了帮助生物序列中的图像分割而创建的,它由两部分组成:收集上下文的收缩路径和用于识别精确位置的对称扩展路径相比于已有的深度卷积神经网络语义分割方法,该方法提出了一种更为稳定的网络结构。SegNet的编码器部分使用了去除全连接层的VGG-16网络[21],解码器部分使用了一系列上采样和卷积层,这样可以实现通过保留的最大池化层的最大值索引来恢复特征图分辨率,并利用可学习的后续卷积层来产生稠密特征。
尽管此方法提出了最大池化索引策略,尽可能保留了各特征图像中的关键信息,但是在编码器网络中仍旧不可避免的产生了大量信息损失,这些信息损失在解码器网络中往往是不可恢复的,导致语义分割结果精度的不理想。
因此,本文设计一种更加优化的网络模型,以降低SegNet在编码器网络中提取高维特征时产生的信息损失,同时,在解码时能够更加完整地勾勒分割边界,提高分割精度,并控制网络的参数总量和执行时的内存占比,从而能够在较低时间消耗和硬件需求的前提下,实现多目标的精确识别和多场景的全面理解。
SegNet模型核心是由一个编码器网络以及相应的解码器网络组成,整体架构如图1所示。
图1 SegNet模型结构
编码器网络主要由卷积层、批归一化层、ReLU层和池化层组成。编码器网络中的卷积层对应于VGG16网络中的前13个卷积层。卷积层通过卷积提取特征,其使用的是same padding卷积,不会改变特征图的尺寸;批归一化层(Batch Normlisation)起到归一化的作用;ReLU层应用逐元素非线性激活函数(ReLU)来加快此网络的收敛速度;池化层执行最大池化操作,记录最大值的索引位置并将结果输出。对于图像分类任务而言,多层最大池化和下采样由于平移不变性可以获得较好的鲁棒性,但同时也导致了特征图大小和空间信息的损失。为了解决这个问题,SegNet只存储每个编码器特征映射的池化最大索引或每个池化窗口中最大特征值的位置。
解码器将编码器获取到的物体信息以及大致的位置信息与特定的像素点相对应,对缩小后的特征图像进行上采样,通过对上采样后的图像进行卷积处理,完善物体的几何形状,以补偿因编码器中的池化层将物体缩小造成的细节损失。解码器有与编码器相对应的上采样层、卷积层、批归一化层以及ReLU层。其中上采样层具体操作为对输入的特征图放大两倍,然后将输入的特征图数据根据池化层的最大索引位置放入,其他位置均为0。解码器的最终输出被馈送到soft-max分类器,对每个像素进行独立分类,预测的分割结果对应于在每个像素处具有最大概率的类别。
SegNet的创新之处在于解码器阶段的上采样层使用了编码器阶段池化层的最大池化索引来进行反池化。与FCN中利用双线性插值进行上采样的方式相比,反池化操作大大减少了模型的参数量。SegNet相比其他架构更有效的原因正是由于其只存储特征图的最大池化索引,并在其解码器网络中使用它们来实现良好的性能。与FCN进行对比,SegNet在达到较好的分割性能的同时,也具有较为均衡的内存占用率和准确率,反池化也提升了模型对边界的描述能力。与其他竞争架构相比,SegNet结构在推理时间和有效的推理内存方面都体现出了较为良好的性能。
交叉熵损失函数是处理分类问题中常用的一种损失函数。交叉熵是用于描述两个概率分布之间的距离,交叉熵越小,两个概率的分布便越接近。交叉熵损失函数常常用在逻辑回归问题即求解离散的分类问题上,用来作为预测值和真实标签值的距离度量。模型在使用梯度下降更新参数时,模型训练的速度取决于学习率和偏导数值。偏导数的大小反映了模型的误差,值越大,模型效应越差,但同时模型训练则越快。因此,如果利用逻辑函数获得概率并且结合使用交叉熵损失函数,则模型效果不好时学习速度会更快,如果模型效果良好,学习速度会较慢。
标准的交叉熵损失函数(CE,cross-entropy loss)如下所示:
(1)
其中:p代表正样本的预测概率,y代表样本标签,正类为1,负类为0。log表示自然对数,底数为e。可以看出,预测越准确,计算出的损失值就越小,如果预测完全正确,则计算的损失值就为0,因此符合优化方向。为方便表示,简记如下:
(2)
则交叉熵可以表示为:
CE(p,y)=CE(pt)=-log(pt)
(3)
交叉熵损失函数由于引入了类间竞争的特性,使得类间的互补性更强,但其仅仅覆盖了正确标记的正确率,并没有考虑其它非正确标记间的差别,导致所获得的特征有所偏离。
本文所设计的网络结构是基于SegNet所提出的编-解码器结构,搭建一种残差连接的语义分割网络结构。对于一张普通拍摄照片而言,浅层CNN提取的特征往往包含更多的边界、纹理等直观视觉信息,深层CNN往往提取的是更高级的抽象特征,只有将二者有机结合,才能实现语义分割精度的提升。加深、加宽网络结构,虽然能够提高分割精度但是带来了大量的参数负担和冗余,因此需要引用残差连接和concatenation(级联)操作,有效的将浅层视觉特征与深层语义特征进行结合。同时将已有的普通的层间连接调整为残差连接,总体来看,增加的参数量可以忽略不计。
图2 融合残差连接的语义分割网络结构图
将一张带训练图像输入此改进的SegNet网络结构,其在网络中共经过一下几步过程:
1)将图像进行卷积操作,得到H*W*64个通道的特征图像,记为F1。
2)下采样得到H/2*W/2*64,然后再进行卷积操作得到H/2*W/2*128,记为F2。
3)下采样得到H/4*W/4*128,然后进行卷积操作得到H/4*W/4*256,记为F3。
4)下采样得到H/8*W/8*256,记为F4。
(4)
(5)
(6)
8)最终通过softmax函数对每一像素所属类别予以赋值并输出相应的语义分割结果。
图3本方法网络模型训练流程图。首先对数据集进行预处理以及训练集和验证集划分。其次将处理好的数据输入初始化参数的语义分割网络模型。根据分割结果的交叉熵损失最小原则,不断迭代网络更新模型参数,直至收敛并达到最小损失。最后输出最优网络模型和参数。
图3 网络训练流程图
标准的交叉熵损失函数计算公式中所有样本的权重都是相同的,因此如果正、负样本不均衡,大量简单的负样本会占据主导地位,少量的难样本与正样本会起不到作用,导致精度变差。
因此,我们引入平衡因子,取值在[0,1]区间内。
(7)
设计的改进的交叉熵损失公式(B-CE,balanced cross-entropy loss)如下:
CE(p,y)=-βlog(pt)
(8)
引入平衡因子的交叉熵损失函数,在收敛效率上比原函数更快,主要是在不均衡分布的类别像素上,其迭代优化的效率更具备针对性,因此整体收敛效率得到了提升。
本文实验系统为Windows 10 professional,24 GB RAM,处理器为Intel(R)Core i7- 8750H,2.20 GHZ,GPU为NVIDIA GeForce GTX 1 060 6 GB。实验平台为Matlab 2018 b,基于MatconvNet和visual C++ 2015搭建深度学习网络模型,模型训练和测试是基于cuda9.0搭建的GPU环境。
IoU(Intersection over Union)的全称为交并比,具体是指预测候选边界集和真实边界集的交集和并集的比值,是当前目标识别和语义分割研究最通用的评价指标。IoU是一个较为简单的测量标准,只要是在输出中得出一个预测范围的任务都可以用IoU来测量。交并比的数学含义如图4所示。最理想情况是候选边界集与真实边界集完全重叠,即比值为1,即预测精确度越高。交并比的计算公式如下:
图4 交并比的数学含义
(9)
一般约定,0.5是阈值,用来判断预测的边界框是否正确,IoU越高,边界框越精确。
以下内容将展示在PASCAL VOC 2012数据集上进行实验的结果,包括各类别IoU的数值统计与分析和随机样本的视觉解析,并从评价指标和视觉效果两方面全方位评估所设计网络结构的有效性和先进性。
3.3.1 数据集简介及参数设置
PASCAL VOC 2012作为基准数据之一,数据集包含原图片总共17 125张及其对应的标注图。在对象检测、图像分割网络对比实验与模型效果评估中被频频使用。Pascal VOC 2012数据集针对视觉任务中监督学习提供了标签数据,它主要有4个大类别,分别是人、常见动物、交通车辆、室内家具用品,并可细分为二十个类别:
1)person:person;
2)animal:bird,cat,cow,dog,horse,sheep;
3)vehicle:aeroplane,bicycle,boat,bus,car,motorbike,train;
4)indoor:bottle,chair,dining table,potted plant,sofa,tv/monitor。
此外,针对该数据集的实验中各项参数设置如表1所示,测试数据为完全随机抽选,在网络训练时采用带动量的随机梯度下降法作为优化器,学习率和动量参数设置为0.1和0.9。
表1 PASCAL VOC 2012数据集超参数设置
3.3.2 实验结果对比与分析
如表2所示,为本方法、SegNet在PASCAL VOC 2012数据集上的分割表现。可以看出,相比于其他两种方法,本方法整体分割精度表现优异,其中Bird等7类物体交并比超过90%,13类物体超过80%,mIoU达到80.81%,相比于SegNet提高了约8个百分点。
表2 PASCAL VOC 2012测试集各类别IoU
如图5所示,数据样本的视觉展示进一步对分割效果进行了评估。为更充分和全面验证方法的分割能力,从数据集中随机选取的5个样本几乎包含数据集具有的所有类别的物体。尽管结果相似度较高,但仍能直观的从分割结果看出本方法分割精度更高。首先从整体上看,SegNet与本方法均能够较好的实现图像语义分割任务,基本上能够将图像中的目标物体识别并标注出。然而,在部分关键细节处,本方法表现更佳。如图5(a)中所示,自行车轮廓的准确勾勒需要准确的高频边界信息,相比于SegNet,本方法对低级别的高频边界信息进行了更大程度的保留并应用于解码器网络,使得最终分割结果中自行车轮廓更为清晰。同样地,如图5(b)中鸟类双脚的分叉处,图5(c)中椅子的轮廓边界,图5(e)中自行车轮廓和远端人物边界等高频细节信息处,本方法更具针对性的低级别特征与高级别语义特征融合方法使得分割结果更接近真实标注图。
图5 PASCAL VOC 2012随机样本测试结果展示
综上可得,在添加了有效的多残差连接之后,该语义分割网络所提取的特征保真度更高,能够与原图保持更高的相关性,使得图像的像素级分类结果和边界定位效果更优于SegNet。从视觉感受的定性分析情况以及各类别交并比的定量分析结果来看,本方法综合利用了最大池化索引的有效性和多残差连接的灵活性,使得图像语义分割结果达到更高的精度,更加满足实际应用需求。
以下内容为在Cityscapes数据集上进行实验对比结果与分析,包括各类别IoU的数值统计与分析和随机样本的视觉解析,分别从评价指标和视觉效果两方面全方位评估所设计网络结构的在不同类型数据集上的鲁棒性和有效性。
3.4.1 数据集简介
Cityscapes数据集是由包含戴姆勒在内的三家德国单位联合提供的,是一个新的大规模数据集,主要关注城市环境中驾驶场景的图像。Cityscapes数据集涵盖了50个城市的不同季节、不同时段的街道场景,包括5 000张精标注图片和20 000粗标注图片,其中精标注图片数据集被划分为训练集(2 975张)、验证集(500张)和测试集(1 525张)。Cityscapes数据共有两种数据标注格式,分别是实例分割和语义分割所采用的分割图格式以及多边形边框的json格式。精标注数据集中的每张图片都同时拥有3个标注文件,即实例分割标注、语义分割标注、多边形标注。标注类别共分为8组,每组的具体类别如下所示:
1)flat:road,sidewalk,parking+,rail track+;
2)human:person*,rider*;
3)vehicle:car*,truck*,bus*,on rails*,motorcycle*,bicycle*,caravan*+,trailer*+;
4)construction:building,wall,fence,guard rail+,bridge+,tunnel+;
5)object:pole,pole group+,traffic sign,traffic light;
6)nature:vegetation,terrain;
7)sky:sky;
8)void:ground+,dynamic+,static+。
其中*表示部分区域连在一起的实例,会作为一个整体来标注;+表示该类别不包含在验证集中,并被视为无效标注。
本文在精标注数据集上进行分割实验并与SegNet方法在此数据集上的分割表现进行对比分析。如表3所示,为本文在部署实验时的各项参数数值。同样地,采用带动量的随机梯度下降法作为优化器,其学习率和动量数值分别预设为0.1和0.9。
表3 Cityscapes数据集超参数设置
3.4.2 实验结果对比与分析
表4展示了本文所提方法和SegNet在Cityscapes数据集进行精细标注的各类别交并比以及平均交并比。总的来看,本文所设计网络结构实现了更高的交并比表现,其预测的分割结果更相近于真实标记数据集。相比于SegNet,本网络在mIoU值上提高了约十三个百分点。
表4 Cityscapes测试集各类别IoU
如图6所示,随机选择6张测试样本做视觉展示,分别通过SegNet和本文方法进行分割预测并产生精细标注分割图,最右侧为真实标记结果。整体分割结果上来看,SegNet与本文方法均能实现较好的分割结果。由于是车载摄像装置拍摄的图像,其中前方马路等主体大范围目标均可以实现较为准确的分割,这一结果和IoU值形成对应。
然而由于SegNet的细节处理不尽精细,导致其部分分割结果不能达到满意。具体来说,如图6(a)中左侧人群部分的分割结果比较模糊,然而本方法的分割结果能够将人群中的不同个人进行一个较为优化的分割,其结果也更趋近于最右侧的真是标注结果。如图6(b)中的最右侧交通指示牌、左侧绿色植物右上侧的交通指示牌,SegNet的分割结果无法达到较为精确的分割,指示牌识别上出现明显的少分、漏分情况,而本文方法的分割结果则更为精细和准确。同样的情况包括如图6(c)中的路灯、图6(d)中的立柱、行人、图6(f)中的自行车及车手等目标分割状况。综上所述,本文所设计的网络结构在细节标注及边界勾勒时的表现全面优于SegNet的分割性能。
本文将通过实验验证所设计的带有平衡因子的交叉熵损失函数的影响,尤其在模型训练的收敛效率方面的表现。以PASCAL VOC 2012数据集作为训练数据,在训练过程中的损失曲线如图7所示。
图7 不同损失函数的训练损失
从图7中可以得出采用B-CE损失函数能够有效提高迭代效率,在采用B-CE损失函数之后在大约第80个epoch开始达到收敛状态。相对地,使用原始的CE损失函数尽管收敛过程较为稳定,但是收敛速率较之更慢,在大约100 epoch时才能达到收敛状态;从损失层面来看,B-CE可以帮助网络结构实现更少的损失,分析其主要原因可能来自负样本带来的损失的进一步减少,因为提高了对负样本、难分类样本的关注度,训练更具针对性,并且本来易分的样本也不会因为损失函数的微调而导致错误分类。从实际的训练和损失曲线中动态关系中,我们进一步验证了所改进损失函数的有效性。
由于SegNet模型在多次降采样和上采样过程中产生了大量信息损失,语义分割精度表现因此而受到较大限制。为解决此问题,本文设计了一种融合多残差连接的新型编-解码器网络结构,在不新增大量参数负担的前提下,通过引入若干残差连接,使得不同分辨率的低级别空间信息特征和高级别语义特征得以充分利用,进而显著减小上采样和下采样过程产生的信息损失。此外,为缓解类别非均衡分布带来的消极影响,本文基于交叉熵损失函数设计了一种带平衡因子的交叉熵损失函数,不仅促进了模型收敛效率,同时在达到收敛状态时降低了大量损失,使得模型具备更强的性能,实现更高的分割精度。通过在PASCAL VOC 2012和Cityscapes数据集上进行实验对比和分析,通过量化评价指标和视觉分析效果证实本方法的分割表现明显优于SegNet。