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

Where should I put the previous predicted sequence in LSTM for optical character recognition systems

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

现在我从文献中了解到,您需要为 LSTM 单元提供两个输入:一个是您要尝试识别的图像,第二个是它已经预测的单词序列。因此,例如,如果我有一个读取 "I love machine learning" 的图像,我将创建以下输入对:

因此,对于每个输入,您希望 LSTM 预测下一个单词,即 I, love, machine 用于上述序列。

我遇到的问题是我不知道如何将图像和之前的序列输入到 LSTM 单元格。我是否将我的图像(二维矩阵)分成 row/column 个向量并将它们一次一个地发送到 LSTM,完成后我发送前面的单词序列?但是这样我会有很长的输入序列,这可能会导致很大的收敛时间。

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

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

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

  • t-1 时记忆单元的状态
  • 在 t 的输入元素

LSTM 具有比普通 RNN 更高级的内部结构,可以进行更稳健的训练。但从用户的角度来看,它就像普通的 RNN 一样工作。你输入一个序列,LSTM 为你计算一个输出序列。

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

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