MATLAB基于BP神经网络的手势识别

摘 要:给出了采用MATLAB来识别五个手指和手背的同心圆距离,并通过颜色肤色的方法来提取手势特征量,同时利用BP神经网络算法进行误差分析来实现手势识别的设计方法。最后,通过Matlab验证,结果表明,该系统在测试中识别率较高,系统稳定。

关键字:MATLAB;BP神经网络;手势识别;

0 引 言

随着科技的发展和进步,计算机已经渐渐适应人的需求。人类在利用计算机解决问题时,并没有将主观能动性和计算机的高效性有机地结合起来。研究新型的人机交互工具能够打破这一障碍。当虚拟现实越来越被人熟知时,可以使用手势作为载体进行人机交互。目前,手势输入的种类有基于图像的和基于加速度传感器的。由于图像的手势识别对外部环境的依赖比较大,而加速度传感器识别就不受外部条件的限制,甚至可以依靠单手完成操作,因此,基于加速度传感器的方法能有效地识别手势动作,完成人机交互。本文采用MATLAB识别五个手指和手背上的加速度信息,实现手势的输入。

1 手势识别方法

手势的执行是一个动态的过程,主要表现在手指弯曲引起的手的形状和手在空间的位置和方位的变化,需要从时间和空间两方面来描述。根据手势的时变特征,可将手势分为静态手势和动态手势[2]。从测量的角度看,静态手势可用某一时刻手的空间特征的测量值来表示,而动态手势是指需要使用随时间变化的空间特征来描述的手势。静态手势可以用各个关节测得的特征值来表示,而动态手势需用一段时间内手的空间特征的一组测量序列值来表示[3]。人的手有多个自由度,运动十分灵活、复杂,而且不同的人,手的大小不同。因此,同样的手势,不同的人作出时手的运动会存在差别;同一个人在不同的时间、地点作出手势也不一样[4]。所以,本文主要针对静态手势的数据手套进行分析研究。

2 手势的识别技术

目前,比较流行的手势识别技术有模板匹配法、特征提取和BP算法等。

模板匹配法:主要是将传感器输入的原始数据与预先存储的模板进行匹配,通过测量两者之间的相似度来完成识别任务[5]。由于需要大量的基础数据作为匹配对象,所以受到噪声、光照、复杂环境影响较大,并且匹配速度慢。但是,模板匹配法简单、易掌握,普及程度高。

特征提取:在特征提取过程中,输入数据中的低层特征被提取出来,经过分析而转化成包含手形语义的高层特征,然后用高层特征进行手形识别[6]。

BP算法:是一种按误差逆传播算法训练的多层前馈网络。BP网络的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

3 BP算法

BP神经网络是一种前向传播的多层网络,网络除了输入节点以外,还有一层或多层隐含节点。其训练方法被称为误差反传播算法,它利用实际输出和期望输出之差对网络的多层连接权由后向前逐层进行校正[7]。BP网络的最大缺点是样本训练的收敛速度慢。为提高网络的收敛速度,同时防止网络的振荡发散,本次选取的BP神经网络是1个3层BP网络结构(含1个隐层),隐单元及输出单元用sigmoid 函数输出,输出共分为10类,即输出神经元个数为10。由于输入矢量为处理后的手部加速度传感器(用18×10的数字矩阵表示) ,因此第一层为240 个神经元,第二层为隐含层。根据经验,其神经元数目一般为输入矢量维数的10 %,为26 个神经元,采用改进的BP算法。 将每个样本对应的矩阵元素值输入神经网络的各个输入单元,并为每个输出单元指定期望输出,计算每个输出单元的实际输出与期望输出的误差以及隐含层误差。计算实际输出与期望输出的误差公式为:

式中,Ek为期望输出,Ok为实际输出, k=0,1,2,…,9。

将误差定义式展开到隐含层的公式为:

网络输入误差是各层权值wjk、vij ,即 :

(j=0,1,2,…,m;k=1,2,…,l)

( i=0,1,2,…,n;j=1,2,…,m)

式中的负号表示梯度下降,常数η∈(0,1)代表学习速率。

由于BP神经网络算法的收敛速度慢,优化的目标函数非常复杂,所以需要优化学习速率。三层感知器的BP学习算法权值调整计算公式为:

将每个加速度传感器中每个轴的数据特征向量作为神经网络的输入,所以神经的输入层神经元个数等于特征向量的维数,即9×18=162个输入神经元。输出层神经元个数的确定因为要识别10个数字,因此输出选择为10×1的矩阵,即输出节点数为l0。当0~9输入神经网络后在输出神经元对应的位置上为1,其他的位置为0。输入数字0,第1个输出神经元为1,其他为0;输入数字1,第2个输出神经元为1,其他为0;依此类推。

隐含层数越多,神经网络学习速度就越慢。根据Kosmogorov定理,在合理的结构和恰当的权值条件下,3层BP网络可以逼近任意的连续函数。因此,我们选取结构相对简单的3层BP网络[10]。

一般情况下,神经元个数与函数收敛程度有关。根据经验公式s=sqrt(n×m),其中,m为输入神经元个数,n为输出神经元个数,得出隐含层神经元个数为40个。

采用定义学习速率和采用带动量因子算法两种改进方法。识别内容为数字0~9,利用手势特征,提取每个加速度传感器中每个轴的数据作为BP 的数据输入参数,为BP进行初始化及参数训练,可以提高数据的识别率。在学习收敛的情况下,增大η,以缩短学习时间;当η偏大致使不能收敛时,要及时减小η,直到收敛为止[7]。将上一次权值调整量的一部分迭加到按本次误差计算所得的权值调整量上,作为本次的实际权值调整量,即:

4 实验结果分析

通过Matlab 计算所得出得神经网络学习误差曲线和数字识别结果如图1所示。

图1 神经网络学习误差曲线

本文将0~9共10类数据中的每类取20个做测试样本,共200个测试样本对系统进行性能测试。测试结果如表1所列。由表1中的数据可知,数字识别的正确率为98.5%,正确率较高,拒识率为6.5%,也比较高。总体数字识别有效率为94.5%。Kadous用Power Gloves作为手语输入设备,这样的识别率仅为80%[8-9]。

表1 测试结果列表

手势 样本

个数 识别

个数 错误

识别 正确率 拒绝

识别个数 拒绝率 有效率

手势0 20 18 0 100% 2 10% 90%

手势1 20 19 0 100% 1 5% 95%

手势2 20 17 0 100% 3 15% 85%

手势3 20 18 0 100% 2 10% 90%

手势4 20 18 0 100% 2 10% 90%

手势5 20 20 0 100% 0 0 100%

手势6 20 18 1 95% 1 5% 95%

手势7 20 19 1 95% 0 0 100%

手势8 20 18 1 95% 1 5% 95%

手势9 20 19 0 100% 1 5% 95%

总计 200 184 3 98.5% 13 6.5% 94.5%

5 结 语

实际上,数字识别的正确率和拒识率与数字识别的判断值有关,本文的判断值设置为0.7。判断值设置得高,数字识别的正确率就高,同时数字的拒识率也相应地就高,反之亦然。判断值的选择需要根据实际情况来定。

参 考 文 献

[1]孔俊其. 基于三维加速度传感器的手势识别及交互模型研究[D]. 苏州: 苏州大学, 2009.

[2] HOFMANN F G, HEYER P, HOMMEL G. Velocity profile-based recognition of dynamic gestures with discrete hidden Markov models [C]// Gesture and Sign Language in Human-Computer Interaction——International Gesture Workshop Bielefeld,Germany, September 17-19, 1997 Proceedings. [s. n.]: Springer Berlin Heidelberg, 1998: 81-95.

[3] STURMAN D J, ZELTZER D. A survey of glove based input [J]. IEEE Computer Graphics and Applications, 1994, 14(1): 30-39.

[4]焦圣品,徐大海,白英彩.手势识别的神经网络方法[J].微型电脑应用,1999(5): 27-29.

[5]JOSEPH J, LAVIOLA J. A Survey of hand posture and gesture recognition techniques and technology [D]. Providence: Brown University NSF Science and Technology Center for Computer Graphics and Scientific Visualization, 1999.

[6]傅荟璇,赵红.MATLAB 神经网络应用设计[M]. 北京:机械工业出版社,2010.

[7]韩力群.人工神经网络教程[M]. 北京:北京邮电大学出版社,2006.

[8]LIANG R H, OUHYOUNG M. A real-time continuous alphabetic sign language to speech conversion VR system[J]. Computer Graphics Forum, 1995, 14(3): 67-76.

[9] LIANG R H, OUHYOUNG M. A sign language recognition system using hidden MARKOV model and context sensitive search[C]. M Pr oc. of the ACM Symposium on Virtual Reality Software and Technology, Hong Kong: 1996, 59- 66.

[10] 沈花玉,王兆霞,高成耀,等.BP神经网络隐含层单元数的确定[J]. 天津理工大学学报,2008,24(5):13-15.

MATLAB基于BP神经网络的手势识别相关推荐

  1. MATLAB基于BP神经网络的光伏发电太阳辐照度预测(源码链接在文末)

    光伏发电功率主要受太阳辐照度影响,所以准确预测太阳辐照度对光伏功率预测十分重要.程序采用小波分解先对辐照度数据进行分解,然后再用bp神经网络对分解的辐照度数据分别预测,再组合作为最后的预测结果. 人工 ...

  2. 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf

    基于BP神经网络的PID控制器及其MATLAB仿真.pdf 2009 NO.10 中国新技术新产品 China New Technologies and Products 高新技术 基于BP 神经网络 ...

  3. 基于bp神经网络的字符识别matlab,基于bp神经网络的数字识别的Matlab实现

    <基于bp神经网络的数字识别的Matlab实现>由会员分享,可在线阅读,更多相关<基于bp神经网络的数字识别的Matlab实现(18页珍藏版)>请在人人文库网上搜索. 1.基于 ...

  4. MATLAB实战系列(三十五)-MATLAB基于BP神经网络的光伏发电太阳辐照度预测

    前言 光伏发电功率主要受太阳辐照度影响,所以准确预测太阳辐照度对光伏功率预测十分重要.程序采用小波分解先对辐照度数据进行分解,然后再用bp神经网络对分解的辐照度数据分别预测,再组合作为最后的预测结果. ...

  5. MATLAB基于卷积神经网络的手势识别

    目录 1. 数据集介绍 2. 训练.保存网络 3. 手势识别 4. 识别结果 5. 总结 1. 数据集介绍 本实验所用数据集为从Kaggle平台下载的手语数据集(sign_mnist)中选取的部分数据 ...

  6. 《MATLAB 神经网络43个案例分析》:第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选

    <MATLAB 神经网络43个案例分析>:第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 < ...

  7. MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试

    文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...

  8. 使用MATLAB实现基于BP神经网络训练的手写字母识别程序

    前言 大三的时候利用MATLAB搭建了一个基于BP神经网络框架的手写字母识别程序,其中使用了EMNIST数据集进行训练和测试,可实时对手写输入样本进行识别,并返回两个最可能的结果,过程中可继续添加样本 ...

  9. 【智能控制实验】基于MATLAB的BP神经网络设计

    实验五:基于MATLAB的BP神经网络设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理和代码设计方法,应用MATLAB编写BP神经网络训练方法:应用神经网络工具箱设计BP神经网络实现对输入输 ...

最新文章

  1. Documentum常见问题10-修改特定Type的显示图标
  2. 序列标注问题中将分类标签引入RNN网络结构的尝试
  3. java案例源代码_求java案例源代码 越多越好!
  4. 日出时的画面_如何拍摄日出日落,老摄影家近30年创作经验分享
  5. SQL Server2000导出数据时包含主键、字段默认值、描述等信息
  6. 4.docker 添加国内镜像
  7. mysql 全局排序 取第n条_MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL...
  8. 新visio2019专业版最新功能和激活密钥!
  9. MATLAB生成正弦码表
  10. 自定义B站视频播放速度
  11. PC版微信,公众号文章图片无法加载,解决方法
  12. uniApp uview图片懒加载
  13. 树莓派+STM32人脸识别门禁系统(中)----- 树莓派部分
  14. three.js 相对坐标的设置
  15. python期末作业——BMR计算器
  16. Open Session in View
  17. win10系统微软自带的输入法不显示选字框怎么办
  18. 如何在Photoshop中创建自己的自定义网格系统
  19. 「经验」漫画人体基本结构画法
  20. 计算机控制分离性原理是什么,什么是分离性原理   该原理有何指导意义

热门文章

  1. 使用conda安装tensorflow-gpu | ubuntu系统
  2. 使用pip安装tensorflow-gpu | ubuntu系统
  3. 【20210728】【信号处理】Alpha-Beta滤波——一种状态估计的方法
  4. 200人融资3亿元,重新定义移动安全市场,这家公司是谁?
  5. 使用Spacedesk实现局域网内任意设备作为电脑拓展屏
  6. Linux C 链表(新建节点、添加节点)
  7. idoc java_IDOC - 学习笔记NO.1 - 博客园
  8. MATLAB的iamgeLabeler制作语义分割标签及路径修改
  9. oracle 慕课课程_ORACLE数据库技术,中国大学MOOC(慕课)答案公众号搜题
  10. 【译】别让你的团队掉入Code Review的坑