OCR项目学习

文本检测

综述:基于深度学习文本检测的十全大补丸

以上是文本检测的一个综述. 下边是基于psenet实现的一个项目

chineseocr_lite

https://github.com/ouyanghuiyu/chineseocr_lite

https://github.com/whai362/psenet

PSENet论文翻译

CRNN

理解文本识别网络CRNN

CRNN网络结构详解

1
2
3
1. CNN(卷积层),使用深度CNN,对输入图像提取特征,得到特征图;
2. RNN(循环层),使用双向RNN(BLSTM)对特征序列进行预测,对序列中的每个特征向量进行学习,并输出预测标签(真实值)分布;
3. CTC loss(转录层),使用 CTC 损失,把从循环层获取的一系列标签分布转换成最终的标签序列。

1. CNN

一共有四个最大池化层.但是最后两个池化层的窗口尺寸由 2x2 改为 1x2,也就是图片的高度减半了四次(除以 [公式] ),而宽度则只减半了两次(除以 [公式] ),这是因为文本图像多数都是高较小而宽较长.所以其feature map也是这种高小宽长的矩形形状,如果使用1×2的池化窗口可以尽量保证不丢失在宽度方向的信息,更适合英文字母识别(比如区分i和l).

CRNN 还引入了BatchNormalization模块,加速模型收敛,缩短训练过程。

输入图像为灰度图像(单通道);高度为32,这是固定的,图片通过 CNN 后,高度就变为1,这点很重要;宽度为160,宽度也可以为其他的值,但需要统一,所以输入CNN的数据尺寸为 (channel, height, width)=(1, 32, 160)

2. Map-to-Sequence

我们是不能直接把 CNN 得到的特征图送入 RNN 进行训练的,需要进行一些调整,根据特征图提取 RNN 需要的特征向量序列。

3. RNN

完全解析RNN, Seq2Seq, Attention注意力机制

循环神经网络RNN结构.被广泛应用于自然语言处理、机器翻译、语音识别、文字识别等方向.

在此项目中,Recurrent Layers 是一个深层双向LSTM网络.在卷积特征的基础上继续提取文字序列特征.

所谓深层RNN网络,是指超过两层的RNN网络

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN.主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

anglenet