CRNN端到端文字识别
Convolutional Recurrent Neural Network(CRNN),华科白翔老师组的作品,An End-to-End Trainable Neural Network for Image-based Sequence Recognition and ItsApplication to Scene Text Recognition
整体流程:
CNN+biLSTM+CTC
网络结构:
网络的结构综合了CNN+RNN,
(1) 其中Max pooling中的窗口大小为1*2,保证提出的特征具有横向的长度,有利于比较长的文本的识别
(2) CNN+RNN的训练比较困难,所以加入了BatchNorm,有助于模型收敛
(3) 在300dpi的分辨率下,一个中文汉字的宽度大约为50pix,一个英文字母的宽度大约为20pix,作者上面提供的网络模型,经过4个pooling和最后一个卷积(valid模式),总共会使得原图的宽度缩小pow(2,5)倍,即缩小32倍。而实际使用中,假设都使用一个像素预测一个结果,一个英文字母最多可以缩小20倍,一个中文最多可以缩小50倍。所以作者32倍的缩放对英文会有问题。我这里的建议是,将第三个或者第四个pooling的stride改为(1,2),这样就会使得最终的宽度只缩小16倍。从而满足实际需要。
优势:
(1) 可以端到端训练
(2) 不需要进行字符分割和水平缩放操作,只需要垂直方向缩放到固定长度既可,同时可以识别任意长度的序列
(3) 可以训练基于词典的模型和不基于词典的任意模型
(4) 模型速度快,并且很小,本人原始ckpt模型100M,固化后40M,量化后只有10M。
References:
http://mc.eistar.net/~xbai/CRNN/crnn_code.zip
https://github.com/bgshih/crnn
https://github.com/Belval/CRNN