Crnn中文end-to-end识别

中文识别利用crnn训练英文的网络来训练中文,字符个数5529左右,中文的顺序按照tesseract开源项目复制过来的。

github: 
https://github.com/bear63/sceneReco 
model: 
https://pan.baidu.com/s/1i5OLwt3 crnn文字识别模型 
https://pan.baidu.com/s/1i4Hd9zv ctpn文字检测模型 
1:样本获取

**算法论文:**
      Synthetic Data for Text Localisation in Natural Images
      Github: https://github.com/ankush-me/SynthText
**词库:**
     https://pan.baidu.com/s/10anmu  + 英文词汇 经过处理后得到大约500兆
     6000万词组
**字体:**
    ubntu系统下支持中文的字体,选了大概10种字体左右
**背景图片库:**
   http://zeus.robots.ox.ac.uk/textspot/static/db/bg_img.tar.gz
   大约有一万张分割好的图片
**算法大致过程:**
   随机从背景图片库中选出一张图片,随机从词库中选出一些词组,与背景图片分割                 -      的块进行匹配,选好字体,颜色,大小,变换等信息,将词组写入背景块中。  
   扣取背景块矩形框作为一个个样本。
**样本类似**

虎头山 
王兴海 
航天技术学院 
古木剑


2:网络设计:

网络结构 
网络分析: 
1:input: 输入文字块,归一化到32*w 即height缩放到32,宽度按高度的比率缩 放,当然,也可以缩放到自己想要的宽度,如128(测试时统一缩放到[32,128],训练时为批次训练,缩放到[32,Wmax]) 
下面以32*128(w,h)分析 
2:conv3层时数据大小为256*8*32,两个pooling层宽高各除以4 
3:pooling2层时 步长为(2,1) dilation (1,1) 
所以此时输出为256*4*33 
4:bn层不改变输出的大小(就是做个归一化,加速训练收敛,个人理解),同样p3层时,w+1,所以pooling3层时,输出为512*2*34 
5:conv7层时,kernel 为2*2,stride(1,1) padding(0,0) 
Wnew = (2 + 2 * padW - kernel ) / strideW + 1 = 1 
Hnew = 33 
所以conv7层输出为512*1*33 
6: 后面跟两个双向Lstm,隐藏节点都是256 
Blstm1输出33*1*256 
Blstm2输出33*1*5530 5530 = 字符个数 + 非字符 = 5529 + 1 
最终的输出结果直观上可以想象成将128分为33份,每一份对应5530个类别的概率

3:实验结果

自动生成差不多150万个样本,测试集1500张左右,测试集全对率62%左右。因为硬件限制,所以样本较少,感觉样本数量应该要几千万甚至上亿,模型才会比较稳定。150万个样本训练也没收敛,还有2.5左右的cost.

4:CTPN+CRNN整合场景文字检测识别结果

没有进行版面分析,所以识别结果没有按顺序输出 
其中标点符号训练集较少,错得较多。整体识别率感觉还行,如果加大训练样本至几千万,上亿,模型应该会比较稳定,识别也会比较好 
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值