对于光学字符识别系统,我应该在LSTM中将先前的预测序列放在哪里

时间:2018-07-16 07:52:36

标签: ocr lstm

我正在尝试构建一种光学字符识别系统,该系统可以使用LSTM单元识别手写句子。

现在我从文献中了解到,您需要为LSTM单元提供两个输入:一个是您要识别的图像,第二个是它已经预测的单词序列。因此,例如,如果我有一张读着“我喜欢机器学习”的图像,我将创建以下输入对:

  • 图片+ startseq
  • 图片+ startseq +我
  • 图片+ startseq +我+爱

因此,对于每个输入,您都希望LSTM预测下一个单词,即我,爱人,上述序列的机器。

我遇到的问题是我无法弄清楚如何将图像和之前的序列输入到LSTM单元中。我是否将我的图像(二维矩阵)划分为行/列向量,然后一次将它们发送到LSTM,当我完成处理后,我就按上一个单词序列发送了?但是这样,我的输入序列将很长,可能会导致收敛时间变长。

我知道图像字幕任务可以使用预训练的神经网络对输入图像进行矢量化处理,但是对于光学字符识别系统可以做到这一点,即会导致准确性问题吗?

1 个答案:

答案 0 :(得分:0)

不,您不必将识别的单词反馈回LSTM。您只需输入一个输入(功能)序列,LSTM就会通过该序列学习传播相关信息。

在谈论递归神经网络(RNN)时,您应该考虑输入序列和输出序列。 在时间步t到RNN的输入是:

  • t-1时存储单元的状态
  • t处的输入元素

LSTM具有比香草RNN更高级的内部结构,从而可以进行更强大的训练。但是从用户角度来看,它的工作方式就像普通的RNN。输入一个序列,LSTM为您计算一个输出序列。

进行手写识别时,通常会从输入图像中提取特征序列(例如,使用卷积层)。 然后,将此特征序列输入LSTM层。 您将输出序列映射到字符概率矩阵,然后由CTC层解码为最终文本。

这是一个简短的教程,介绍如何构建手写识别系统,它应该使您了解哪些数据(请参见“数据”:“ CNN输出”和“ RNN输出”)流入LSTM,哪些数据流出LSTM: https://towardsdatascience.com/2326a3487cd5