前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于深度学习的自然场景文字检测及端到端的OCR中文文字识别

基于深度学习的自然场景文字检测及端到端的OCR中文文字识别

作者头像
机器学习AI算法工程
发布2019-10-28 15:51:37
2.3K0
发布2019-10-28 15:51:37
举报
实现功能
  • 文字方向检测 0、90、180、270度检测
  • 文字检测 后期将切换到keras版本文本检测 实现keras端到端的文本检测及识别
  • 不定长OCR识别

本文完整项目代码,模型预训练权重,和数据集获取方式

关注微信公众号 datayx 然后回复 OCR 即可获取。

环境部署

代码语言:javascript
复制
Bash
##GPU环境
sh setup.sh
##CPU环境
sh setup-cpu.sh
##CPU python3环境
sh setup-python3.sh使用环境:python3.6+tensorflow1.7+cpu/gpu

模型训练

  • 一共分为3个网络
  • 1. 文本方向检测网络-Classify(vgg16)
  • 2. 文本区域检测网络-CTPN(CNN+RNN)
  • 3. EndToEnd文本识别网络-CRNN(CNN+GRU/LSTM+CTC)

文字方向检测-vgg分类

基于图像分类,在VGG16模型的基础上,训练0、90、180、270度检测的分类模型. 详细代码参考angle/predict.py文件,训练图片8000张,准确率88.23%

模型地址

文字区域检测CTPN

支持CPU、GPU环境,一键部署

文本检测训练参考

https://github.com/eragonruan/text-detection-ctpn

OCR 端到端识别:CRNN

ocr识别采用GRU+CTC端到到识别技术,实现不分隔识别不定长文字

提供keras 与pytorch版本的训练代码,在理解keras的基础上,可以切换到pytorch版本,此版本更稳定

如果你只是测试一下

代码语言:javascript
复制
运行demo.py  写入测试图片的路径即可,
如果想要显示ctpn的结果,
修改文件./ctpn/ctpn/other.py
 的draw_boxes函数的最后部分,
 cv2.inwrite('dest_path',img),如此,
 可以得到ctpn检测的文字区域框以及图像的ocr识别结果

如果你想训练这个网络

1 对ctpn进行训练

  • 定位到路径--./ctpn/ctpn/train_net.py
  • 预训练的vgg网络路径VGG_imagenet.npy将预训练权重下载下来,pretrained_model指向该路径即可, 此外整个模型的预训练权重checkpoint
  • ctpn数据集还是百度云数据集下载完成并解压后,将.ctpn/lib/datasets/pascal_voc.py 文件中的pascal_voc 类中的参数self.devkit_path指向数据集的路径即可

2 对crnn进行训练

  • keras版本 ./train/keras_train/train_batch.py model_path--指向预训练权重位置 MODEL_PATH---指向模型训练保存的位置keras模型预训练权重
  • pythorch版本./train/pytorch-train/crnn_main.py
代码语言:javascript
复制
parser.add_argument(
   '--crnn',
   help="path to crnn (to continue training)",
   default=预训练权重的路径,看你下载的预训练权重在哪啦)
parser.add_argument(
   '--experiment',
   help='Where to store samples and models',
   default=模型训练的权重保存位置,这个自己指定)

识别结果展示

文字检测及OCR识别结果

主要是因为训练的时候,只包含中文和英文字母,因此很多公式结构是识别不出来的

看看纯文字的

可以看到,对于纯文字的识别结果还是阔以的呢,感觉可以在crnn网络在加以改进,现在的crnn中的cnn有点浅,并且rnn层为单层双向+attention,目前正在针对这个地方进行改动,使用迁移学习,以restnet为特征提取层,使用多层双向动态rnn+attention+ctc的机制,将模型加深,目前正在进行模型搭建,结果好的话就发上来。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型训练
  • 文字方向检测-vgg分类
  • OCR 端到端识别:CRNN
  • ocr识别采用GRU+CTC端到到识别技术,实现不分隔识别不定长文字
    • 如果你想训练这个网络
      • 1 对ctpn进行训练
      • 识别结果展示
      • 文字检测及OCR识别结果
      相关产品与服务
      文字识别
      文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档