APP下载

基于深度学习的手势识别系统的设计与实现

2022-08-26李澥蔡振雄詹文杰邱梓逸

现代信息科技 2022年11期
关键词:开发板手势鼠标

李澥,蔡振雄,詹文杰,邱梓逸

(广州软件学院(广州),广东 广州 510980)

0 引 言

随着计算机技术的快速发展,人机交互方式也越来越先进。传统的交互主要通过两个途径实现:用户界面和外接硬件设备。用户界面是常用的智能设备,直接在触摸屏上进行交互,外接硬件设备主要是键盘、鼠标、电容笔等。传统的交互方式本着“用户适应计算机的交互模式”进行交互,当前,用户对交互方式的舒适性提出了更高的要求。为了使人机交互更加自然和谐,交互领域的诸多学者纷纷加入对语音识别、手势识别等新兴技术的研究大潮。

目前,投影仪的使用越来越普及,例如商业、教育、办公环境下的投影演示以及家庭日常生活中的教育与娱乐之用。然而,当前有很多投影仪都是作为一个输出设备,在使用过程中往往受交互方式的限制,使用户得不到良好的使用体验。鉴于此,本文基于现有计算机技术展开研究。

1 系统总体设计

采用双目同步摄像头获取手势图像数据,借助OpenCV机器视觉库进行图像处理,使用tensorflow深度神经网络进行手势模型训练,识别用户的手势姿态。将已训练好的模型移植至ARM-a9开发板,系统进行实时的手势姿态识别,识别手势图片后会将识别内容封装为手势数据并传递到被控制平台(手机或电脑)上,被控制平台的特定应用程序会对接收到的数据命令进行分析,通过模拟鼠标方法或快捷键方法执行相应的操作。本系统还有附加功能,通过深度学习和语音识别模块,训练不同场合下的语音识别和智能对话模型,使系统具有深度语音识别非特定人声的功能,来让设备投影到平面的界面且用户能通过语音识别进行智能对话。系统流程图如图1所示。

图1 系统流程图

2 系统硬件层的实现

处理器是硬件层最重要的核心部件,从数据的采集处理到执行器控制等功能的开发都是围绕着ARM-A9开发板展开的,选用ARM-A9处理器模块的出发点源于对处理速度和功耗这两项指标的考虑。实物图如图2所示。

图2 ARM-A9实物图

硬件层主要包括摄像头与ARM-A9开发板模块,采用摄像头模块进行手势图片的获取,通过将USB线与ARM-A9开发板的连接实现数据传输。在ARM-A9开发板中安装操作系统,结合python语言、OpenCV库和tensorflow深度学习框架,识别出摄像头模块采集到的手势图片的类型。

通过六轴传感器(三维加速度和三维陀螺仪)和卡尔曼滤波算法进行状态估算(姿态预估)。用户手指上佩戴一个小设备,设备集成了六轴传感器、特定光发射器和核心控制板,特定光发射器发射的光投影到平面的界面上,通过摄像头拍下的界面信息,经过OpenCV算法、定位算法和比例转换等处理后,可以得知用户究竟是点击了哪里。

研发中,我们会为智能装置(电脑、手机或智能电视等)制作应用程序(APP软件),应用软件通过蓝牙与ARM a9开发板通信,通过Wi-Fi通信和投影仪进行界面数据传输。尽可能使所开发的应用软件与电脑端各种不同的系统兼容。在手机端开发安卓APP。

获取手势识别的信息和语音交互的信息,用ARM a9开发板通过蓝牙通信和智能装置(电脑、手机或智能电视等)的应用软件进行指令传输。传输的信息通过研发的协议来规范,应用软件在收到指令后会执行相应的工作。

3 系统软件层的实现

3.1 软件架构

系统软件是一款基于Java开发的软件,通过模拟鼠标和键盘进行电脑系统的应用控制。采用蓝牙指令代替普通的鼠标和键盘输入,实现对电脑控制的上层封装。设备与电脑通过蓝牙无线协议建立通信后,软件端会捕获到设备上报的指令信息包,电脑端软件将会去除指令包的头尾以提取到真实的指令字符。得到最终的指令后,系统会先后经过常用指令判断、模式切换判断、模式指令操作,实现对电脑系统的基本控制。指令操作流程如图3所示。

图3 指令操作流程

3.2 自定义协议

若要实现稳定的数据通信,不单单需要连接上的不断开,更需要可靠的数据包收发,为此,建立一套易阅读、易扩展、易解析的指令集就显得尤为重要。电脑软件端基于手势指令实现三类指令的读取,分别为常用指令、模式切换指令、模式指令。

其中,常用指令为全局通用指令,软件提取指令后首先需要进行匹配判断的指令为常用指令。模式切换指令与模式指令为一体,其中模式指令根据不同的应用场景可以有不同的指令集,如鼠标控制模式和PPT控制模式等,要将每个桌面应用的操作方式不同考虑在内。模式切换则是进行特定模式的切换工作,实现对应的指令控制对应的桌面程序,以实现更加高效的控制效果。

协议说明:指令控制命令字母均为小写,此为鼠标控制模式和PPT控制模式指令举例。鼠标PPT控制指令分别如表1、表2所示。

表1 鼠标控制模式表

表2 PPT控制模式表

3.3 PC终端应用程序

PC终端应用程序通过无线蓝牙协议与ARM-A9开发板连接,并与之进行数据通信,实现手势指令的获取。指令获取后将通过模拟鼠标和键盘进行电脑应用控制。程序使用Java语言开发,可跨平台运行使用,实现一处开发多处使用的效果。系统执行流程如图4所示。

图4 系统执行流程图

3.4 基于卷积神经网络的手势分割法

基于深度学习的卷积神经网络是当前最高效的图像处理方法,由卷积层、池化层和全连接层构成。卷积层主要负责提取图像的局部特征,池化层的作用是大幅降低参数量级(降维),全连接层输出想要的结果。

采用tensorflow开源机器学习框架对特定的手势进行模型训练。深度学习架构如图5所示,首先收集用户特定手势素材,用于训练模型和提高识别的精准度,模型训练好后,即可利用数据集对用户的手势进行精准识别,实现对用户手势的理解。训练参数如表3所示。

图5 深度学习架构图

表3 训练参数表

对手势图片进行标定处理后转换为Pascal VOC数据集,通过tensorflow深度学习框架将Pascal VOC数据集转换成TFRecord文件,对项目设定的手势进行模型训练,获取所需的训练数据文件,数据效果显示如图6所示。

图6 tensorflow训练数据结果图

3.5 手势特征提取

先对采集到的图像数据进行过滤去噪,降低干扰形状对肤色提取的影响,接着对手部进行肤色分割。此方式可有效避免背景过于复杂、目标物和背景灰度差别不大等影响,有利于提高手势分割的精准度。特征提取效果如图7所示。

图7 特征提取效果图

进行特征提取时,通过手势指尖的数量和位置,将指尖和掌心连线,采用距离公式计算各指尖到掌心的距离,再运用反余弦公式计算各指尖与掌心连线间的夹角,将距离和夹角作为选择的特征。此方式不仅可以获得较高的识别正确率,同时也缩短了识别时间。

傅立叶变换可以将函数分解为频率不同的正弦函数和余弦函数的组合,而图像处理中的傅立叶变换一般专指二维离散傅立叶变换,它可以将图像从空间域变换到频域,拥有很多优良的特质,如线性、对称、平移、卷积等。通过二维空间坐标上的灰度值来表征图像的形状、纹理、尺寸等特征,从二维图像的角度来看,频率高低表征的是原图灰度变化的剧烈程度,也就是空间域中的梯度。背景区域等灰度变化缓慢的区域,梯度较低,处于频域中的低频部分,边缘、噪声等灰度变化快的区域,梯度较高,处于频域中的高频部分。通常,在一般的图片中低频的内容会占一大部分。

二维DFT的极坐标表示:

幅度或频率谱为:

其中,(,)和(,)分别是(,)的实部和虚部。

相角或相位谱为:

功率谱为:

(,)的原点变换:

4 手势识别系统开发环境介绍

该手势识别系统软件的开发环境为ARM-a9开发板,采用Linux系统,图像识别工具为第三方开源计算机视觉库OpenCV,通过tensorflow深度学习分析手势类型,系统环境架构如图8所示。

图8 系统环境图

PyCharm是由JetBrains打造的一款Python IDE,VS2010的重构插件Resharper就是出自JetBrains之手。这些功能在先进代码分析程序的支持下,使PyCharm成为Python专业开发人员和初学人员使用的有力工具。

PyCharm 1.5于2011年6月6日发布,该版本做出了大量的改进,使Python和Django开发变成一种享受。

PyCharm 3.0版本主要改进包括:

(1)全功能的嵌入式本地终端窗口;

(2)支持SQLAlchemy;

(3)支持PyramidWeb框架;

(4)支持Web2Py框架;

(5)对PyQt和PyGTK支持的改进。

5 结 论

手势识别通过摄像头对用户的手势图片进行采集,使用OpenCV机器视觉对采集到的手势图片进行处理。市场上使用轮廓识别的方式存在着环境固定和特定手势缺点,本项目提出通过tensorflow深度学习框架的方式来训练手势图片,以此提高手势的识别率,具有一定的研究价值。

猜你喜欢

开发板手势鼠标
Progress in Neural NLP: Modeling, Learning, and Reasoning
挑战!神秘手势
V字手势的由来
胜利的手势
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
45岁的鼠标
超能力鼠标