Ocr之PaddleOcr模型训练

目录

一、系统环境

[1 镜像拉取ppocr 进行部署](#1 镜像拉取ppocr 进行部署)

[2 安装paddlepaddle](#2 安装paddlepaddle)

二、训练前的准备

[1 下载源码](#1 下载源码)

[2 预模型下载](#2 预模型下载)

[3 修改模型训练文件yml](#3 修改模型训练文件yml)

[4 编排训练集](#4 编排训练集)

[5 执行脚本进行训练](#5 执行脚本进行训练)

[6 需要修改文件夹名称](#6 需要修改文件夹名称)

三、开始训练

[1 执行训练命令](#1 执行训练命令)

[2 对第一次评估进行解释](#2 对第一次评估进行解释)

[3 引言](#3 引言)

五、总结


一、系统环境

1. 镜像拉取ppocr 进行部署

注:gitee上有提供环境准备的链接【链接】
注:其中用到了下方红框命令

2. 安装paddlepaddle

shell 复制代码
pip install paddlepaddle

二、训练前的准备

1. 下载源码

切换到 /paddle/目录下 下载源码

shell 复制代码
cd /paddle
git clone https://gitee.com/paddlepaddle/PaddleOCR.git
# 切换版本
git checkout origin/release/2.7

2. 预模型下载

注:预训练模型:已经训练好的模型。在此模型基础上训练,对生成新的模型进行增强

模型下载gitee.paddleocr 可直接跳转至下方页面对模型进行下载 这里参考的文章 >> |

注:进入PP-OCR系列模型下载页面
注:此处下载的训练模型内容是 ch_det_mobile_v2.0_det ( 跟随参考文章 )

下载后在docker容器中创建目录将模型保存至目录中

注:首先创建目录

shell 复制代码
mkdir /paddle/PaddleOCR/Preliminary_training

使用公开数据集

注:可训练自己的数据集,这里跳过,直接使用公开数据集 训练自己的数据集 参考文章 >>|
注:公开数据集下载说明 >>|
注:共3部分 下载图片和标注

注:进入网站进行下载时需要注册登录
注:下图就是下载后的内容
注:下载的文件需要对文件夹名称做修改(留作彩蛋,文章后面会说) [去那 >>|](#去那 >>|)

3. 修改模型训练文件yml

注:修改预训练模型的位置。修改use_gpu: false(因本机使用的是cpu)

4. 将下载的训练集进行编排

注:编排如图

5. 执行脚本进行训练

注:选择配置文件进行训练,这里选择 ./configs/det/det_mv3_db.yml det_mv3_db的意思基于db和mobileNetV3算法的文本检测配置文件
注:处理执行时遇到的问题

  • 问题1:处理模块不存在问题
    ModuleNotFoundError: No module named 'skimage' , 'imgaug', 'pyclipper', 'tqdm', 'rapidfuzz'

注:安装相关模块进行解决

shell 复制代码
# 安装图像处理模块
pip install scikit-image
# 安装图像增强模块
pip install imgaug
# 安装形状裁剪模块
pip install pyclipper
# 安装嵌入式数据库模块
pip install lmdb
# 安装进度条库
pip install tqdm
# 安装字符串匹配库
pip install rapidfuzz
  • 问题2:对象无此属性错误
    注:编辑报错文件/paddle/PaddleOCR/tools/program.py 进行修改。将dist.ParallelEnv().dev_id 为 dist.get_rank()
    错误处理参考文章 >> |

6. 修改文件夹名称(彩蛋)

注:修改训练文件夹 ch4_training_images 为 标注文件中(train_icdar2015_label.txt)图片路径的名称 icdar_c4_train_imgs
注:或者修改标注文件的内容也可以,保持一致。避免执行训练脚本时报错
注:查看标注文件 train_icdar2015_label.txt

shell 复制代码
cat ./train_data/icdar2015/text_localization/train_icdar2015_label.txt


注:故将ch4_training_images 文件夹名称改成 icdar_c4_train_imgs/

三. 开始训练

1. 执行训练命令

shell 复制代码
python tools/train.py -c configs/det/det_mv3_db.yml 
在错误处理完二中出现的问题后执行又出现了运行期间的系统级别问题

注:解决方案是修改配置文件参数,兼容系统当前系统性能 参考 >> |
注:需要修改配置文件 yml参数 num_workers = 0, 避免报错(内存空间不足)。空间足够大cpu核数够高可以尝试修改其他数值(这里没有再进行测试) 参考 >> |

解决后再次执行
shell 复制代码
python tools/train.py -c configs/det/det_mv3_db.yml 
下面是虚拟机配置简单概括

注:cpu配置 4个处理器,2个内核数量

注:内存8G

2. 训练期间第一次评估进行解释

注:使用的文心 做的翻译, 向他问了下面这段内容:

shell 复制代码
[2024/03/02 13:36:13] ppocr INFO: epoch: [1/1200], global_step: 10, lr: 0.001000, loss: 8.048188, loss_shrink_maps: 4.862389, loss_threshold_maps: 2.202206, loss_binary_maps: 0.975967, loss_cbn: 0.000000, avg_reader_cost: 0.13627 s, avg_batch_cost: 89.83051 s, avg_samples: 16.0, ips: 0.17811 samples/s, eta: 78 days, 14:11:27

注:最后的 eta 时间很大,果断放弃,看来应该用小一点的训练集去做

3. 引言。

注:后期会训练自定义模型在此更新链接 Ocr之PaddleOcr尝试训练自定义模型 >> |

五、总结

1. 本篇文章只下载了检测模型进行训练测试。后期还会生成推理模型和对识别模型进行训练并测试并对链接进行更新
  • 推理模型生成 >>|
  • 识别模型训练 >>|
2. 不同电脑的配置会对模型训练时产生不一样问题。文章中对出现的问题在网上进行搜索,基本都能定位到问题的原因和解决方案。
3. 对模型进行训练的目的。我在工作中使用到了paddleocr识别模型,但是相比较TesseractOCR识别各有千秋。这里希望PaddleOCR能够更好用,所以希望自己能够进一步对他进行训练,期待PaddleOCR能变的更好用。
相关推荐
gogogo出发喽13 分钟前
使用Pear Admin Flask
后端·python·flask
与虾牵手18 分钟前
Python asyncio 踩了一周坑,我把能犯的错全犯了一遍
python
飞Link22 分钟前
LangGraph 核心架构解析:节点 (Nodes) 与边 (Edges) 的工作机制及实战指南
java·开发语言·python·算法·架构
beyond阿亮24 分钟前
Claude Code零基础入门安装使用指南
人工智能·ai·claude code
资深设备全生命周期管理1 小时前
EXE Ver 适用于 未安装Python 以及包的Windows OS
python
Agent产品评测局1 小时前
企业预算管理自动化落地,编制管控全流程实现方案 —— 2026企业级智能体选型与架构深度解析
运维·人工智能·ai·架构·自动化
Lyyaoo.1 小时前
【Java基础面经】Java 反射机制
java·开发语言·python
广州山泉婚姻1 小时前
VSCode中切换Python虚拟环境失败的原因
python
AiTop1001 小时前
美团开源LongCat-AudioDiT:首创波形潜空间建模,刷新音色克隆SOTA
人工智能·ai·aigc
Ulyanov1 小时前
从零构建现代化Python音频播放器:ttk深度应用与皮肤系统设计
python·架构·音视频·数据可视化