一种便携式的基于手部动作的虚拟输入字符系统及识别方法技术方案

技术编号:32466628 阅读:39 留言:0更新日期:2022-03-02 09:25
一种便携式的基于手部动作的虚拟输入字符系统及识别方法。获取臂环采集的肌电信号,识别肌电信号对应的手部捏合动作,确定捏合动作对应的按键字符信息,反馈拼写结果。捏合动作中,相接触的两者为同一人体的部位,不需要控制手部向外界固定的按键位置移动,由于人体对自身部位的感知性更强,一方面,强感知性使得操作准确率更高,另一方面,强感知性使用户即便在不注视手部的情况下,依然可以完成特定的捏合动作,不需要视线的来回切换,因而能够提高效率,提升用户体验。利用肌电信号来识别手部动作,由于肌电信号与手部动作是人体自身关联反应,受外界干扰小,能够摆脱视觉方法识别手部动作对光线的依赖,因而在弱光、光线干扰环境中依然适用。扰环境中依然适用。扰环境中依然适用。

【技术实现步骤摘要】
一种便携式的基于手部动作的虚拟输入字符系统及识别方法


[0001]本专利技术属于人工智能领域,涉及一种便携式的基于手部动作的虚拟输入字符系统及识别方法。

技术介绍

[0002]当前当前在2D场景下我们通常使用鼠标键盘以及触屏操作,但是随着智能设备的逐渐小型化以及智能眼镜的发展,用户更加需要一种基于手部动作的虚拟输入字符系统,即不需要键盘既可以配合智能眼镜完成字符的输入。

技术实现思路

[0003]为克服之前的各个已有手势识别系统识别准确率低、设备价格昂贵、缺乏完整软件系统支持的缺点,本系统采用了一种性价比高的,技术成熟的手势识别可穿戴设备,可以并行采集精度良好的加速度、三轴陀螺仪、八通道肌电信号(EMG)数据,能够有效抓取人类手臂在进行不同手势动作时,手臂以及手指运动、姿态数据,通过Bluetooth连接传回后端用于手势识别。
[0004]为解决上述技术问题,实现上述技术效果,本专利技术通过以下技术方案实现:对于识别的算法进行了独立设计,有单手、双手、离线、在线等识别模式。我们根据数据的特性,先对数据进行了特征工程处理,将数据分成一个个window进行特征提取。对于采集数据特征工程,根据采集数据特性,分别进行(小波变换,阈值滤波)降噪处理和特征提取(均方根,平均方差,曲线拟合度)。识别算法采用LTSM RNN(长期短时记忆循环神经网络)和SVM(支持向量机),整个算法的核心任务是进行多元分类。对于三种数据输入,将加速度信号、陀螺仪信号与肌电信号交由神经网络处理,输出一个特征向量,进行分类,最终得到结果。
[0005]我们也为整个识别过程编写构建了完整的软件系统:手环与请求终端的连接匹配,采集请求的发起,前后端通讯基于raw socket + HTTP的双向通讯,支持多个终端多个手环同时进行手势识别,对请求响应、数据采集、处理、识别、数据连接等工作线程间的通信和管理、多线程任务的分发,识别结果传回后终端可根据正误进行反馈,对所有识别的过程的数据以及反馈可持久化管理,搭建了云端服务器,能够及时获取产品使用的反馈数据,统一每个产品终端推送最新的算法模型。
[0006]对于系统的前端,采用了Android系统作为平台,编程语言为Java。应用最低可支持的Android API 版本号为15,(java uml图)该应用具有较高的兼容性,前端采用了Google Android官方推荐的Android.support.v7前端组件库进行编写,使用了Fragment、RecyclerView等组件,保证应用前端界面的高可用性。对于实现前后端通信:客户端采用了原生的Java.net包中Socket,HTTPRequest和java.io包中的StringBuffer、ByteBuffer、Scanner等类,并根据需求对原生包中的各个进行了组织、接口制定和封装工作。为了避免IO阻塞,保持前端运行的流畅,使用了Android的HandlerThread类,在工作线程来进行所有
的IO工作,通过消息队列的方式与主线程进行通讯。
[0007]前后端在通讯的连接方式上,(图)匹配请求、数据同步、识别结果的正误反馈等具有突发性、短暂性的任务采用http方式进行,而匹配成功后将手势识别结果实时传回、在识别过程中的控制等需要长时间监听的工作采用了raw socket方式;当在手环与终端匹配后,会进行一个socket的建立,在两端各启动一个循环监听线程,时刻扫描是否有数据传来;在前后端之间制定了数据包格式,传输数据包为utf-8编码的JSON格式字符串,数据包分为控制字段和数据字段。
[0008]系统后端采用python语言,整个后端在开源的Django web server框架下开发。整个后端的部署架构为win10+Nginx+Django+Sqlite。(图)与后端的交互启动以Http request的方式,在参数的传递上通过post的请求方式,将数据以键值对的方式上传,访问最终由Django响应,并调用具体的业务逻辑代码,执行响应的工作。后端的逻辑有几个python包来完成主要的业务;python的包是天然的单例模式,所有手环匹配请求启动时统一由单例代码响应,实例、初始化进行网络连接、手势识别的线程类,分配、释放网络连接、手环数据源资源。
[0009]手环的管理由一个python包进行管理,他从底层API中获取手环的数据,用面对对象方式对手环进行简单装饰,并根据手环的Hash Value为每个手环对象分配手环id,从而便于后端与其他模块进行交互,包内有多个映射关系的python数据结构dict来管理手环对象,手环id,以及每个识别实例线程的对应关系。整个系统的手环管理工作都由这个包完成。
[0010]对于每一个手势识别实例由三个线程构成:请求响应线程、socket监听线程、手环数据采集识别线程,三个线程由消息队列和thread.Event类来进行线程间通讯。(图)每个识别线程相互独立,可并行执行,需要共享的数据内容均进行多线程加锁控制。下面介绍实例中三个线程的具体情况请求响应线程:这个线程是整个手势识别工作线程组中的主线程,这个线程负责socket连接数据的发送以及响应其他线程加入消息队列中消息(响应请求),它启动的同时启动一个socket连接的监听线程,用于监听从客户端发来的消息。同时自己维护一个消息队列,以获取其他线程向放入响应请求。线程内部有一个循环,在没有线程没有响应工作时再该循环中不断扫描消息队列,检查是否有新的消息;若有,则从中获得响应请求的消息,根据消息具体内容的执行相关的响应操作,执行完毕后返回主循环继续扫描消息队列。这个工作线程在响应时执行工作有socket数据的发送、实时手势识别结果的追加、通过Event来控制其他两个线程的工作。
[0011]Socket监听线程:这个线程的工作相对简单,他的工作就是不断扫描socket数据接受端,接受来自终端的数据包,解析数据包,将其转化为后端的Message对象返回给工作线程进行响应,除此之外,它还需要管理socket接受数据时可能出现的各种异常情况,如超时、空数据等错误,避免传入错误的消息其影响后端的运行。
[0012]手环数据采集识别线程:这个线程是在主线程启动时一并启动,启动后处在等待循环中,当主线程接收到手势识别请求时,其开始工作线程会被置位。在该线程初始化的过程中,会将识别算法所需的训练好的模型和标量数据读入,该模型可由服务器从学习数据中实时训练得到。开始工作后该线程的工作分为两个环节,一是手环数据的采集,程序内部
的参数是0.1秒采集一次传感器的数据并缓存,当且仅当三种数据长度达到识别需要的数据长度时开始执行算法代码,进行识别工作。识别结束后,该线程将识别结果发回主线程持久化处理以及返回给终端进行显示。
[0013]特征工程我们根据三种采集数据的物理特性,使用了不同的特征工程;对于加速度和陀螺仪等经典牛顿力学信号采用ARC弧度拟合系数,ZC过零点数,RMS均方根进行数据提取,肌电信号这样的生物电信号采用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种便携式的基于手部动作的虚拟输入字符系统及识别方法,其特征在于:启动客户端及服务端以及若干个手环连接至服务器,此时可以开始进行手环匹配;客户端手环管理模块根据从底层组件获取已连接的手环的信息,构造内部的手环对象列表;客户端准备进行手环匹配时,首先通过HTTP GET请求,从后端获取手环列表;后端获取请求后调用手环管理包中的代码获取手环的列表,将其转换为JSON格式的字符串以HTTP response的方式返回;前端根据单手双手模式的设置,以交互式方式引导用户选择要用于手势识别的手环;用户执行确认操作后开始进行匹配,前端通过HTTP POST请求的方式上传决定进行匹配的手环id;后端接收到请求后通过手环id,从手环管理模块获取手环对象,并将其标记为已占用;同时在响应请求的代码获取空闲的端口号作为接下来socket连接的端口号,启动工作线程,并在线程中开启socket连接,等待客户端的连接,并将已开启的socket监听端口号通过response的方式返回客户端,socket建立后,服务端http响应结束;客户端根据返回的端口号向服务端socket请求连接;服务端收到连接请求后,建立监听线程和识别线程,等待客户端发起手势识别请求。2.根据权利要求1所述的一种便携式的基于手部动作的虚拟输入字符系统及识别方法,其特征在于:客户端通过socket连接的形式,向服务端发送带有手势识别请求信息的数据包。3.服务端监听线程收到数据包后进行解析,转换为消息类对象,加入主线程的消息队列中,主...

【专利技术属性】
技术研发人员:曾振杨佳雨刘彦君孙世卓魏冷凝
申请(专利权)人:苏州联域智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1