5

这个问题与传统的手写识别有点不同。我有一个数以千计的数据集。对于一个绘制的字符,我有几个(x, y)按下笔的顺序坐标。因此,这是一个顺序(时间)问题。

我希望能够根据这些数据对手写字符进行分类,并希望实现 HMM 以用于学习目的。但是,这是正确的方法吗?他们怎么能被用来做到这一点?

4

2 回答 2

3

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

  1. 选择一个特征。
  2. 如果所选特征是连续的,则将其转换为离散的。
  3. 选择 HMM 参数:拓扑和状态数。
  4. 使用 HMM 训练角色模型。每个班级一个模型。
  5. 使用测试集进行测试。

对于每个项目:

  1. 最简单的特征是连接连续点的矢量角度。您可以使用更复杂的特征,例如通过 Douglas & Peucker 算法获得的矢量角度。
  2. 最简单的离散化方法是使用 Freeman 代码,但也可以使用 k-means 和 GMM 等聚类算法。
  3. HMM 拓扑:遍历、左右、Bakis 和线性。# 个状态可以通过反复试验获得。HMM 参数对于每个模型都是可变的。观察次数由离散化确定。观察样本可以有可变长度。
  4. 我推荐 Kevin Murphy HMM 工具箱。
  5. 祝你好运。
于 2012-07-14T12:02:34.117 回答
2

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

  1. 从您的数据中识别一个字符
  2. 从(嘈杂的)字符序列中识别单词

HMM 用于从噪声测量中找到有限数量的离散状态的最可能序列。这正是问题 2,因为离散状态 az,0-9 的噪声测量按顺序相互跟随。

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

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

于 2012-03-04T14:17:31.547 回答