时间:2024-05-04
马力冯瑾
(西安邮电大学 西安 710061)
随着计算机科学的迅速发展,人机交互技术已成为计算机技术领域中的重要研究课题[1]。手势识别作为人机交互中重要的技术之一,有其现实的研究意义。Leap Motion是一款基于USB接口的体感控制器设备,它可检测其视野区域内的手、手指以及类似于手指的其他物体[2],并给出这些物体的实时位置坐标和一些运动信息。Leap Motion控制器的应用将会使人机交互达到一个新的高度[3],本文中利用Leap Motion控制器开发了一个Gestures Visualizer系统,用于提供动态手势数据,且基于HMM算法对动态手势进行识别[4]研究,并对实验结果进行分析。
隐马尔科夫模型(HMM)是一种有着马尔科夫属性的系统[5],其中的马尔科夫属性指的是它的下一个状态依赖于前一个状态,并且每个状态之间的转移是有概率的。一个典型的HMM的模型结构可以表示为λ=( )N,M,A,B,π,各参数定义如下:
1)N代表模型所隐状态的数量,用qt表示t时刻的状态,Q={q1,q2,…,qt,…,qT}表示隐状态序列,而 qt取{s1,s2,…,sN}。
2)M 代表模型观察值的数量,用ot表示t时刻的观察值,O={o1,o2,…,ot,…,oT}表示观察序列,而 ot取{v1,v2,…,vM}。
3)A={aij}表示 N×N状态转移矩阵,用aij=P(qt=sj|qt-1=si)表示隐状态 si转向 sj的概率。
4)B={bj(k)}表 示 N×M 观 察 矩 阵 ,用bj(k)=P(ot=vk|qt=sj)表示t时刻隐状态为sj时观察值vk的概率。
5) π={π1,π2,…,πN} 表 示 初 始 状 态 ,用πi=P(q1=si)表示初始状态q1为si的概率。
1)若给定模型λ和观察状态序列O,求解每个模型的输出概率P(O |λ),分别比较每个模型的P(O |λ),P(O |λ)最大的模型就是最终的识别结果[6]。给定HMM的模型 λ和隐状态序列Q={q1,q2,…,qT},则 P(Q |λ)定义如下:
采用前向-后向(Forward-Backward)算法求解P(O |λ)的计算过程如下:
(1)初始化 α1(i)=πibi(o1) , i=1 , 2 ,…,N ;
(2)αt+1(j)=[αt(i) aij]bj(ot+1),t=1,2,…, T-1 ,j=1,2,…,N ;
2)定义后向变量,表示给定 λ,t时刻所对应的状态为si,则t+1到T时刻所产生观察序列ot+1ot+2...oT的概率。后向算法的计算过程如下:
(1)初始化 βT(i)=1 , i=1 , 2 ,…, N ;
(2)βt( i)=aijbj(ot+1)βt+1(j) , t=T-1 , …,1 ,i=1 , 2 , … , N
学习问题即对HMM模型进行不断地训练,为每个模型找出最佳的参数λ,该参数λ可使 p(O |λ)取得最大值。采用Baum-Welch算法求解最优模型[7]参数λ。在给定λ和观察序列O时,定义后验概 率 函 数 γt(i)=P(qt=si|O,λ) , 且 符 合γt(i)=1;在给定模型 λ和观察序列O时,t时刻为si状态,t+1时刻为sj状态,用ξ(i , j)表示概率函数,则 γt(i)和 ξ(i,j)可分别表示如下:
则相关参数估计公式如下:
2.2.1 求解最佳模型参数λ
1)初始化 λ;
2)由现有的λ和观察序列O,根据以上参数估计公式对相关参数进行估计,得出新的模型参数λˉ=(πˉ ,Aˉ,Bˉ);
3)根据Forward-Backward算法计算 P(O |λ)和P(O |,若符合 |logP(O-logP(O |λ)|< ε,则说明P(O |λˉ)收敛,其 λˉ即为最优模型参数。
本文结合Leap Motion控制器和HMM对动态手势进行识别[8]。该手势识别过程实现了动态手势数据的录制,以及对录制好的手势序列进行学习,然后进行分类识别[9]。动态手势识别的处理流程如图1所示。
图1 动态手势识别流程图
手势录制界面Gestures Visualizer由以下几部分组成(见图2)。
1)按空格键开启或是关闭录制;
2)弹出录制界面后,可以选择保存文件的路径;
3)录制的过程中,手势也将相应的可视化在界面里;
4)选择按钮进入可视化模式。
实验中利用Gestures Visualizer录制动态手势数据,并将其保存为。lmr文件格式,为后续的识别过程提供数据。本文选用了6个动态手势。对于每一种手势,我们记录了120个样本(每个实验者记录30个样本),这些数据记录了手势在不同时间和不同位置上的坐标信息。实验中所选的动态手势有“Count the number 1、2、3”、“open the door”、“circle”、“scissors”、“gun”和“moving the object”。
图2 手势数据录制界面Gestures Visualizer
1)给定观测序列即输入手势轨迹的特征向量,不断更新估算出新的模型参数(ˉ ,ˉ,),直至|logP(Oˉ)-logP(O |λ)|< ε,则说明 P(Oλˉ)收敛 ,λˉ即为最优模型参数。模型在训练时使用Baum-Welch算法。通过训练可以得到多个HMM模型,根据已知的模型参数,输入样本的观察序列,可求出样本在对应的模型中出现的概率,这里的观察序列即为手势特征向量。手势建模[14]的处理过程如图3所示。
2)手势识别过程主要是对所建立的手势模型进行评估。通过在给定输入手势特征向量条件下,计算每个HMM的输出概率,找出输出概率值最大
实验使用上述6种手势,每种手势有120个样本,由4个人进行录制,每人每种手势录制30个,共720个样本,这些样本中的66.7%被划分为训练集,剩余的240个记录数据作为测试集,该数据集称为dynamic-6数据集。每种手势的训练集被用来单独训练相应的HMM模型[10]。每次训练过程执行10次,最后使用交叉验证的方法使模型达到一个好的识别率[11]。定义学习速率μ为0.1,HMM模型的状态数设置为10。
利用Leap Motion控制器采集的数据信息包括手指在三维空间里的坐标信息以及速度等信息[12],在使用采集到的手势进行手势建模前,需要对采集到的手势数据信息进行预处理,然后使用k-means算法[13]将给定的观察序列分成不同的簇。
的模型,即已知观察序列的最优匹配模型。通常系统中每一种手势类别都对应着一个HMM,需利用已知的观察序列对每个模型进行评估。其所求解的概率值最大的HMM就是和已知观察序列的最优匹配模型。该过程采用Forward-Backward算法进行求解的,动态手势的识别过程如图4所示。
图3 手势建模过程
图4 手势识别过程
为了评估所提出的方法对动态手势的识别质量,可通过以下实验选取HMM的最优参数值。
实验首先是要找到一个用于描述手势的特征集,它包含有动态手势相关的数据信息。实验中的数据集选用上述所介绍的dynamic-6数据集进行评估。
1)第一个特征集(feature set 1)包含的信息主要是关于手的运动速度的信息,由以下几个特征组成:
(1)在第i个位置时手指的数量;
(2)在第(i-10)个位置时手指的数量;
(3)在某一个位置时X轴上的位移;
(4)在某一个位置时Y轴上的位移;
(5)在某一个位置时Z轴上的位移。
feature set 1中所获取的特征信息是参照Leap Motion控制器的坐标系统,但是执行手势时相对于Leap Motion控制器的角度不同,会使得特征集信息发生变化,甚至会产生错误的结果,因此,将Leap Motion控制器坐标系统换成本地坐标系统。并且在第二个特征集(feature set 2)中增加了计算手的位移大小和运动的方向信息。feature set 2共增加了以下三个特征信息:
(1)手的位移值;
(2)归一化位移矢量和手掌法向量在第(i-10)位置时的点积;
(3)归一化位移矢量和手掌方向向量第(i-10)位置时的点积。
2)观察数据库中的手势样本可以看出,有的样本仅仅是手指的运动产生了位移,而手并未运动,而在feature set 2中没有考虑这些信息。因此,在第三个特征集(feature set 3)中我们增加了计算手指的位移大小,考虑到减小特征集的大小,这里只计算位移的幅度大小,同时,鉴于Leap Motion控制器对手指编号的不稳定性,也需要对手指进行排序。故feature set 3中增加的特征信息如下:
(1)4个最大的手指的位移幅度值。
3)通过feature set 3的实验结果发现,增加手指的位移信息会降低识别率,因此,我们决定剔除手指的位移信息这一特征。在第四个特征集(feature set 4)中我们增加了静态手势识别的特征信息[15],具体如下:
(1)在第i个位置时,所有组合中手指指尖之间的4个最大的欧氏距离;
(2)在第i个位置时,所有组合中手指向量之间的4个最大的绝对角度;
(3)在第i个位置时,手指指尖和手掌之间的4个最大的欧氏距离;
(4)在第i个位置时,手指向量和手掌法向量之间的4个最大的绝对角度。
由表1的实验结果可知,增加静态信息能够提高识别率,因此,选择保留静态信息特征。第五个特征集(feature set 5)就是由feature set 3的(1)和(2)组成,但是得到的结果相比之前的实验结果没有取得显著的提高。实验所得到的结果如表1所示。
表1 所有特征集上的实验结果
由表1可以看出,取得最好效果的是feature set 4,这说明在动态手势特征中增加静态信息特征利于对动态手势进行分类,因此实验选用feature set 4。
通过实验测试观察序列的数目对总识别率的影响,并确定观察序列的数目。实验中使用feature set 4,学习速率设置为μ=0.05。
表2 不同观察序列数目所得到的实验结果
实验结果如表2所示,当观察序列数目为k=6时,识别率相比于之前取得了较好的结果。使用交叉验证时识别率为79.6%,而使用整个数据集时的识别率为77.6%。
实验中,选择一个稳定的学习速率在整个训练过程可以最小化参数的数目。实验中使用feature set 4,观察序列数目为k=6,分别选取学习速率为0.01、0.05、0.1和0.2进行测试。实验结果如表3所示,学习速率的值在μ=0.05时取得最佳识别效果。
表3 不同的学习速率所得到的实验结果
上面的实验都为假定HMM的状态数为10,所以实验最后测试HMM的状态数对识别结果的影响,选取5,10,20,30这四个值分别进行实验。实验结果如表4所示,当HMM的状态数为5时,HMM模型太简单而导致识别率较低。而当状态数高于10时,识别率降低,故HMM的最佳状态数选10最为合适。
表4 不同HMM状态数所得到的实验结果
本文对动态手势识别方法问题进行了研究,通过Leap Motion控制器开发Gestures Visualizer系统录制实验数据,构建手势数据库,引入HMM对手势模型进行训练和识别,然后通过实验选取最优的特征集和参数,以提高最终的手势识别率。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!