基于NAO机器人的数字识别
2020-07-23刘雪峰陈晔王元杰庞彬尧
刘雪峰 陈晔 王元杰 庞彬尧
(中北大学 电气与控制工程学院, 山西 太原 030051)
摘 要: 机器人拥有多种应用,其中较为重要的是图像识别能力,而它们的图像识别网络均需要不断的训练,才能准确地识别物体。为解决NAO机器人在室内环境下实时数字识别问题,重新设计图像识别模块,在TensorFlow中搭建两种数字识别系统,一种基于BP神经网络,另一种基于卷积神经网络(CNN)。在相同的数据集上,BP神经网络与CNN在仿真中都取得了较好的效果,但在真实的机器人上运行时,CNN在有限的实验次数内得到了更好的数据,被证明是一种更有效的数字识别系统。
关键词: 数字识别; NAO机器人; 图像识别; BP神经网络; 卷积神经网络; 仿真分析
中图分类号: TN911.72?34 文献标识码: A 文章编号: 1004?373X(2020)14?0173?04
Digital recognition based on NAO robot
LIU Xuefeng, CHEN Ye, WANG Yuanjie, PANG Binyao
(School of Electrical and Control Engineering, North University of China, Taiyuan 030051, China)
Abstract: Robots have a variety of applications, the most important of which is the image recognition, and the image recognition network requires constant training to accurately identify objects. In order to solve the real?time digital recognition problem of NAO robot in indoor environment, the image recognition module was redesigned, and two digital recognition systems were built in the TensorFlow, one based on BP neural network and the other based on CNN (convolutional neural network). The BP neural network and CNN have achieved good results in the simulation on the same data set, but when running on a real robot, CNN gets better data in a limited quantity of experiments, which is proved to be a more efficient digital identification system.
Keywords: digital recognition; NAO robot; image recognition; BP neural network; convolutional neural network; simulation analysis
0 引 言
机器人技术是机械、电子、计算机科学、控制、人工智能等技术的交叉领域[1]。这个多学科领域诞生于50年代中期,近几十年来发展非常迅速。如今,机器人相对成熟,可以在全球范围内大规模部署智能机器人开始参与提高人类的生活质量[2]。
由SoftBank机器人制造和商业化的NAO仿人机器人,具有25个自由度,配备两个摄像头、一个IMU(惯性测量装置)、声纳传感器、压力传感器和编码器[3]。Choregraphe 2.1.4自带的Vision模块有Face Detection, Learn Face, Record Video, Select Camera等[4]。
数字识别技术在这种信息大爆炸的AI时代,可以很好地节省人力、物力和财力。故本文主要運用卷积神经网络的数字识别系统,先由NAO机器人用摄像头采集图像,通过局域网传输给PC,对采集的图像进行处理分割,再经卷积神经网络识别(需要预先训练),最后反馈给机器人并使其做出响应。
随着深度学习的不断进步,涌现了各具特色的学习框架,其中,TensorFlow由Google研发,作为最受欢迎的开源项目,它提供了大量的API,便于研究者使用,故本文采用此框架。
1 软硬件设计
实验在SoftBank NAO人形机器人3.2版上进行。对于图像识别,使用了NAO头部内的两个摄像头,其为是VGA摄像机,可产生高达30 Hz的视频流。两个相机的水平视场(FOV)为47.8°,垂直FOV为36.8°,并使用YUV 422色彩空间。NAO机器人摄像头视场如图1所示。本文为便于处理,仅使用单目。
在实验期间,NAO正在运行Choregraphe 2.1.4。使用的软件架构在Ubuntu 18.04下运行,采用的是Python 27。图像处理时,使用TensorFlow 1.3.0、OpenCV库、NumPy包。数据传输时,在交互式命令行中使用了WinSCP中的通信协议SETP,实现了图像的拍摄,以及从NAO机器人内部存储器传输到电脑的过程,以便于后期处理。
2 神经网络简介
大量科学家为了使计算机如人脑般智能,多年来在医学、生物学、信息学、计算机学等领域进行探索,逐渐形成了一个多学科交叉的领域,称为神经网络(Neural Networks,NNs)。它仿照生物大脑的结构和功能构建数学模型,通过神经元间的相互作用,进行训练学习与动作预测。训练时将训练集喂给网络,使其按规定的算法调整神经元间的权值,以达到预期输出效果。训练分为有指导和无指导,有指导是将训练集喂入,并规定相应的输出,通过多次迭代得到连接权值。
2.1 BP神经网络
本文采用的是应用最为广泛的BP神经网络,其重点在于反向传递,整体过程为:输入数据、逐层传递、输出结果。将结果与预期对比,判断其是否要进入反向传递过程。当进入反向传递后,根据结果与期望的误差值,采用梯度下降法优化前向传递中的权值和阈值,使BP神经网络最终达到预期效果。
图2 典型的神经网络结构
在TensorFlow中,BP神经网络的实现较为简单,分为两步:第一,定义层数以及每层的神经元个数;第二,建立神经元之间的关系。神经节点的计算也非常简单,首先,y=tf.matmul(x,w1)+b1,意思是将所有的输入与权值相乘,对其求和后加上偏置量;其次是设置激活函数,y1=tf.nn.relu(y)。
反向传播的主要目的是训练模型参数。TensorFlow提供的训练方式有:梯度下降法、momentum优化器、adam优化器等,用于优化网络参数,使得神经网络模型在训练数据中的损失函数(loss)尽可能的小。这里采用梯度下降法减小loss值,为了得到较为客观的误差信息,便于网络的评估,采用均方误差(MES)计算。
训练规则由会话设定,通过多次迭代,训练网络并调整参数,得到可以满足损失函数值要求的神经网络。在此同时,还进行了断点续训,在一定周期后显示成功识别率和损失函数值,这样可以更好地监控训练进度。
本文BP神经网络选用三层网络结构,输入层将图形转化为28×28的图形,后转化为784个输入量喂入网络,隐含层设置为500个以保证识别精度,输出设定为10个,分别对应10个数。
2.2 卷积神经网络结构框架
本文采用的是在图像处理方面效果极佳的CNN,其模型如图3所示。
由Conv. Layer, Subs. Layer, Full connection組成,Conv. Layer配合Subs. Layer将数据特征逐层提出,最终由多个Full connection对结果分类,输出。它的优点在于,并不需要前期的图像预处理,而且在卷积时可共享卷积核,对高维数据处理很轻松,不需要手动选取特征。池化主要是为了对特征图像进行压缩,简化结构的复杂程度,提取主要特征,防止过拟合。
卷积神经网络中前向传播有几种不同的环节,所以反向传播针对不同的层有相应的计算规则[5?6]。对于误差值的反向传递,较为复杂的是从池化层向前传递以及从卷积层向前传递。在得到每一层的梯度误差[δl]以后,需要通过误差对每一层的参数进行迭代。其中,全连接层的原理与BP神经网络相同,可以按BP神经网络的反向传播算法求该层[W,b]的梯度[7?8]。而池化层本身并没有[W,b],所以这里只需要求出卷积层中[W,b]的梯度。
本文卷积神经网络设置了两个卷积层加池化层,两个全连接层,以及一个输出层。卷积层使用5×5卷积核以保证识别精度的同时克服干扰;池化选取2×2卷积核,保证边缘不丢失;全连接层为512个全连接层;输出层依旧是10个对应是个数。
3 结果分析
本文使用的是来自美国国家标准与技术研究所(NIST),由250个不同年龄段,不同工作的人进行书写的mnist手写数字数据集,该数据集包含60 000个训练样本以及10 000个测试样本,可以很大程度上满足神经网络训练的需求,达到较为理想的训练效果[9?10]。
在对网络进行评价时,考虑loss损失和accuracy准确率。在训练中,loss值会随着次数的增加逐渐趋于0,因此,可以反映网络的效果;accuracy准确率是用单独的测试集对训练完成的网络的输出结果进行测试,通过准确率的高低来判断网络的能力。loss损失和准确率对比如图4、图5所示。
由图4、图5可以看出,BP神经网络和CNN都可以解决本文的问题,其中BP神经网络较为平稳,而CNN则可以更快的收敛;由于数据较为简单,存在过拟合现象,导致accuracy准确率会突然降低,然而很快又会调整回来。
在现实中测试时,使用了0~9十个数字(手写体),如图6所示,对每个数字进行20次测试,总计200次,结果如表1所示(准确率1为BP神经网络的,准确率2为CNN的),可以看出CNN具有更好的鲁棒性和泛化性。
4 结 语
本文主要解决了NAO机器人在图像识别中存在的一些局限性问题,如只能识别特定物体与目标。在室内场景中,将手写体数字作为目标,然后使用NAO机器人完成定位、识别和反馈。最终证实,CNN在数字识别中的效果优于BP神经网络。
在实际处理过程中,识别精度还有待提高,可以根据实际情况对图像进行适当裁剪,减少干扰信息,提高识别精度。本文介绍的框架需要进行预训练,这取决于预训练的样本。当有强干扰项(例如照明、遮挡等)时,精度会降低。接下来,将花费一些时间进行目标检测,例如Yolo v3和Faster R-CNN等,将不再局限于数字图像,并且会从图形中获取越来越多的信息。
参考文献
[1] 郝英好.机器人技术发展及其对经济和社会的影响研究[J].新型工业化,2016,6(11):68?74.
[2] 张红霞.国内外工业机器人发展现状与趋势研究[J].电子世界,2013(12):5?7.
[3] BUIHUUTOAN.智能服务机器人控制系统研究与实现[D].南京:南京理工大学,2015.
[4] Softbank. NAOqi documentation [DB/OL]. [2018?03?25]. http://doc.aldebaran.com/2?1/dev/python/examples/motion/stiffness.html#python?example?motion?stiffness.
[5] 王勇,周慧怡,俸皓.基于深度卷积神经网络的网络流量分类方法[J].通信学报,2018,39(1):14?23.
[6] 余秋婷.基于中间语言的移动应用安全性检测方法研究[D].杭州:浙江工业大学,2017.
[7] 高玉明,张仁津.基于遗传算法和BP神经网络的房价预测分析[J].计算机工程,2014,40(4):187?191.
[8] 谈力.基于相似日选取的小波极限学习机短期负荷预测模型研究[D].南京:南京理工大学,2015.
[9] 宋明顺,周涵婷,周立军,等.基于过程分折法的美国标准化体制形成的驱动因素分析[J].科技管理研究,2018,38(11):147?153.
[10] 孙巍巍.基于深度学习的手写汉字识别技术研究[D].哈尔滨:哈尔滨理工大学,2017.