GitHub - PaddlePaddle/PaddleOCR at release/2.1

一.环境准备

pip3 install --upgrade pip如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装python -m pip install paddlepaddle-gpu==2.2.0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html或者python3 -m pip install paddlepaddle-gpu==2.0.0 -i https://mirror.baidu.com/pypi/simple如果您的机器是CPU,请运行以下命令安装python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple
cd PaddleOCR
pip3 install -r requirements.txt

二.数据准备

目录结构举例:

datasets

-------train_images

-------train.txt

-------test_images

-------test.txt

将数据整理成每行如下格式的一个txt文件,中间用"\t"分隔,例 train.txt:

" 图像文件名                    json.dumps编码的图像标注信息"
train_images/img_61.jpg    [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]

左边是图像相对该txt的路径,右边是图像标注信息,是包含多个字典的list,字典中的 points 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。 transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。

代码示例:

gen_label.py

# -*- coding: utf-8 -*-
import jsondef gen_det_label(label_file, out_label):with open(out_label, 'w',encoding='utf-8') as out_file:with open(label_file, 'r',encoding='utf-8') as f:for line in f.readlines():lines=line.replace('\n','').split('\t')img_path =lines[0].replace('./','')  #获取图像路径#获取labellabel = []with open(lines[1], 'r',encoding='utf-8') as f:for line in f.readlines():tmp = line.strip("\n\r").replace("\xef\xbb\xbf", "").replace("\ufeff", "").split(',')points = tmp[:8]s = []for i in range(0, len(points), 2):b = points[i:i + 2]b = [int(t) for t in b]s.append(b)result = {"transcription": tmp[8], "points": s}label.append(result)#保存out_file.write(img_path + '\t' + json.dumps(label, ensure_ascii=False) + '\n')

格式转换:

label_file='./datasets/train.txt'
out_label='./datasets/train_label.txt'
gen_det_label(label_file, out_label)

二.修改配置

PaddleOCR的文本检测算法 配置文件在 configs/det

以训练 sast 算法为例

打开 configs/det/det_r50_vd_sast_icdar15.yml

按箭头顺序修改,其他默认即可

下载预训练模型,放到上述配置文件3处填的路径下

注意:配置文件中3处,预训练模型的路径最后一级可以只填名称,模型文件的后缀“.pdparams”可以不要填。

# 下载MobileNetV3的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV3_large_x0_5_pretrained.pdparams# 或,下载ResNet18_vd的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet18_vd_pretrained.pdparams
# 或,下载ResNet50_vd的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vd_ssld_pretrained.pdparams

三.开启训练

将tools/train.py 复制到tools文件夹同级的根目录下

命令行开启

python train.py -c configs/det/det_r50_vd_sast_icdar15.yml 

或者添加默认的配置文件:

打开tools/program.py 在箭头位置添加default ,然后可直接 python train.py

四.测试检测效果

将tools/infer_det.py     复制到tools文件夹同级的根目录下

python infer_det.py -c configs/det/det_r50_vd_sast_icdar15.yml

测试图片、模型路径设置在det_r50_vd_sast_icdar15.yml 的3,4 位置,入下图:

五.infierence模型导出与预测

inference 模型(paddle.jit.save保存的模型) 一般是模型训练,把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。 训练过程中保存的模型是checkpoints模型,保存的只有模型的参数,多用于恢复训练等。 与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。

检测模型转inference 模型方式:

python tools/export_model.py
-c
configs/det/det_r50_vd_db.yml
-o
Global.pretrained_model=./pretrain_models/best_accuracy/best_accuracy  #best_accuracy即训练时保存下的最优模型的名称,由三个文件best_accuracy.pdopt、best_accuracy.pdparams、best_accuracy.states
Global.save_inference_dir=./pretrain_models/inference #此路径在运行前要新建好

inference 模型预测

# -*- coding: utf-8 -*-
from paddleocr import PaddleOCR, draw_ocr
from PIL import Image
import timeocr = PaddleOCR(det_model_dir='pretrain_models/inference/',use_gpu=False,det_max_side_len=1000,det_db_box_thresh=0.4) # need to run only once to download and load model into memoryimg_path = 'image/img/9.jpeg's=time.time()
result = ocr.ocr(img_path, rec=False,cls=False)
e=time.time()
#for line in result:
#    print(line)print('耗时:',e-s)
# 显示结果
image = Image.open(img_path).convert('RGB')
im_show = draw_ocr(image, result, txts=None, scores=None)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

PaddleOCR 文本检测训练+推理模型转换教程相关推荐

  1. paddleocr文本检测模型的训练

    1.环境的安装和开源项目的下载 首先我个人建议,玩深度学习的话,不管是工作还是学习,最起码要配一个有GPU的电脑.我个人有着血淋淋的教训,我本人是电气工程的一名学生,本科期间一点深度学习和机器学习的基 ...

  2. Windows10系统下PaddleOCR文本检测和文本识别安装

    环境准备: python 我的是python3.7(python3.8尝试失败) 安装pip 一.升级pip python -m pip install --upgrade pip 二.安装Paddl ...

  3. 文本检测训练结果评测

    1. 评测链接地址参照:http://rrc.cvc.uab.es/?ch=4&com=mymethods&task=1 2. 将测试的输出结果压缩为zip包,代码如下: import ...

  4. paddleocr文本识别模型的训练

    1.准备数据 训练自己的模型首先要有数据集,在我写的<paddleocr文本检测模型的训练>这篇文章的时候我已经提供了一份数据集,里面包含了文本检测和识别的数据集,由于那篇文章是文本检测的 ...

  5. PPOCR文本检测+识别:电表读数和编号识别

    0 项目背景 在本系列项目中,我们尝试基于Paddle工具库实现一个OCR垂类场景.原始数据集是一系列电度表的照片,类型较多,需要完成电表的读数识别,对于有编号的电表,还要完成其编号的识别. 1 数据 ...

  6. PaddleOCR #使用PaddleOCR进行光学字符识别(PP-OCR文本检测识别)

    引言: PaddleOCR 是一个 OCR 框架或工具包,它提供多语言实用的 OCR 工具,帮助用户在几行代码中应用和训练不同的模型.PaddleOCR 提供了一系列高质量的预训练模型.这包含三种类型 ...

  7. CVPR 2022 | 阿里华科提出:针对场景文本检测的视觉语言模型预训练

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:CSIG文档图像分析与识别专委会 本文简要介绍了发表于CV ...

  8. 基于PaddleOCR的DBNet多分类文本检测网络之身份证识别

    目的 全网的身份证识别大部分都是通过识别整张图片,然后再对数据进行格式化解析,这会照成很大的局限性,比如非摆正图片,图片上有其他干扰信息,这就会导致通过此方式来识别大大降低了准确率和不确定性.这篇文章 ...

  9. Python基于CRNN&CTPN的文本检测系统(源码&教程)

    1.背景 文本是人类最伟大和最具影响力的发明之一,是人类智慧的结晶,是人类文化.思想传承的一种基本的表达方式和不可或缺的载体.在21世纪,文本与日常生活密切相关.描述.理解万事万物,表达情感,与他人交 ...

最新文章

  1. AWS — AWS EKS
  2. Vim 中文件目录浏览插件——NERD tree
  3. node --- 实践中理解跨域
  4. IE11下用forms身份验证的问题
  5. 使用SSL和Spring Security保护Tomcat应用程序的安全
  6. Springboot中@ComponentScan 注解
  7. 微信小程序与Vue js数据渲染对比
  8. Memcached 及 Redis 架构分析和比较
  9. 关于英文系统中的中文乱码的更改
  10. 禁用Windows 10系统更新
  11. pycharm访问服务器终端
  12. ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑
  13. JS判断页面是否刷新
  14. Docsify支持Markdown多种流程图
  15. 路由器与无线网如何连接到服务器,两个路由器无线连接怎么设置_如何将两个路由器无线连接-192路由网...
  16. Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
  17. 力天创见无感人脸识别方案
  18. 725 数模 空气污染问题研究 (15 五一 B)
  19. PostgreSQL 用 CTE语法 + 继承 实现平滑拆分大表
  20. 特斯拉前高管:马斯克发推特之前 很多员工就已知晓私有化计划

热门文章

  1. 在制作只有一页的WORD小报时再添加一页
  2. Nginx+Tomcat+Memecached实现session共享配置
  3. OpenCV-计算二维矢量幅值cv::magnitude
  4. 万能电子狗升级工具_HUD抬头显示,车萝卜再推新品,屏幕全新升级
  5. verilog赋多位值_Verilog入门学习笔记——第一弹
  6. 多年软件测试大牛分享成长经历,一个好的软件测试工程师应该做到这些!
  7. 确保河道环境_扮靓美丽河湖 | 河道保洁“神器”, 上线!
  8. Ant Design引入Echarts
  9. 查看系统中支持CUDA的设备数量和属性---deviceQuery示例
  10. 剑指offer面试题[16]-反转链表