Ocr之PaddleOcr模型训练

news/2024/5/17 17:27:46 标签: ocr, paddlepaddle, 百度, ai, python, gitee
aidu_pl">

目录

一、系统环境

1 镜像拉取ppocr 进行部署

2 安装paddlepaddle

二、训练前的准备

1 下载源码

2 预模型下载

3 修改模型训练文件yml

4 编排训练集

5 执行脚本进行训练

6 需要修改文件夹名称

三、开始训练

1 执行训练命令

2 对第一次评估进行解释

3 引言

五、总结


一、系统环境

ocr__20">1. 镜像拉取ppocr 进行部署

注:gitee上有提供环境准备的链接【链接】
注:其中用到了下方红框命令
在这里插入图片描述

paddlepaddle_25">2. 安装paddlepaddle

pip install paddlepaddle

二、训练前的准备

1. 下载源码

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

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

2. 预模型下载

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

  • 模型下载gitee.com/PaddlePaddle/PaddleOCR/tree/release/2.7#%EF%B8%8F-pp-ocr%E7%B3%BB%E5%88%97%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8%E6%9B%B4%E6%96%B0%E4%B8%AD" rel="nofollow">gitee.paddleocr 可直接跳转至下方页面对模型进行下载 这里参考的文章 >> |

在这里插入图片描述

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

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

注:首先创建目录

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'

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

# 安装图像处理模块
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

cat ./train_data/icdar2015/text_localization/train_icdar2015_label.txt

在这里插入图片描述
注:故将ch4_training_images 文件夹名称改成 icdar_c4_train_imgs/
在这里插入图片描述

三. 开始训练

1. 执行训练命令

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

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

  • 解决后再次执行
python tools/train.py -c configs/det/det_mv3_db.yml 

在这里插入图片描述

  • 下面是虚拟机配置简单概括

注:cpu配置 4个处理器,2个内核数量
在这里插入图片描述
注:内存8G
在这里插入图片描述

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

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

[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. 不同电脑的配置会对模型训练时产生不一样问题。文章中对出现的问题在网上进行搜索,基本都能定位到问题的原因和解决方案。
ocrTesseractOCRPaddleOCRPaddleOCR_144">3. 对模型进行训练的目的。我在工作中使用到了paddleocr识别模型,但是相比较TesseractOCR识别各有千秋。这里希望PaddleOCR能够更好用,所以希望自己能够进一步对他进行训练,期待PaddleOCR能变的更好用。

http://www.niftyadmin.cn/n/5403311.html

相关文章

qt+opencv 获取图像灰度值并以QTableView展现

思路如下: 先用opencv方法打开并以灰度图像的方式读取一张图片,然后获取整张图所有像素点的灰度值,将这些值存入容器中。然后因为图像为8192*4096的尺寸,像素点灰度值数据量较大。因此采用QTableView加自定义QAbstractTableModel的…

技术分析测试

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 例如: openAI 的 GPT 大模型的发展历程。 整体架构流程 提示:这里可以添加技术整体架构 例如: 在语言模型中,编码器和解码器都…

10.7、华为数通HCIP-DataCom H12-821单选题:121-140

121、关于OSPF特性描述错误的是:D A、OSPF采用链路状态算法。 B、每个路由器通过泛洪 LSA 向外发布本地链路状态信息 C、每台 OSPF 设备都会收集其它路由器发来的LSA 所有的LSA 放在一起便组成了链路状态数据库LSDB, D、OSPF 区域0中所有路由器的 LSDB 都相同。 E、每台…

github用法详解

本文是一篇面向全体小白的文章,图文兼备。为了让小白们知道如何使用GitHub,我努力将本文写得通俗易懂,尽量让刚刚上网的小白也能明白。所以各位程序员们都可以滑走了~ 啥是GitHub? 百度百科会告诉你, GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为…

Xcode15与苹果ios17适配以及遇到的问题

大家好,我是你们的好朋友咕噜铁蛋!最近,苹果发布了全新的iOS17系统,而作为开发者,我们需要确保我们的应用程序能够与这个新系统完美适配。因此,今天我将和大家分享一些关于Xcode15与苹果17系统适配的经验&a…

Qt外部调用进程类QProcess的使用

有的时候我们需要在自己程序运行过程中调用其他进程,那么就需要用到QProcess。 首先可以了解一些关于进程的相关知识:线程与进程,你真得理解了吗_进程和线程的区别-CSDN博客 进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0…

vim文本编辑器 的命令及快捷键

vim文本编辑器常用的命令及快捷键 vim文本编辑器功能命令 命令功能i从光标当前位置进入插入模式a从光标下一位进入插入模式ESC键退出编辑模式dd删除2dd删除两行u撤销上一步操作wq保存并退出0光标移动至文本开头G光标移至文本末尾$光标移动至行尾^光标移动至行首q或q!退出不保…

C/C++内存管理及内存泄漏详解

目录 C/C内存分布 C语言中动态内存管理方式:malloc/calloc/realloc/free C内存管理方式 new/delete操作内置类型 new和delete操作自定义类型 operator new与operator delete函数 new和delete的实现原理 内置类型 自定义类型 内存泄漏 概念 内存泄漏分类 ⭐…