paddleOcr训练一个属于自己的模型

news2025/1/16 1:51:04

自己配置开发环境的时候踩了不少坑,现在记录下来,以后需要了可以直接找到现成的代码,也希望能够帮到有需要的小伙伴

目录

  • (一)、运行环境搭建
    • 1、Anaconda部分
      • Anaconda安装
      • Anaconda创建虚拟环境指令
      • Anaconda Prompt工作路径的切换
    • 2、 PaddleOcr部分
      • paddleocr 安装
      • 点击这里实现下载:
      • paddleocr其他依赖库安装
    • 3、Paddle部分
      • paddle2.5.1安装CPU版本
    • 4、 验证环境
  • (二)、训练属于自己的模型
    • 1、数据准备
      • (1)、数据标注
      • (2)、数据集制作
    • 2、训练文字检测模型
      • (1)、下载模型训练文件:
      • (2)、 配置模型文件
      • (3)、开始训练
      • (4)、测试训练模型
    • 3、训练文字识别模型
      • (1)、 配置模型文件
      • (2)、模型训练
      • (3)、模型测试
    • 4、转换成推理模型
    • 5、推理模型应用
  • 三、总结
      • (1)、File No found文件没找到:
        • 01、paddleocr里面的文件没找到
        • 02、paddle里面的文件没找到
      • (2)Import Error:
      • (3)Os相关的报错
  • 四、参考博客

(一)、运行环境搭建

1、Anaconda部分

Anaconda安装

本站有很多安装教程,我就不再重复造车轮了,选了一个讲的比较详细的,可以参考使用Anaconda安装教程

Anaconda创建虚拟环境指令

在开始菜单搜索Anaconda,点击以下应用进入anaconda终端。

在这里插入图片描述

输入以下代码用来创建虚拟环境,Al_Ocr为虚拟环境命名,可以自己取名字,后面是要安装的python版本。

conda create -n Al_Ocr python=3.8

如图
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#进入虚拟环境指令
activate Al_Oc


#离开虚拟环境指令
deactivate

Anaconda Prompt工作路径的切换

因为我遇到的情况需要切换代码执行路径,所以也记录一下切换方法

# 切换到根目录
cd /
# 切换到D盘
D:
# 切换到D盘指定目录
cd D:\Anaconda\envs\Al_Ocr\Lib\site-packages\PaddleOCR-release-2.5

在这里插入图片描述

2、 PaddleOcr部分

paddleocr 安装

点击这里实现下载:

paddleocr下载

下载完成之后解压缩到当前虚拟环境中的sitepakges目录下,比如我这个目录是

D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr

paddleocr其他依赖库安装

打开anaconda终端,进入PaddleOC目录下激活环境并输入以下指令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

3、Paddle部分

paddle2.5.1安装CPU版本

python -m pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simpl

【顺利就不用看这里】如果出现以下错误可以换地址重新安装

ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages/0

报上面的错误信息换成下面的地址下载和安装

python -m pip install paddlepaddle==2.5.1 -i https://pypi.douban.com/simpl

需要先升级:

python.exe -m pip install --upgrade pi

4、 验证环境

进入以下网址下载官方模型:

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md

官网模型下载链接直达

需要下载两个模型用来进行验证,分别为文本检测模型文本识别模型,选择下载推理模型

文本检测模型

文本检测推理模型
文本识别模型

文本识别推理模型

模型下载后为两个压缩包,在PaddleOCR根目录下新建文件夹inference_model

在这里插入图片描述
将下载好的模型解压缩在刚刚新建的文件夹,处理好是这样的层级

在这里插入图片描述

打开anaconda终端激活环境Al_Ocr进入到paddleocr目录下运行以下指令,其中image_dir所要识别的图片路径det_model_dir为刚才下载的文字检测模型rec_model_dir为刚才下载的文字识别模型

python tools/infer/predict_system.py  --image_dir="D:\OCR\New_model\cut1\test.jpg" --det_model_dir="./inference_model/ch_PP-OCRv3_det_infer/" --rec_model_dir="./inference_model/ch_PP-OCRv3_rec_infer"

原图如下:
在这里插入图片描述
在这里插入图片描述
如果出现上面的界面,说明环境搭建成功,接下来就是训练自己的模型了

(二)、训练属于自己的模型

1、数据准备

(1)、数据标注

在Anaconda Prompt终端进入paddleOC根目录下,再输入
cd PPOCRLabel 进入目录,

cd PPOCRLabel

输入以下代码打开打标软件

python PPOCRLabel.py --lang ch

如果报错说PPCORLabel没找到,就去安装一下PPOCORLabel库

pip install PPOCRLabel

#如果运行了这一步,后面切换执行文件时应该在.\site-packages\PPOCRLabel,而不是.\site-packages\paddleocr\PPOCRLabel,如果还想按照之前的地址执行就需要把PPOCRLabel文件夹复制到paddleocr文件夹下

打开后点击文件,点击打开目录选择需要打标签的数据集文件夹,我这以刚刚的截图为例。如下图所示。

在这里插入图片描述

选择自动标注点击ok等待自动标注完成

在这里插入图片描述

然后从第一张开始检查,漏打标的按下Q框出字体,打标文字错误的,点击方框,在右边修改,并对每一个方框给出关键词列表(点击编辑点击更改box关键词信息)。最后删除无用信息,切换下一张快捷键为D,如下图所示。

在这里插入图片描述
全部打标完成之后,点击文件选择导出标记结果,再点击文件选择导出识别结果,完成后再文件夹多出四个文件fileState,Label,rec_gt, crop_img。其中crop_img中的图片用来训练文字识别模型fileState记录图片的打标完成与否Label训练文字检测模型的标签rec_gt训练文字识别模型的标签

在这里插入图片描述
打标签告一段落。下面进行数据集的制作

(2)、数据集制作

在PaddleOCR根目录下建立train_data文件夹并且将打标签生成的文件和图片放在该文件夹下
在这里插入图片描述
打开Anaconda Prompt终端进入PPOCRLabel的文件夹下,输入以下代码进行数据集的划分

python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 --datasetRootPath ../train_data/drivingData

输入指令之后,在train_data文件夹下会出现以下文件,其中det是用来训练文字检测的数据集rec是用来训练文字识别的数据集。此时可以删去drivingData。
在这里插入图片描述

在这里插入图片描述

此时文字检测和文字识别的数据集就都制作好了。

2、训练文字检测模型

(1)、下载模型训练文件:

模型下载链接直达

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md

在上面网站下载官方训练模型,注意不是推理模型。

文本检测模型:
在这里插入图片描述

文本识别模型:

在这里插入图片描述
下载之后在paddleocr根目录下建立pretrain_models文件夹,并将训练模型解压至该文件夹下。如下图所示:

在这里插入图片描述

(2)、 配置模型文件

下面配置模型文件。

打开模型配置文件,如下图所示,我一般用ch_det_res18_db_v2.0.yml这个配置文件。

在这里插入图片描述

对于配置文件的说明可以查看官网的说明文件,链接放在这里了

配置文件说明

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/config.md

我们需要手动更改的有以下几个地方:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述配置好了之后就可以开始训练了

(3)、开始训练

打开anaconda prompt终端,激活环境进入到paddleocr根目录下。输入以下指令开始模型训练。

python tools/train.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml

在这里插入图片描述在这里插入图片描述在这里插入图片描述

如果报错说yaml没找到的话我们手动安装一下即可

pip install pyyaml

(4)、测试训练模型

模型训练完之后会在文件夹下保存训练好的模型,具体保存的文件夹看配置文件,这就是模型保存的路径。

save_model_dir: ./output/ch_db_res18/

打开文件夹,文件组成大概如下图所示。

在这里插入图片描述
我们使用best_accuracy.pdparams进行我们的模型测试。

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要测试的模型Global.infer_img为所要检测的图片路径

python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml -o Global.pretrained_model=output/ch_db_driving/best_accuracy.pdparams Global.infer_img="D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\det\test\1.jpg"

测试结果图片没有

文字检测模型的训练和测试就告一段落,下面进行文字识别模型的训练和测试。

3、训练文字识别模型

(1)、 配置模型文件

    在第三节已经下载了文字识别的模型所以不再多叙述。文字识别我一般使用的配置文件为ch_PP-OCRv3_rec.yml

在这里插入图片描述
修改的地方和文字检测修改的差不多。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)、模型训练

打开anaconda prompt终端,激活环境进入到paddleocr根目录下。输入以下指令开始模型训练。

python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml

训练完之后模型保存路径和文件组成和文字检测差不多,不再多叙述。

(3)、模型测试

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要测试的模型,Global.infer_img为所要检测的图片路径。

python tools/infer_rec.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/rec/best_accuracy.pdparams Global.infer_img=“D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\rec\test\3.jpg”

文字识别模型的训练和测试就告一段落。

4、转换成推理模型

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要推理的模型Global.save_inference_dir为所要保存推理模型的位置。推理模型是可以直接被调用进行识别和检测。分别把训练好的文字检测模型和文字识别模型推理。

文字检测模型推理

 python tools/export_model.py -c "./configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml" -o Global.pretrained_model="./output/ch_db_driving/latest.pdparams" Global.save_inference_dir="./inference_model/det/"

文字识别模型推理

python tools/export_model.py -c "./configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml" -o Global.pretrained_model="./output/rec_mobile_pp-OCRv2/latest.pdparams" Global.save_inference_dir="./inference_model/rec/"

输入上面指令后推理模型将会出现在paddleoce根目录下文件夹inference_model,他的文件结构如下图所示。

在这里插入图片描述
其中detrec即是我们的推理模型,可以用predict_system.py进行验证。打开anaconda终端输入以下指令

python tools/infer/predict_system.py --image_dir="D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\drivingData\0.jpg" --det_model_dir="./inference_model/det/" --rec_model_dir="./inference_model/rec"

识别图片会保存到inference_results文件夹下

5、推理模型应用

把模型训练出来之后还要对其进行应用,怎么去利用模型来实现我们需要的效果也是非常关键的一部分。

通过以下代码可以将咱们训练的模型在程序中调用,file_path为所要识别的图片路径,result为识别结果,texts是将结果中的纯文字部分提取出来进行下一步处理。

from paddleocr import PaddleOCR, draw_ocr
 
ocr = PaddleOCR(use_angle_cls=True, rec_model_dir='./inference_model/rec',
                    det_model_dir='./inference_model/det')
result = ocr.ocr(file_path, cls=True)
result = result[0]
texts = [line[1][0] for line in result]

三、总结

这一路搭建环境遇到了很多的坑,总结下来有三类:

(1)、File No found文件没找到:

01、paddleocr里面的文件没找到

有ppocr、PPOCRLabel,总之就是paddleocr下的任意文件没找到都会报错,解决办法就是去官网下载压缩包,解压

02、paddle里面的文件没找到

这个一定要根据自己机器的配置来,cpu版的装gpu版的包就会各种报错,解决办法就是卸载重装一遍

(2)Import Error:

这个一般都是因为包没找到,以及版本不兼容,建议通过requirements.txt安装

(3)Os相关的报错

这个是跟文件名以及分隔符与系统不匹配导致的,可以尝试往这个方向去解决

四、参考博客

这篇博客一来是记录了我自己实践的一些经验,踩的一些坑,为了避免后面换了一个设备搭建环境时再踩一遍,二来也做一个备份,我看到了一篇写的特别详细的教程,怕因为各种原因找不着了,所以改了改做成了自己的,方便后面找他

PaddleOCR训练属于自己的模型详细教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1192155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s二进制(ETCD的部署安装)

角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …

双十一剁手节,MobPush助力各大电商平台提前锁定潜力用户

一年一度的购物狂欢节双十一还未到来,各大电商平台却早已摩拳擦掌跃跃欲试。据统计,10月31日晚8点,京东百亿补贴日开场不到4分钟,京东百亿补贴频道成交额破亿,抖音商城整体GMV较去年双11同期提升200%,支付用…

SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)

主要分为客户端和服务端 服务端 pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.3</version><relativePath/> <!-- lookup parent fro…

loading动效实现

在站上闲逛发现一个非常有意思的loading效果&#xff0c;跟着大佬仿写了一下Vue版本的。 https://blog.csdn.net/tianjian4592/article/details/44538605 直接放源码 <script setup> import {ref, defineProps, watch} from "vue";const props defineProps({…

三菱FX3U系列-定位指令

目录 一、简介 二、指令形式 1、相对定位[DRVI、DDRVI] 2、绝对定位[DRVA、DDRVA] 三、总结 一、简介 定位指令用于控制伺服电机或步进电机的位置移动。可以通过改变脉冲频率和脉冲数量来控制电机的移动速度和移动距离&#xff0c;同时还可以指定移动的方向。 二、指令形…

YOLOv5检测界面-PyQt5实现

1.将detect.py运用到界面 要将 YOLOv5 的检测结果与 PyQt 界面结合&#xff0c;你需要进行一些额外的步骤。以下是一个简单的示例代码&#xff0c;展示如何使用 YOLOv5 进行目标检测并在 PyQt 界面中显示结果。 首先&#xff0c;确保你已经安装了必要的库&#xff1a; pip …

C++初阶(九)内存管理

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C/C内存分布1、选择题2、填空题3、sizeof 和 strlen 区别&#xff1f;4、总结 二、 C语言…

『Nacos』 入门教程

前言 本文为 Nacos 平台快速入门教程&#xff0c;本文将会使用通俗易懂的语言手把手带您了解、使用 Nacos 平台&#xff0c;适合未接触过 Nacos 的初学者 官方手册&#xff1a;Nacos | Nacos 官方仓库&#xff1a;alibaba/nacos 版本&#xff1a;2.X 本文示例代码仓库&#xf…

Power Automate-时间戳转化为时区时间

点击编辑 在两个步骤之间再插入一个新步骤&#xff0c;添加操作 在内置里点击日期时间 点击转换时区 下面再修改为已转换的时间

「Verilog学习笔记」4位数值比较器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这里要注意题目的“门级描述方式”&#xff0c;所以我们只能使用基本门电路&#xff1a;&,|,!,^,^~。 具体实现思路&#xff1a;通过真值表得出Y0 Y1 Y2的逻辑表达…

【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家

目录 前言1 使用HAI服务作画的步骤1.1 注册腾讯云账户1.2 创建算力服务器1.3 进入模型管理界面1.4 汉化界面1.5 探索AI绘画 2 模型参数的含义和调整建议2.1 模型参数的含义和示例2.2 模型参数的调整建议 3 调整参数作画的实践和效果3.1 实践说明3.2 实践效果13.3 实践效果23.4 …

电梯用电量-第10届蓝桥杯国赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第8讲。 电梯用电量&#x…

闪站侠洗衣洗鞋管理系统app小程序开发;

闪站侠洗护软件系统为您提供全面的洗衣洗鞋解决方案&#xff0c;系统多门店&#xff0c;多网点。为您开通公中号小程序&#xff0c;并与顺丰、天猫、抖音、美团点评等第三方平台紧密连接。 我们解决洗衣工厂/门店的五大问题&#xff1a; 一、效率 从门店收衣到工厂出库&#xf…

解决GitHub不能访问

1&#xff1a;ping github.com,得到可以解析的地址 2&#xff1a;在host文件里面添加地址&#xff08;记事本打开&#xff09;。 3&#xff1a;可以添加稳定的地址&#xff08;记得地址前加“#”&#xff09; #140.82.121.3 # GitHub #140.82.114.4 # GitHub #140.82.112.4 …

如何构建新一代实时湖仓?袋鼠云基于数据湖的探索升级之路

在之前的实时湖仓系列文章中&#xff0c;我们已经介绍了实时湖仓对于当前企业数字化转型的重要性&#xff0c;实时湖仓的功能架构设计&#xff0c;以及实时计算和数据湖结合的应用场景。 在本篇文章中&#xff0c;将介绍袋鼠云数栈在构建实时湖仓系统上的探索与落地实践&#…

html实现竖直步骤条

1、问题描述 最近碰到一个需求&#xff0c;要把审批流程改为竖直步骤条的形式。本来想直接抄网上的&#xff0c;但是网上给的要么是水平步骤条&#xff0c;要么是集成在框架里的&#xff0c;要么就是人家写的太复杂了&#xff0c;js&#xff0c;css一大堆。 2、我的代码 代码下…

【沁恒 CH32V208 开发板免费试用】+ U盘/ SD NAND读写与多功能数码相框

CH32V208继承了沁恆产品一贯的传统&#xff0c;即U盘的读写功能。这使得尽管CH32V208的闪存要比CH32V307的小一倍&#xff0c;但有了U盘读写功能的支持就可有效地缓解用户对存储空间的需求。它除了支持U盘的读取&#xff0c;还支持对CS SD NAND (贴片式TF卡/SD卡) 这类器件的使…

小黑子—springMVC:第一章 请求处理与响应数据

springMVC入门1.0 1、小黑子的springMVC基础1.1 SpringMVC概述1.2 SpringMVC快速入门1.3 Controller中直接注入spring中维护的Bean1.4 SpringMVC关键组件浅析 2、SpringMVC的请求处理2.1 请求映射路径配置2.2 请求数据的接收2.2.1 键值对方式接收数据2.2.1 - I RquestParam属性…

Linux Hadoop平台伪分布式安装(Hive on Spark)

&#x1f4d4;Linux Hadoop 伪分布式安装(Hive on Spark) 安装目录 1. JDK2. Hadoop3. MysqlHive3.1 Mysql8安装3.2 Hive安装 4. Spark4.1 Maven安装4.2 Scala安装4.3 Spark编译并安装 5. Zookeeper6. HBase 版本概要&#xff1a; jdk&#xff1a; jdk-8u391-linux-x64.tar.gz…

浅析SR隧道路径批量构造方法

为什么要仿真PCE LSP下发隧道路径&#xff1f; 在大型的多区域网络中&#xff0c;路径计算非常复杂。在某些场景下&#xff0c;为了完成路径计算&#xff0c;需要在控制器上部署特殊的计算组件&#xff0c;并需要不同区域中的节点之间协作。这使得网元在进行路径计算时效率低&…