基于HMM的虚拟场景控制手势识别研究

2018-12-20 07:55张玉军孟晓军白漫涛
电子设计工程 2018年24期
关键词:手势阈值数量

张玉军 ,孟晓军 ,白漫涛

(1.解放军69079部队新疆乌鲁木齐830013;2.解放军69240部队新疆乌鲁木齐830011)

虚拟现实(VR)是一种可以创建和体验虚拟世界的计算机系统,它由计算机生成,通过视、听、触、嗅觉等作用于用户,为用户产生身临其境的感觉的交互式视景仿真[1]。人机交互是实现虚拟现实系统的关键技术之一,通过人机交互,人与虚拟环境可以建立起双向感知机制,增加了虚拟仿真维度,提高用户的沉浸感。人机交互应该以人为核心,在没有键盘、鼠标等传统交互设备的情况下,通过语言、姿态、手势等自然表达方式实现人与虚拟世界的自然融合。

手势交互是目前较为流行的交互方式,通过预先定义的手势模型,可实现对虚拟场景的有效控制,如菜单选择、音视频播放以及移动控制等,其核心任务是动态手势识别,主要工作有两项:分割与识别。分割的任务是获取手势数据,从一个连续的动作序列中提取有意义的手势动作序列,即确定手势的起始点和终止点,可通过固定阈值(速度、角度等)的方法确定,也可通过阈值模型自动分割[2]。识别的任务是获取手势标识,根据手势动作序列数据,判断出对应的手势标识,从而确定是何种手势。本文主要讨论识别问题,其难度在于手势尺度的多样性,即对于同一标记手势,即使是相同人,也存在形状、时长、轨迹等不同,隐马尔可夫模型(Hidden Markov Model,HMM)具有很强的时序数据建模能力,可有效解决这一难题[3]。

1 基于HMM的手势识别模型

20世纪60年代左右,L.E.Baum等人在发表的论文中首次提出了隐马尔科夫模型(Hidden Markov Model,HMM),它是一种基于统计的模型,随后经过发展与改进,被广泛运用于语音识别、自然语言处理、生物信息和故障诊断等领域[4]。HMM是一个双重随机过程,即状态间的随机转移过程和观测的随机输出过程,其中,状态转移过程是隐藏的,通过观测序列的观测值表现。

1.1 HMM形式化表示

隐马尔科夫模型通常由一组包含有5个基本要素的五元组λ=(S,V,A,B,π )表示,五元组中各要素的定义为[5]:

1)隐状态集S={S1,S2,...,SN},N为隐状态数量,不同时刻的状态可以相互转换,在t时刻HMM的状态为qt,qt∈S。

2)观测值集V={V1,V2,...,VM},M为可能的观测数,在t时刻状态的输出为ot,ot∈V。O=(o1,o2,...,oT) 为一个HMM的观测序列,其长度为T。

其中,1≤i,j≤N,且满足:

其中,1≤j≤N,1≤k≤M,且满足状态Sj所有观测值概率相加为1,即:

5)初始状态分布 π=(πi),其中 πi表示在起始时刻模型处于状态Si的概率,即:

其中,1≤j≤N

HMM工作时,模型的一般运行过程如下:系统根据初始分布随机生成一个状态,而后根据状态转移矩阵依次从一个状态转移到另一个状态,并且在每个状态输出观测值,通过这种方式,HMM将状态序列与观测序列构成统一系统进行分析[6]。

HMM有三类基本问题:评价问题、解码问题和学习问题,各问题的经典算法可见文献[7]。对于手势识别应用而言,最关心的是学习问题和解码问题,即模型的训练和手势的识别,其中:模型训练常用Baum-Welch算法实现,这是一种非监督学习方法,在给定观测序列O和初始化参数λ后,通过极大似然法调整参数获得最优λ*=(A,B,π),使得在该模型下输出的观测序列概率P(O|λ)最大;手势识别常用Viterbi算法预测,即在最优λ*=(A,B,π)和观测序列O已知的情况下,通过动态规划法计算最可能的状态序列,从而求得手势标识。

1.2 CGHMM模型

根据HMM输出观测值概率密度的连续性可以把HMM划分为离散型HMM(DHMM)和连续型HMM(CHMM)两种类型[8]。上述由五元组表示的一般型HMM即为DHMM,其随机过程为离散的观测序列,如果应用在手势识别中,建模时需要把连续的数据进行离散化,处理过程中会丢失部分特征信息,从而影响识别效果。为此,论文采取连续型CHMM进行手势识别建模。

CHMM建模时,可以用概率密度函数来描述状态输出的观测值。对于多维特征,可以考虑使用混合高斯概率密度函数,记为CGHMM。CGHMM与普通HMM类似,只是观测输出概率矩阵B由离散形式改为概率密度函数,根据上述HMM定义,一个CGHMM由下列参数组成[9]:

1)模型拓扑结构及隐状态数量N,每个状态可能输出的观测值数量M。

4)观测输出概率矩阵B是一组观测概率密度函数,即[10]:

为了将CGHMM更好的应用到手势识别中,需要解决评价、训练、解码3个基本问题,详见文献[11]。

1.3 手势识别中的模型参数设置

使用CGHMM进行手势识别,需要确定模型的拓扑结构、隐状态数量等参数设置问题。

1.3.1 拓扑结构选择

根据隐状态之间的转换连接,HMM具有几种典型的拓扑结构,包括全连接型(Fully Connected)遍历型(Ergodic model)和左右型(Left-Right)。根据手势运动的特点,希望模型可以描述出状态转移在时间上的先后关系,以便于识别计算,为此选择左右型带状拓扑结构,如图1所示。模型中的状态只能在它本身或下一个相邻状态间转换,不能返回上一个状态。

图1 模型拓扑图

1.3.2 隐状态数量优选

在实际应用中,一般而言,一个HMM的性能与隐状态的数量呈正比,隐状态数量越多,性能越好,但会降低识别速度。为此,要平衡HMM识别率和识别速度的矛盾,需要合理选择隐状态数量。在隐状态数量选择上,有启发式选择方法,如交叉验证(cross validation);模型选择方法,主要有AIC准则(Akaike’s Information Criterion)、BIC 准则(Bayesian Information Criterion)等方法[12]。文中采用BIC准则,通过引入模型复杂度的惩罚项,来确定状态数量。

假设Θ为观测序列集,L为观测序列个数,为Θ中所有观测的总量,则某一HMM状态数量为k时的BIC(k)基本形式为[8]:

在 BIC准则中,最优的状态数是k*=argmaxkBIC(k)。在实际应用中,可先根据经验,设定状态数目范围,而后通过比较获得最佳数量,文中手势的状态数目范围选择2个至8个。

2 基于Leap Motion的手势识别系统设计

手势识别系统在实际应用时主要有两种方式,一种是借助于数据手套实现,通过手套内置传感器反馈手指各关节的状态,并将数据发送至处理系统进行手势识别[13];另一种是基于计算机视觉技术,通过光学摄像头采集手部图像,对图像进行处理后获得手指及各关节信息[14]。单从手势识别而言,基于计算机视觉的实现方式不会对用户产生束缚和干扰,交互更加自然,而且成本低廉,适合于推广。

2.1 手势数据采集与分割

目前可用于捕捉手部信息的成熟设备主要有Kinect和Leap Motion[15],其中Kinect主要用于整个身体的捕获,而Leap Motion则完全是针对手部设计的设备,其低成本和小体积的优势,有利于在手势交互系统中的封装与二次开发。

Leap Motion传感器内置3个红外LED和2个红外摄像头,采用红外成像技术从不同角度捕获传感器上方锥型体内的手部信息,形成三维数据,有效识别范围在25~600 mm之间,识别信息主要有手部和关节的位置、姿态、速度等参数,识别精度为0.01 mm,精确、高效的数据获取能力为手势识别研究提供了基础支持[16]。在使用过程中,用户将手置于传感器上方后,Leap Motion会自动捕获手部信息,并以115 fps的帧速率刷新信息,以供用户使用。Leap Motion传感器的工作方式如图2所示。

图2 Leap Motion工作示意图

课题选取手势的位置作为特征值,以固定速度阈值的方式分割有效识别手势,即确定手势的起始点和终止点位置,考虑到手部的抖动及拐点的停顿,假设当速度连续n次大于或小于某一阈值时[17],手势开始或结束。以手势开始为例:假设计数器n初始为 0,如果获取的手势速度vt大于阈值vΘ,则n++;否则n重置为0,重新计数。当n大于计数阈值nΘ,则手势开始;否则继续计数。如图3所示。手势结束的判定流程与开始类似,改为手势速度vt小于阈值vΘ即可。

图3 手势开始判定流程

经过测试分析,手势开始判定的速度阈值可设为200 mm/s,计数阈值为2;手势结束判定的速度阈值可设为100 mm/s,为了防止手势在转折、拐点等位置过早终止,终止计数阈值设定为5较为合适。

2.2 手势识别系统设计

在具体应用中,开发者可通过LeapSDK对Leap Motion进行二次开发[18]与集成,目前主要有Orion和V2两个系列的开发工具包。二次开发的核心是异步调用Leap.dll服务以获取Leap Motion提供的数据,以实现各种预定功能。手势识别系统技术框架如图4所示。

图4 技术框架

手势识别系统中主要模块的功能如下:

1)Leap服务模块。Leap动态库通过USB接口获取Leap Motion传感器的实时跟踪数据,并对原始数据进行处理后以推送至其它应用,可通过Leap Motion设置面板对服务进行设置和状态检测。

2)手势训练模块。通过Leap服务采集训练数据,提取特征向量并进行手势标记,而后进行训练与测试,将训练好的模型存入手势识别模型库,每种手势对应1个HMM模型。

3)手势识别模块。应用时,通过Leap服务实时接收手势数据,而后通过识别模型库中的模型[19]进行计算,输出识别结果。

3 仿真实验分析

假设虚拟场景中有控制手势7种,如表1所示。其中图标所示圆点表示手势轨迹的起点,箭头为手势轨迹的走向。

利用Leap Motion对这7种手势特征数据进行采集,每种手势分别采集50组训练数据和20组测试数据。在实际训练时,为了得到较好的训练效果,需要将数据进行正则化处理,使得训练好的模型有较强的普适性。

表1 控制手势

在上述准备的基础上,选取训练数据[20],对模型进行训练,首先将隐状态数量从2~8进行遍历,选择最佳的数量,结果如图5所示。

图5 隐状态数量与BIC关系

由图5可知各HMM模型应该设定的隐状态数量,将表中确定的隐状态数量代入模型中,对手势识别模型进行训练与测试,其结果如表2所示。

表2 模型训练结果

由表2的结果可知,对于前4个简单的手势识别率基本可满足百分百,对于后3个较为复杂的手势也可满足场景控制需要。

4 结束语

基于手势的人机交互方式,可使用户以较为自然的方式与虚拟环境进行交流,增加了用户的参与感和沉浸感,有利于提升用户在虚拟场景中的整体体验效果。文章讨论了连续隐马尔科夫模型在单个动态手势识别中的应用问题,对模型的拓扑结构和隐状态数量的设置进行了分析,最后基于Leap Motion传感器设计了手势识别系统对模型进行仿真分析,结果表明模型基本可满足单个手势的识别要求,下一步,将深入研究自适应手势分割和连续动态手势识别等问题。

猜你喜欢
手势阈值数量
挑战!神秘手势
小波阈值去噪在深小孔钻削声发射信号处理中的应用
统一数量再比较
V字手势的由来
基于自适应阈值和连通域的隧道裂缝提取
比值遥感蚀变信息提取及阈值确定(插图)
胜利的手势
室内表面平均氡析出率阈值探讨
头发的数量
我国博物馆数量达4510家