专利名称:一种自动检测非手势模式的手势分割识别方法及系统的制作方法
一种自动检测非手势模式的手势分割识别方法及系统技术领域
本发明属于人机交互领域,特别涉及一种自动检测非手势模式的手势分割识别方法及系统。
背景技术:
人机交互是一门涉及计算机科学、行为心理学、社会伦理学、图形界面设计以及工业设计学等众多专业背景的交叉学科,以用户体验为终极目标,是连接人与计算机的桥梁。 随着计算机技术水平的提高以及社会不同领域的生产需求和人们生活需求的不断扩大,新型智能人机交互方式成为必然。在人机交互的多种方式中,手势动作是最为自然、直观且易于学习的方式之一。智能感知动作语义的手势交互技术,是实现自然、高效的人机交互的必然趋势。
手势分割,是识别手势的前提,分割的正确合理性直接影响识别结果的好坏。但是由于用户手势动作的任意性和随机性,手势分割一直是一个研究难点,目前手势分割的主要方法有
I.通过用户协同实现分割,具体分两种情况一种是制定手势规则,或者开始和结束时让手脱离摄像头视线,或者定义手势由起始姿态,轨迹曲线和选择姿态构成;另外一种是通过用户按压专门的按钮实现分割,例如在用户输入动作时按住该按钮,完成动作时松开按钮,这样就能够较为准确地得到一个手势动作所对应的特征序列。
2.通过数据分析实现分割,具体分两种情况一种是基于特征的方法,或者统计手势转换时的特征,如果某一时刻采集的手势特征与某个已知的手势转换特征相匹配, 该处就是一个分割点,或者分别统计手势起始时和结束时的特征约束条件,以判定手势的起点和终点;另外一种是基于模型的方法,常用的模型有神经网络(NN),连续动态规划(CDP),动态时间规整(DTW),隐马尔科夫模型(HMM),条件模型(最大熵马尔科夫模型 (MEMM)和条件随机场(CRF ))。
第一种方法需要用户的合作,多余的规则或按压动作会增加用户的负担,减少交互体验的愉悦感,第二种方法中基于特征的分割,要求手势之间有非手势的运动模式,不适用于连续手势运动的分割,而基于模型的分割则不存在该限制,因此是目前手势分割的首选方法。
在基于模型的分割算法中,基于神经网络(NN)的分割算法采用了固定窗口的分割算法,不能容忍手势长度的变化,而基于连续动态规划(CDP)的分割算法计算时间复杂度高,基于动态时间规整(DTW)的分割算法不能应用于手势变化的动态系统中,基于最大熵马尔科夫模型(MEMM)的分割算法存在标记偏差的问题,而基于条件随机场(CRF)的分割算法虽然性能要好于基于隐马尔科夫模型(HMM)的分割算法,但是其收敛速度慢,扩展性差,故而现在最流行的分割算法仍然是基于HMM的算法。
经典的基于HMM的分割算法都是使用一个通用的阈值模型作为自适应的似然值阈值,以从连续的动作序列中区分出手势动作序列。它的基本原理是,实时的使用韦特比算法计算连续输入的动作序列针对各个手势模型和通用阈值模型的似然值,当手势模型的最大似然值高于通用阈值模型的似然值时,将当前时刻记为似然值最大的手势模型对应的手势模式的终点,再通过韦特比算法解码该手势模式,找到手势模式的起点,从而实现了手势动作序列的分割。然而仅适用通用阈值模型作为自适应的似然值阈值,很可能将那些复杂的非手势动作序列也误判为手势动作序列,因为通用的阈值模型只是一个由系统中的所有手势模型的所有状态完全连接而成的遍历模型,它只能与预定义的手势子模式以任意次序组合而成的模式匹配,而不能与非预定义的手势子模式构成的非手势模式匹配,故而当某个手势模型针对当前输入动作序列计算出来的似然值高于通用的阈值模型时,并不能武断地判定当前输入动作序列属于某个手势模式。基于以上原因,检测和建模非手势运动模式成为基于HMM分割手势的难点。发明内容
本发明的目的是克服传统的基于HMM的手势分割算法在表征非手势模式上存在的缺陷,并在采集了大量的非手势模式后对其进行了聚类和建模。本发明将训练的非手势模型导入到手势分割识别系统中,使得手势分割识别系统能够更好的表征非手势模式,减少了将非手势模式误判为手势模式的概率,提高了手势分割算法的准确性。
为实现上述目的,本发明提出了一种自动检测非手势模式的手势分割识别方法, 包括
步骤1,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型;
步骤2,利用所述手势分割模型从输入的连续动作序列中自动检 测非手势模式;
步骤3,利用所述非手势模式训练非手势动作识别模型;
步骤4,基于非手势动作识别模型扩展手势分割模型,对输入的连续动作序列进行分割识别。
所述步骤2包括
步骤21,利用所述的手势分割模型从输入的连续动作序列中分割和识别出有效的手势1吴式;
步骤22,将所述手势模式的起点与前一个动作模式的终点之间的观测序列作为一个非手势模式从动作序列中检测出来;
步骤23,计算所述手势模式的似然值,并对其进行判断若似然值小于 Υ,则判定当前的手势模式为伪手势模式,并将其作为一个非手势模式从动作序列中检测出来,否则判定当前的手势模式为一个真手势模式,对其进行分割识别,其中 Υ是一个小于训练手势的最低似然值的似然值阈值。
所述步骤21包括
步骤201,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、三轴角速度、 三轴加速度的数据序列;
步骤202,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据;
步骤203,从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量, 其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,并利用所述特征向量训练手势动作识别模型;
步骤204,设定初始时间t=l,并将观测序列和手势栈置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列;
步骤205,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值;
步骤206,找到所述似然值最大的第一手势动作识别模型;
步骤207,判断所述第一手势动作识别模型的似然值是否高于阈值模型的似然值; 若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行步骤208 ;否则执行步骤209 ;
步骤208,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回步骤201采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回步骤201采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后一个候选终点之间,则弹出手势栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的终点,同时将上述手势模式及其起点和候选终点压栈,并执行步骤210 ;
步骤209,弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的终点,然后执行步骤210 ;
步骤210,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行步骤211 ;否则返回步骤201采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;
步骤211,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回步骤201采集下一时刻的动作数据。
所述步骤3包括
步骤301,通过基于欧式距离的动态时间规整算法计算非手势模式间的相似度矩阵,再采用ISODAT A算法对非手势模式集进行聚类;
步骤302,对聚类后的每个非手势模式聚类训练一个非手势动作识别模型,其中非手势动作识别模型采用左右结构的隐马尔可夫模型。
所述步骤4包括
步骤401,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值;若高于则将t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行步骤402 ;否则执行步骤403 ;
步骤402,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回步骤201采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回步骤201采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后一个候选终点之间,则弹出手势栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的终点,同时将上述手势模式及其起点和候选终点压栈,并执行步骤404 ;
步骤403,弹出手势栈栈顶缓存的手势模式,并将t-Ι时刻记为该手势模式的终点,同时执行步骤404 ;
步骤404,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行步骤404 ;否则返回步骤201采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;
步骤405,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回步骤201采集下一时刻的第一样本数据。
本发明还提供了一种自动检测非手势模式的手势分割识别系统,包括
手势分割模型训练模块,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型;
非手势模式检测模块,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式;
非手势动作识别模型训练模块,利用所述非手势模式训练非手势动作识别模型;
分割识别模块,基于非手势动作识别模型扩展手势分割模型,以对输入的连续动作序列进行分割识别。
所述非手势模式检测模块包括
手势模式检测模块,利用所述的手势分割模型从输入的连续动作序列中分割和识别出有效的手势模式;
非手势模式截取模块,将所述手势模式的起点与前一个动作模式的终点之间的观测序列作为一个非手势模式从动作序列中检测出来。
非手势模式判断模块,计算所述手势模式的似然值,并对其进行判断若似然值小于 Υ,则判定当前的手势模式为伪手势模式,并将其作为一个非手势模式从动作序列中检测出来,否则判定当前的手势模式为一个真手势模式,对其进行分割识别,其中I;是一个小于训练手势的最低似然值的似然值阈值。
所述手势模式检测模块包括
样本数据获得模块,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、 三轴角速度、三轴加速度的数据序列;
预处理模块,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据;
特征向量提取模块,用于从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量,其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,利用所述特征向量训练手势动作识别模型;
观测序列增添模块,设定初始时间t=l,并将观测序列和手势栈置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列;
似然值计算模块,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值;
判断模块,找到所述似然值最大的第一手势动作识别模型,判断所述手势动作识别模型的似然值是否高于阈值模型的似然值;若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点, 同时执行对比模块;否则执行第一弹出模块;
对比模块,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回样本数据获得模块采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回样本数据获得模块采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后一个候选终点之间,则弹出手势栈栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的终点,同时将上述手势模式及其起点和候选终点压栈,然后执行第一判别模块;;
第一弹出模块,用于弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的终点,然后执行第一判别模块;
第一判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行第一标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;
第一标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回样本数据获得模块采集下一时刻的动作数据。
所述非手势动作识别模型训练模块包括
非手势模式聚类模块,通过基于欧式距离的动态时间规整算法计算非手势模式间的相似度矩阵,再采用ISODAT A算法对非手势模式集进行聚类;
训练模块,对聚类后的每个非手势模式聚类训练一个非手势模型,其中非手势模型采用左右结构的隐马尔可夫模型。
所述分割识别模块包括
手势模式判断模块,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值;若高于则将t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行对比判断模块;否则执行第二弹出模块;
对比判断模块,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回样本数据获得模块采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点的前面, 则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回样本数据获得模块采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后一个候选终点之间,则弹出手势栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的终点,同时将上述手势模式及其起点和候选终点压栈,并执行第二判别模块;
第二弹出模块,用于弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的终点,然后执行第二判别模块;
第二判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行第二标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;
第二标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回样本数据获得模块采集下一时刻的第一样本数据。
本发明的有益效果在于
(I)可以自动检测非手势模式,减少人工标定量。
(2)手势分割的准确率高。从测试集的动作序列中检测非手势模式,并在采集了大量的非手势模式后对其进行了聚类和建模,将训练的非手势模型导入到手势分割识别系统中,使得手势分割识别系统能够更好的表征非手势模式,减少了将非手势模式误判为手势模式的概率,提高了手势分割算法的准确性。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
图I是本发明的阈值模型示意图2是本发明的手势分割识别流程图3是本发明的非手势模式检测流程图4是本发明的扩展手势分割识别流程图5是本发明的自动检测非手势模式的手势分割识别方法流程图6是本发明的自动检测非手势模式的手势分割识别系统示意图。
具体实施方式
本发明识别的手势数据集限定为动态手势,包括简单的命令手势,如控制电视频道和音量加减的手势,以及切换电视频道的数字手势。通过给出一种自动检测非手势模式的方法,本发明扩展了基于HMM阈值模型的分割模型,对动态手势实现了精确的分割。
图5是本发明的自动检测非手势模式的手势分割识别方法流程图,如图5所示,本发明的自动检测非手势模式的手势分割识别方法,包括
步骤1,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型;
步骤2,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式;
步骤3,利用所述非手势模式训练非手势动作识别模型;
步骤4,基于非手势动作识别模型扩展手势分割模型,对输入的连续动作序列进行分割识别。
步骤I的具体实现步骤如下
1.训练手势动作识别模型
需要说明的是,本步骤的一般实现方法是,首先基于视觉或者运动传感器采集手势数据,然后对数据进行预处理,再对处理后的数据提取鲁棒的特征向量,最终基于特征向量进行模型训练。
需要说明的是,采集手势数据时,为了区分不同手势所对应的数据序列,本实施例采用了用户协同实现的分割方法,具体的实现方式是设计一个专门的按钮,在手势动作的开始和结束时通过该按钮 标记一个手势动作,在用户输入动作时按住该按钮,完成动作时松开按钮,从而准确的得到一个手势动作所对应的数据序列。
在本实施例中,所述手势动作识别模型为左-右结构的隐马尔科夫模型(HMM),该模型中有且只有一个初始状态和终止状态,该模型的训练可采用前述的Baum-Welch算法实现,最终输出为初始状态概率分布,状态转移概率矩阵和输出观测值概率分布矩阵。隐马尔科夫模型h可以表不为一个五兀组(S,V, A, B, π ),其中S = {s1; S2, S3,, sN}是一组状态的集合,V = (V1, V2, V3, , νκ}是一组输出观测值组成的集合,A = Iiaij]是N行 N列的状态转移概率矩阵,每个元素au = P (qt+1 = Sj | qt = Si),I彡i, j彡N表征从状态SiR到状态\_的概率,B={bj(k)}是N行K列的输出观测值的概率分布矩阵,每个元素 bj (k) =P (vk I Sj),I彡k彡K,I彡j彡N表示在状态Sj时输出观测值Vk的概率,= {Jij 是初始状态概率分布,Jii = PQ1 = Si)表示时刻I选择状态Si的概率。当输出观测值为连续型变量时,此时的隐马尔科夫模型称为连续隐马尔科夫模型。当模型中有且只有一个初始状态和终止状态时,此时的隐马尔科夫模型称为左右结构的隐马尔科夫模型。
2.构建阈值模型
为了从连续的动作序列中定位出有效的手势动作序列,嵌入在输入流中的手势动作序列对应的手势模型的似然值应该具有足够的区分能力。仅使用一个简单的似然值阈值通常并不起作用,无法保证分割出来的动作序列是否真的属于某个手势模式。因此,本实施例中参照方法[I] (H. K. Lee and J. H. Kim, " Anhmm-based threshold model approach for gesture recognition, " IEEE Transactions onpattern analysis and machine in telligence, Vol. 21, pp. 961—973, October 1999.)构建了一个阈值模型(见图1),以它的似然值作为一个自适应的阈值,当且仅当最好的手势模型的似然值高于该动作模型的似然值时,一个手势模式才从连续的动作序列中分割出来并实现同步地识别。图1给出的阈值模型是一个遍历结构的简化版本,其中,A, B, Z分别表示一个手势动作识别模型,每个圆圈代表一个状态,起始状态S和终止状态T是不产生观察值的空状态,实线箭头表示状态之间的真实转移路径,而虚箭头不代表真正的连接,它只是一种形象化的表示,说明模型中的所有状态都可以通过一步转移到其它任何状态。
上述阈值模型是由系统中所有手势模型的状态完全连接的遍历模型,能够与由预定义的手势子模式以任意次序组合而成的模式匹配,且能保证对于给定的一个手势模式,它的似然值将小于给定手势模式的手势模型的似然值。阈值模型构建的具体步骤是将系统中训练的所有手势模型的所有状态拷贝出来,保持每一个状态的输出观察概率和自转移概率不变,同时修改每个状态在原来手势模型中的外转移特性,令每个状态都可以通过一步转移到其它任何状态,且转移概率相等,具体的计算公式如式(I):
α = ,■/ = I,2,…,N; j Φ i;Λ. _ 1UJ,
其中a u是从状态i到j的转移概率,N是状态数目(除了起始和终止状态的所有状态的总和)。需要说明的是,正是因为阈值模型中将每一个状态转移到其它任何状态的概率均分化,从而其转向原来手势模型中的前向状态的概率低于其在原来的手势 模型中的前向转移概率,如此,给定一个手势模式,阈值模型的似然值才会低于相应的手势模型的似然值。
本实施例中,手势分割模型由手势动作识别模型和阈值模型构成。
本实施例中,按照图3所示的非手势模式检测流程图,从测试集的动作序列中检测非手势模式,
输入连续动作序列(相当于观测序列)0,初始化7 =0,其中T/为前一个手势模式或非手势模式的终点。
基于上个阶段训练的手势分割模型实时地对投入测试的动作序列进行手势分割和识别,得到有效的手势模式€,及其起点Ts (gs)和终点Te (gs)。
将当前的手势模式gs的起点Ts (gs)与T/之间的观测序列作为一个非手势模式从动作序列中检测出来。即将动作序列()检测为一个非手势模式。
更新T:=TS (gs)-l。
采用前向算法或后向算法计算所述手势模式gs与相应的手势模型的似然值L,并对其进行判断若似然值L小于IV,则判定当前的手势模式为伪手势模式,并将其作为一个非手势模式从动作序列中检测出来,否则判定当前的手势模式为一个真手势模式,对其进行分割识别,其中 Υ是一个小于训练手势的最低似然值的似然值阈值。在步骤I中应用 Baum-Welch算法训练手势动作识别模型的时候会计算每个手势模式与手势动作识别模型的似然值,假设Lmin和δ ^分别是训练手势模式与相应手势动作识别模型似然值的最低值和方差,则本实施例中,设定 Υ = Lmin-3* δ LO
手势分割和识别具体步骤包括
步骤201,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、三轴角速度、 三轴加速度的数据序列;
步骤202,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据;
步骤203,从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量, 其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,并利用所述特征向量训练手势动作识别模型;
步骤204,设定初始时间t=l,并将观测序列O和手势栈S置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列;步骤205,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值;令Eh是模型h的终止状态,则对于给定的模型h,观测序列O的似然值设定为t时刻到达状态Eh的最优路径产生观察序列Ot 的联合概率,记为St (Eh)。
步骤206,找到所述似然值最大的第一手势动作识别模型;似然值最大的手势模型满足下述的条件
g* = argmaxh eG δ t (Eh),其中G是所有训练的手势动作识别模型的集合。
步骤207,判断所述第一手势动作识别模型的似然值是否高于阈值模型的似然值; 若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,即令Te = t,并利用韦特比回馈算法找出该手势模式的起点Ts,执行步骤208 ;否则执行步骤 209 ;似然值高于阈值模型的最大似然值的手势模型满足下述条件
g*=argmaxh e G δ t (Eh),并且沒(^) >没(八/ )其中TR是阈值模型。
步骤208,判断手势栈S是否为空,如果为空,将所述手势模式g*压入手势栈中, 并标记手势栈栈顶缓存的手势模式的起点和终点,令Ts (gs)=Ts, Te (gs)=Te,同时返回步骤 201采集下一时刻,即t+Ι时刻的第一样本数据;如果手势栈S不为空,则将上述手势模式 g*与手势栈栈顶缓存的手势模式gs进行对比,当两者相同时,更新手势栈栈顶缓存的手势模式gs的起点,即令Ts (gs) =Ts,同时返回步骤201采集下一时刻,即t+Ι时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式g*的起点Ts在手势栈栈顶缓存的手势模式gs的第一个候选终点Te (gs)的前面,则弹出手势栈栈顶缓存的手势模式gs,并压入上述手势模式g*,同时更新手势栈栈顶缓存的手势模式的起点和终点,令Ts (gs) =Ts, Te (gs) =Te,并返回步骤201采集下一时刻,即t+Ι时刻的第一样本数据;当上述手势模式g* 的起点Ts在手势栈栈顶缓存的手势模式gs的第一个候选终点的后面,弹出手势栈顶缓存的手势模式gs,并将上述手势模式g*的起点Ts的前一时刻作为手势栈栈顶缓存的手势模式 gs的终点,同时将上述手势模式g*压栈,并更新手势栈栈顶缓存的手势模式的起点和终点, 令八(gs)=Ts, Te (gs)=Te,再执行步骤210;其中手势栈S用于存储前一个未找到真正终点的手势模式,初始化为空。
步骤209,弹出手势栈顶缓存的手势模式gs,并将t-Ι时刻作为该手势模式的终点,然后执行步骤210。
步骤210,对手势栈弹出的手势模式的长度€进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行步骤211 ;否则返回步骤201采集下一时刻,即 t+Ι时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度。
步骤211,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,返回步骤201采集下一时刻,即t+Ι时刻的动作数据。
步骤204-211可以参照图2进行理解。
需要说明的是,步骤205中阐述的韦特比算法的具体实现步骤是假设t时刻的观测序列表示为Ot = (O1, 02,. . .,ot),其中Ot是按照手势动作识别模型训练阶段的步骤3) 提取的t时刻的动作特征,Qt是时刻t的隐状态,Sj是模型h的第j个隐状态,λ h是模型h的参数,则t时刻到达状态h的最优路径产生观察序列Ot的联合概率
^t(Si)= max P(ql,...,qt_l,q, = s Ot | Xh) (2),- hh
可通过式(3 )迭代计算得到
δ I (Sj) = 31 jbj (O1)I ^ j ^ N,
δ t (Sj) =Iiiaxi [ δ η (Si) adb 2 ^ t ^ Τ, I ^ j ^ N. (3)
式(3)中N是模型h的状态数目,Bij是从状态Si到Sj的转移概率,bj (Ot)是状态 Sj输出观测值Ot的概率。在隐马尔可夫模型中,当某一时刻的隐状态是某个模型的终止状态时,说明执行了一个相应的动作。因此可以使用St(Eh)表示观测序列与模型的相似度, 即似然值。
需要进一步说明的是,在本实施例中,步骤210通过一个滤波器对手势模式的长度进行判别。具体的做法是,首先对所有训练手势模型的数据样本的长度进行统计,得到其均值和方差,然后设定合适的置信区间,如果g*的长度I在置信区间内,那么它是一个手势模式,否则不是。上述判断过程可用下列形式表示,如果α σ χ< I1-U11〈 β σ i,则g*是一个手势模式,其中,U1和O1分别是所有训练手势模型的数据样本的长度的均值和方差,α和 β是经验系数。
需要再一步说明的是,正是由于步骤I构建的阈值模型,只能与任意预定义的手势子模式以任意次序组合而成的模式匹配,而不能与非预定义的手势子模式组合成的非手势模式匹配,因而当某个手势模型针对给定的动作序列计算出来的似然值高于该阈值模型时,并不能武断地判定给定的动作序列属于某个手势模式(给定的动作序列很有可能就是一个与某个手势模式相似的非手势模式),也因此,本实施例中才能采用本阶段给出的非手势模式检测方法自动地从连续动作序列中检测出非手势模式。直观上,利用上述的分割方法分割出来的手势模式间的动作序列都属于非手势模式,同时当某个分割出来的手势模式利用韦特比算法计算出来的手势模型的似然值高于阈值模型的似然值且远远小于训练手势的最低似然值时,该手势模式也属于一个非手势模式。
当利用步骤2获得的非手势模式的个数达到一定要求后,本实施例将利用它们来训练非手势动作识别模型。在本实施例中,所述步骤3具体包括
步骤301,通过基于欧式距离的动态时间规整算法计算非手势模式间的距离,再采用I S O D A T A算法对非手势模式集进行聚类。由于非手势模式是一种具有相当大随机性的信号,即使同一个人执行同一个动作,每一次运动的结果都是不同的,也不可能具有完全相同的时间长度。因此两个非手势模式相匹配时,其中一个非手势模式的时间轴要不均匀地扭曲或弯折,以使其特征与另一个非手势模式特征对正。动态时间规整算法(DTW) 将时间规整与距离测度结合起来,比较两个大小不同的模式,可以有效解决非手势模式长度多变的问题。DTW的目标就是要找出两个向量之间的最短距离。一般而言,对于两个η 维空间中的向量X和y,它们之间的距离可以定义为两点之间的直线距离,称为欧式距离 dist(x, y) = |x-y| U但是如果向量的长度不同,它们之间的距离就无法使用上述的数学形式來计算,因为我们并不知道两个向量的元素对应关系。DTW算法通过使用满足一定条件的的时间规整函数W(n)描述输入模板和参考模板的时间对应关系,采用动态规划算法(DP)求解两模板匹配时累计距离最小所对应的规整函数,即找到最佳的元素对应关系, 从而计算出两个不同长度向量之间的距离。在本案例中,应用动态时间规整算法计算出任意两个非手势模式间的距离后,便可以采用IS0DATA算法对非手势模式进行聚类。所述 IS0DATA算法,被称为迭代自组织数据分析或动态聚类,它的处理流程是先选择若干样品作为聚类中心,再按照最小距离准则使其余样品向各中心聚集,从而得到初始聚类,然后判断初始聚类结果是否符合要求,若不符,则将聚类集进行分裂和合并处理,以获得新的聚类中心(聚类中心是通过样品均值的迭代运算来决定的),再判断聚类结果是否符合要求。如此反复迭代,直到完成聚类划分操作。步骤302,对聚类后的每个非手势模式训练一个非手势动作识别模型,其中非手势动作识别模型也采用左右结构的隐马尔可夫模型,其训练方法不再累述。
完成了非手势动作识别模型的训练后,本实施例就可以利用它们对分割识别系统进行扩展,以提高系统的性能。在非手势模式检测和非手势动作模型训练阶段中给出的分割方法中,手势分割模型是由所述手势动作识别模型及其构建的阈值模型构成的,因此只要手势动作识别模型的似然值高于阈值模型的似然值,一个手势模式就从输入的连续动作序列中检测出来,而上述分析也已说明该检测方法的不可靠性,故而本实施例将非手势动作识别模型增加到前述的手势分割识别模型中,在基于扩展的手势分割识别模型的分割识别方法中,只有当手势动作识别模型的似然值高于阈值模型和所有非手势动作识别模型的似然值时,一个手势模式才从输入的连续动作序列中检测出来。扩展后的手势分割识别流程图,如图4所示,具体内容可以表述为步骤4:
步骤4的具体步骤和步骤21的具体步骤类似,唯一的区别在于,步骤207中,只需判断所述第一手势动作识别模型的似然值是否高于阈值模型的似然值,即要求所述第一手势动作识别模型满足下述条件
g*=argmaxhe G δ t (Eh),并且^"/(/>) 汉),其中 TR 是阈值模型,在步骤 4 中, 步骤207应该改为,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值,即要求所述第一手势动作识别模型满足下述条件
g*=argmaxh eG5t (Eh),且汾(/‘ ) > 67(/ ),且 W E K ) > δ (Ε,),其中 F 代表所有的非手势动作识别模型。;
在面向人机交互的应用场景中,当一个用户执行手势动作时,本实施例将以30ΗΖ 的频率实时采集动作数据dt,并参照手势动作识别模型训练阶段实时提取当前时刻的动作特征ft,然后将该特征向量作为t时刻的观测值Ot增添到观测序列O中,接着交互系统就可以按照图4所示的分割识别流程对该观测序列进行实时地分割和识别,并根据手势识别的结果做出相应的响应,实现实时自然的人机交互。
本发明的实施例如下所述,图6是本发明的自动检测非手势模式的手势分割识别系统示意图,如图6所示,本发明的自动检测非手势模式的手势分割识别系统,包括
手势分割模型训练模块100,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型;
非手势模式检测模块200,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式;
非手势动作识别模型训练模块300,利用所述非手势模式训练非手势动作识别模型;
分割识别模块400,基于非手势动作识别模型扩展手势分割模型,以对输入的连续动作序列进行分割识别。
手势分割模型训练模块100具体而言如下
1.训练手势动作识别模型
需要说明的是,本步骤的一般实现方法是,首先基于视觉或者运动传感器采集手势数据,然后对数据进行预处理,再对处理后的数据提取鲁棒的特征向量,最终基于特征向量进行模型训练。
需要说明的是,采集手势数据时,为了区分不同手势所对应的数据序列,本实施例采用了用户协同实现的分割方法,具体的实现方式是设计一个专门的按钮,在手势动作的开始和结束时通过该按钮标记一个手势动作,在用户输入动作时按住该按钮,完成动作时松开按钮,从而准确的得到一个手势动作所对应的数据序列。
在本实施例中,所述手势动作识别模型为左-右结构的隐马尔科夫模型(HMM),该模型中有且只有一个初始状态和终止状态,该模型的训练可采用前述的Baum-Welch算法实现,最终输出为初始状态概率分布,状态转移概率矩阵和输出观测值概率分布矩阵。隐马尔科夫模型h可以表不为一个五兀组(S,V, A, B, π ),其中S = {s1; S2, S3,, sN}是一组状态的集合,V = (V1, V2, V3, ... , νκ}是一组输出观测值组成的集合,A = Iiaij]是N行 N列的状态转移概率矩阵,每个元素au = P (qt+1 = Sj | qt = Si),I彡i, j彡N表征从状态 Si转到状态\_的概率,B = {bj(k)}是N行K列的输出观测值的概率分布矩阵,每个元素 bj (k) =P (vk I Sj),I彡k彡K,I彡j彡N表示在状态Sj时输出观测值Vk的概率,= {Jij 是初始状态概率分布,Jii = PQ1 = Si)表示时刻I选择状态Si的概率。当输出观测值为连续型变量时,此时的隐马尔科夫模型称为连续隐马尔科夫模型。当模型中有且只有一个初始状态和终止状态时,此时的隐马尔科夫模型称为左右结构的隐马尔科夫模型。
2.构建阈值模型
为了从连续的动作序列中定位出有效的手势动作序列,嵌入在输入流中的手势动作序列对应的手势模型的似然值应该具有足够的区分能力。仅使用一个简单的似然值阈值通常并不起作用,无法保证分割出来的动作序列是否真的属于某个手势模式。因此,本实施例中参照方法[I]构建了一个阈值模型(见图1),以它的似然值作为一个自适应的阈值,当且仅当最好的手势模型的似然值高于该动作模型的似然值时,一个手势模式才从连续的动作序列中分割出来并实现同步地识别。
上述阈值模型是由系统中所有手势模型的状态完全连接的遍历模型,能够与由预定义的手势子模式以任意次序组合而成的模式匹配,且能保证对于给定的一个手势模式, 它的似然值将小于给定手势模式的手势模型的似然值。图1给出的阈值模型是一个遍历结构的简化版本,其中,其中,A,B, Z分别表示一个手势动作识别模型,每个圆圈代表一个状态,起始状态S和终止状态T是不广生观察值的空状态,实线箭头表不状态之间的真实转移路径,虚箭头也不代表真正的连接,它只是一种形象化的表示,说明模型中的所有状态都可以通过一步转移到其它任何状态。上述阈值模型是由系统中所有手势模型的状态完全连接的遍历模型,能够与由预定义的手势子模式以任意次序组合而成的模式匹配,且能保证对于给定的一个手势模式,它的似然值将小于给定手势模式的手势模型的似然值。阈值模型构建的具体步骤是将系统中训练的所有手势模型的所有状态拷贝出来,保持每一个状态的输出观察概率和自转移概率不变,同时修改每个状态在原来手势模型中的外转移特性, 令每个状态都可以通过一步转移到其它任何状态,且转移概率相等,具体的计算公式如式 Cl):1 — O.
aij = N 二,=j 本 K (j)
其中au是从状态i到j的转移概率,N是状态数目(除了起始和终止状态的所有状态的总和)。需要说明的是,正是因为阈值模型中将每一个状态转移到其它任何状态的概率均分化,从而其转向原来手势模型中的前向状态的概率低于其在原来的手势模型中的前向转移概率,如此,给定一个手势模式,阈值模型的似然值才会低于相应的手势模型的似然值。
本实施例中,手势分割模型由手势动作识别模型和阈值模型构成。
本实施例中,非手势模式检测模块的具体实现过程(参照图3)是
手势模式检测模块,利用所述的手势分割模型从输入的连续动作序列中分割和识别出有效的手势模式gs,及其起点Ts (gs)和终点Te (gs)。(之前先输入连续动作序列(相当于观测序列)0,初始化7 =0,其中T/为前一个手势模式或非手势模式的终点。)
非手势模式截取模块,将所述手势模式的起点与前一个动作模式的终点之间的观测序列作为一个非手势模式从动作序列中检测出来。将当前的手势模式gs的起点Ts (gs) 与前一个手势模式或非手势模式的终点,记为I 之间的观测序列作为一个非手势模式从动作序列中检测出来。即将动作序列
((, + ,…,)检测为一个非手势模式。更新 C=Ts (gs) -1
非手势模式判断模块,采用前向算法或后向算法gs与相应的手势模型的似然值L, 并对其进行判断 若似然值L小于IV,则判定当前的手势模式为伪手势模式,并将其作为一个非手势模式从动作序列中检测出来,否则判定当前的手势模式为一个真手势模式,对其进行分割识别,其中I;是一个小于训练手势的最低似然值的似然值阈值。应用Baum-Welch 算法训练手势动作识别模型的时候会计算每个手势模式与手势动作识别模型的似然值,假设Lmin和δ ^分别是训练手势模式与相应手势动作识别模型似然值的最低值和方差,则本实施例中,设定TL=Lmin-3* δ L。
手势模式检测模块具体包括
样本数据获得模块,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、 三轴角速度、三轴加速度的数据序列;
预处理模块,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据;
特征向量提取模块,用于从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量,其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,利用所述特征向量训练手势动作识别模型;
观测序列增添模块,设定初始时间t=l,并将观测序列和手势栈置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列;
似然值计算模块,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值;
令Eh是模型h的终止状态,则对于给定的模型h,观测序列O的似然值设定为t时刻到达状态Eh的最优路径产生观察序列Ot的联合概率,记为δ t (Eh)。
判断模块,找到所述似然值最大的第一手势动作识别模型,似然值最大的手势模型满足下述的条件
g*=argmaxh e G δ t (Eh),
其中G是所有训练的手势动作识别模型的集合。
判断所述手势动作识别模型的似然值是否高于阈值模型的似然值;若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,执行对比模块;否则执行第一弹出模块;
似然值高于阈值模型的最大似然值的手势模型满足下述条件
g*=argmaxh eG δ t (Eh),并且 07(人0) >沒(人识),
其中TR是阈值模型。
对比模块,判断手势栈S是否为空,如果为空,将所述手势模式g*压入手势栈中, 并标记手势栈栈顶缓存的手势模式的起点和终点,令Ts (gs)=Ts, Te (gs)=Te,同时返回样本数据获得模块采集下一时刻,即t+Ι时刻的第一样本数据;如果手势栈S不为空,则将上述手势模式g*与手势栈栈顶缓存的手势模式gs进行对比,当两者相同时,更新手势栈栈顶缓存的手势模式gs的起点,即令Ts(gs)=Ts,同时返回样本数据获得模块采集下一时刻,即t+1 时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式g*的起点Ts在手势栈栈顶缓存的手势模式gs的第一个候选终点Te (gs)的前面,则弹出手势栈栈顶缓存的手势模式gs,并压入上述手势模式g*,同时更新手势栈栈顶缓存的手势模式的起点和终点, 令八(gs)=Ts, Te (gs)=Te,并返回样本数据获得模块采集下一时刻,即t+i时刻的第一样本数据;当上述手势模式g*的起点Ts在手势栈栈顶缓存的手势模式gs的第一个候选终点的后面,则弹出手势栈顶缓存的手势模式gs,并将上述手势模式g*的起点Ts的前一时刻作为手势栈栈顶缓存的手势模式gs的终点,同时将上述手势模式g*压栈,并更新手势栈栈顶缓存的手势模式的起点和终点,令Ts (gs)=Ts, Te (gs)=Te,再执行第一判别模块;其中手势栈 S用于存储前一个未找到真正终点的手势模式,初始化为空。
第一弹出模块,弹出手势栈顶缓存的手势模式gs,并将t-Ι时刻作为该手势模式的终点,然后执行第一判别模块。
第一判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行第一标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;手势栈用于 存储前一个未找到真正终点的手势模式,初始化为空。
第一标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,返回样本数据获得模块采集下一时刻的动作数据。
观测序列增添模块-第一标记模块可以参照图2进行理解。
需要说明的是,韦特比算法的具体实现步骤是假设t时刻的观测序列表示为Ot= (O1, O2, , Ot),其中Ot是按照手势动作识别模型训练阶段提取的t时刻的动作特征,qt 是时刻t的隐状态,Sj是模型h的第j个隐状态,λ h是模型h的参数,则t时刻到达状态 Sj的最优路径产生观察序列Ot的联合概率
4(、.;)= max 尸U), \λ ) (2),
可通过式(3)迭代计算得到
δ I (Sj) = n jbj (O1)I ^ j ^ N,
δ t (Sj) =Iiiaxi [ δ H(Si)BijIbj(Ot)2 ^ t ^ T, I ^ j ^ N. (3)
式(3)中N是模型h的状态数目,au是从状态Si到S」的转移概率,b>t)是状态 Sj输出观测值Ot的概率。在隐马尔可夫模型中,当某一时刻的隐状态是某个模型的终止状态时,说明执行了一个相应的动作。因此可以使用St(Eh)表示观测序列与模型的相似度, 即似然值。
需要进一步说明的是,在本实施例中,通过一个滤波器对手势模式的长度进行判别。具体的做法是,首先对所有训练手势模型的数据样本的长度进行统计,得到其均值和方差,然后设定合适的置信区间,如果g*的长度I在置信区间内,那么它是一个手势模式,否则不是。上述判断过程可用下列形式表示,如果σ^Ι -^Κβ O1,则g*是一个手势模式,其中,U1和O1分别是所有训练手势模型的数据样本的长度的均值和方差,α和β是经验系数。
需要再一步说明的是,正是由于构建的阈值模型,只能与任意预定义的手势子模式以任意次序组合而成的模式匹配,而不能与非预定义的手势子模式组合成的非手势模式匹配,因而当某个手势模型针对给定的动作序列计算出来的似然值高于该阈值模型时,并不能武断地判定给定的动作序列属于某个手势模式(给定的动作序列很有可能就是一个与某个手势模式相似的非手势模式),也因此,本实施例中才能采用本阶段给出的非手势模式检测方法自动地从连续动作序列中检测出非手势模式。直观上,利用上述的分割方法分割出来的手势模式间的动作序列都属于非手势模式,同时当某个分割出来的手势模式利用韦特比算法计算出来的手势模型的似然值高于阈值模型的似然值且远远小于训练手势的最低似然值时,该手势 模式也属于一个非手势模式。
当利用非手势模式检测模块获得的非手势模式的个数达到一定要求后,本实施例将利用它们来训练非手势模型。在本实施例中,所述非手势动作识别模型训练模块300包括
非手势模式聚类模块,通过基于欧式距离的动态时间规整算法计算非手势模式间的距离,再采用ISODAT A算法对非手势模式集进行聚类。由于非手势模式是一种具有相当大随机性的信号,即使同一个人执行同一个动作,每一次运动的结果都是不同的,也不可能具有完全相同的时间长度。因此两个非手势模式相匹配时,其中一个非手势模式的时间轴要不均匀地扭曲或弯折,以使其特征与另一个非手势模式特征对正。动态时间规整算法(DTW)将时间规整与距离测度结合起来,比较两个大小不同的模式,可以有效解决非手势模式长度多变的问题。DTW的目标就是要找出两个向量之间的最短距离。一般而言,对于两个η维空间中的向量X和y,它们之间的距离可以定义为两点之间的直线距离,称为欧式距离dist(x,y) = |x-y| U但是如果向量的长度不同,它们之间的距离就无法使用上述的数学形式來计算,因为我们并不知道两个向量的元素对应关系。DTW算法通过使用满足一定条件的的时间规整函数W(n)描述输入模板和参考模板的时间对应关系,采用动态规划算法(DP)求解两模板匹配时累计距离最小所对应的规整函数,即找到最佳的元素对应关系,从而计算出两个不同长度向量之间的距离。在本案例中,应用动态时间规整算法计算出任意两个非手势模式间的距离后,便可以采用IS0DATA算法对非手势模式进行聚类。所述IS0DATA算法,被称为迭代自组织数据分析或动态聚类,它的处理流程是先选择若干样品作为聚类中心,再按照最小距离准则使其余样品向各中心聚集,从而得到初始聚类,然后判断初始聚类结果是否符合要求,若不符,则将聚类集进行分裂和合并处理,以获得新的聚类中心(聚类中心是通过样品均值的迭代运算来决定的),再判断聚类结果是否符合要求。 如此反复迭代,直到完成聚类划分操作。
训练模块,对聚类后的每个非手势模式聚类训练一个非手势模型,其中非手势动作识别模型也采用左右结构的隐马尔可夫模型,其训练方法不再累述。
完成了非手势动作识别模型的训练后,本实施例就可以利用它们对分割识别系统进行扩展,以提高系统的性能。在非手势模式检测和非手势动作模型训练阶段中给出的分割方法中,手势分割模型是由所述手势动作识别模型及其构建的阈值模型构成的,因此只要手势动作识别模型的似然值高于阈值模型的似然值,一个手势模式就从输入的连续动作序列中检测出来,而上述分析也已说明该检测方法的不可靠性,故而本实施例将非手势动作识别模型增加到前述的手势分割识别模型中,在基于扩展的手势分割识别模型的分割识别方法中,只有当手势动作识别模型的似然值高于阈值模型和所有非手势动作识别模型的似然值时,一个手势模式才从输入的连续动作序列中检测出来。扩展后的手势分割识别流程图,其中F代表所有的非手势动作识别模型,具体内容可以表述为分割识别模块,手势模式检测模块的具体内容和分割识别模块的具体内容类似,唯一的区别在于,手势模式检测模块的判断模块中,只需判断所述第一手势动作识别模型的似然值是否高于阈值模型的似然值,即要求所述第一手势动作识别模型满足下述条件
g*=argmaxh e G δ t (Eh),并)>J/(/7;(i)
其中TR是阈值模型,在分割识别模块的手势模式判断模块中,内容变为判断所述第一手势动作识别模型 的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值,即要求所述第一手势动作识别模型满足下述条件
g*=argmaxh e G δ t (Eh),且汾丨:人#) > 汾(人 ),且 W e.丨),其中 F 代表所有的非手势动作识别模型,如图4所示。
即该分割识别模块包括
手势模式判断模块,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值;若高于则将t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,执行对比判断模块;否则执行第二弹出模块;
对比判断模块,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回样本数据获得模块采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点的前面, 则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其候选终点,返回样本数据获得模块采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后一个候选终点之间,则弹出手势栈栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的终点,然后将上述手势模式及其起点和候选终点压栈,并执行第一判别模块;
第二弹出模块,用于弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的终点,然后执行第二判别模块;
第二判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是一个真手势模式,执行第二标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度;
第二标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,返回样本数据获得模块采集下一时刻的第一样本数据。
在面向人机交互的应用场景中,当一个用户执行手势动作时,本实施例将以30HZ 的频率实时采集动作数据dt,并参照手势动作识别模型训练阶段实时提取当前时刻的动作特征ft,然后将该特征向量作为t时刻的观测值Ot增添到观测序列O中,接着交互系统就可以按照图五所示的分割识别流程对该观测序列进行实时地分割和识别,并根据手势识别的结果做出相应的响应,实现实时自然的人机交互。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。
权利要求
1.一种自动检测非手势模式的手势分割识别方法,其特征在于,包括 步骤1,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型; 步骤2,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式; 步骤3,利用所述非手势模式训练非手势动作识别模型; 步骤4,基于非手势动作识别模型扩展手势分割模型,对输入的连续动作序列进行分割识别。
2.如权利要求I所述的手势分割识别方法,其特征在于,所述步骤2包括 步骤21,利用所述的手势分割模型从输入的连续动作序列中分割和识别出有效的手势模式; 步骤22,将所述手势模式的起点与前一个手势模式或非手势模式的終点之间的观测序列作为ー个非手势模式从动作序列中检测出来; 步骤23,计算所述手势模式的似然值,并对其进行判断若似然值小于 Υ,则判定当前的手势模式为伪手势模式,并将其作为ー个非手势模式从动作序列中检测出来,否则判定当前的手势模式为ー个真手势模式,对其进行分割识别,其中I;是ー个小于训练手势的最低似然值的似然值阈值。
3.如权利要求2所述的手势分割方法,其特征在于,所述步骤21包括 步骤201,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、三轴角速度、三轴加速度的数据序列; 步骤202,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据; 步骤203,从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量,其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,并利用所述特征向量训练手势动作识别模型; 步骤204,设定初始时间t=l,并将观测序列和手势栈置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列;步骤205,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值; 步骤206,找到所述似然值最大的第一手势动作识别模型; 步骤207,判断所述第一手势动作识别模型的似然值是否高于阈值模型的似然值;若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行步骤208 ;否则执行步骤209 ; 步骤208,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回步骤201采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回步骤201采集下ー时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后ー个候选終点之间,则弹出手势栈栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的終点,然后将上述手势模式及其起点和候选终点压栈,并执行步骤210 ; 步骤209,弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的終点,然后执行步骤210 ; 步骤210,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是ー个真手势模式,执行步骤211 ;否则返回步骤201采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度; 步骤211,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回步骤201采集下ー时刻的动作数据。
4.如权利要求I所述的手势分割识别方法,其特征在于,所述步骤3包括 步骤301,通过基于欧式距离的动态时间规整算法计算非手势模式间的相似度矩阵,再采用I S O D A T A算法对非手势模式集进行聚类; 步骤302,对聚类后的每个非手势模式聚类训练ー个非手势动作识别模型,其中非手势动作识别模型采用左右结构的隐马尔可夫模型。
5.如权利要求I所述的手势分割识别方法,其特征在于,所述步骤4包括 步骤401,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值;若高于则将t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行步骤402 ;否则执行步骤403 ; 步骤402,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回步骤201采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回步骤201采集下ー时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选终点和最后ー个候选終点之间,则弹出手势栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的終点,然后将上述手势模式及其起点和候选终点压栈,并执行步骤404 ; 步骤403,弹出手势栈栈顶缓存的手势模式,并将t-Ι时刻作为该手势模式的終点,然后执彳了步骤404 ; 步骤404,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是ー个真手势模式,执行步骤404 ;否则返回步骤201采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度; 步骤405,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和终点时刻之间的观测序列中进行标记,同时返回步骤201采集下一时刻的第一样本数据。
6.一种自动检测非手势模式的手势分割识别系统,其特征在于,包括 手势分割模型训练模块,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型; 非手势模式检测模块,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式; 非手势动作识别模型训练模块,利用所述非手势模式训练非手势动作识别模型; 分割识别模块,基于非手势动作识别模型扩展手势分割模型,以对输入的连续动作序列进行分割识别。
7.如权利要求6所述的手势分割识别系统,其特征在于,所述非手势模式检测模块包括 手势模式检测模块,利用所述的手势分割模型从输入的连续动作序列中分割和识别出有效的手势模式; 非手势模式截取模块,将所述手势模式的起点与前一个动作模式的終点之间的观测序列作为ー个非手势模式从动作序列中检测出来; 非手势模式判断模块,计算所述手势模式的似然值,并对其进行判断若似然值小于ん则判定当前的手势模式为伪手势模式,并将其作为ー个非手势模式从动作序列中检测出来,否则判定当前的手势模式为ー个真手势模式,对其进行分割识别,其中 Υ是ー个小于训练手势的最低似然值的似然值阈值。
8.如权利要求7所述的手势分割识别系统,其特征在于,所述手势模式检测模块包括 样本数据获得模块,通过摄像头和多个传感器检测手势动作,获得用于训练手势动作识别模型的第一样本数据,其中所述第一样本数据是记录某一手势动作的三维位置、三轴角速度、三轴加速度的数据序列; 预处理模块,结合所述摄像头和多个传感器的特性,对所述第一样本数据中的各个数据序列进行预处理,得到第二样本数据; 特征向量提取模块,用于从所述第二样本数据中提取不受动作幅度和空间跨度影响的特征向量,其中所述特征向量融合了动作的位移方向、转动角度和加速度的特征,利用所述特征向量训练手势动作识别模型; 观测序列增添模块,设定初始时间t=l,并将观测序列和手势栈置为空,同时将所述特征向量作为t时刻的观测值增添到观测序列中,对于隐马尔科夫模型,数据序列统称为观测序列; 似然值计算模块,分别使用所有手势动作识别模型和阈值模型对t时刻的观测序列采用韦特比算法进行解码,分别得到所述观测序列的似然值; 判断模块,找到所述似然值最大的第一手势动作识别模型,判断所述手势动作识别模型的似然值是否高于阈值模型的似然值;若高于则将所述t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行对比模块;否则执行第一弹出模块; 对比模块,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回样本数据获得模块采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回样本数据获得模块采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点和最后ー个候选終点之间,则弹出手势栈栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的終点,同时将上述手势模式及其起点和候选终点压栈,然后执行第一判别模块; 第一弹出模块,弹出手势栈栈顶手势模式,并将t-Ι时刻设为该手势模式的終点,然后执行第一判别模块; 第一判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是ー个真手势模式,执行第一标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度; 第一标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和終点时刻之间的观测序列中进行标记,同时返回样本数据获得模块采集下ー时刻的动作数据。
9.如权利要求6所述的手势分割识别系统,其特征在于,所述非手势动作识别模型训 练模块包括 非手势模式聚类模块,通过基于欧式距离的动态时间规整算法计算非手势模式间的相似度矩阵,再采用ISODAT A算法对非手势模式集进行聚类; 训练模块,对聚类后的每个非手势模式聚类训练ー个非手势模型,其中非手势模型采用左右结构的隐马尔可夫模型。
10.如权利要求6所述的手势分割识别系统,其特征在于,所述分割识别模块包括 手势模式判断模块,判断所述第一手势动作识别模型的似然值是否同时高于阈值模型的似然值和所有非手势动作识别模型的似然值;若高于则将t时刻记为所述第一手势动作识别模型对应的手势模式的候选终点,并利用韦特比回馈算法找出该手势模式的起点,同时执行对比判断模块;否则执行第二弹出模块; 对比判断模块,将上述手势模式与手势栈栈顶缓存的手势模式进行对比,当两者相同时,返回样本数据获得模块采集下一时刻的第一样本数据,否则按下述情况进行判断和操作当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点的前面,则弹出手势栈栈顶缓存的手势模式,并压入上述手势模式及其起点和候选终点,同时返回样本数据获得模块采集下一时刻的第一样本数据;当上述手势模式的起点在手势栈栈顶缓存的手势模式的第一个候选終点和最后ー个候选終点之间,则弹出手势栈顶缓存的手势模式,并将上述手势模式的起点的前一时刻作为手势栈栈顶缓存的手势模式的終点,同时将上述手势模式及其起点和候选终点压栈,并执行第二判别模块; 第二弹出模块,弹出手势栈栈顶缓存的手势模式,并将t-Ι时刻作为该手势模式的终点,然后执行第二判别模块; 第二判别模块,对手势栈弹出的手势模式的长度进行判别,如若手势模式的长度满足约束条件,那么其是ー个真手势模式,执行第二标记模块;否则返回样本数据获得模块采集下一时刻的第一样本数据,其中手势模式的长度记为其终点时刻和起点时刻之间的时间段长度; 第二标记模块,根据相应的手势动作识别模型,对所述真手势模式的起点时刻和終点时刻之间的观测序列中进行标记,同时返回样本数据获得模块采集下一时刻的第一样本数据。
全文摘要
本发明公开了一种自动检测非手势模式的手势分割识别方法及系统,该方法包括步骤1,基于摄像头和传感器采集的异构数据训练手势动作识别模型,利用所述手势动作识别模型构建阈值模型,手势动作识别模型和阈值模型构成手势分割模型;步骤2,利用所述手势分割模型从输入的连续动作序列中自动检测非手势模式;步骤3,利用所述非手势模式训练非手势动作识别模型;步骤4,基于非手势动作识别模型扩展手势分割模型,对输入的连续动作序列进行分割识别。本发明,使得手势分割识别系统能够更好的表征非手势模式,减少了将非手势模式误判为手势模式的概率,提高了手势分割算法的准确性。
文档编号G06K9/00GK102982315SQ20121043654
公开日2013年3月20日 申请日期2012年11月5日 优先权日2012年11月5日
发明者黄美玉, 陈益强, 纪雯 申请人:中国科学院计算技术研究所