HMM算法用于手势识别

7
我想开发一个手势识别的应用程序,使用Kinect和“隐马尔可夫模型”。我在这里观看了一个教程:HMM lecture。但是我不知道如何开始。什么是状态集?如何归一化数据以实现“HMM”学习?我知道(多少)如何处理信号和简单的“从左到右”的情况,但是3D空间让我有点困惑。是否有人能描述一下该如何开始呢?是否有人能描述一下步骤,如何去做这个?特别是我需要知道如何建立模型和“HMM”算法的步骤。
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条目,然后在给定量化向量的情况下,通过HMM找到高得分的路径(即Viterbi路径或来自A*搜索的一组路径)。该路径给出了视频中预测的手势。


    "可能比判别式方法不够准确。" -- 维基百科:"尽管判别模型不需要对观察变量的分布进行建模,但它们通常无法表达观察变量和目标变量之间的更复杂关系。在分类和回归任务上,它们不一定比生成模型表现更好。" 我认为您的观点有误导性,能否澄清一下?我考虑使用不同方法(如生成和判别)进行骨架化。 - hhh
    在机器学习领域,普遍认为,除非你有强大的先验知识可以融入到生成模型中,否则对于分类和标记等任务,判别式方法更好,因为判别式目标更符合任务需求,并且更容易将不同类型的特征融入到判别式模型中。 - user1149913
    1
    这里有一些文献:语音识别 - http://cseweb.ucsd.edu/~saul/papers/lmb08_cdhmm.pdf(其中对不同的训练技术进行了很好的评估),自然语言处理 - http://cs.brown.edu/~th/papers/AltTsoHof-ICML2003.pdf,字符识别、NLP解析和机器翻译任务 - http://www.seas.upenn.edu/~taskar/pubs/max-margin-acl05-tutorial.pdf。 - user1149913

    1

    我为Coursera PGM课程实现了2D版本,其中kinect手势是最后一个单元。

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

    基本上,这个想法是你不能很好地使用HMM来确定姿势。在我们的单元中,我使用了一些变体的K-means将姿势分成概率类别。HMM用于实际决定哪些姿势序列实际上是可行的手势。但是,在一组姿势上运行任何聚类算法都是一个很好的候选方案——即使你不知道它们是什么类型的姿势或类似的内容。
    从那里,你可以创建一个模型,该模型训练于每个Kinect数据点的每种可能姿势的聚合概率。
    我知道这是一个有点简略的采访。那门课程提供了关于最先进技术的优秀概述,但总体问题太难以压缩成一个简单的答案。(如果你对这个领域感兴趣,我建议你在四月份参加这门课程)。

    我已经注册了,谢谢。但我仍然会寻找答案并尝试解决我的问题。 - Nickon

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接