使用隐马尔可夫模型的手势识别

Aur*_*jee 5 matlab quantization gesture-recognition k-means hidden-markov-models

我目前正在开发一个手势识别应用程序,使用隐马尔可夫模型作为matlab上的分类阶段(使用网络摄像头).我已经完成了预处理部分,其中包括特征向量的提取.我已将主成分分析(PCA)应用于这些向量.

现在让我使用Kevin Murphy的HMM工具箱,我需要我的观察序列是数字(整数)的形式,范围从1到M(M =观察符号的数量).如果我是正确的那么我必须使用码本的概念并使用矢量量化来获得我的观察序列.

我的问题:

  1. 我如何建立一个码本?
  2. 如何使用此码本获取输入视频的观察符号?

注意:我使用Elliptical Fourier描述符进行形状特征提取,并且对于每个手势,PCA值存储在维度矩阵[11x220]中(视频中的帧数= 11)

接下来我该怎么办?有没有其他方法来获得特征向量而不是椭圆傅里叶描述符?

Rob*_*bon 2

HMM 是一系列针对顺序数据的概率模型,其中假设数据是从潜在(“隐藏”)状态空间上的离散状态马尔可夫链生成的。一般来说,所谓的“排放量”来自每个州的同一分布族,但具有不同的参数。

我对 matlab 实现不是特别熟悉,但听起来您指的是使用多项发射分布的实现,其中观察到的数据是预先指定字母表中的符号序列。该模型中的未知参数是隐藏状态和每个状态中每个输出符号的多项式权重之间的转移概率。如果您的特征是二元且互斥的,那么这是适当的分布 - 比如说“手势向左”与“手势向右”之类的。

但如果您的特征是连续的,则使用连续排放分布可能更合适。例如,高斯 HMM 非常常见。这里,您观察到的数据是连续(可能是多元)数据的序列,并且假设在每个隐藏状态中,输出是来自具有您希望学习的均值和(协)方差的高斯的独立同分布。

如果您不反对 python,scikit-learn 页面上有一些关于多项式和高斯 HMM 的相当不错的文档:http://scikit-learn.org/stable/modules/hmm.html

从实际角度来看,如果您想在数据上使用多项式 HMM,我建议首先构建码本,运行 k 均值聚类,然后使用状态标签作为 HMM 的输入。但使用高斯隐马尔可夫模型可能会更好。