0 引 言
随着科技的发展和进步,计算机已经渐渐适应人的需求。人类在利用计算机解决问题时,并没有将主观能动性和计算机的高效性有机地结合起来。研究新型的人机交互工具能够打破这一障碍。当虚拟现实越来越被人熟知时,可以使用手势作为载体进行人机交互。
目前,手势输入的种类有基于图像的和基于加速度传感器的。由于图像的手势识别对外部环境的依赖比较大,而加速度传感器识别就不受外部条件的限制,甚至可以依靠单手完成操作,因此,基于加速度传感器的方法能有效地识别手势动作,完成人机交互。本文采用ADXL335 三轴加速度传感器分别采集五个手指和手背上的加速度信息,实现手势的输入。
1 手势识别方法
手势的执行是一个动态的过程,主要表现在手指弯曲引起的手的形状和手在空间的位置和方位的变化,需要从时间和空间两方面来描述。根据手势的时变特征,可将手势分为静态手势和动态手势。从测量的角度看,静态手势可用某一时刻手的空间特征的测量值来表示,而动态手势是指需要使用随时间变化的空间特征来描述的手势。静态手势可以用各个关节测得的特征值来表示,而动态手势需用一段时间内手的空间特征的一组测量序列值来表示。人的手有多个自由度,运动十分灵活、复杂,而且不同的人,手的大小不同。因此,同样的手势,不同的人作出时手的运动会存在差别;同一个人在不同的时间、地点作出手势也不一样。所以,本文主要针对静态手势的数据手套进行分析研究。
2 手势的识别技术
目前,比较流行的手势识别技术有模板匹配法、特征提取和BP 算法等。
模板匹配法:主要是将传感器输入的原始数据与预先存储的模板进行匹配,通过测量两者之间的相似度来完成识别任务。由于需要大量的基础数据作为匹配对象,所以受到噪声、光照、复杂环境影响较大,并且匹配速度慢。但是,模板匹配法简单、易掌握,普及程度高。
特征提取:在特征提取过程中,输入数据中的低层特征被提取出来,经过分析而转化成包含手形语义的高层特征,然后用高层特征进行手形识别。
BP 算法:是一种按误差逆传播算法训练的多层前馈网络。
BP 网络的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
3 BP 算法
BP 神经网络是一种前向传播的多层网络,网络除了输入节点以外,还有一层或多层隐含节点。其训练方法被称为误差反传播算法,它利用实际输出和期望输出之差对网络的多层连接权由后向前逐层进行校正。BP 网络的最大缺点是样本训练的收敛速度慢。为提高网络的收敛速度,同时防止网络的振荡发散,本次选取的BP 神经网络是1 个3 层BP 网络结构( 含1 个隐层),隐单元及输出单元用sigmoid 函数输出,输出共分为10 类,即输出神经元个数为10.由于输入矢量为处理后的手部加速度传感器( 用18&TImes;10 的数字矩阵表示) ,因此第一层为240 个神经元,第二层为隐含层。根据经验,其神经元数目一般为输入矢量维数的10 %,为26 个神经元,采用改进的BP 算法。将每个样本对应的矩阵元素值输入神经网络的各个输入单元,并为每个输出单元指定期望输出,计算每个输出单元的实际输出与期望输出的误差以及隐含层误差。计算实际输出与期望输出的误差公式为:
式中的负号表示梯度下降,常数η ∈(0,1)代表学习速率。
由于BP 神经网络算法的收敛速度慢,优化的目标函数非常复杂,所以需要优化学习速率。三层感知器的BP 学习算法权值调整计算公式为:
将每个加速度传感器中每个轴的数据特征向量作为神经网络的输入,所以神经的输入层神经元个数等于特征向量的维数,即9&TImes;18=162 个输入神经元。输出层神经元个数的确定因为要识别10 个数字,因此输出选择为10&TImes;1 的矩阵,即输出节点数为l0.当0 ~ 9 输入神经网络后在输出神经元对应的位置上为1,其他的位置为0.输入数字0,第1 个输出神经元为1,其他为0 ;输入数字1,第2 个输出神经元为1,其他为0 ;依此类推。
隐含层数越多, 神经网络学习速度就越慢。根据Kosmogorov 定理,在合理的结构和恰当的权值条件下,3 层BP 网络可以逼近任意的连续函数。因此,我们选取结构相对简单的3 层BP 网络。
一般情况下,神经元个数与函数收敛程度有关。根据经验公式s=sqrt(n&TImes;m),其中,m 为输入神经元个数,n 为输出神经元个数,得出隐含层神经元个数为40 个。
采用定义学习速率和采用带动量因子算法两种改进方法。
识别内容为数字0 ~ 9,利用手势特征,提取每个加速度传感器中每个轴的数据作为BP 的数据输入参数,为BP 进行初始化及参数训练,可以提高数据的识别率。在学习收敛的情况下,增大η,以缩短学习时间;当η 偏大致使不能收敛时,要及时减小η,直到收敛为止。将上一次权值调整量的一部分迭加到按本次误差计算所得的权值调整量上,作为本次的实际权值调整量,即:
4 实验结果分析
通过Matlab 计算所得出得神经网络学习误差曲线和数字识别结果如图1 所示。
本文将0 ~ 9 共10 类数据中的每类取20 个做测试样本,共200 个测试样本对系统进行性能测试。测试结果如表1 所列。由表1 中的数据可知,数字识别的正确率为98.5%,正确率较高,拒识率为6.5%,也比较高。总体数字识别有效率为94.5%.Kadous 用Power Gloves 作为手语输入设备,这样的识别率仅为80%.
5 结 语
实际上,数字识别的正确率和拒识率与数字识别的判断值有关,本文的判断值设置为0.7.判断值设置得高,数字识别的正确率就高,同时数字的拒识率也相应地就高,反之亦然。因此,判断值的选择需要根据实际情况来定。