OCR项目学习
文本检测
以上是文本检测的一个综述. 下边是基于psenet实现的一个项目
chineseocr_lite
https://github.com/ouyanghuiyu/chineseocr_lite
https://github.com/whai362/psenet
CRNN
1 | 1. CNN(卷积层),使用深度CNN,对输入图像提取特征,得到特征图; |
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能够在更长的序列中有更好的表现。