PaddleOCR 文本检测训练+推理模型转换教程
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 文本检测训练+推理模型转换教程相关推荐
- paddleocr文本检测模型的训练
1.环境的安装和开源项目的下载 首先我个人建议,玩深度学习的话,不管是工作还是学习,最起码要配一个有GPU的电脑.我个人有着血淋淋的教训,我本人是电气工程的一名学生,本科期间一点深度学习和机器学习的基 ...
- Windows10系统下PaddleOCR文本检测和文本识别安装
环境准备: python 我的是python3.7(python3.8尝试失败) 安装pip 一.升级pip python -m pip install --upgrade pip 二.安装Paddl ...
- 文本检测训练结果评测
1. 评测链接地址参照:http://rrc.cvc.uab.es/?ch=4&com=mymethods&task=1 2. 将测试的输出结果压缩为zip包,代码如下: import ...
- paddleocr文本识别模型的训练
1.准备数据 训练自己的模型首先要有数据集,在我写的<paddleocr文本检测模型的训练>这篇文章的时候我已经提供了一份数据集,里面包含了文本检测和识别的数据集,由于那篇文章是文本检测的 ...
- PPOCR文本检测+识别:电表读数和编号识别
0 项目背景 在本系列项目中,我们尝试基于Paddle工具库实现一个OCR垂类场景.原始数据集是一系列电度表的照片,类型较多,需要完成电表的读数识别,对于有编号的电表,还要完成其编号的识别. 1 数据 ...
- PaddleOCR #使用PaddleOCR进行光学字符识别(PP-OCR文本检测识别)
引言: PaddleOCR 是一个 OCR 框架或工具包,它提供多语言实用的 OCR 工具,帮助用户在几行代码中应用和训练不同的模型.PaddleOCR 提供了一系列高质量的预训练模型.这包含三种类型 ...
- CVPR 2022 | 阿里华科提出:针对场景文本检测的视觉语言模型预训练
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:CSIG文档图像分析与识别专委会 本文简要介绍了发表于CV ...
- 基于PaddleOCR的DBNet多分类文本检测网络之身份证识别
目的 全网的身份证识别大部分都是通过识别整张图片,然后再对数据进行格式化解析,这会照成很大的局限性,比如非摆正图片,图片上有其他干扰信息,这就会导致通过此方式来识别大大降低了准确率和不确定性.这篇文章 ...
- Python基于CRNN&CTPN的文本检测系统(源码&教程)
1.背景 文本是人类最伟大和最具影响力的发明之一,是人类智慧的结晶,是人类文化.思想传承的一种基本的表达方式和不可或缺的载体.在21世纪,文本与日常生活密切相关.描述.理解万事万物,表达情感,与他人交 ...
最新文章
- AWS — AWS EKS
- Vim 中文件目录浏览插件——NERD tree
- node --- 实践中理解跨域
- IE11下用forms身份验证的问题
- 使用SSL和Spring Security保护Tomcat应用程序的安全
- Springboot中@ComponentScan 注解
- 微信小程序与Vue js数据渲染对比
- Memcached 及 Redis 架构分析和比较
- 关于英文系统中的中文乱码的更改
- 禁用Windows 10系统更新
- pycharm访问服务器终端
- ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑
- JS判断页面是否刷新
- Docsify支持Markdown多种流程图
- 路由器与无线网如何连接到服务器,两个路由器无线连接怎么设置_如何将两个路由器无线连接-192路由网...
- Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
- 力天创见无感人脸识别方案
- 725 数模 空气污染问题研究 (15 五一 B)
- PostgreSQL 用 CTE语法 + 继承 实现平滑拆分大表
- 特斯拉前高管:马斯克发推特之前 很多员工就已知晓私有化计划
热门文章
- 在制作只有一页的WORD小报时再添加一页
- Nginx+Tomcat+Memecached实现session共享配置
- OpenCV-计算二维矢量幅值cv::magnitude
- 万能电子狗升级工具_HUD抬头显示,车萝卜再推新品,屏幕全新升级
- verilog赋多位值_Verilog入门学习笔记——第一弹
- 多年软件测试大牛分享成长经历,一个好的软件测试工程师应该做到这些!
- 确保河道环境_扮靓美丽河湖 | 河道保洁“神器”, 上线!
- Ant Design引入Echarts
- 查看系统中支持CUDA的设备数量和属性---deviceQuery示例
- 剑指offer面试题[16]-反转链表