HMM如何用于手写识别?

时间:2012-02-21 22:53:15

标签: machine-learning data-mining hidden-markov-models handwriting-recognition

问题与传统的手写识别有点不同。我有一个数以千计的数据集。对于一个绘制的角色,我有几个顺序(x, y)坐标,其中笔被按下。所以,这是一个连续的(时间)问题。

我希望能够根据这些数据对手写字符进行分类,并希望实现HMM用于学习目的。但是,这是正确的方法吗?他们如何习惯这样做?

2 个答案:

答案 0 :(得分:3)

我认为HMM可以用于@jens提到的两个问题。我也在从事在线手写,HMM在很多文章中使用。最简单的方法是这样的:

  1. 选择一项功能。
  2. 如果所选要素连续转换为离散。
  3. 选择HMM参数:拓扑和状态#。
  4. 使用HMM训练角色模型。每个班级一个模特。
  5. 使用测试集进行测试。
  6. 每个项目:

    1. 最简单的特征是连续连接的矢量角 点。您可以使用更复杂的功能,如矢量角度 道格拉斯和道格拉斯获得Peucker算法。
    2. 最简单的离散化方法是使用Freeman代码,但是 也可以使用像k-means和GMM这样的聚类算法。
    3. HMM拓扑:遍历,左右,Bakis和线性。国家数量 可以通过试用获得错误。 HMM参数可以是变量 每个型号。观察数量由离散化确定。 观察样本可以有不同的长度。
    4. 我推荐Kevin Murphy HMM工具箱。
    5. 祝你好运。

答案 1 :(得分:2)

这个问题实际上是两个问题的混合:

  1. 识别数据中的一个字符
  2. 识别(嘈杂的)字符序列中的单词
  3. HMM用于从噪声测量中找出有限数量离散状态的最可能序列。这正是问题2,因为离散状态a-z,0-9的噪声测量在序列中相互跟随。

    对于问题1,HMM是无用的,因为您对基础序列不感兴趣。你想要的是用你如何写它的信息来增加你的手写数字。

    就个人而言,我首先要实现已经非常好的常规最先进的手写识别(使用卷积神经网络或深度学习)。之后,您可以添加有关其编写方式的信息,例如顺时针/逆时针。