原始内容来源于:https://zhuanlan.zhihu.com/p/43534801
根据原始内容整理!
1 概述
文字识别是图像领域的常见问题,针对自然场景图像中的文字识别,包括两个步骤:首先进行文字检测,定位图像中文字位置;然后进行文字识别,将图像中的文字区域转换为字符信息。在车牌识别问题中,已定位好车牌位置,因此不需要进行文字检测,只需文字识别。(文字检测内容可参考https://zhuanlan.zhihu.com/p/34757009)。
常用的基于RNN文字识别算法主要有两个框架:CNN+RNN+CTC(CRNN+CTC)和CNN+Seq2Seq+Attention,如下图所示。本文主要介绍 CRNN+CTC(paper:https://arxiv.org/abs/1507.05717,tensorflow实现:https://github.com/bai-shang/crnn_ctc_ocr.Tensorflow)。
2 CRNN+CTC基本网络结构
整个CRNN+CTC网络可以分为三个部分,包括Convlutional Layers,Recurrent Layers,Transcription Layers,如下图所示。
Convlutional Layers:卷积层是一个普通的CNN网络,用于提取输入图像的Convolutional feature maps,即将大小为32 * 100 * 3的图像转换为1 * 25 * 512大小的卷积特征矩阵。
Recurrent Layers:循环网络层是一个深层双向LSTM网络(RNN部分可参考https://zhuanlan.zhihu.com/p/51383402),在卷积特征的基础上继续提取文字序列特征。所谓深层RNN网络,是指超过两层的RNN网络,而对于深层双向RNN网络,主要有2种不同的实现,tf.nn.bidirectional_dynamic_rnn和tf.contrib.