CRNN——文本识别算法

常用文字识别算法主要有两个框架:

  1. CNN+RNN+CTC(CRNN+CTC)
    CRNN——文本识别算法

文章认为文字识别是对序列的预测方法,所以采用了对序列预测的RNN网络。通过CNN将图片的特征提取出来后采用RNN对序列进行预测,最后通过一个CTC的翻译层得到最终结果。说白了就是CNN+RNN+CTC的结构。

CRNN 全称为 Convolutional Recurrent Neural Network,主要用于端到端地对不定长的文本序列进行识别,不用先对单个文字进行切割,而是将文本识别转化为时序依赖的序列学习问题,就是基于图像的序列识别。

CRNN——文本识别算法

整个CRNN网络结构包含三部分,从下到上依次为:

CNN(卷积层),使用深度CNN,对输入图像提取特征,得到特征图;

RNN(循环层),使用双向RNN(BLSTM)对特征序列进行预测,对序列中的每个特征向量进行学习,并输出预测标签(真实值)分布;

因为 RNN 有梯度消失的问题,不能获取更多上下文信息,所以 CRNN 中使用的是 LSTM,LSTM 的特殊设计允许它捕获长距离依赖。

LSTM 是单向的,它只使用过去的信息。然而,在基于图像的序列中,两个方向的上下文是相互有用且互补的。将两个LSTM,一个向前和一个向后组合到一个双向LSTM中。此外,可以堆叠多层双向LSTM,深层结构允许比浅层抽象更高层次的抽象

这里采用的是两层各256单元的双向 LSTM 网络:

CTC loss(转录层),使用 CTC 损失,把从循环层获取的一系列标签分布转换成最终的标签序列。

LSTM是一种特核事故的RNN,主要是解决长序列的训练过程中的梯度消失和梯度爆炸问题,简单来说,LSTM在更长序列表现好。

  • *创新点

  • 使用双向BLSTM 来提取图像特征,对序列特征识别效果明显

  • 将语音识别领域的CTC—LOSS 引入图像,这是质的飞越

  • *不足点

  • 网络复杂,尤其是BLSTM 和CTC 很难理解,且很难计算。

  • 由于使用序列特征,对于角度很大的值很难识别。

CTC 的核心思路主要分为以下几部分:

  • 它扩展了RNN 的输出层,在输出序列和最终标签之间增加了多对一的空间映射,并在此基础上定义了CTC Loss 函数
  • 它借鉴了HMM (Hidden Markov Model )的Forward-Backward 算法思路,利用动态规划算法有效地计算CTC Loss 函数及其导数,从而解决了RNN 端到端训练的问题
  • 最后,结合CTC Decoding 算法RNN 可以有效地对序列数据进行端到端的预测

CTC 的特征

  • 条件独立:CTC 的一个非常不合理的假设是其假设每个时间片都是相互独立的,这是一个非常不好的假设。在OCR 或者语音识别中,各个时间片之间是含有一些语义信息的,所以如果能够在CTC 中加入语言模型的话效果应该会有提升。
  • 单调对齐:CTC 的另外一个约束是输入X XX 与输出Y YY 之间的单调对齐,在OCR 和语音识别中,这种约束是成立的。但是在一些场景中例如机器翻译,这个约束便无效了。

Original: https://blog.csdn.net/l15201/article/details/126906392
Author: l15201
Title: CRNN——文本识别算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/721168/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球