基于语义分割的室外场景识别技术研究

2022-03-15 10:34张怡萌余顺年
计算机仿真 2022年2期
关键词:卷积实例语义

张怡萌,陈 宁,余顺年

(集美大学机械与能源工程学院,福建 厦门 361021)

1 引言

随着科技的发展,人工智能在计算机领域逐渐成为了研究的热门话题,其在各个领域的应用引起了人们的关注。近年来,深度学习领域的创新发展,给计算机视觉带来了新的突破性的研究。尤其是近年来对于计算机的发展有了更高的需求,需要计算机更加智能化和拟人化,能够具备更强的逻辑处理能力进行预判和分析。目前,计算机视觉技术多用于目标检测、识别以及跟踪等方面。场景识别技术是计算机视觉领域的一个重要的研究课题,而深度学习是近阶段人工智能方向的研究热点。

场景识别技术经历了长时间的发展,而传统的场景识别技术在目前的应用中存在很大的局限性。随着深度学习技术的不断发展,基于卷积神经网络的深度迁移学习技术应用在场景识别中的研究已经得到了广泛的关注。

随着移动机器人技术的发展,以及人们对于各种传感器应用的不断理解,场景识别技术也逐渐由简单的室内环境识别扩展到场景更为复杂的室外环境识别。在室外移动机器人和无人驾驶技术领域,利用环境感知、道路识别和场景理解成为了机器人领域的研究热点。斯坦福大学的Mohan[1]结合了深度反卷积神经网络和卷积神经,形成了一种用于场景分析的新网络结构。该研究使用多分块训练,首先对场景信息有效地学习,然后通过反卷积网络对道路区域进行像素级分割。rust等人[2]提出了一种卷积神经网络,用于学习在像素级别区分不同的图像块和注释卷积块网络。文章合并了图像块的空间信息,并将其作为网络的输入。同时将网格与模型结合,用于查找特定类型的像素位置。该方法将图像块进行分类,并在KITTI 数据集进行检测,得到了良好的效果。这种方法的主要优点是可以提高各种场景下检测结果的鲁棒性,并提高检测模型的适用性。

本文针对传统的室外场景识别技术鲁棒性弱和识别精度低等问题,提出了一种基于语义分割的改进的deeplabV3+算法的室外场景识别技术。该方法在深度学习的基础上,尝试利用改进后的K-近邻算法对大量的特征点进行检索关键特征后提取与交叉匹配比对,之后把提取到的信息,用语义分割的结果表达出来。本文在VOC2012和cityscapes两个不同的数据集下使用改进后的算法进行检测,并用自定义建立的数据库进行室外场景的实验结果验证,对场景中的全部特征进行识别,之后输入未标签的新数据进行匹配,从而实现室外场景的语义重建。

2 语义分割结构模型

2.1 卷积神经网络

深度学习(deep learning)的概念由加拿大的 G.E.Hinton 博士[3]在2006年提出,是一种基于深度置信网络非监督贪心逐层训练算法,将低层特征结合起来创建更抽象的高层特征。随着深度学习研究内容不断创新发展,目前已经应用在机器视觉、数据处理、视频分析、智能驾驶和语言翻译等众多领域。2016年和人类世界围棋冠军进行比赛DeepMind公司开发的AlphaGO[4],是深度学习的应用潜力得到进一步的挖掘。到目前,深度学习在数据、算法和模型上取得了惊人的进展,也成功促使了人工智能技术大规模的发展和应用。

卷积神经网络(convolutional neural network,CNN)是基于深度学习理论的一种人工神经网络,该网络可省去图像预处理与特征抽取等步骤,将数据作为输入[5]。源于仿生学的启发,在二十世纪六十年代初,Hubel 和 Wiesel 以猫为对象实施了视觉实验,研究提出了视觉皮层功能分层模型[6]。CNN的基本结构为:输入层、卷积层(convolutional layer)、池化层(pooling layer)、全连接层及输出层。在卷积神经网络中,卷积层和池化层通常有多个,并且采用交替设置。

2.2 模型选择与模型简介

本文比对了各模型在PASCAL VOC2012测试集的MIOU,如表1所示,DeeplabV3+的准确率MIOU值要高于其它几种神经网络。

表1 各个语义分割框架在PASCAL VOC2012数据集上

因此,本文基于deeplabV3+框架进行实验,使用一种改进后的K-近邻算法对神经网络进行优化,同原始的神经网络实验结果进行对照。

2.2.1 deeplabV3+网络结构

2015年,谷歌发布了DeepLab模型。经过不断的改进以及优化卷及神经网络,将模型升级为DeepLab-V2[7]和DeepLab-V3[8],新的模型具有更强大的建模技术以及特征提取功能。随后,谷歌在DeepLab-V3的基础添加了一个简单高效的解码器模块[9]用于优化分割后的特征目标,主要用于特征目标的边界优化,并将更新后的模型命名为DeepLab-V3+[10],同时对多孔金字塔池化(ASPP)[11-13]和解码器模块使用可分离的卷积神经网络,从而为语义分割提供了一个计算速度更快、分割能力更强的网络结构。

Deeplabv3+采用编码器-解码器的方式,编码器部分使用Xception网络[14]作为基础网络进行特征提取。Xception网络是一种深度可分离的卷积网络。为了解决物体鲁棒分割问题,该算法引入了 ASPP 模块。将图像输入进该算法中时,首先经过卷积网络得到一个初始的特征图,然后将特征图输入到一个1*1的卷积层中,以降低特征图的层次。其目的是减少特征图的通道(这里由256通道减少为48通道)。解码器部分将低层次功能特征与高层次功能特征结合到一起,将编码器中处理后的特征图再次输入进一个1*1的卷积中,得到一个更低层次的特征图,再次减少特征图通道数,然后使用4x插值采样实现双线性特征图合并。最后经过3*3卷积操作后采用4倍的双线性插值,以恢复原始图像的分辨率并获得与原始图像相同的尺寸的分割后的图片。

2.2.2 K-近邻算法

K-近邻(K-Nearest Neighbor,K-NN)[15]是求解分类问题的一种常用算法,是数据挖掘算法的一种。简单表示为:输入一个新的未添加标签的数据,然后在原始训练集标签数据与该输入数据最相似的K个标签,并且根据找到的这K个标签,来确定新数据集的分类。

K-近邻方法是一种原理相对简单且易于实现的分类识别算法。并且具有在K个近邻样本数和训练样本总数N都趋近无穷大时并且k/N→0时,能够保证K-近邻规则是最优的分类准则等良好特性。但是,也存在着明显的不足,K-近邻算法在解决实际模式分类的问题时,K-近邻算法在分类过多时,识别精度会有所下降,但可以通过增加样本的数量,提高识别精度。因此,本文选择采用K-近邻方法来辅助深度学习系统进行室外场景识别实验。

按照该算法的基本思路,以本次实验的分类问题为例,在给出新的实例之后,根据与该实例相似度的训练样本,选择出该训练样本与预测样本的距离d的K个取值,并依据K的取值来确定新的实例:在运算过程中,系统会输出连续的坐标(X1,y1),(X2,y2),…,(Xn,yn),其中,Xi是该实例的特征向量表示,yi则是实例Xi对应的类别。对于给定的实例,使用K-近邻算法对样本的预测估计可以表示为

(1)

其中,Lk(x)表示与实例X最相似的K个实例。

为了提高算法的精度,本文对K-近邻算法的相似度计算方法进行了改进工作,即,对每个实例进行权重计算,具体体现为对于相似度的计算,考虑到测量的接收信号强度,提高接近度高的训练样本的估计权值,考虑到多种算法的复杂程度以及准确率。本文选择使用欧式距离来代替原算法进行相似度的计算

(2)

为了提高训练样本的估计权值,本文的权值选择使用训练实例间的欧氏距离的倒数,其中,第i个近邻的权值设置为

(3)

欧式距离的幂次越高,与预测样本差别较大的样本在训练时发挥的作用就越小,对预测样本的估计可以表示为

(3)

在确定实例的K-近邻后,计算每个实例的决策权重,根据决策权重的大小,判断其在预测的类别归属时发挥作用的大小[16]。

2.2.3 本文选取的模型

为了提高deeplabV3+的识别精度,本文的主要目的是在原有的开源deeplabV3+算法中加入K-近邻算法进行改进,如图1使所示:在实验前,要对自己的数据集进行标签工作,由于数据集样本数量比较大,因此标签工作非常复杂繁琐,为解决此问题,本文在对数据进行处理时,针对于数据集的处理工作,引入非监督学习的概念,使用K-近邻算法对公开数据集进行特征提取分类,然后把分类结果应用于deeplabV3+测试算法中,进行对自定义数据集的识别测试工作。改进后的模型算法,如图2所示。

图1 算法流程

图2 改进后的deeplabV3+模型框架

3 基于语义分割的室外场景识别

3.1 改进的deepLabV3+进行语义分割实验

训练数据集采用开源的VOC2012数据集、cityscapes数据集以及自定义采集的数据集进行实验。对于自己采集的数据集,由于样本数量较少,因此利用数据增强方式对数据进行扩充。扩充后的数据集样本数量增加,大量的样本使得训练能够更加准确多样性,有效防止训练过程中由于样本不足导致的过拟合现象,模型的鲁棒性也能得到提升。

如图3所示,本次实验所拍摄的图片为校园及周边环境,共采集图片800张,图像采集时设计包括昼夜、雨天等不同环境下的室外场景。样本集随机选取 600 张图像生成训练集,其余 200 张图像则作为测试集。

图3 部分数据集示例

为了使测试结果更具有说服力,考虑对采集到的数据集进行数据扩增。本次实验分别从COCO数据集和KITTI数据集中各分选出1500张适合本次实验的室外环境的图片,加入进自定义的数据集中进行扩充。扩充后的数据集样本容量为3800张图片,其中2850张为训练集,其余950张图片作为测试集使用。

目前的deeplabV3+实验方法需要采用人工标注和辅助标注结合的方式对集装箱数据集进行标注,人工标注主要使用labeIme样本目标标注软件,利用该软件进行自定义标注时,需要按照目标的形状进行轮廓描绘,可生成所需要的json文件,然后通过编程语言把json文件转换为后面训练所需要的png格式的语义图片,labelme操作界面如图4所示,图片生成结果如图5所示。

图4 labelme标注效果

图5 标签转换后生成的图片

考虑训练集中的属性分布,以及考虑到某些属性不能使用语义分割将属性分割并可视化。

本文改进的算法需要先对原有数据集进行训练,VOC数据集测试结果如图6所示,仅对物体进行无背景的分割,且VOC数据集与本次实验环境重合度不高,通过对比自定义数据集与VOC数据集样本中的特征,提取出比对结果中相似度最高的样本的分类标签,最终选取了6个属性。具体属性值见表2。

图6 VOC数据集测试结果

表2 自制数据集与VOC数据集相似分类标签

使用Cityscapes数据集进行测试的结果如图7所示,Cityscapes数据集样本由多个国家的不同街道环境组成,数据集样本容量大,且与本次实验的环境类别重合度较高,通过对比自定义数据集样本中的特征与Cityscapes数据集对应,提取出比对结果中相似度最高的样本的分类标签,最终选取了12个属性。具体属性值见表3。

图7 Cityscapes数据集测试结果

表3 自制数据集与Cityscapes数据集相似分类标签

由于VOC数据集的样本分类标签属性相对较少,而且没有分离背景,因此不太适用于本次实验的室外场景环境检测中,而cityscapes数据集样本是城市景观,大多为街道环境,而且分类标签与本次实验的实验场景环境相似性更高,分类标签属性也更多更适合于本次实验环境。

3.2 模型训练及训练结果

本次实验在ubuntu16.04桌面版系统下进行,在深度学习框TensorFlow下进行deeplabV3+和FCN的语义分割算法,计算机处理器为Inter(R)Core(TM)i7-7700K CPU@4.20GHz,内存8GB,适配器为NVIDIA GeForce GTX 1080GPU。CUDA9.0版本并行计算框架配合CUDNN9.0版本是深度神经网络加速库,使用python版本为3.6.8。

本文选择使用Xception65网络模型来初始化网络参数,并基于deeplabV3+的python版本进行模型的训练和测试,通过对应网络的配置文件修改训练策略参数,其主要的训练策略如表4所示。

表4 主要训练策略

本次实验从GitHub上下载了deeplabV3+的源码。首先对于数据集的处理,TensorFlow使用TFrecord格式来进行数据存储,T并且提供了丰富的函数方法对数据进行预处理工作。其对于模型进行初始化参数的设置,由于计算资源的限制,本实验首先使用deeplabV3+网络模型训练了VOC数据集以及cityscapes数据集,对数据集对应特征进行比较之后,使用改进后的K-邻近算法提取出样本最相似的分类标签,本次实验中,基础的学习率设置为0.0001,学习率下降策略选择使用poly,batch_size设置为12,权重衰减设置为0.0004,output_stride设置为4,对应的空洞金字塔的3个空洞卷积参数分别设置为8,12,16。

使用改进后的算法对自定义的训练集和测试集进行训练,获得模型的参数。实验过程中,生成的损失率随着时间的增加在不断降低,当降低到一定的范围时,损失率得到相对稳定的区间,取区间的最低点,得到的参数为损失率最小值。图8所示为训练过程的网络总损失值的变化曲线。图9所示为整个训练过程的学习率变化曲线。

图8 网络总损失值的变化曲线

图9 学习率变化曲线

图中可以看出,在迭代次数大约40000次时,损失函数值开始趋近于稳定,其中,随着学习步数的不断增加,学习率逐渐趋近于0,而总损失值逐渐趋近于0.4。

展示模型识别效果图,输入为一张图片,输出为一张语义分割图,分割效果如图10所示。

图10 改进后的算法语义分割效果图

3.3 评价指标

Precision即准确率,是在识别所有的实例时,系统识别出来的所有的实例A所占的比例,其公式为

(5)

Recall即召回率,是在识别出来的所有的实例A中,识别出来正确的A所占的比例,其公式为

(6)

以实例B为例,简单说明TP、FP、FN的释义。TP表示数据集中的实例B被正确识别为实例B;FP表示数据集中的实例B被识别成了实例C或者其它非B实例;FN表示数据集中的其它非B实例被识别为实例B。

AP即平均精度(Average-Precision),简单来说,AP就是Precision-Recall曲线(P-R曲线)的面积,通常情况下,分类的准确率越高,AP值越高。

改进后的语义分割结果与原本的deeplabV3+网络相比,识别结果分析如表5、图11所示:

表5 实验结果

图11 改进前后结果对比示意图

3.4 结果分析

本次实验是在测试公开数据集结果的基础上测试自定义数据集,与现有的测试数据集的方法不同,省去了对数据集进行标签的工作,减少了大量的前期准备工作,节省了实验的时间,输入新的未添加标签的数据后,将该数据中能够提取出来的每个特征与实验中训练过的样本中的生成的特征信息进行对应比较。

试验结果表明,改进后的语义识别方法比现有的直接使用deeplabV3+算法进行语义识别相比,缩短了训练时间,提升了训练精度。原本的方法在采集数据集之后花费了大量的时间在标签工作上,改进后的训练算法则避免了这一繁琐的过程,通过K-近邻算法计算过相似性之后在进行结果输出的方式,比原本的直接输出方式的准确率有提高,而且工作效率也有所提高,使室外场景的语义识别效果得到提升。

4 结束语

本文运用了深度学习的原理,提出了一种基于语义分割的室外场景识别方法,该方法主要通过进行实验来确认环境的语义识别结果,同时对改进后的deeplabV3+算法与原本的算法进行对比试验,得到相对较好的结果。本次实验发现改进后的算法在可行性上提供了有力的支撑,由于原本的算法在对自定义数据集进行训练之前要经过繁琐的标签过程,而改进后的算法在原本深度学习的基础上引入了一种改进后K-近邻算法的概念,去掉了前期标注的过程,引入分类标签,利用原有数据集与自定义数据集样本的相似特征进行实验,减少了算法的前期准备时间,提高了识别的准确率以及算法工作的效率。

最终的实验结果证实了本文的实验方案是可行的,同时有效的提升了工作效率,为后续进行室外场景的语义分割提供了可行性。

本文的实验方案虽然能提升室外场景语义分割的速度和效率,但是识别精度以及准确性仍有一定的误差,这对于实时检测还是能造成一定的影响,下一步的研究工作可以考虑在保证准确率的同时能够提高训练速度以及减小实时识别的误差影响。

猜你喜欢
卷积实例语义
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
基于深度卷积网络与空洞卷积融合的人群计数
汉语依凭介词的语义范畴
完形填空Ⅱ
完形填空Ⅰ