基于卷积神经网络的简单背景手势识别方法概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于卷积神经网络的简单背景手势识别方法概述

摘要在手勢识别研究方法日益成熟的今天,研究人员把主要精力放在新算法的研究以及旧方法的改进上,均取得了很好的成果。本文利用时下流行的卷积神经网络训练方法,避开大量的算法研究工作,把主要工作放在手势数据的获取以及处理上,在一定的数据范围内取得了很好的结果。在一定程度上给手势识别工作提供了新的思路。

关键词手势识别;手势数据;卷积神经网络

Abstract Today,as gesture recognition research methods become more and more mature,researchers have made great efforts to focus on the research of new algorithms and the improvement of old methods. In this paper,we use the popular Convolutional Neural Network (CNN)training method to avoid a lot of algorithm research work. The main work is on the acquisition and processing of gesture data,and it has achieved good results in a certain data range. To a certain extent,it provides a new idea for gesture recognition.

Keywords Gesture recognition;Gesture data;Convolutional neural network 前言

以输入数据来区分,手势识别可以分为静态手势识别和动态手势识别。动态手势识别是基于视频流数据,实现手势动作捕捉,本质上是把视频流分为每一帧图像数据,处理每一帧图像之间的关系,从而识别出动态手势的含义。静态手势识别也称为手型识别,其输入数据是一副静态的手势图像,计算机系统通过前期对大量手势图像的训练学习,熟知手势图像的特征,从而识别出这一副静态手势图像的含义。本文的主要工作是通过卷积神经网络方法对简单背景的手势图像进行训练,得到训练模型,利用该训练模型对新采集的手势图像数据进行识别,达到预期的识别率。

1 研究方法

手势识别的研究方法有很多种,例如利用SIFT特征提取配合SVM训练的方法[1],利用HOG特征提取的研究方法[2]等。但这些研究方法对于图像质量太多依赖,如SIFT方法太过依赖局部梯度主方向,而获取局部梯度主方向往往都会有偏差,因此图像质量不佳容易导致特征提取的错误。且SIFT是一种只利用到灰度性质的算法,忽略了色彩信息,对于彩色图像的识别无能为力。

而本文采用的卷积神经网络方法则不存在该问题,卷积神经网络对于图像的容错性较强,可以不考虑图像质量、色彩等影响,关键是训练的样本量足够大,就可以得到相对理想的结果。且卷积神经网络的算法通用性强,对于识别任何类型的静态图像,都可以用几乎相同的训练模型进行,区别仅仅在于某些参数的调

整。

2 研究过程

研究过程主要分为,图像数据收集与处理和训练模型建立两个部分,具体流程如图1所示。

下面具体介绍两个研究部分。

2.1 图像数据收集与处理

手势图像的收集有很多种方式,其中最简单的方法是在网络上下载公开的数据集,如Jochen Triesch[3],Sebastien Marcel[4]等静态手势数据集,但这些数据集基本都是在特定的场景下,收集的作者研究范围内的手势图像,对于许多特定的研究来说,并不是很合适。因此本文采用自行采集数据,并自行制作数据集的方法进行研究。

(1)数据采集

本文研究部分英文字母的手语识别,因此收集26个英文字母中的10个,分别为a、b、c、d、g、h、i、l、v、y。每一字母采用5个人,每一个人采集5张图像,共500张手势图像。部分图像如图2所示

(2)数据集制作

本文采用Python语言下的序列化模块pickle制作数据集,pickle是Python 语言下的一种持久化功能,但想要实现持久化,需要定义标签,标签格式如表1所示。

通过pickle序列化图像数据以及标签,生成持久化序列文件“data_batch_0”,该文件包含了图像数据以及标签信息,可以使用pickle工具提取图像数据以及标签进行训练。

2.2 训练模型

本模型使用六层结构,第一层为卷积层上采用32个3×3的卷积核,激活函数采用relu函数;第二层卷积层为与第一层结构一致,第三层采用最大池化层,采样间隔为2×2,第四层为64个33×3的卷积层,激活函数采用relu,第五层结构与第四层结构一致,第六层采用平局池化层,采样间隔为2×2。由于参数量比较大,所以采用两级Dense层,第一级Dense层输出为128种类型,第二级Dense 层输出为最终结果的10种手势类型。

3 算法测试

算法测试分为三个步骤,第一步为数据整理部分,把收集到的共500副图像进行编号,为了简便,编号的方式采用顺序编号方式,把500幅图像从00000编号到00499,具体的图像与编号的关系如表1所示,把所有的图像以及标签文件用pickle.dump()函数制作成序列化文件“data_batch_0”。第二步为数据训练,采用前文的训练模型,把第一步中得到的序列化文件“data_batch_0”通过pickle.load()函数,还原成图像数据data和标签数据label,为了使得结果更加具有鲁棒性,增加了测试部分,即随机选取图像数据以及标签数据的80%作为训练图像数据x_train以及训练标签数据y_train,其余的20%作为测试图像数据x_test以及测试标签数据y_test。第三步为训练特使部分,把这训练数据、标签和测试数据、标签代入前文设置的训练模型,进行训练以及测试,结果如图3所示。从图中可以看出,随着epoch次数的增长,训练数据的损失逐渐下降,精度逐渐上升;测试数据的损失基本逐渐下降,精度基本逐渐上升,最终的识别率可达95%左右。

4 结束语

本文采用了卷积神经网络训练的方法,简化了手势识别的在算法上的研究时间,把主要的精力集中在数据的采集以及处理上,并且提出了图像数据的采集以及处理的方法,并且在识别率上达到了令人满意的结果,对于手势识别的研究有着重要的参考作用。

在取得成绩的同时,也看到了问题的存在,如训练模型上可以有更进一步的优化,可以在卷积层上做不同的组合处理,找出最为合适的训练模型组合;另外本文的数据量太少,使得实用性大了折扣,后续的工作主要在于图像的采集上,在此基础上,把图像数据扩大到100倍,可以进一步提高该方法的通用性。

参考文献

[1] 余思泉,曹江涛,李平,等.基于空间金字塔特征包的手势识别算法[J]. 智能系統学报,2015,10(3):429-435.

[2] 刘淑萍,刘羽,於俊,等.结合手指检测和HOG特征的分层静态手势识别[J].中国图象图形学报,2015,20(6):781-788.

[3] Triesch J,Malsburg CVD. Robust classification of hand postures against complex backgrounds[C] International Conference on Automatic Face and Gesture Recognition. IEEE Computer Society,1996:170.

[4] Marcel S,Bernier O. Hand Posture Recognition in a Body-Face Centered Space[M]. Gesture-Based Communication in Human-Computer Interaction. Springer Berlin Heidelberg,1999:302-303.

廖干洲(1983-),男,广东省广州市人;学历:研究生,职称:讲师,现就职单位:广州大学松田学院,研究方向:计算机视觉、机器学习。

相关文档
最新文档