郭润兰, 史方青, 范雅琼, 何 智
(兰州理工大学 机电工程学院, 甘肃 兰州 730050)
近年来,玻璃幕墙以其便于维护、自重轻等优势被广泛应用,而传统的人工清洁方式存在高风险、劳动强度大等弊端,因此利用壁面清洗机器人代替人工实现智能化清洗,具有迫切的现实意义.目前壁面清洗机器人的研究主要在机器人机械结构设计[1-2]以及控制方法[3]等方面,缺少对现有的机器人进行升级,而借助人工智能技术和机器视觉方法有助于实现壁面的智能化清洗.
现阶段的障碍物识别常采用机器视觉的方法进行检测.曹文明等[4]针对除冰机器人的环境特点,综合利用图像处理方法得到障碍物边缘图像,并以图像联合不变矩为识别特征,最终用小波神经网络以及SVM技术进行障碍物图像的分类识别,结果表明该方法有良好的识别精度及可靠度.万磊等[5]针对水下机器人采集到图像低对比度以及低信噪比的缺陷,利用前视声呐和距离选通激光成像设备,以小波矩为识别特征,使用广义神经网络进行优异的自动采集及识别图像.唐宏伟等[6]提出一种自适应阈值的小波变换边缘提取算法,并设计了一种粒子群优化的小波神经网络进行障碍物的识别分类,实验结果表明该方法识别准确率较高.
随着深度学习的发展,不同场景的样本分类识别常使用深度学习算法,取得了良好的成效.薛金林等[7]针对农田作业场景中的动态障碍物,设计了一种基于卷积神经网络(convolutional neural network,CNN)的障碍物分类识别方法,结果表明该模型识别率能达94.2%.刘小刚等[8]针对目前草莓识别定位大多在简单环境下且识别效率较低的问题,利用改进的YOLOv3模型识别,识别准确率能达97.14%.Kouzehgar等[9]利用机器视觉采集图像,并搭建卷积神经网络识别幕墙玻璃裂纹,识别准确率可达90%左右.郭光宇等[10]利用卷积神经网络对分段后的环境进行识别,以此来实现移动机器人的避障,并在图像处理的像素中引入体积元的概念,结果表明该网络有较好的识别避障能力.Singh等[11]使用卷积神经网络识别新生儿的各种表情,提出一种新的N-N算法,识别准确率提高了4.58%;张云等[12]提出了一种级联卷积神经网络对人脸特征点进行识别,得到了较高的识别率.
目前的研究结果表明,传统的识别方法识别准确度相对不高,主要在于不同状态下采集的轮廓边缘存在差别,特征提取及选取依赖经验,从而影响识别的辨识度;而深度学习及视觉检测方法以其信息量大、准确率高等优点被广泛用于各种场景的对象识别,主要在于深度学习覆盖范围广,学习能力强,能高度适应不同对象的特征,进而影响识别过程中的准确度.因此,为了有效识别壁面清洗机器人工作中遇到的障碍物,本文提出一种基于卷积神经网络的壁面清洗机器人障碍物检测识别算法,利用深度相机采集壁面障碍物图像,搭建卷积神经网络对三类障碍物识别分类,探究壁面清洗机器人在高空复杂环境下的障碍物识别能力.
本文沿用本课题组的壁面清洗机器人,工作原理如图1所示,机器人本体配合卷扬机、水箱和废水回收装置完成玻璃幕墙的清洗工作.壁面清洗机器人采集图像使用的深度相机如图2所示,它可以直接根据环境光采集图像,通过采集的RGB图像或者灰度图像计算深度.机器人本体结构如图3所示,壁面清洗机器人由行走机构、清扫装置、负压吸附装置和旋翼机构组成.行走机构采用具有越障能力的多边形履带.针对壁面污垢的特点,清扫机构采用高压冲洗、滚刷、刮洗相结合的方式完成清洗工作.针对机器人在越障过程中负压吸附装置存在泄漏现象,采用旋翼产生的推力的方式来补偿泄露.因此障碍物的快速准确识别在机器人避障过程中至关重要.
图1 工作原理图Fig.1 Working principle
图2 深度相机
图3 壁面清洗机器人
卷积神经网络(CNN)是一类特殊的人工神经网络,主要包括输入层、卷积层、池化层、全连接层以及输出层.首先通过卷积、池化以及非线性激活函数映射等操作,从原始数据输入层提取出高层语义信息.然后利用最后一层的运算将目标任务变换为目标函数,接着采用反向传播算法,通过最后一层向前反馈误差或损失,从而更新网络各层参数,多次反馈,重复操作直至找到最优解使模型收敛.
目前,常规图像分类网络常含有多个卷积层,训练时间较长且训练样本较大,如VGG、Alexnet等.因此本文设计了VGG-16的简化网络,如图4所示,它包含输入层、3层卷积层(3×3的卷积核,步长为2)、2层池化层(2×2的池化域,步长为2)、1层全连接层以及输出层,网络初始参数如表1所列.
图4 障碍物识别检测网络模型Fig.4 Network model for obstacle recognition and detection
卷积神经网络训练过程中,每层均会使用激活函数,使神经网络具有分层的非线性映射学习能力.目前常见的激活函数有分段线性和具有指数形状的非线性函数,不同激活函数在定义域上的函数图像如图5所示,Sigmoid函数用在特征相差不明显的的场合,而Tanh函数则相反.使用以上激活函数需输入规范化,否则激活后的值会全部进入平坦区,隐层的输出全部趋同,丢失原有的表达.但ReLU函数不会出现以上问题,因此它是最常用的现代激活函数之一.在本文模型中,卷积层及池化层均使用ReLU函数,ReLU函数能够实现较高效率的梯度下降以及反向传播,主要以监督的方式训练网络,不需要依赖无监督的逐层预训练,从而避免了梯度爆炸和梯度消失这两个问题,ReLU函数的数学表达为
(1)
图5 不同激活函数图像
目前常通过梯度下降法迭代求解,从而得到损失函数的最小值以及模型的参数值,假设第τ次迭代于某个位置wτ,以下式更新权重:
wτ+1=wτ-ητe′(wτ)
(2)
式中:e为目标函数;η为学习速率.
学习率在各种算法中起着至关重要的作用,目的在于控制梯度下降的速度.通常,当学习率η较小时,学习算法便会以缓慢的速度在参数空间中移动;相反,当学习率η较大时,参数空间中每一步跨度会很大,而当前进的方向不确定是否正常时,需选择相对小的步长来实验.本文比较了四种不同学习率对训练过程的影响,如图6所示,网络在学习率为10-3时收敛速度最快也最稳定,因此本文选择10-3来训练.
图6 不同学习率对训练的影响Fig.6 The impact of different learning rates on training
为降低壁面清洗机器人在清洁过程中的误识别率,将识别对象分为窗框、玻璃固定架以及打开状态的窗户三类,并建立样本数据库,包括训练集和检测集.本文中数据集使用深度相机采集,挑选并使用数据增广的方法,通过随机旋转,指定随机水平,或者竖直方向移动的程度、剪切变换,放大或者缩小等一系列方法进一步使样本提升,最终得到数据集共1 020张图片,其中训练集共810张,每组270张,检测集共210张,每组70张.数据集中部分样本集如图7所示.为了便于训练,对所有的样本归一化处理,将所有的图片转化为jpg格式,将窗框、玻璃固定架以及打开状态的窗户这三类的图片集分别使用不同前缀命名,为后续测试集的检测作准备.且为了后续搭建的网络能方便地处理图片,将所有的样本修剪为100×100像素大小.
图7 数据集部分样本
其中,图像处理算法是基于OpenCV3.0,卷积神经网络搭建基于Python 3.6以及深度学习库Tensorflow 2.0.0.运行环境为Intel(R)Xeon(R)Silver4110CPU@2.10 GHz、64 GB运行内存、Windows 10操作系统.
当使用深度相机采集图片,得到的图像不免会出现噪声等干扰因素;而采集到的障碍物信息既没有丰富的纹理特征也没有鲜明的颜色特征,这在很大程度上影响障碍物的识别结果,但可利用障碍物之间的形状与轮廓相差较大这一点来优化识别效果,因此对图像预处理可采用OpenCV的图像处理算法有效去除图像中的噪声.本文采用方框滤波、均值滤波、高斯滤波、中值滤波以及双边滤波这五种图像滤波方法对图片降噪处理,如图8所示为玻璃固定架用不同方式处理后的图片,经对比,使用双边滤波算法能够较好地对图片平滑处理.三种障碍物均通过双边滤波算法处理,预处理结果如图9所示.
图8 不同图像滤波方法结果Fig.8 Results of different image filtering methods
图9 预处理图像Fig.9 Preprocessed image
卷积神经网络在很大程度上能学习由输入到输出的映射关系,不需精确的输入与输出之间的函数关系而仅根据已有的模式多次训练,就能得到相应的映射关系.而多次训练的目的在于提高网络的识别准确率,从而完成壁面清洗工作.卷积神经网络的训练过程为:首先使用前向传播得到网络的预测值;然后使用反向传播算法链式求导,计算损失函数对每个权重的偏导数;最后使用梯度下降法使权重更新.
3.3.1卷积神经网络的前向传播
对于卷积神经网络的前向传播,首先是卷积层的前向传播,设神经网络总层数为l,用*表示卷积运算,当卷积到第l层时计算如下:
同样,池化层的前向传播主要是为了将输入成倍缩小,不需要训练参数,当池化操作至第l层时,有如下计算:
3.3.2卷积神经网络的反向传播
对于卷积神经网络的反向传播,需要对卷积层、池化层以及激活函数求导.此处定义损失函数的形式为平方差函数:
(7)
式中:En表示n个数据样本训练形成过程的误差;c表示全连接层最终输出个数,即分类类别数;t表示数据样本实际值;y表示所有样本训练后结果的输出值.
其中可将权重调整方向示为
(8)
为了进一步说明,有如下表示:
式中:xl表示第l层输出;Wl表示当前权值;ul表示第l层输入;η表示学习率;δ表示残差.
在卷积神经网络中,不同层的残差可表示为
(11)
全连接层L的残差可表示为
(12)
当第l层为卷积层,第l+1层为池化层时,由反向传播算法可知,第l层某个像素的敏感度为第l+1层与其相关全部像素敏感度与其权值的积的和,之后再乘以当前层激活函数的导数.因此,为方便计算,将第l+1层的特征图下采样,得到大小与第l层特征层一样的结果再敏感度计算,表示为
(13)
式中:β表示权值W的取值;up(·)表示克罗内克积.
当第l层为池化层,第l+1层为卷积层时,由反向传播算法可知,若要求第l层某个像素的敏感度,需利用第l+1层与其相关的全部像素的敏感度.此时不涉及权值更新,只是在反向传导求残差时将相应维度扩展回去,可表示为
(14)
式中:K表示卷积核;g表示卷积操作结果.
本文使用简化的VGG-16网络来识别壁面清洗机器人在幕墙上工作时遇到的三类障碍物.采用不同的网络,其性能也会不同,且多次的迭代容易产生过拟合,使模型变得复杂,容易产生容错的数据.因此将网络模型训练次数设置为50次,每次41次迭代,学习率为10-3.简化VGG-16网络与改进LeCun小卷积神经网络的对比结果如图10所示.其中,改进的LeCun小卷积神经网络是基于LeCun在1990年提出的图像分类器的基础上修改Relu以及模型层数得到的.由图10可以看出,简化的VGG-16模型中,当迭代训练到第40批次时准确率趋于稳定,训练集的准确率能够达到99.5%,且损失值也处于较低且平稳的状态,因此此时训练的卷积神经网络可以达到良好的识别效果;而使用相同的数据集在改进LeCun小卷积神经网络上训练时,训练准确率在一定程度波动之后也趋于稳定,训练集的准确率能够达到99.2%,但该网络损失值波动比较明显且处于跳跃不稳定状态,虽然此时的模型可以达到较好的识别效果,但相比于简化的VGG-16模型较为波动.两种网络模型的性能比较如表2所列.以模型性能表征参数(训练准确率、训练时间和测试准确率)为目标参数.其中,改进的LeCun小卷积神经网络的训练准确率与本文的简化VGG-16网络模型相差无几,但训练的时间长达4.32 h,是本文模型训练时间的4倍左右,且测试准确率也比本文的网络模型低2.1%.
图10 训练结果曲线
另外,本文将常规方法与卷积神经网络的性能进行了比较,使用同样的样本集分别在BP神经网络和支持向量机(support vector machine,SVM)上识别,结果如表3所列.通过基于BP神经网络的不变矩方法识别障碍物时,三种障碍物的识别效果较低,尤其对玻璃固定架的识别,仅有72.5%;通过小波矩方法识别障碍物时,由于SVM是一种利用统计学习理论的机器学习方法,能较大程度地克服机器学习中的“过学习”问题,因此将小波矩与SVM结合识别障碍物能得到较高的识别效率,达到90%以上.通过以上比较发现,简化的VGG-16网络训练后得到三种障碍物的平均识别率达99.0%,更适合于壁面清洗机器人对障碍物的识别.
本文针对壁面清洗机器人在高空作业时障碍物识别准确度低的问题,以壁面清洗机器人实际工作场景为研究背景,利用在实际工作场景中采集到的图片建立数据集,进行分类预处理后,通过搭建卷积神经网络来完成障碍物的识别.本文的主要工作和结论如下:
1) 使用深度相机采集RGB图像,并设计了一种旋翼负压混合吸附工作的多边形履带清洗机器人,通过深度相机采集清洗机器人在幕墙上工作时的障碍物图像,对采集到的图像平移、翻转、裁剪后建立数据集,然后使用双边滤波方法对三类障碍物图像集进行降噪预处理得到试验图像集.
2) 设计了VGG-16的简化网络模型,试验结果表明本文所设计的卷积神经网络的结构以及参数设定是合理的.当完成训练样本的多次训练后,模型能够识别玻璃固定架、窗框以及窗户打开的状态这三种障碍物,准确率可达到99.0%,实现了较好的识别.且通过基于BP神经网络的不变矩、基于SVM的小波矩以及改进的LeCun小卷积神经网络这三种方法的对比,简化的VGG-16网络模型得到的识别准确率明显更优.