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能变的更好用。
相关推荐
大佬,救命!!!17 分钟前
整理python快速构建数据可视化前端的Dash库
python·信息可视化·学习笔记·dash·记录成长
孔丘闻言18 分钟前
python调用mysql
android·python·mysql
Teletele-Lin38 分钟前
Miniconda安装与VSCode搭建远程Python、Jupyter开发环境
vscode·python·jupyter·环境配置·远程开发
AiTop1001 小时前
腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商
ide·人工智能·ai·aigc·ai编程
白杨SEO营销1 小时前
做百度SEM付费搜索推广时,竞价账号定向怎么设置?
百度
伊玛目的门徒1 小时前
告别 OpenAI SDK:如何使用 Python requests 库调用大模型 API(例如百度的ernie-4.5-turbo)
python·openai·requests·大模型调用·ernie-4.5-turbo
Learn Beyond Limits2 小时前
The learning process of Decision Tree Model|决策树模型学习过程
人工智能·深度学习·神经网络·学习·决策树·机器学习·ai
AI360labs_atyun2 小时前
2025世界智博会,揭幕AI触手可及的科幻生活
人工智能·ai·音视频·生活
sinat_602035362 小时前
模块与包的导入
运维·服务器·开发语言·python
计算机学姐2 小时前
基于Python的旅游数据分析可视化系统【2026最新】
vue.js·后端·python·数据分析·django·flask·旅游