场景文字识别Sliding Convolution笔记

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

方法优势:

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

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

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

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

 

整体识别流程图:

 

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

 

 

 

网络结构:

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

 

和crnn的对比:

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

(1)crnn整体结构为CNN+RNN+CTC的结构,这篇Sliding Convolution结构为CNN+CTC结构。(2)Sliding 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。注意这里只走cnn的batch。cnn跑完后,做一个batch方向的concat。然后输入rnn+ctc。同样可以实现batch思想的加速。同时对训练过程不会有影响,还是使用原始的训练就可以,而测试程序,只需要再cnn之后加个concat操作既可。

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

 

 

CTC基础建议看这篇:

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

 

自己的实现:

 

https://github.com/watersink/sliding_convolution

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值