使用隐马尔可夫模型的手势识别
Posted
技术标签:
【中文标题】使用隐马尔可夫模型的手势识别【英文标题】:Gesture recognition using hidden markov model 【发布时间】:2013-08-28 18:26:30 【问题描述】:我目前正在开发一个手势识别应用程序,使用隐马尔可夫模型作为 matlab 上的分类阶段(使用网络摄像头)。我已经完成了包括特征向量提取在内的预处理部分。我已将主成分分析 (PCA) 应用于这些向量。
现在我要使用 Kevin Murphy 的 HMM 工具箱,我需要我的观察序列采用从 1 到 M 的数字(整数)形式(M = 观察符号的数量)。如果我是正确的,那么我必须使用码本的概念并使用矢量量化来获得我的观察序列。
我的问题:
-
如何构建密码本?
以及如何使用此码本获取输入视频的观察符号?
注意:我使用椭圆傅里叶描述符进行形状特征提取,并且对于每个手势,PCA 值都存储在尺寸为 [11x220] 的矩阵中(视频中的帧数 = 11)
接下来我该怎么做? 有没有其他方法可以代替椭圆傅里叶描述符来获取特征向量?
【问题讨论】:
【参考方案1】:HMM 是一系列用于序列数据的概率模型,其中您假设数据是从潜在(“隐藏”)状态空间上的离散状态马尔可夫链生成的。通常,所谓的“排放”来自每个州的同一分布族,但参数不同。
我对 matlab 实现不是特别熟悉,但听起来您指的是使用多项发射分布的实现,其中观察到的数据是来自预先指定的字母表的符号序列。该模型中的未知参数是隐藏状态之间的转移概率和每个状态中每个输出符号的多项权重。如果您的特征是二元且互斥的,那么这是合适的分布——比如“手势向左”与“手势向右”之类的。
但如果您的特征是连续的,则使用连续排放分布可能更合适。例如,高斯 HMM 很常见。在这里,您观察到的数据是一系列连续(可能是多元)数据,并且假设在每个隐藏状态中,输出都是来自具有您希望学习的均值和(协)方差的高斯的 i.i.d。
如果您不反对 python,scikits-learn 页面上有一些关于多项式和高斯 HMM 的相当不错的文档:http://scikit-learn.org/stable/modules/hmm.html。
从实际的角度来看,如果您想在数据上使用多项式 HMM,我建议您首先构建码本运行 k-means 聚类,然后使用状态标签作为 HMM 的输入。但是使用高斯 HMM 可能会更好。
【讨论】:
以上是关于使用隐马尔可夫模型的手势识别的主要内容,如果未能解决你的问题,请参考以下文章