我想开发一个使用 Kinect 和hidden Markov models
. 我在这里看了一个教程:HMM 讲座
但我不知道如何开始。什么是状态集,如何规范化数据才能实现HMM
学习?我知道(或多或少)应该如何处理信号和简单的“从左到右”的情况,但是 3D 空间让我有点困惑。谁能描述它应该如何开始?
任何人都可以描述步骤,如何做到这一点?特别是我需要知道如何做模型以及HMM
算法的步骤应该是什么。
我想开发一个使用 Kinect 和hidden Markov models
. 我在这里看了一个教程:HMM 讲座
但我不知道如何开始。什么是状态集,如何规范化数据才能实现HMM
学习?我知道(或多或少)应该如何处理信号和简单的“从左到右”的情况,但是 3D 空间让我有点困惑。谁能描述它应该如何开始?
任何人都可以描述步骤,如何做到这一点?特别是我需要知道如何做模型以及HMM
算法的步骤应该是什么。
将 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)对原始数据进行某种信号处理
2)对处理后的数据应用矢量量化(VQ)(也可以使用其他降维技术)
3) 手动构建 HMM,其状态转换捕获手势中不同姿势的序列。
这些 HMM 状态的发射分布将以第 2 步的 VQ 向量为中心。
在语音识别中,这些 HMM 是由音素字典构建的,这些字典给出了每个单词的音素序列。
4) 构建单个 HMM,其中包含每个单独的手势 HMM(或在语音识别的情况下,每个音素 HMM)之间的转换。然后,用手势视频训练复合 HMM。
对于识别过程,应用信号处理步骤,为每一帧找到最近的 VQ 条目,然后在给定量化向量。该路径给出了视频中的预测手势。
我为 Coursera PGM 课程实现了这个的 2d 版本,它以 kinect 手势作为最终单元。
https://www.coursera.org/course/pgm
基本上,这个想法是你不能使用 HMM 来很好地确定姿势。在我们的单元中,我使用了 K-means 的一些变体来将姿势分割成概率类别。HMM 用于实际决定哪些姿势序列实际上作为手势是可行的。但是任何在一组姿势上运行的聚类算法都是一个很好的候选——即使你不知道它们是什么类型的姿势或类似的东西。
从那里您可以创建一个模型,该模型对每个 kinect 数据点的每个可能姿势的聚合概率进行训练。
我知道这是一个有点稀疏的采访。该课程对现有技术进行了很好的概述,但总的来说,这个问题有点难以浓缩成一个简单的答案。(如果你对这个领域感兴趣,我建议你在四月参加)