2024年鸿蒙最全PaddleOCR模型训练及使用详细教程_paddleocr设置模型输出,2024年最新HarmonyOS鸿蒙程序员架构之路该如何继续学习

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

⑤ 安装CUDNN : 进入以下网址,需要进行注册下载
NVIDIA官网(https://developer.nvidia.com/cudnn)
在这里插入图片描述

在这里插入图片描述

下载后将cudnn解压为一个文件夹,将以下文件复制到cuda的根目录下

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

在系统高级设置中添加如下环境变量:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp

Part4. 制作数据集

在这里插入图片描述

PPOCRLabel就是跟PaddleOCR配套的标注工具
前面在介绍环境搭建过程中已下载,直接可以使用

1. 先查看下载的ppocrlabel库所在位置:pip show ppocrlabel

在这里插入图片描述

2. 在PPOCRLabel文件夹下有两个.py文件是制作数据集所需的

在这里插入图片描述

3. PPOCRLabel根目录下,终端运行: python PPOCRLabel.py --lang ch
python PPOCRLabel.py --lang ch # 启动【普通模式】,用于打【检测+识别】场景的标签
python PPOCRLabel.py --lang ch --kie True # 启动【KIE 模式】,用于打【检测+识别+关键字提取】场景的标签

4. 打开后点击文件,点击打开目录选择需要打标签的数据集文件夹,点击左下角自动标注

在这里插入图片描述

5. 然后从第一张开始检查。漏打标的按下Q框出字体;打标文字错误的,点击方框,在右边框里修改,并对每一个方框给出关键词列表(点击编辑点击更改box关键词信息)。支持矩形标注和多点标注,最后删除无用信息,点确认后,切换下一张快捷键为D,如下图所示。
在这里插入图片描述

相关快捷键:
在这里插入图片描述

6. 导出标记结果及识别结果
全部打标完成之后,点击文件选择导出标记结果,再点击文件选择导出识别结果,完成后文件夹里多出四个文件crop_img、fileState、Label、rec_gt。

  • crop_img中的图片用来训练文字识别模型
  • fileState记录图片的打标完成与否
  • Label为训练文字检测模型的标签
  • rec_gt为训练文字识别模型的标签

在这里插入图片描述

命名为train_data文件夹存放的是打标签生成的文件和图片
其结构如下图所示
在这里插入图片描述

7. 将数据集划分(训练集/验证集/测试集)
PPOCRLabel根目录下,终端运行:python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 –-datasetRootPath xx --detRootPath xx --recRootPath xx

参数说明:

  • trainValTestRatio 是训练集、验证集、测试集的图像数量划分比例,根据实际情况设定,默认是6:2:2
  • datasetRootPath 是PPOCRLabel标注的完整数据集存放路径。默认路径是 …/train_data/
    就是步骤6的结果文件夹train_data文件夹。
  • detRootPath 是输出训练文字检测的数据集存放路径。默认路径是 …/train_data/det
  • recRootPath 是输出训练文字识别的数据集存放路径。默认路径是 …/train_data/rec

输入指令之后,在train_data文件夹下会出现两个文件:
其中det是用来训练文字检测的数据集,
rec是用来训练文字识别的数据集。

在这里插入图片描述

Part5. 训练模型

1. 按需下载文本检测、文本识别的配置文件和训练模型
官方网址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md
在这里插入图片描述
在这里插入图片描述
2. 在PaddleOCR-release-2.7目录下新建pretrain_models文件夹,存放前面下载的配置文件和训练模型

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

3. 训练文字检测模型

3.1 手动修改配置文件ch_PP-OCRv3_det_cml.yml
已列出需要修改的參數,完整參數説明請參考
官方文档https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/config.md
在这里插入图片描述
3.2 开始训练
在PaddleOCR-release-2.7根目录下,执行命令开始训练:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml
模型训练完之后会在文件夹下保存训练好的模型,具体保存的文件夹路径依据配置文件:
save_model_dir: ./output/ch_PP-OCR_v3_det/ # 设置输出训练模型路径

训练过程中产生的模型称为检查点(checkpoints)模型,包含完整参数,用于恢复训练及二次训练。一 个检查点模型包含三个文件:
.pdopt:训练优化器参数
.pdparams:训练网络参数
.states:训练状态
在这里插入图片描述

4. 训练文字识别模型(跟训练文字检测模型步骤几乎一样)

4.1 手动修改配置文件ch_PP-OCRv3_rec_distillation.yml
下面列出需要修改的參數,修改的地方和文字检测修改的类似。
在这里插入图片描述
4.2 开始训练
在PaddleOCR-release-2.7根目录下,执行命令开始训练:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml
模型训练完之后会在文件夹下保存训练好的模型,具体保存的文件夹路径依据配置文件:
save_model_dir: ./output/rec_ppocr_v3_distillation/

5. 断点训练
如果训练程序中断,希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.checkpoints=./your/trained/model
注意:Global.checkpoints的优先级高于Global.pretrained_model的优先级,即同时指定两个参数时,优先加载Global.checkpoints指定的模型

6. 模型微调
官方讲解较详细:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/finetune.md

Part6. 转换成推理模型并应用

1. 转换成推理模型

推理模型是可以直接被调用进行识别和检测。推理模型体积更小,在预测部署、加速推理上性能优越、灵活方便,但不能用于恢复训练及二次训练。

执行以下命令将训练好的检测、识别模型导出为推理模型:

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml -o Global.pretrained_model=./output/ch_PP-OCR_v3_det/latest Global.save_inference_dir=./inference_model/det_model/

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.pretrained_model=./output/rec_ppocr_v3_distillation/latest Global.save_inference_dir=./inference_model/rec_model/

参数说明:

  • -c 指定导出模型使用的配置文件,需与训练时使用的配置文件相同
  • -o 指定配置文件中的某个参数,即在不修改配置文件的情况下修改参数
  • Global.pretrained_model 此处是指要导出模型的参数文件路径
  • Global.save_inference_dir 指导出模型的保存路径
    结果:
    在这里插入图片描述
    在这里插入图片描述

2. 模型使用

import cv2

from paddleocr import PaddleOCR

paddleocr = PaddleOCR(lang=‘ch’, show_log=False, enable_mkldnn=True,
det_model_dir=f’D:\PaddleOCR-release-2.7\inference_model\det_model\Teacher’,
rec_model_dir=f’D:\PaddleOCR-release-2.7\inference_model\rec_model\Teacher’) # 推理模型路径
img = cv2.imread(‘ch2.jpg’) # 打开需要识别的图片
result = paddleocr.ocr(img)
for i in range(len(result[0])):
print(result[0][i][1][0]) # 输出识别结果

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

中…(img-zHj7PcqF-1715727679936)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、前言 机器学习是人工智能的一个分支,也是目前最热门的技术之一。Python 作为一种高效、易用、灵活的编程语言,已经成为机器学习领域的主流编程语言。 本文将介绍如何使用 Python 进行机器学习,主要包括以下内容: 1.什么是机器学习 2.机器学习的分类 3.机器学习的基本步骤 4.使用 Python 进行机器学习的工具包 5.构建回归模型 二、什么是机器学习 机器学习是指通过对数据的学习和分析,从而使计算机系统能够自动提高性能的一种方法。简单来说,就是让计算机能够自动地从数据中学习信息,而不是由程序员手动编写规则。 机器学习通常可以分为三个步骤:训练、验证和测试。在训练阶段,机器学习系统通过对标记有正确答案的数据进行学习,从而建立一个模型。在验证阶段,系统使用另一组数据来评估模型的性能。在测试阶段,系统使用完全不同的数据来测试模型的性能。 三、机器学习的分类 机器学习可以分为监督学习、无监督学习和强化学习。 1.监督学习:监督学习是基于标记数据的学习方法,也就是说,训练数据集中每个样本都标记有正确答案。监督学习通常用于分类和回归问题。 2.无监督学习:无监督学习是基于未标记数据的学习方法,也就是说,训练数据集中每个样本都没有标记。无监督学习通常用于聚类、降维等问题。 3.强化学习:强化学习是一种基于奖励的学习方法,也就是说,系统通过与环境交互来学习如何最大化收益。强化学习通常用于游戏、自动驾驶等问题。 四、机器学习的基本步骤 机器学习通常包括以下步骤: 1.收集数据:收集和准备用于训练和测试模型的数据。 2.准备数据:对数据进行清洗、转换、缩放等操作,以便于模型学习使用。 3.选择模型:选择适合问题的模型,例如线性回归、支持向量机、朴素贝叶斯等。 4.训练模型使用训练数据集来训练模型,并调整模型的超参数。 5.评估模型使用验证数据集来评估模型的性能,并进行调整。 6.测试模型使用测试数据集来测试模型的性能。 7.使用模型使用模型来对新数据进行预测或分类等操作。 五、使用 Python 进行机器学习的工具包 Python 有很多优秀的机器学习工具包,包括: 1.scikit-learn:scikit-learn 是 Python 机器学习的核心工具包之一,它包含了大量的机器学习算法和统计工具。 2.TensorFlow:TensorFlow 是 Google 开源的机器学习框架,它可以用于构建神经网络、深度学习模型。 3.Keras:Keras 是一个高层次的神经网络 API,它可以在 TensorFlow、Theano、CNTK 等后端上运行。 4.PyTorch:PyTorch 是 Facebook 开源的机器学习框架,它可以用于构建神经网络、深度学习模型。 5.Pandas:Pandas 是一个数据分析工具包,它可以用于数据的读取、清洗、转换等操作。 在本文中,我们将使用 scikit-learn 和 Pandas 来构建回归模型。 六、构建回归模型 回归模型是一种用于预测数值型输出模型。在本文中,我们将使用线性回归模型来预测波士顿房价。 1.准备数据 我们将使用 scikit-learn 中的波士顿房价数据集,该数据集包含了波士顿地区的房屋价格和房屋特征。我们可以使用 Pandas 将数据集读取为一个 DataFrame。 ``` import pandas as pd from sklearn.datasets import load_boston boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['target'] = boston.target ``` 2.数据清洗和特征选择 我们需要对数据进行清洗和特征选择,以便于模型学习使用。在这里,我们将使用所有的特征,并对数据进行缩放。 ``` from sklearn.preprocessing import StandardScaler X = df.drop('target', axis=1) y = df['target'] scaler = StandardScaler() X = scaler.fit_transform(X) ``` 3.划分数据集 我们将数据集划分为训练集和测试集,其中训练集占 80%,测试集占 20%。 ``` from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 4.训练模型 我们使用 scikit-learn 中的 LinearRegression 模型训练模型。 ``` from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) ``` 5.评估模型 我们使用测试集来评估模型的性能。 ``` from sklearn.metrics import mean_squared_error y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) print('MSE:', mse) ``` 6.使用模型 我们可以使用模型来对新数据进行预测。 ``` import numpy as np new_data = np.array([[0.00632, 18.0, 2.31, 0.0, 0.538, 6.575, 65.2, 4.0900, 1.0, 296.0, 15.3, 396.90, 4.98]]) new_data = scaler.transform(new_data) pred = model.predict(new_data) print('Prediction:', pred) ``` 完整代码如下: ``` import pandas as pd import numpy as np from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error # 准备数据 boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['target'] = boston.target # 数据清洗和特征选择 X = df.drop('target', axis=1) y = df['target'] scaler = StandardScaler() X = scaler.fit_transform(X) # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练模型 model = LinearRegression() model.fit(X_train, y_train) # 评估模型 y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) print('MSE:', mse) # 使用模型 new_data = np.array([[0.00632, 18.0, 2.31, 0.0, 0.538, 6.575, 65.2, 4.0900, 1.0, 296.0, 15.3, 396.90, 4.98]]) new_data = scaler.transform(new_data) pred = model.predict(new_data) print('Prediction:', pred) ``` 本文介绍了如何使用 Python 进行机器学习,主要包括了机器学习的基础知识、使用 Python 进行机器学习的工具包和构建回归模型的完整教程。希望本文能够帮助读者更好地理解机器学习,并在实践中取得更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值