结合深度学习的机器人示教系统设计

2020-12-08 03:15段中兴
计算机测量与控制 2020年11期
关键词:肤色手势滤波

段中兴,白 杨

(西安建筑科技大学 信息与控制工程学院,西安 710055)

0 引言

机器人示教编程(robot programming demonstration,RPD)是降低机器人编程复杂性的重要途径,用户可以通过示教器引导机器人完成学习并进行任务再现[1]。在使用RPD系统对机器人进行编程的过程中,通过将消息指令传达给机器人来进行人机交互,其中手势由于其直观性和确定性,是工业场景中信息交流的重要方式,因此如何在RPD中利用手势高效完成人机交互已经成为当前研究的重要方向。

基于视觉的动态手势识别研究分为两类:一类是包括手势分割、手势跟踪、特征提取和手势分类四个阶段的传统方法;另一类是利用卷积神经网络(Convolutional Neural Networks, CNN)进行相关研究。前者基于包括尺度不变特征变换(Scale-Invariant Feature Transform, SIFT)[2]、LBP特征(Local Binary Pattern)[3]、方向梯度直方图特征(Histogram of Oriented Gradient, HOG)[4]和Haar-like特征等提取目标完成图像特征提取[5],再采用分类算法进行分类来完成手势识别,如支持向量机(Support Vector Machine, SVM)[6]、K近邻法(K-NearestNeighbor, KNN)等完成手势分类[7],进而对不同识别结果进行运动定义来引导机器人工作,也可以采用如凸包算法等几何算法进一步对手势信息进行提取[8],但传统方法对每个阶段的算法要求都较为严格,并且需要手工选取特征,导致其存在一定复杂度的局限性;而基于CNN在一定程度上避免了以上问题带来的影响,该方法只需要将图像序列送入设计好的网络结构就可以直接得到分类结果,整个识别过程简单且高效,逐渐成为手势识别的重要研究方向。

其中Mohanty等人将原始图像直接输入简单的2层CNN进行特征提取并完成手势识别[9],但由于没有进行手势分割,因此结果受背景干扰影响程度较大;Oyedotun等通过将预处理的二值图像进行阈值划分获取手势区域并使用CNN完成识别[10],但其对光照干扰鲁棒性较差;此外还存在将CNN与SVM[11]或者HOG[12]相结合的方法完成分类任务;也可以使用HSV肤色模型[13]或YCbCr肤色空间[14]完成手势分割,解决了对光线鲁棒的问题,但其稳定性较差。

针对以上问题,本文采用将RGB颜色空间与YCbCr颜色空间结合的方法完成手势分割,并结合改进LeNet-5网络架构进行特征提取完成手势识别,基于ROS设计机器人示教框架并定义相应功能,进而完成人机交互[15]。

1 系统结构

首先需要对包含手势区域的图像进行预处理,利用RGB与YCbCr结合的颜色空间肤色模型提取手掌区域,通过高斯滤波进行平滑处理并进行灰度处理,尺寸归一化处理成32×32作为深度学习网络的输入;其次对LeNet-5进行改进,原始简单网络LeNet对于手写体字符的识别非常高效,但其由于网络设计原因,对于5分类测试集上存在过拟合现象,因此需要进行改进;最后将该方法应用于示教系统中,用于指示任务演示的开始和结束,达到人机交互的目的,并进行实验与评估,统计结果进行算法验证,系统流程如图1所示。

图1 系统流程图

2 图像预处理

目前无论是开源的手势样本库,还是通过相机自采样手势图像建立数据集,得到的原始图像中均包含了手势区域和背景,并不适合用于神经网络的输入图像,需要经过预处理去除冗余信息。本文中的预处理包括:手势分割、滤波去噪和归一化处理。

2.1 手势分割

本文为了提高肤色检测模型的稳定性,将多个颜色空间结合,采用RGB颜色空间和YCbCr颜色空间的混合肤色检测器。传统采用HSV或YCbCr单一肤色模型对光照鲁棒性较强,但会将图像分割得较为破碎。针对以上问题,通过将RGB颜色空间的3通道和YCbCr颜色空间3通道的值结合建立混合肤色检测器来完成肤色分割,具体算法如式(1)所示。

R>B∧R>B

(G≥B∧5R-12G+7B≥0)∨

(G

Cr∈(135,180)∧Cb∈(85,135)∧Y>80

(1)

经过混合肤色模型手势分割结果如图2所示。

图2 YCbCr与RGB+YCbCr颜色空间结果对比

2.2 滤波去噪

高斯滤波、均值滤波和中值滤波是图像处理中使用的较为频繁的滤波算法,其中高斯滤波和均值滤波采用的是线性滤波,能够有效地抑制噪声、平滑图像,其窗口模板的系数和均值不同。均值滤波的模板系数都是1,是一种非线性滤波方法,但其效率较高的同时会导致丢失部分特征信息,不利于目标手势的识别,并且对于噪声干扰效果不佳;

中值滤波是非线性滤波方法,对于椒盐噪声效果较好,但其时间复杂度较高;而高斯模板系数随着模板中心的增大而系数减小,则其对图像的模糊程度较小,更大程度地保留图像特征信息,因此本文采用大小为15×15的高斯核进行滤波去噪。

考虑到手势图像中手势占主导地位,因此采用轮廓提取方法提取出手势区域,并将小于最大轮廓的连通域填黑,仅显示最大连通区域,结果如图3所示。

图3 滤波去噪结果

2.3 归一化处理

采用插值算法对手势图像作归一化处理用于输入卷积神经网络。常用插值算法有最近邻插值法、双线性插值法、基于局部像素重采样、三次样条插值和Lanczos插值算法等。最近邻插值法由于会用距离待求像素点最近的四邻像素值直接进行替代,因此可能会导致结果产生明显不连续情况;基于局部像素采样更适用于图像抽取的应用场景;三次样条插值与Lanczos插值算法由于计算量较大,速度较慢。

其中双线性插值算法,可以保证插值结果较为光滑,具有一定的亮度采样精度,但会损失细节部分的清晰度,但手势图像对于如纹理等细节部分并不关注,因此采用该方法进行图像归一化处理,处理结果如图4所示。

图4 归一化处理结果

3 神经网络模型

3.1 卷积神经网络

为了避免人工选取图像特征的局限性,本文采用卷积神经网络完成图像特征提取。卷积神经网络是权值共享、非全连接的神经网络,其包括卷积层(CONV)、池化层(POOL)和全连接层(FC)等。卷积层通过二维卷积完成图像局部特征的提取,其公式如式(2)所示。

(2)

池化层位于连续的卷积层中间,用于压缩数据和参数的量,减小过拟合。对于图像类型输入可以在保持主要特征同时进行特征降维,减少冗余参数,提高模型泛化能力,其公式如式(3)所示。

(3)

全连接层在整个卷积神经网络起到分类器的作用,可以将卷积输出的二维特征图转化成一维向量。实际使用中,全连接层可以卷积操作实现,其公式如(4)所示。

(4)

3.2 改进LeNet5网络模型

LeNet5是最经典的神经网络之一,但其由于算力与数据集等因素的限制,效果相较于传统特征提取结合分类器的目标识别方法较差,直到2012年ImageNet比赛上取得冠军,使得卷积神经网络再一次成为研究热点。

针对LeNet5手势识别收敛速度慢、训练时间长等问题,提出一种改进的LeNet卷积神经网络模型,该模型结构如图5所示。

图5 改进LeNet5网络结构图

首先对原有的网络数量进行调整。在4层网络基础上加入新的卷积层与池化层,考虑到目的是进行手势识别,需要尽可能保留纹理特征,减小卷积层参数误差造成估计均值的偏移,池化方式选择最大池化;为了保证输出图片尺寸与输入一致,填充方式采用全零填充。

卷积核数目进行调整。卷积核数目的大小会对特征图个数产生影响,因此为了应对工业场景中的大部分场景,设置了8种手势,为了提高网络手势识别性能,将卷积核数目设置为64,64,128,128,256,256。全连接层输出节点分别设置为256和8,用于手势分类。

卷积核大小调整。原始LeNet5使用的是5×5的卷积核,而多个小的卷积核叠加使用效果好优于大卷积核单独使用,并且为了降低参数个数与计算复杂度,本文调整卷积核大小为3×3。

激活函数的更改。原网络使用的sigmoid函数在应对较深网络结构时会导致梯度消失,且计算量较大,导致训练时间增加。本文采用ReLU函数作为激活函数,其应对较深网络时具有计算速度快、收敛速度快等优势,一定程度上保证了模型泛化能力。

加入Droupout层。为了缓解模型过拟合现象的发生,在池化层后加入大小为0.5的Droupout层,可以进一步提升模型泛化能力。

4 手势识别机器人示教框架

4.1 RPD系统

为了简化工业机器人的编程过程,使公众更容易地使用工业机器人,机器人研究人员开发了基于捕获和分析人类演示动作的演示编程方法,该方法为工业机器人提供了自我编程的能力,其一般步骤包括以下。

1)观察:机器人使用其传感器感知人体运动;

2)编码:RPD系统生成任务的表现形式及用于任务执行的相应程序;

3)执行:机器人重现动作。

如图6所示,该图描述了所提出的RPD框架,其包括3个主要组件,传感器、编码系统与机器人控制器。在任务演示过程中,传感器信息被发送到编码系统,同时编码结果通过屏幕作为演示反馈给用户。而手势识别(Hand Gesture Rcongnition, HGR)可以用作在任务演示期间向编码系统传递消息或命令,与示教器相比更为直观且效率也更高。

本文设计了HGR用作RPD系统的开关,以指示任务演示的开始和结束,将产生的机器人程序发送到机器人控制器后,进一步通过手势命令批准机器人运动,整个过程中可以随时利用手势进行暂停以保障运行安全。

4.2 系统架构

设计的编码模块通过ROS节点和消息实现。ROS是由节点作为基本的单元的开源的元操作系统,其通过为节点提供发布与订阅的标准来完成节点单元之间消息传递的管理,进而保证节点通信的可靠性,各个节点用于实现不同的功能,具有高度的灵活性。

该系统由4个ROS节点组成,包括用于识别手势的“/simple_hgr”节点,可以通过相机将手势识别结果进行转化,其次可以实现读取机器人当前关节角度的“/robot_joint_state_reader”节点,用于反馈机器人当前状态,“/hri_bridge_RPD”节点用于处理接收到的手势消息,并结合机器人关节信息在任务演示和执行阶段之间进行切换,最后是“ /move_ur5_by_joints”节点,用于向机器人控制器发送关节角度以移动机器人, RPD框架如图6所示。

图6 RPD框架

4.3 手势控制模块

基于手势识别算法,将识别的手势结果分别转化成数字信号用于输出,例如识别到“start”的控制信号时输出数字1,并设置在默认状态下输出0,表示未检测到手势信号,其公式如式(5)所示。

(5)

其中:Nd表示手势输出信号,采用“cv_bridge”包实现ROS中“std_msgs/image”格式与opencv格式之间的图像转换,识别结果以ROS消息的形式通过主题“/simple_hgr/number”以30Hz的速率发送。

4.4 数据处理模块

节点“/hri_bridge_RPD”用于分析接收到的数字以及RPD系统当前工作阶段。显然,“/hri_bridge_RPD”节点扮演着中央处理器(Center Processing Unit,CPU)的角色,功能类似于CPU中的算术逻辑单元(Arithmetic Logic Unit,ALU),通过对采样信息执行算术运算及逻辑运算以提取用户最可能执行的手势。该节点以0.1秒的时间间隔对接收到的数据进行采样,并对形成的数组中存在的每个数字的频率进行计数,超过设置阈值0.8时即确定手势信号,节点部分在图7中给出。

图7 节点内部结构示意图

节点基于采样结果确定手势信号后将用于引导系统进入不同模式,功能类似控制单元(Control Unit,CU),其工作流程如图8所示。

图8 手势引导工作流程

5 实验结果与分析

5.1 实验数据与环境

本文实验环境为Ubuntu16.04,ROS版本为kinetic,OpenCV版本为3.3.1,模型所使用深度框架是tensorflow,实验所使用GPU型号为TitanV,显存12G。环境配置为CUDA9.0+anaconda3+python3+tensorflow1.8.0。采用在包括复杂背景的Marcel数据集上进行手势识别验证实验。Marcel数据集含有带有背景的6种手势图像共5 494张,图9展示了该数据集的样本图像。神经网络模型所有层均使用xavier初始化,优化器采用Adadelta,总共迭代2 000次。

图9 Marcel数据集样本

5.2 数据增强

深度学习模型效果基于充足的样本数量,但目前数据库数据量不足以充为训练网络模型,容易导致训练模型过程中出现过拟合问题,为了增强CNN模型泛化能力、避免过拟合问题,本文应用数据增强方法提高样本质量。通过采用对图像水平和垂直方向的随机平移(离线增强),或者在模型训练过程中对训练图片随机平移和翻转(在线增强),将训练数据扩充20倍,可以使模型达到充分的训练并增强其对尺度变化的鲁棒性,数据增强结果如图10所示。

图10 数据增强结果

5.3 图像实验

为了验证本文方法的有效性,本文分别利用单一肤色模型与混合肤色模型进行了手势识别对于实验,其中单一肤色模型采用YCbCr颜色空间下的肤色模型进行实验,该实验结果如图11所示。

图11 单一肤色模型

混合肤色模型损失值与准确率曲线分别如图12和图13所示。

图12 准确率曲线

图13 损失值曲线

从图11、图12和图13所示,混合肤色模型与单一肤色模型相比稳定性更强,损失值下降得更快,准确率也明显提升;并且混合模型随着迭代次数的增加,损失值与准确率趋于平稳,且损失值迅速下降,表明本文网络结构设计较为合理。

为了进一步验证本文方法准确率,分别在Marcel数据集上与其它算法进行性能比较,结果如表1所示。

其中文献[16]并没有进行手势检测,直接将原始图像输入2层CNN模型进行识别,原始图像中存在的背景干扰信息导致其性能较差;文文献[17]采用Haar-Adaboost组合。

表1 与其它算法性能比较

特征进行手势检信息提取,并利用SVM完成手势分类,但其特征描述无法适应数据集手势多样性与背景带来的干扰;文献[18]采用的单一颜色空间YCbCr下的的高肤色模型完成手势信息的提取,因此准确率和稳定性较本文较差。

5.4 系统实验

为了验证本文系统可行性,通过手势识别过程预定义“start”、“end”和“stop”等控制模式手势,以UR5机器人为研究对象并对其编程令其到达5个指定位置,进而通过手势直接引导机器人末端分别到达以上5个位置,表明其进入示教编程的5种不同阶段,以证明本设计框架的合理性。首先在Kinect传感器作用范围内执行手势“start”以进入示教模式,在此模式下按下UR5配套的CB3机器手控制器顶部锁定按钮,并拖拽机器人到某一指定位置后,执行另一手势作为该位置的标志,表明此位置将用该标志手势进行引导,完成对该位置的编码,再回到起点“start”重复以上动作完成所有位置的编码;其次执行手势“execute”进入执行模式,通过执行编码手势完成机器人末端到达相应位置;并且在所有情况下通过执行“stop”手势来紧急停止机器人,模拟在示教过程中的一些突发情况;整个过程结束时通过“end”手势关闭整个系统,表明任务求教过程的安全结束。

实验结果表明,手势识别率可达96.49%,响应时间均不高于1s,表明该RPD可以易于使用且并不需要专业的编程知识,一定程度降低了机器人使用门槛。

6 结束语

本文通过改进肤色模型完成手势信息的提取,并结合改进后的LeNet5网络完成手势识别,极大地提高了基于肤色分割的手势提取性能;并将该算法应用于机器人示教系统,降低了示教编程的技术门槛同时提高了RPD系统的易用性,基于ROS完成设计保证该系统具有良好的可移植性。

猜你喜欢
肤色手势滤波
船岸通信技术下舰船导航信号非线性滤波
肤色(外一首)
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
一种考虑GPS信号中断的导航滤波算法
挑战!神秘手势
高效LCL滤波电路的分析与设计
胜利的手势
认手势说数字