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