Machine learning HMMs如何用于手写识别?

Machine learning HMMs如何用于手写识别?,machine-learning,data-mining,hidden-markov-models,handwriting-recognition,Machine Learning,Data Mining,Hidden Markov Models,Handwriting Recognition,这个问题与传统的手写识别有点不同。我有一个数据集,它包含以下数千个数据集。对于一个绘制的字符,我有几个连续的(x,y)坐标,笔被按下的位置。因此,这是一个顺序(时间)问题 我希望能够根据这些数据对手写字符进行分类,并希望实现HMMs用于学习目的。但是,这是正确的方法吗?如何使用它们来执行此操作?此问题实际上是两个问题的混合: 从数据中识别一个字符 从(嘈杂的)字符序列中识别单词 HMM用于从噪声测量中找出有限个离散状态的最可能序列。这正是问题2,因为离散状态a-z,0-9的噪声测量以一个序列彼此

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


我希望能够根据这些数据对手写字符进行分类,并希望实现HMMs用于学习目的。但是,这是正确的方法吗?如何使用它们来执行此操作?

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

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

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


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

    我认为HMM可以用于@jens提到的两个问题。我也在研究在线手写,HMM在很多文章中都有使用。最简单的方法如下:

  • 选择一个特征
  • 如果选定的特征是连续的,则将其转换为离散的
  • 选择HMM参数:拓扑和状态
  • 使用HMM训练角色模型。每个类一个模型
  • 使用测试集进行测试
  • 对于每个项目:

  • 最简单的特征是向量的角度,它连接连续的 要点。可以使用更复杂的特征,如向量的角度 由Douglas&Peucker算法获得
  • 离散化的最简单方法是使用Freeman码,但是 也可以使用k-means和GMM等聚类算法
  • HMM拓扑:遍历、左-右、Bakis和线性各州 可以通过尝试和错误获得。HMM参数可以是可变的 每种型号通过离散化确定观测值的大小。 观察样本可以具有可变长度
  • 我推荐凯文·墨菲
  • 祝你好运

  • 这真是个有趣的主意。出于好奇,是每个点的时间坐标也被记录下来了(所以在毫秒1坐标30 x 45被按下),还是它们只是按顺序排列?目前只是顺序排列。我想做一些动态时间扭曲来解释角色画得慢/快的原因。我认为这是正确的方法。作为练习,你可以从识别字母表开始。