时序分析:HMM模型(状态空间)
关于HMM模型:时序分析:隐马尔科夫模型
HMM用于手势识别: 训练时每一种手势对应一个HMM-Model,识别率取最大的一个HMM即可。 类似于一个封装的完成多类识别器功能单层网络。
优点: 尤其适用于时间序列的建模,对复杂度高的动作也具有较高的识别精度,易于添加和修改手势库。
缺点:训练的难度大(需要多的样本来完成图的优化)。
以下引自于一篇论文:基于马尔可夫模型的手势识别算法。修改为了与我自己的项目相关的东西。
引言:
基于隐马尔可夫模型的动态手势识别一般是应用手势的时间特性进行识别。单一的手势可被认为是不同手形序列组成的,多个手势可由手形及其运动轨迹加以区分。可同时
应用手形及其运动轨迹两大特征进行手势识别(把静态手型作为特征向量的一个维度),在轮廓跟踪过程中,获得当前的手部轮廓,获取多自由度(六自由度(欧式位置x,y,x和欧式位姿alpha,beta,theta) + 一个静态手势码)的手势的运动轨迹,这样就可从图像序列中得到动态手势的特征向量,即观察值序列,记作Ol , l = 1,..., L,其中L为序列总数。
HMM的特征向量:
获取手势的观察值序列:
手势轨迹的基本特征是六自由度(位置、方位角)。由于同一个用户,手势速率的变化也是比较大的,因此,本文采用六自由度(位置和角度)相结合的方法获取运动轨迹。通过基于卡尔曼滤波器[2]与自适应形状模型的轮廓跟踪算法[3],我们可得滤波器最优估计值:
Xk = (Xc^t, Yc^t, Zc^t,Xc ^t - Xc ^(t-1), Yc^t-Yc^(t-1) ,Zc^t- Zc^(t-1) ) ^T (2)
其中(Xc^t, Yc^t, Zc^t )为t 时刻的位置坐标,( Xc ^(t-1), Yc^(t-1) ,Zc^(t-1) )为t −1时刻的轮廓质点,由此可得手势轨迹的角度,如图2(a)所示。
根据所得ϕ^t ,我们采用12 方向链码进行离散化,如图2(b)所示[4]。
(图错了,懒得修改!)
在手势跟踪过程中,跟踪器根据上述方法按固定时间间隔(有些问题)从图像序列中提取手势的特征向量,可得到手势的特征观察值序列Ol , l = 1,..., L。
HMM模型训练:
在获取手势的特征观察值序列后,则可对HMM 模型进行训练。首先要对HMM模型λ = (A, B,π )初始化,由于我们采用左右结构的离散HMM 模型,因此我们设定状态i 只能返回到本身或转移到i +1状态,状态转移矩阵A可初始化为[4]:
对于初始概率分布,设定:
π1 =1,
πi =0( i ≠ 1);
即假设HMM 是从第一个状态开始的。对于观察概率矩阵B, 设
初始模型确定以后,利用前后向递推法计算观察值序列O在这个模型下的P(O/λ ); 然后利用 Baum-Welch 算法对初始 HMM 模型λ = (A, B,π )进行重新计算,HMM 的各个参数在这一过程得到重新估计,即求得新的HMM 模型λˆ = (Aˆ, Bˆ,πˆ); 再利用 Viterbi 算法计算出观察序列O在这个模型下的P(O/λˆ)。
为了估计出最接近观察值序列O的HMM模型,我们设定阈值ε ,当 P(O /λˆ) − P(O /λ ) <ε 时即得到训练出的HMM模型;否则令 λ =λˆ。重复此步骤,直到P(O/λ )收敛,得到最接近观察值的HMM 模型。
基于HMM的识别过程:
基于HMM 模型进行手势识别研究,大多采用计算某测试样本与参考模型集的似然度,通过判断最大值以确定测试样本的类别[5]。基于这一原理,采用HMM 实现动态手势识别,HMM的输入为跟踪器提取的特征观察值序列Ol , l = 1,..., L。图像序列中手势识别过程可归纳为(流程图如图3
所示):
(1)检测手部位置初始化跟踪器,跟踪算法如文献[2]所述。
(2)在执行手势的图像序列中提取手部轮廓并按固定时间间隔获得手形与手势运动轨迹两类特征向量。
(3)由(2)可得特征观察值序列o l,将其作为训练所得HMM 模型的输入值,并应用前后向递推算法求其似然值,判断出最大可能手势。
参考文献:
[1]段洪伟. 基于视觉的手势识别及其应用 [D]. 上海:上海大学,2004
[2]NUMMIARO K,KOLLER-MEIER E,VAN GOOLL. An adaptive color-based particle filter [J]. Image and VisionComputing,2002,21(1):99-110
[3]齐苏敏,黄贤武,孟静. 基于自适应活动轮廓模型的实时手势跟踪 [J]. 计算机科学,2006,33(11):192-194.
[4]孔晓明. 人机交互系统中动态手势识别的研究 [D].上海:上海大学,2005
[5]FREEMAN W,WEISSMAN C. Television control by hand gestures [C]. Proc IEEE Int'I Conf. on Automated Face and Gesture Recognition (FG'95),1995:179-183
[6]RAMAMOORTHY A , VASWANI N , etl.all.Recognition of dynamic hand gestures [J]. Pattern Recognition,36(9):2069-2081
时序分析:HMM模型(状态空间)的更多相关文章
- HMM模型
通过前几时断续的学习,发现自己对HMM模型的了解还只停留在皮毛,导致在学习CRF模型并将其与最大熵模型.HMM.MEMM做比较时感觉很吃力,所以又花了两天时间使劲看了遍HMM,发现了解得确实深刻了很多 ...
- 应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型
选自:http://maotong.blog.hexun.com/6261873_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- 应用HTK搭建语音拨号系统2:创建单音素HMM模型
选自:http://maotong.blog.hexun.com/6204849_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- 隐马尔科夫模型HMM(一)HMM模型
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...
- HMM模型学习笔记(前向算法实例)
HMM算法想必大家已经听说了好多次了,完全看公式一头雾水.但是HMM的基本理论其实很简单.因为HMM是马尔科夫链中的一种,只是它的状态不能直接被观察到,但是可以通过观察向量间接的反映出来,即每一个观察 ...
- 数学之美——HMM模型(二)解码和Forward算法
上一篇讨论了HMM的基本概念和一些性质,HMM在现实中还是比较常见的,因此也带来一了一系列的HMM应用问题.HMM应用主要面向三个方面:预测.解码和学习.这篇主要讨论预测. 简单来说,预测就是给定HM ...
- 数学之美——HMM模型(一)介绍
一直想写点关于数学方面的blog,这对于数据挖掘分析,NLP处理等都有着比较重要的作用,之前在CSDN上想写点HMM方面的文章,一直没写成,最近几天终于抽点时间完成了HMM的文章,加以整理,遂有这个系 ...
- HMM 模型输入数据处理的优雅做法 来自实际项目
实际项目我是这样做的: def mining_ue_procedures_behavior(seq, lengths, imsi_list): print("seq 3:", se ...
- HMM模型学习笔记(维特比算法)
维特比算法(Viterbi) 维特比算法 编辑 维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中.术语“维特比 ...
随机推荐
- bupt summer training for 16 #5 ——数据结构
https://vjudge.net/contest/173780 A.假设 Pt = i,则由Ppi = i得 Ppt = t = Pi 所以就有 if Pt = i then Pi = t #in ...
- 玲珑杯1147 - 最后你还是AK了
1147 - 最后你还是AK了 Time Limit:5s Memory Limit:256MByte DESCRIPTION 今天HHHH遇到了一颗树,这个树有nn个点(nn为偶数),每条边都有一个 ...
- qwb与整数对
qwb与整数对 Time Limit: 1 Sec Memory Limit: 128 MB Description qwb又遇到了一道数学难题,你能帮助他吗? 给出两个整数n和m,请统计满足0&l ...
- hdu 3657最大点权独立集变形(方格取数变形)
/* 分奇偶为二部图,s与奇建图,t与偶建图,权值为当前数的值,如果遇到必取的权值置为inf. 奇偶建边为相邻的权值为2*(x&y):所有数的值-最小点全覆盖. 置为inf意为不能割掉.奇偶边 ...
- 基于zookeeper和强一致性复制实现MySQL分布式数据库集群
http://qikan.cqvip.com/article/detail.aspx?id=667750898&from=zk_search
- RDS for MySQL Online DDL 使用
https://help.aliyun.com/knowledge_detail/41733.html?spm=5176.7841698.2.17.u67H3h
- Android中的GraphicBuffer同步机制-Fence
Fence是一种同步机制,在Android里主要用于图形系统中GraphicBuffer的同步.那它和已有同步机制相比有什么特点呢?它主要被用来处理跨硬件的情况.尤其是CPU.GPU和HWC之间的同步 ...
- bootstrap学习——javascript插件篇
飞近期做的一个小项目须要用到一个模态框和一个图片浏览插件,并把二者结合,刚好bootstrap有相应插件,下面是学习应用流程: 1. 引入js文件: 能够单个引入相应插件文件,或一次所有引入.飞 ...
- 本地项目上传虚拟机的gitlab
前提:在虚拟机安装了gitlab服务,并且本机可以访问到虚拟机的gitlab 自己本机项目上传到gitlab 1.先在gitlab上建立项目 拷贝项目地址: http://192.168.1.105/ ...
- oc64--协议2@protocol
// // SportProtocol.h // day17 // #import <Foundation/Foundation.h> @protocol SportProtocol &l ...