一种基于可穿戴设备的手势输入方法与流程

文档序号:18600215发布日期:2019-09-03 22:34阅读:229来源:国知局
一种基于可穿戴设备的手势输入方法与流程

本发明涉及一种基于可穿戴设备的手势输入方法。



背景技术:

近年来,智能输入法成为了国内外研究的热点,在信息时代便捷的输入法技术必不可少。如今的智能手机、智能手表、智能电视等都支持安装智能输入法,良好的输入法必定会给用户带来高效的交互体验。输入法不仅要在用户输入正确的情况下,给出相应的输出结果,还要在用户输入错误的情况下,对用户的输入进行矫正,给出正确的输出结果。另一方面,联想输入功能也越来越受到人们的青睐,当用户输入一个单词的时候,输入法能够根据用户当前的输入预测用户下次输入的内容,并能根据用户对预测结果的选择不断调整预测的算法,使得预测的结果能够更好地符合用户的期望。综上所述,智能输入法在人们的生活中起着越来越重要的作用,研究一款适用于大众用户的智能输入法具有潜在的应用价值。

现有的智能设备上的输入法需要用户用手去点击键盘上的按键来输入字母,然后根据用户的输入给出相应的输出结果。在用户输入的过程中,文本的输入一般需要两只手来完成,一只手用来固定输入设备,另一只手在设备上进行输入操作。在某些特定场景下,用户很难腾出双手来进行输入操作,例如下雨天的时候用户需要用一只手来撑伞,取快递的时候需要用一只手来拿快递。这样,用户就不能利用双手来进行输入操作,而仅用单手就能完成输入操作的智能输入法可以满足相应的用户需求。

总的来看,在某些特定场景下,单手输入法有着良好的应用前景。



技术实现要素:

本发明要克服现有技术的上述缺点,提供了一种基于可穿戴设备的手势输入方法。

本发明通过智能手表采集用户手写不同字母时的手腕数据集,并通过光学传感器采集相应的手部数据集,提取这些数据的特性,搭建神经网络,通过训练得到手腕数据到基准数据的拟合模型以及用于识别字母的分类模型,然后建立单词查找库,在用户输入时,采集用户输入的手腕数据,先进行拟合,再进行分类,给出相应的输入字母,并对输入的字母进行顺序组合得到输入字符串,最后通过查找词库给出与用户输入字符串相匹配的单词,用户通过筛选正确单词完成相应的语句输入。

为实现以上目的,本发明所采取的技术方案是:一种基于可穿戴设备的手势输入方法,包括以下步骤:

步骤1,获取用户的手写数据集和基准数据集,包括:

用智能穿戴手表采集手腕运动数据,光学体感控制器采集手部运动数据;

步骤2,训练阶段,对步骤(1.1)中的手腕运动数据和手部运动数据进行预处理,训练神经网络并得到拟合模型和分类器,包括:

(2.1)对步骤(1.1)中用户手写不同字母时的手腕和手部运动数据,记录对应的字母作为标签c;

(2.2)对步骤(1.1)中获取的手腕和手部对应的两组运动数据,进行剪裁压缩和时间对齐,处理后的手腕运动数据作为手写数据集a;

(2.3)对步骤(1.1)中获取的手部运动数据,提取指尖、指根、手腕等部位的运动数据作为基准数据集b;分别计算掌骨和食指的长度;

(2.4)搭建神经网络,训练得到的神经网络模型作为拟合模型mfitting,mfitting用于将手写数据集拟合成基准数据集d;

(2.5)构建另一个神经网络,训练得到的神经网络模型作为分类器mclassify,mclassify可以输出当前输入可能为各个字母的概率;

(2.6)将mfitting和mclassify固化并转化为移动端使用的模型mfitting-lite和mclassify-lite;

步骤3,预测阶段,识别用户的输入并进行输入预测,包括:

(3.1)建立相应的单词查找库;

(3.2)采集用户的手写输入数据集;

(3.3)对步骤(3.2)中的手写数据集进行压缩,得到压缩后的手写数据集;

(3.4)将步骤(3.3)得到的压缩后的手写数据集作为输入,先通过数据拟合模型进行拟合,再通过单词识别分类器进行分类,得到用户输入的字母;

(3.5)根据用户的当前输入字符串即用户输入字母的顺序组合,计算与之编辑距离为1的字符串,构成一个候选字符串集合;

(3.6)利用步骤(3.5)获得的候选字符串集合,去步骤(3.1)建立的词库中查询符合条件的单词;

(3.7)若步骤(3.6)查询得到的结果不为空,返回查询结果;若查询结果为空,则进行步骤(3.8)、(3.9)和(3.10);

(3.8)对步骤(3.5)中的候选字符串集合再求一次相近字符串,即与之编辑距离为1的字符串,得到与用户输入字符串编辑距离为2的候选字符串集合;

(3.9)利用步骤(3.8)获得的与用户输入字符串编辑距离为2的候选字符串集合,去步骤(3.1)建立的词库中查询符合条件的单词;

(3.10)若步骤(3.9)查询得到的结果不为空,返回查询结果和用户输入的字符串;若查询结果为空,则只返回用户输入的字符串;

(3.11)用户向上或下或左或右方向挥手,即可选择表盘上对应的上、下、左、右方向的单词。

本发明的有益效果是:输入方式方面,采用手指在空中书写字母的方式就可以完成输入,当一个单词输入完成时,转动手腕就可以选择想要的单词,输入方式新奇,仅用单手就可以完成输入。字母识别方面,对字母分类的准确率达到80%,拟合误差小,拟合的指尖轨迹与实际的轨迹之间的累积误差为3.3cm,分类的速度快,手表上预处理与两阶段模型运行的时间总和仅为0.28s左右,模型的体积小,固化压缩后的两阶段模型分别为30kb和90kb左右。单词预测方面,通过编辑距离计算字符串之间的相似性,能够给出与用户输入字符串编辑距离小于等于2的正确单词。输入速度方面,输入一个七字母单词的平均用时为12s,输入的速度快。

附图说明

图1是本发明方法的数据采集、字母分类和单词选择的工作流程图。

图2是本发明方法的模型训练流程图。

图3是本发明方法的单词预测流程图。

具体实施方式

下面结合附图对本发明作进一步描述。本发明的一种基于可穿戴设备的手势输入方法,具体实施方式如下:

步骤1,获取手写数据集和基准数据集,包括:

用智能穿戴手表lgwatchurbane、ticwatch采集用户手写不同字母的手腕运动数据m组,光学体感控制器leapmotion同时采集用户手写不同字母的手部运动数据m组;

步骤2,训练阶段,对步骤(1.1)中的手腕运动数据和手部运动数据进行预处理,提取数据特征并建立特征数据库和分类器,包括:

(2.1)对步骤(1.1)中用户手写不同字母时的m组手腕和手部的运动数据,记录对应的字母作为标签c{c1,c2,...,cm};

(2.2)对步骤(1.1)中获取的手腕和手部对应的两组运动数据,进行剪裁和时间对齐,并使用线性插值法压缩至相同的长度l,处理后的手腕运动数据作为手写数据集a{a1,a2,...,am},ai大小为l×6×1,i∈(1,2,...,m);

(2.3)对步骤(1.1)中获取的手部运动数据,提取指尖、指根、手腕等部位的运动数据,并将其空间坐标系中心平移至掌指关节的中心,作为基准数据集b{b1,b2,...,bm},bi大小为l×3×3,i∈(1,2,...,m);分别计算掌骨的长度lmetacarpal和食指的长度lfinger;

(2.4)搭建卷积神经网络m1,各层从上到下逐层链接,分别是卷积层1~6;优化器为adam优化器;激活函数为relu函数;模型的损失函数设计为l1(θ),如公式(1)所示,

其中,y为神经网络的输出结果,k为补偿系数,用来降低传感器采集指骨长度的误差;

将步骤(2.2)中获取的a作为输入,步骤(2.3)中获取的b作为基准数据进行训练,训练得到的神经网络模型作为拟合模型mfitting;mfitting用于将手写数据集拟合成基准数据集,拟合得到的数据集为d{d1,d2,...,dm},di大小为l×3×3,i∈(1,2,...,m);

(2.5)构建卷积神经网络m2,各层从上到下逐层链接,分别是卷积层1~6,flatten层7,全连接层8,softmax分类器层9;优化器为adam优化器;激活函数为relu函数;模型的损失函数设计为l2(θ),如公式(2)所示,

y为神经网络的输出结果;步骤(2.4)中获取的d作为输入,步骤(2.1)中获取的c作为基准数据,训练得到的神经网络模型作为分类器mclassify,mclassify可以输出当前输入可能为各个字母的概率;

(2.6)读取mfitting和mclassify训练后保存的元图metagraph和检查点文件checkpointfile,指定输出节点outputnode,将所有必要的节点都保存下来得到固化模型m′fitting和m′classify;利用tensorflowliteconverter将m′fitting和m′classify转化为移动端使用的模型mfitting-lite和mclassify-lite;

步骤3,识别阶段,数据预处理并融合分类器结果,包括:

(3.1)通过字典树建立相应的单词查找库,逐一将每个单词的各个字母插入到字典树中;插入前先看前缀是否存在,如果存在,就共享该前缀字符串;否则创建对应的节点和边;字典树建立完成后,相邻节点之间的边代表一个字符,从根节点到某一节点的路径上经过的所有字符连接起来则代表该节点对应的字符串,并且每个节点对应的字符串都不相同;

(3.2)采集用户的手写输入数据集w;

(3.3)对步骤(3.2)中的手写数据集进行压缩,得到压缩后的手写数据集wcompressed;

(3.4)将步骤(3.3)得到的压缩后的手写数据集wcompressed作为输入,先通过数据拟合模型mfitting-lite行拟合,再通过单词识别分类器mclassify-lite进行分类,得到用户输入的字母λ;

(3.5)根据用户的当前输入字符串sinput即用户输入字母λ的顺序组合,计算与之编辑距离为1的字符串sedit,即edit[sinput][sedit]=1,构成一个候选字符串集合setedit;和,有四种满足条件的sedit集合:

第一种为增加一个字符就可以变成输入字符串sinput的具体通过遍历sinput并删除一个字符得到,如公式(3)所示,

其中,deletechar()是删除函数,用来删除字符串中某个位置上的字符,sinput是待删除字符串,i是sinput中需要删除的字符的位置,n是待删除字符串的长度;

第二种为删除一个字符就可以变成输入字符串sinput的具体通过遍历sinput并插入一个字符得到,如公式(4)所示,

其中,insertchar()是插入函数,用来在字符串中的某个位置上插入相应的字符,sinput是待插入字符串,j是sinput中需要插入字符的位置,c是插入的字符,取值范围为[a,z],n是插入字符串的长度;

第三种为替换一个字符就可以变成输入字符串sinput的具体通过遍历sinput并替换一个字符得到,如公式(5)所示,

其中,alterchar()是替换函数,用来在字符串中的某个位置上替换相应的字符,sinput是待替换字符串,k是sinput中需要替换的字符的位置,α用来替换sinput中位置k上的字符,取值范围为[a,z],n是待替换字符串的长度;

第四种为通过转置相邻的两个字符就可以变成sinput的具体通过遍历sinput并转置两个字符得到,如公式(6)所示,

其中,transposechars()是转置函数,用来转置字符串中相邻两个位置上的字符,sinput是待转置字符串,p、p+1是sinput中需要转置的字符的位置,n是待转置字符串的长度;

(3.6)利用步骤(3.5)获得的候选字符串集合去步骤(3.1)建立的词库中查询符合条件的单词;如果候选字符串集合中的单词不在词库中,则直接舍弃;反之则根据词库中相应单词的出现频率,返回出现次数最多的前n个单词作为预测结果,具体如公式(7)、(8)所示,

其中,indictionary()函数用来找出候选字符串集合中存在于词库当中的单词集合maxfrequence()函数用来找出中出现次数前n的单词;

(3.7)若步骤(3.6)查询得到的结果不为空,返回查询结果;若为空,则进行步骤(3.8)、(3.9)和(3.10);

(3.8)对步骤(3.5)中的候选字符串集合再求一次相近字符串,即与编辑距离为1、edit[sinput][sedit]=2的字符串,得到与用户输入字符串sinput编辑距离为2的候选字符串集合

(3.9)利用步骤(3.5)获得的与用户输入字符串编辑距离为2的候选字符串集合去步骤(3.1)建立的词库中查询符合条件的单词;如果候选字符串集合中的单词不在词库中,则直接舍弃;反之则根据词库中相应单词的出现频率,返回出现次数最多的前n个单词作为预测结果,具体如公式(9)、(10)所示,

其中,indictionary()函数用来找出候选字符串集合中存在于词库当中的单词集合maxfrequence()函数用来找出中出现次数前n的单词;

(3.10)若步骤(3.9)查询得到的结果不为空,返回查询结果和用户输入的字符串sinput;若为空,则只返回用户输入的字符串;

(3.11)用户向上或下或左或右方向挥手,即可选择表盘上对应的上、下、左、右方向的单词。

本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1