7

我想开发一个使用 Kinect 和hidden Markov models. 我在这里看了一个教程:HMM 讲座

但我不知道如何开始。什么是状态集,如何规范化数据才能实现HMM学习?我知道(或多或少)应该如何处理信号和简单的“从左到右”的情况,但是 3D 空间让我有点困惑。谁能描述它应该如何开始?

任何人都可以描述步骤,如何做到这一点?特别是我需要知道如何做模型以及HMM算法的步骤应该是什么。

4

2 回答 2

10

将 HMM 应用于手势识别的一组方法是应用与语音识别常用的类似架构。

HMM 不会超过空间而是随着时间的推移,并且每个视频帧(或从帧中提取的一组特征)将是 HMM 状态的发射。

不幸的是,基于 HMM 的语音识别是一个相当大的领域。许多书籍和论文都描述了不同的架构。我建议从 Jelinek 的“语音识别统计方法”(http://books.google.ca/books?id=1C9dzcJTWowC&pg=PR5#v=onepage&q&f=false)开始,然后从那里参考参考资料。另一个资源是 CMU sphinx 网页 ( http://cmusphinx.sourceforge.net )。

要记住的另一件事是,基于 HMM 的系统可能不如条件随机场或最大边距识别器(例如 SVM-struct)等判别方法准确。

对于基于 HMM 的识别器,整个训练过程通常如下所示:

1)对原始数据进行某种信号处理

  • 对于语音,这将涉及将原始音频转换为 mel-cepstrum 格式,而对于手势,这可能涉及提取图像特征(SIFT、GIST 等)

2)对处理后的数据应用矢量量化(VQ)(也可以使用其他降维技术)

  • 每个集群质心通常与任务的一个基本单元相关联。例如,在语音识别中,每个质心都可以与一个音素相关联。对于手势识别任务,每个 VQ 质心可以与姿势或手部配置相关联。

3) 手动构建 HMM,其状态转换捕获手势中不同姿势的序列。

  • 这些 HMM 状态的发射分布将以第 2 步的 VQ 向量为中心。

  • 在语音识别中,这些 HMM 是由音素字典构建的,这些字典给出了每个单词的音素序列。

4) 构建单个 HMM,其中包含每个单独的手势 HMM(或在语音识别的情况下,每个音素 HMM)之间的转换。然后,用手势视频训练复合 HMM。

  • 此时也可以在联合训练步骤之前单独训练每个手势 HMM。这个额外的训练步骤可能会产生更好的识别器。

对于识别过程,应用信号处理步骤,为每一帧找到最近的 VQ 条目,然后在给定量化向量。该路径给出了视频中的预测手势。

于 2013-02-04T20:34:39.563 回答
1

我为 Coursera PGM 课程实现了这个的 2d 版本,它以 kinect 手势作为最终单元。

https://www.coursera.org/course/pgm

基本上,这个想法是你不能使用 HMM 来很好地确定姿势。在我们的单元中,我使用了 K-means 的一些变体来将姿势分割成概率类别。HMM 用于实际决定哪些姿势序列实际上作为手势是可行的。但是任何在一组姿势上运行的聚类算法都是一个很好的候选——即使你不知道它们是什么类型的姿势或类似的东西。

从那里您可以创建一个模型,该模型对每个 kinect 数据点的每个可能姿势的聚合概率进行训练。

我知道这是一个有点稀疏的采访。该课程对现有技术进行了很好的概述,但总的来说,这个问题有点难以浓缩成一个简单的答案。(如果你对这个领域感兴趣,我建议你在四月参加)

于 2013-01-28T22:41:23.663 回答