使用HMM进行离线字符识别

时间:2013-11-02 22:27:02

标签: ocr classification hidden-markov-models

我从孤立字符的许多图像中提取了特征(例如渐变,相邻像素权重和几何属性。如何使用HMM作为训练此数据的分类器?我读到的关于HMM的所有文献都涉及状态和状态转换但我无法将它连接到功能和类标签.JAHMM主页上的示例与我的问题无关。 我需要使用HMM,不是因为它会比其他方法更好地解决这个问题,而是因为对项目主题的限制。

this在线识别问题的答案,但我想要离线和更详细一点

编辑:我将每个角色划分为一个具有固定数量的正方形的网格。现在我计划在每个网格块上执行特征提取,从而通过从左到右和从上到下移动来获得每个样本的一系列特征。

  1. 这是否代表HMM的足够“序列”,即HMM是否能够猜测数据的时间变化,即使角色不是从左到右,从上到下绘制的?如果不建议替代方式。

  2. 我应该提供很多功能还是从一些功能开始?我怎么知道HMM是否表现不佳或者功能是否不好?我正在使用JAHMM。

  3. 提取笔划特征很困难,并且逻辑上不能与网格特征相结合? (因为HMM期望由一些随机过程生成序列)

1 个答案:

答案 0 :(得分:2)

我经常看到用于此类识别任务的神经网络,即herehere herehere。由于简单的谷歌搜索在OCR中为神经网络提供了如此多的点击,我会假设你已经开始使用HMM(一个项目限制,正确吗?)无论如何,这些链接可以提供一些洞察网格图像和获取图像功能

将网格转换为一系列观测的方法是合理的。在这种情况下,请确保不要混淆观察和状态。您从一个块中提取的特征应该被收集到一个观察中,即一个特征向量。 (与语音识别相比,您的块的特征向量类似于与语音音素相关联的特征向量。)您实际上并没有太多关于基础状态的信息。这是HMM的隐藏方面,训练过程应告知模型一个特征向量跟随另一个特征向量的可能性(即转移概率)。

由于这是一个离线过程,因此不要关注如何实际绘制字符的时间方面。出于任务目的,您已经使用从左到右,从上到下的块序列对观察序列施加了时间顺序。这应该可以正常工作。

对于HMM表现:选择合理的显着特征向量。在语音识别中,特征向量的维度可以是高的(> 10)。 (这也是所引用文献可以提供帮助的地方。)留出一定比例的训练数据,以便您可以正确地测试模型。首先,训练模型,然后在训练数据集上评估模型。你的角色分类有多好?如果效果不佳,请重新评估特征向量。如果它在测试数据上表现良好,则通过在保留的测试数据上运行它来测试分类器的通用性。

至于州的数量,我会从启发式派生的数字开始。假设您的角色图像被缩放和标准化,可能会占用40%(?)的块?由于没有提供源图像,这是我的粗略猜测。对于8x8网格,这意味着占用了25个块。然后我们可以从25个状态开始 - 但这可能是天真的:空块可以传达信息(意味着状态的数量可能会增加),但是某些特征集可能会在类似的状态中观察到(意味着状态的数量可能会减少。)如果它是我,我可能会选择20个州。话虽如此:小心不要混淆功能和状态。您的特征向量表示在特定状态下观察到的事物。如果上述测试显示您的模型性能不佳,请调整状态数量,然后重试。

祝你好运。