APP下载

基于卷积神经网络的手势识别控制系统

2020-10-15张行健张建新

计算机应用与软件 2020年10期
关键词:机械手手势准确率

张行健 张建新

(浙江理工大学机械与自动控制学院 浙江 杭州 310018)

0 引 言

随着机器学习和嵌入式等技术的发展,现代工业愈加智能化[1]。目前工业领域中传统的人机交互方式复杂,在操作上不够自然直观。为此,研究一种能实现对机械手的直观控制的新型人机交互方式很有必要,其中一种交互方式是让机械手直接模拟操作者的动作,实现直接控制,这一方式的关键是计算机能够对手势进行识别和判断。

目前手势识别方法主要分为三个类别。(1)基于超声波的手势识别。Yang等[2]提出的手势识别是利用多个超声波装置检测手势的位置,该方法的识别平均准确率可以达到93%,但是在较复杂的噪声环境中容易被干扰。(2)基于传感器的手势识别。谢小雨[3]提出一种利用手势控制臂带(MYO)传感器采集的肌电信息和加速度实现手势的识别,该方法的识别平均准确率可以达到96%,但该类方法由于需要佩戴传感器,使用不够方便等。(3)基于机器视觉的手势识别。贺航[4]基于OpenCV函数库,利用基于HU不变矩提取手势的图像特征值,再通过模板匹配法完成手势识别,但该方法对不同人的手势识别准确率差异较大,泛化性较差。孙玉等[5]利用Leap Motion设备获取手势的三维坐标信息,并结合长短期记忆网络模型进行动态手势识别,但Leap Motion设备较为昂贵,不利于工业的大规模使用。朱雯文等[6]提出了一种基于加速度信号的卷积神经网络(CNN)模型,但是由于采用的是简单的LeNet网络结构,手势识别准确率只能达到90%。石雨鑫等[7]提出了一种将CNN模型和随机森林(RF)相结合的手势识别算法,其识别准确率达到97%,但RF会明显加大运算量,且容易在噪声较大的分类中出现过拟合现象。

本文将采用机器视觉和卷积神经网络的思路,提出一种以AlexNet结构为基础针对手势特征识别的CNN模型。改进后的CNN模型可以有效识别手势,通过STM32单片机实现对机械手的直观控制。本文改进的CNN模型的手势识别正确率在测试集中达到98%。

1 总体方案设计

本文设计的手势识别控制系统是先用摄像头保存操作者的手势动作,然后用PC机中预先训练好的CNN模型去识别手势动作,再将手势动作的识别结果通过串口通信传输给STM32单片机,最后通过单片机控制机械手,实现操作者手势直接控制机械手的功能。总体方案设计如图1所示。

图1 总体方案设计图

2 卷积神经网络及其改进

2.1 卷积神经网络设计

CNN的典型结构如图2所示。CNN发展历史中的里程碑事件是Alex提出AlexNet结构,获得了ILSVRC-2012大赛冠军[8]。AlexNet结构通过6 000万个参数和65万个神经元,成功地把120万幅高分辨率图像分成1 000个不同的类别[8]。

图2 CNN典型结构示意图

本文提出的CNN结构以AlexNet结构为基础,并根据实际手势识别的情况做了以下改进(具体结构参数如表1所示):

表1 CNN具体结构参数

(1)删除LRN层。AlexNet结构使用局部响应归一化(LRN)用于正则化。但是Simonyan等[9]发现LRN的效果十分细微,反而会大量占据存储量和花费许多计算时间。本文在有无LRN层的CNN模型上进行测试,结果并无区别,说明LRN层确实性价比太低,于是本文删除LRN层,以加速训练过程。

(2)改小卷积核大小。AlexNet结构的第一个卷积核的大小为11×11,是为了适应1 000种图像的多分类问题,让输入的第一个卷积层尽可能包含大的图像特征。而本文改进的CNN模型是用于手势识别,手势的特征分布相对区分度较小,所以较小的卷积核能够更好地获取这些特征分布。本文把第一个卷积核大小改为3×3,并且使用较小的卷积核可以很明显地减少训练参数。

(3)加深网络深度。AlexNet结构的卷积核过大导致随着网络层数加深,网络的参数指数型上升,会发生明显的过拟合现象。而本文把卷积核减小了很多,所以可以适当地加深网络的深度,因为卷积层的深度对CNN识别准确率有很重要的影响。本文分别在第一个和第二个池化层前增加了一个和前一个卷积层规模大小一样的卷积层,即一共增加了2层卷积层。

(4)更换优化函数。AlexNet结构使用的是随机梯度下降法(SGD),虽然SGD比标准的梯度下降算法在运算速度上有所提高和更不容易收敛到局部最优值,但是由于SGD频繁的更新和波动会导致存在一定的超调量。本文使用自适应时刻估计算法(Adam),该算法能计算每个参数的自适应学习率[10]。Adam可以计算和存储每个参数的对应动量变化,可以有效缓解学习率消失、收敛过慢和损失函数波动较大问题。

本文改进的CNN结构的池化层都选择最大值池化方式,再接着3个全连接层,每个全连接层都有1 024个神经元,dropout设置为0.5。在全连接层3后面有一个Softmax函数,将预测结果分为剪刀、石头、布、GOOD和OK这5类手势动作。

2.2 过拟合现象解决

过拟合现象是困扰卷积神经网络模型发展的重要因素。过拟合是指模型在训练集上学习的特征过多,以至于不具有泛化能力,虽然可以在训练集上达到100%的正确率,但是在测试集上的正确率却不尽如人意。本文主要通过以下4种方法来缓解甚至避免过拟合现象,以提升模型预测的准确率,具体过程与结果如表2所示。

表2 优化过程

(1)数据增强。数据增强是避免过拟合现象最简单的方法。数据增强有很多方法,比如翻转、平移、水平反射和改变图像RGB通道的强度等方法。本文采用最原始的方式,更多地拍摄手势照片,因为一般只用标准手势动作。最开始本文的训练集是每种手势500幅照片,即一共只有2 500幅照片,模型在测试集上识别正确率只有50%。当本文的训练集增加到每种手势1 300~1 450幅,一共有6 650幅照片时,模型在测试集上识别正确率可以达到70%。

(2)Dropout技术。Dropout是一种简单但非常有效的避免过拟合的技术[11]。Dropout是指在模型每次随机挑选部分神经元不参与训练,减弱神经元的协同效应,继而让神经元不能依赖其他神经元存在,被迫学习与其他神经元不同的随机子集,获得更健壮的特性。本文在最后三层的全连接层都使用了Dropout技术,并且设置随机“脱落”神经元的概率为50%。

(3)调整池化方式。池化层的填充有VALID和SAME两种方式。当池化层的卷积核根据步长移动到图像数据外面时,SAME是自动在周围填0补齐,而VALID是忽略,所以相对于SAME池化方式,VALID方式会输入周围更少的特征。重叠池化是指让卷积核移动的步长小于卷积核自身的大小,让图像数据中间的特征更丰富。因为训练集中的手势动作基本都在图像的中间,于是本文调整池化方式为VALID和重叠池化。

(4)选择合适参数。训练批次大小、训练迭代步数、学习率和训练图像大小等参数都会影响模型在测试集上的识别准确率。通过多轮单一变量对比实验发现,在以本文的数据集、模型结构和卷积大小数量为训练背景下,代价函数用交叉熵函数,其形式如下:

(1)

式中:C表示代价;x表示样本;n表示样本的总数;y表示实际值;a表示预测值。

激活函数用非线性ReLU函数。因为ReLU函数可以通过单侧抑制,使神经网络中的神经元具有稀疏激活性,其形式如下:

(2)

训练批次大小设置为64,训练迭代步数设置为799步,学习率设置为0.000 1,训练图像大小压缩为227×227,RGB图像为输入。

3 机械手控制系统实现

3.1 硬件设计

本文使用的机械手系统如图3所示,其动力系统由6个MG996R舵机组成,可以实现机械手的上下、左右及前后抓取搬运等动作演示。转向关节处均采用的是杯式轴承,可以使转向更加灵活,同时使舵机的转向在同一圆心。底盘采用4 mm厚度的铝制圆盘形式,使机械手左右转动更加灵活顺畅并且稳固。机械手控制模块是一个搭载STM32F103核心处理器的6路舵机控制模块,该模块是一种高效的微伺服电机控制器,可以控制6个舵机协同动作。机械手系统硬件的总体设计框图如图4所示。STM32单片机和PC机通过串口进行通信,实物设计图如图5所示。

图3 机械手实物图

图4 机械手系统总体设计图

图5 机械手系统实物图

机械手系统选用USART作为STM32单片机的串口通信寄存器,通过USB转TTL设备完成上位机和下位机的通信,该设备的一端连接STM32单片机的四个IO口,另一端连接电脑的USB口。

3.2 软件设计

机械手系统的软件控制总流程图如图6所示,STM32单片机通过串口中断接受PC机的手势识别结果,再通过定时器中断控制机械手。

STM32单片机通过定时器产生周期为20 ms,即50 Hz,高电平的脉冲宽度的最小值为1~2 ms的PWM,具体流程图如图7所示。

图7 定时器生成PWM波

由于系统一共识别5种手势,所以STM32单片机存储了5个PWM波组,每个PWM波组都有6个脉冲宽度不同的PWM波,使机械手系统可以做5个不同的动作,每个动作都有6个自由度可以设置。

4 实验结果分析

4.1 数据集构建与测试

本文利用OpenCV建立数据集,并分为训练集和测试集。图片数据集中有5种基本手势:剪刀、石头、布、GOOD手势和OK手势;采集自9位大学生志愿者,其中5位男性、4位女性。训练集中OK手势图片有1 450幅,其他四种手势图片有1 300幅;测试集中每种手势的图片数量都为450幅。采集的数据集如图8和图9所示。

图8 剪刀手势数据图

图9 五种手势数据图

拍摄手势的照片是按照手势动作名加上当前帧数命名,这样后期不需要再手动进行标注设置。同时由于只需要识别手势动作,并不需要摄像头拍到的完整画面,于是在保存图像的时候自动设置感兴趣区域的大小为300×300,切割后可以有效地减少拍摄背景等干扰。

本文利用TensorFlow搭建的CNN模型在训练集训练的效果如图10所示,实际训练步数是每个step值的20倍。

图10 CNN在训练集的正确率和损失率

改进后的CNN模型在测试集中的平均准确率能达到98%,且用交叉熵度量的损失率仅为0.14。

4.2 手势实时测试

手势实时测试是调用保存在PC机中预先训练好的CNN模型进行在线手势判断。本文在线测试了5种手势,在背景为灰色窗帘有人脸干扰的情形下测试手势识别效果如图11所示。

图11 五种手势实时识别

在手势实时测试过程中每种手势都测试了10次,每次CNN模型都能正确识别;一位女性测试者在相同的环境进行手势识别测试,她的5种手势也都可以被准确识别。实验证明该CNN模型在手势识别中具有较高的准确性和较强的泛化性。

4.3 不同模型实验对比

本文用LeNet-5结构、AlexNet结构、VGG-16结构和改进的CNN模型在测试集上预测,得出的实验结果如表3所示。结果表明本文提出的改进后的CNN模型在手势识别领域比AlexNet结构具有更高的识别准确率,能满足手势识别的需求。

表3 实验结果对比

5 结 语

本文提出改进的CNN模型的正确率在测试集中可以达到98%,在背景不是很复杂的情形下(如只有人脸干扰)可以达到100%的识别准确率。实验证明该CNN模型具有较强的泛化能力,可以很好地完成手势动作识别任务,从而直观地控制机械手做出相应动作。未来可以考虑如下两个方面的改进:

(1)数据增强。本文的数据集还远不够,要拍摄更多不同背景下的手势动作和更多志愿者的手势动作,并且使用多种数据增强的手段,如:旋转、缩放、膨胀和平移等。

(2)多结果融合。同时用多个不同的CNN模型算出结果概率,然后将这些结果概率取平均得到最大预测结果概率。

猜你喜欢

机械手手势准确率
PLC气动机械手控制系统的设计与开发
基于机器视觉的开关操纵机械手研究
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
挑战!神秘手势
拆弹帮手
基于单片机控制机械的压铸机械手优化设计
胜利的手势