专栏首页机器学习AI算法工程深度学习CTPN+CRNN模型实现图片内文字的定位与识别(OCR)

深度学习CTPN+CRNN模型实现图片内文字的定位与识别(OCR)

源码(PyTorch实现)github 地址:

在公众号 datadw 里 回复 OCR 即可获取。

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整合场景文字检测识别结果

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

http://blog.csdn.net/u013293750/article/details/73188934

本文分享自微信公众号 - 大数据挖掘DT数据分析(datadw)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于谷歌街景多位数字识别技术:TensorFlow的车牌号识别系统

    开发该项目的环境要求有Python,Tensorflow,OpenCV和NumPy等软件。源代码在这里。

    机器学习AI算法工程
  • 网易云音乐歌单的推荐算法解析

    网易云音乐的歌单推荐算法是怎样的呢?最近有很多人关心这个问题。调查了一些网易云音乐的重度患者,小咖带你来看一些路过大神的精辟分析。 分析一: “商品推荐”系统...

    机器学习AI算法工程
  • 基于词典和朴素贝叶斯中文情感倾向分析算法

    每个句子分词 在每个句子分词的过程中,根据他的词性,去除停用词(做简单清洗),比如:专有名词、标点符好、时间(包含节假日)、数字、助词、语气词···· 得到如下...

    机器学习AI算法工程
  • 【一通百通】c/php的printf总结

      程序语言都是触类旁通的,讲人话就是【一通百通】。so今天说说工作中常用的printf的用法吧。

    sunsky
  • eclipse安装lombok插件

    1、下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar

    IT小马哥
  • Redis 基础学习

    最近想解决 [一刻社区] 中的一个 Issue [“增加用户活跃度统计”],其中的要求就是:利用 redis 位计算算法实现用户活跃度计算,突然发现有点不知所以...

    overtrue
  • 两个排序链表合并

    LeetCode 21. Merge Two Sorted Lists 已知两个已排序链表头节点指针L1,L2,将这两个链表合并,合并后仍为有序的,返回合并后...

    小飞侠xp
  • java基础复习

    Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:

    Java架构师历程
  • 2017,外媒眼中最热门数据库是哪个?

    AI 研习社消息:近日,国外知名 IT 技术媒体 Jaxenter 进行了数据库观点调查,对开发者眼中数据库领域最热门的话题、最热门的数据存储以及处理工具进行统...

    AI研习社
  • 开发 | 2017数据库大趋势:PostgreSQL最受关注

    AI科技评论消息,近日,国外知名 IT 技术媒体 Jaxenter 进行了数据库观点调查,对开发者眼中数据库领域最热门的话题、最热门的数据存储以及处理工具进行统...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券