【问题标题】:Where should I put the previous predicted sequence in LSTM for optical character recognition systems对于光学字符识别系统,我应该将先前的预测序列放在 LSTM 中的哪个位置
【发布时间】:2018-07-16 07:52:36
【问题描述】:

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

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

  • 图片+startseq
  • 图像+startseq+I
  • 图像+startseq+我+爱

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

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

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

【问题讨论】:

    标签: ocr lstm


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 2023-01-30
      • 2013-12-25
      相关资源
      最近更新 更多