场景文字识别Sliding Convolution笔记

出自文章,Scene Text Recognition with Sliding Convolutional Character Models

方法优势:

(1)相对于基于先分割再识别的方法,该方法避免了复杂的字符分割过程。

(2)避免了rnn训练过程中的梯度消失和梯度爆炸的问题,使得训练过程比较容易

(3)相对于基于单词识别的方法,该基于字符识别的方法可以识别基于单词的方法不能识别的单词

(4)识别过程可以高度并行化

整体识别流程图:


首先对输入图片进行overlap型的滑动窗口扫描(英文:步长step4,窗口大小为32*32,中文:步长step8,窗口大小为32*40)。并且将整个的输入图片按照窗口大小切割出来。然后将所有切割出的图片按照batch方向输入神经网络。神经网络会输出分类后的结果。然后Transcription Layer将这些分类结果按照顺序合并起来,然后送入CTC中。CTC会预测出最终的识别结果。

网络结构:

其中,ksp分别代表卷积核大小,滑动步长,padding大小

crnn的对比:

crnn是白翔老师的那篇文章。和这篇文章有异曲同工之处。

(1)crnn整体结构为CNN+RNN+CTC的结构,这篇Sliding Convolution结构为CNN+CTC结构。(2Sliding Convolution文章对于输入的图片做了切割,然后切割好的图片可以跑batch,然后得出每个分割图片的识别结果。而crnn是一行文字图片直接输入,从处理时间上看,没有Sliding Convolution更加效率。

(2)Sliding Convolution文章的结构使用了全连接层,输入图片大小被固定为32*32。而crnn只保证高度为32,输入宽度不受限制。

自己的一些想法:

(1)Sliding Convolution文章的网络结构,最后的2个全连接层可以换为1*1卷积层,或者RNN

(2)通过Sliding Convolution文章中跑batch的思想,对于crnn,也可以将输入图片平均切分成几份。然后走batch。注意这里只走cnnbatchcnn跑完后,做一个batch方向的concat。然后输入rnn+ctc。同样可以实现batch思想的加速。同时对训练过程不会有影响,还是使用原始的训练就可以,而测试程序,只需要再cnn之后加个concat操作既可。

这里我自己修改的程序是使用的reshape操作实现的。由于我这里是对输入图片平均切分的。所以切的份数太多,识别效果会有影响。切的份数越多加速越明显,但是加速比不是很明显。只有微量的加速。



CTC基础建议看这篇:

https://distill.pub/2017/ctc/




猜你喜欢

转载自blog.csdn.net/qq_14845119/article/details/79312860
今日推荐