PaddleOCR系列——《文本检测、文本识别》模型训练
上面已经制作完数据集 ,现在开始进行模型训练。
数据集制作请参考:PaddleOCR系列——《文本检测、文本识别、表格结构》数据集制作_ppocrlabel-CSDN博客
官方文档:
文本检测模块 - PaddleOCR 文档
文本识别模块 - PaddleOCR 文档
下载PaddleOCR源码
https://github.com/PaddlePaddle/PaddleOCR.git
再或者GitHub - PaddlePaddle/PaddleOCR: Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages. · GitHub
去github下载源码压缩包
安装参考:PaddleOCR系列——基础环境安装及快速使用-CSDN博客
官方链接:安装 - PaddleOCR 文档
下载预训练模型
# 下载 PP-OCRv5_server_det 预训练模型 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_det_pretrained.pdparams # 下载 PP-OCRv5_server_rec 预训练模型 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams训练
源码结构:
配置文件:
接下来让我们看一下配置文件。
所有模型 配置文件路径是:
PaddleOCR-main/configs
我们现在要使用的配置文件是:
/mnt/svip/lmz/PyPro/PaddleOCR/test/PaddleOCR-main/configs/det/PP-OCRv5/PP-OCRv5_server_det.yml
/mnt/svip/lmz/PyPro/PaddleOCR/test/PaddleOCR-main/configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml
参数介绍:
PP-OCRv5_server_det.yml
一、Global(全局配置)
这部分是整个训练过程的全局控制参数,影响整体训练流程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_name | 模型名称 | 指定使用 PP-OCRv5_server_det 静态模型进行推理,用于标识训练的模型版本 |
debug | 调试模式 | false表示关闭调试(生产训练建议关闭),true会输出更多调试信息 |
use_gpu | 是否使用 GPU | true启用 GPU 训练(大幅提升速度),false使用 CPU(仅测试 / 低配环境) |
epoch_num | 训练轮数 | 500表示模型会完整遍历训练集 500 次(&epoch_num是 YAML 锚点,方便其他地方复用该值) |
log_smooth_window | 日志平滑窗口 | 计算 20 个批次的平均日志指标(如 loss),让日志曲线更平滑 |
print_batch_step | 日志打印间隔 | 每训练 10 个批次,打印一次训练日志(loss、lr 等) |
save_model_dir | 模型保存目录 | 训练过程中生成的模型文件会保存到./output/PP-OCRv5_server_det |
save_epoch_step | 模型保存间隔 | 每训练 10 个 epoch,保存一次模型权重 |
eval_batch_step | 评估间隔 | [0, 1500]表示:从第 0 个 epoch 开始,每训练 1500 个批次,对验证集评估一次 |
cal_metric_during_train | 训练中计算指标 | false表示训练时不计算精度 / 召回率(提升训练速度),仅在 eval 阶段计算 |
checkpoints | 断点续训路径 | 空值表示从头训练,若填路径则从指定断点恢复训练 |
pretrained_model | 预训练模型路径 | 使用 PPHGNetV2_B4 预训练权重初始化模型(迁移学习,提升训练效果) |
save_inference_dir | 推理模型保存路径 | 空值表示训练时不导出推理模型,训练完成后可单独导出 |
use_visualdl | 可视化工具 | false关闭 VisualDL(Paddle 可视化工具),true可实时查看 loss / 指标曲线 |
infer_img | 测试推理图片 | 训练中若需快速测试模型效果,指定单张测试图片路径 |
save_res_path | 推理结果保存路径 | 测试推理的结果(如检测框坐标)保存到该文件 |
distributed | 分布式训练 | true启用多卡分布式训练(需多 GPU 环境),false单卡训练 |
二、Architecture(模型结构)
定义文本检测模型的网络结构,PP-OCRv5 基于 DB(Differentiable Binarization)算法。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_type | 模型类型 | det表示检测模型(OCR 分为 det 检测、rec 识别) |
algorithm | 检测算法 | DB是 PaddleOCR 主流的文本检测算法(可微分二值化) |
Transform | 数据变换层 | 空值表示不使用额外变换层 |
Backbone.name | 骨干网络 | PPHGNetV2_B4是 PP-OCRv5 主推的骨干网络(轻量且精度高),det: True适配检测任务 |
Neck.name | 颈部网络 | LKPAN是 DB 算法的特征融合模块,out_channels: 256输出特征通道数,intracl: true启用 intra-class 注意力 |
Head.name | 检测头 | PFHeadLocal是 PP-OCRv5 的检测头,k: 50是 DiceLoss 的参数,mode: "large"适配大尺寸文本 |
三、Loss(损失函数)
定义模型训练的损失计算方式,DB 算法的损失由多部分组成。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 损失函数名称 | DBLoss是 DB 算法的专用损失(包含二值化损失 + 分割损失) |
balance_loss | 平衡损失权重 | true自动平衡不同损失的权重,避免某类损失占主导 |
main_loss_type | 主损失类型 | DiceLoss是分割任务常用损失(适合文本区域分割) |
alpha/beta | 损失权重系数 | 调整不同损失分支的权重(alpha=5 对应二值化损失,beta=10 对应分割损失) |
ohem_ratio | 难例挖掘比例 | 3表示只计算 hardest 3:1 比例的负样本损失(提升模型对难例的学习能力) |
四、Optimizer(优化器)
定义模型参数的优化策略,控制模型如何更新权重。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 优化器类型 | Adam是主流的自适应学习率优化器(比 SGD 收敛更快) |
beta1/beta2 | Adam 超参数 | 动量相关参数,默认0.9和0.999(无需修改) |
lr.name | 学习率策略 | Cosine余弦退火学习率(先升后降,适合长周期训练) |
learning_rate | 初始学习率 | 0.001(8 卡分布式训练的推荐值,单卡需按比例降低,如 0.000125) |
warmup_epoch | 热身轮数 | 2表示前 2 个 epoch 学习率从低到高线性上升(避免初始 lr 过高导致训练不稳定) |
regularizer.name | 正则化方式 | L2正则化(权重衰减),防止模型过拟合 |
factor | 正则化系数 | 1e-6是权重衰减系数(值越小,正则化约束越弱) |
五、PostProcess(后处理)
模型输出预测结果后,将特征图转换为文本检测框的过程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 后处理方法 | DBPostProcess是 DB 算法的专用后处理 |
thresh | 二值化阈值 | 0.3表示将预测概率图大于 0.3 的区域视为文本区域 |
box_thresh | 检测框置信度阈值 | 0.6过滤掉置信度低于 0.6 的检测框(减少误检) |
max_candidates | 最大候选框数 | 1000限制单张图最多生成 1000 个候选框(防止内存溢出) |
unclip_ratio | 框膨胀系数 | 1.5将检测框向外膨胀 1.5 倍(弥补文本区域收缩,避免框住不全) |
六、Metric(评估指标)
定义验证集的评估标准,衡量模型性能。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 评估方法 | DetMetric是文本检测的标准评估方法 |
main_indicator | 核心评估指标 | hmean是 Precision(精确率)和 Recall(召回率)的调和平均(F1-score),是检测任务的核心指标 |
七、Train(训练集配置)
定义训练集的数据加载、数据增强等流程。
7.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 数据集类型 | SimpleDataSet是 PaddleOCR 通用的数据集加载类 |
data_dir | 图片根目录 | 训练图片的存放路径 |
label_file_list | 标签文件路径 | 训练集标签文件(每行格式:图片名\t文本框坐标\t是否忽略) |
ratio_list | 数据采样比例 | [1.0]表示使用 100% 的训练数据 |
transforms | 数据增强 / 预处理流程 | 按顺序执行以下操作:-DecodeImage:解码图片(BGR 模式,通道在后)-DetLabelEncode:编码检测标签(转换为模型可识别格式)-CopyPaste:文本复制粘贴增强(空值表示关闭)-IaaAugment:基于 imgaug 的数据增强(随机水平翻转、旋转 ±10°、缩放 0.5-3 倍)-EastRandomCropData:随机裁剪图片到 640×640(最多尝试 50 次,保持宽高比)-MakeBorderMap:生成边界概率图(用于计算边界损失)-MakeShrinkMap:生成文本区域收缩图(核心分割标签)-NormalizeImage:归一化(减均值、除标准差,符合预训练模型输入要求)-ToCHWImage:将图片格式从 HWC 转为 CHW(Paddle 要求的输入格式)-KeepKeys:保留模型训练所需的关键字段(图片、各类标签) |
7.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle | 打乱数据 | true每 epoch 打乱训练集顺序(避免模型过拟合) |
drop_last | 丢弃最后不完整批次 | false保留最后一个不足 batch_size 的批次(true会丢弃,适合严格对齐批次的场景) |
batch_size_per_card | 单卡批次大小 | 8表示每张 GPU 每次加载 8 张图片(批次越大,训练越稳定,但显存占用越高) |
num_workers | 数据加载线程数 | 8启用 8 个线程加载数据(加速数据读取,避免 GPU 等待 CPU) |
八、Eval(验证集配置)
定义验证集的数据加载流程(无数据增强,仅基础预处理)。
8.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
transforms | 预处理流程 | 与训练集的区别:- 无数据增强(IaaAugment/Crop 等)-DetResizeForTest:测试时统一缩放图片(保持比例)- 保留polys(真实框坐标)、ignore_tags(是否忽略)用于计算指标 |
8.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle | 打乱数据 | false验证集无需打乱(按顺序评估即可) |
batch_size_per_card | 单卡批次大小 | 1验证集批次大小为 1(确保评估精度,避免批次维度干扰) |
num_workers | 数据加载线程数 | 2验证集数据量小,线程数可减少 |
九、其他参数
| 参数 | 含义 | |
|---|---|---|
profiler_options | 性能分析选项 | 空值表示关闭性能分析(调试时可开启,分析训练瓶颈) |
PP-OCRv5_server_rec.yml
一、Global(全局配置)
控制文本识别模型训练的整体流程和基础参数,是整个训练的 “总开关”。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_name | 模型名称 | 指定 PP-OCRv5_server_rec 静态识别模型,标识训练的模型版本 |
debug | 调试模式 | false关闭调试(生产训练建议),true输出更多调试日志 |
use_gpu | GPU 启用开关 | true用 GPU 训练(识别模型对 GPU 依赖高,CPU 训练极慢) |
epoch_num | 训练总轮数 | 75表示模型遍历训练集 75 次(识别模型训练轮数远少于检测,因收敛更快) |
log_smooth_window | 日志平滑窗口 | 计算 20 个批次的平均指标(如 loss),让日志曲线更平稳 |
print_batch_step | 日志打印间隔 | 每训练 10 个批次打印一次 loss、lr、准确率等日志 |
save_model_dir | 模型保存目录 | 训练权重保存到./output/PP-OCRv5_server_rec |
save_epoch_step | 模型保存间隔 | 每训练 1 个 epoch 保存一次模型(识别模型迭代快,频繁保存便于选最优模型) |
eval_batch_step | 评估间隔 | [0, 2000]:从第 0 个 epoch 开始,每 2000 个批次评估一次验证集 |
cal_metric_during_train | 训练中计算指标 | true训练时同步计算识别准确率(方便实时监控效果,检测模型常关闭以提速) |
calc_epoch_interval | 按 epoch 评估间隔 | 1每 1 个 epoch 强制评估一次(补充批次级评估) |
pretrained_model | 预训练模型路径 | 空值表示从头训练,填路径则加载预训练权重(推荐使用,提升收敛速度) |
checkpoints | 断点续训路径 | 空值表示从头训练,填路径则从指定断点恢复训练 |
save_inference_dir | 推理模型保存路径 | 空值表示训练时不导出,训练完成后可单独导出为推理模型 |
use_visualdl | 可视化工具 | false关闭 VisualDL,true可可视化 loss / 准确率曲线 |
infer_img | 测试推理图片 | 训练中快速测试模型识别效果的单张图片路径 |
character_dict_path | 字符字典路径 | ./ppocr/utils/dict/ppocrv5_dict.txt是识别字符的字典文件(包含数字、字母、中文等) |
max_text_length | 最大文本长度 | 25(YAML 锚点&max_text_length供其他模块复用),限制识别文本的最大字符数,超过则截断 |
infer_mode | 推理模式 | false表示训练模式,true为纯推理模式(关闭训练相关逻辑) |
use_space_char | 是否识别空格 | true支持识别文本中的空格(如 “AB CD”),false则忽略空格 |
distributed | 分布式训练 | true启用多卡分布式训练(多 GPU 环境必备) |
save_res_path | 推理结果保存路径 | 测试推理的识别结果(如 “图片名 \t 识别文本”)保存到该文件 |
d2s_train_image_shape | 训练图片尺寸 | [3, 48, 320]表示通道数 3、高度 48、宽度 320(识别模型固定输入尺寸) |
二、Optimizer(优化器)
控制模型参数的更新策略,是模型收敛的核心配置。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 优化器类型 | Adam自适应学习率优化器(识别模型首选,收敛快、稳定性高) |
beta1/beta2 | Adam 超参数 | 动量相关参数,0.9/0.999是业界通用值(无需修改) |
lr.name | 学习率策略 | Cosine余弦退火学习率(先热身上升,后余弦下降,适合识别模型短周期训练) |
learning_rate | 初始学习率 | 0.0005(分布式训练推荐值,单卡需按 batch_size 比例降低,如 0.0000625) |
warmup_epoch | 热身轮数 | 1前 1 个 epoch 学习率从低到高线性上升(避免初始 lr 过高导致训练震荡) |
regularizer.name | 正则化方式 | L2权重衰减(防止模型过拟合) |
factor | 正则化系数 | 3.0e-05权重衰减系数(值越小,正则化约束越弱,识别模型系数通常比检测小) |
三、Architecture(模型结构)
定义 PP-OCRv5 文本识别模型的网络结构,核心是 SVTR_HGNet 算法。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_type | 模型类型 | rec表示识别模型(区别于检测det) |
algorithm | 识别算法 | SVTR_HGNet是 PP-OCRv5 主推的识别算法(基于 SVTR 结构 + PPHGNetV2 骨干) |
Transform | 数据变换层 | 空值表示不使用额外变换层 |
Backbone.name | 骨干网络 | PPHGNetV2_B4轻量高性能骨干网络,text_rec: True适配文本识别任务(调整网络输出适配序列建模) |
Head.name | 识别头 | MultiHead多输出头(同时包含 CTCHead 和 NRTRHead,提升识别精度) |
Head.head_list[0].CTCHead | CTC 识别头 | 工业界主流的识别头(无需对齐字符,鲁棒性强):-Neck.name: svtr:SVTR 特征提取模块-dims: 120:SVTR 维度-depth: 2:SVTR 层数-hidden_dims: 120:隐藏层维度-kernel_size: [1, 3]:卷积核尺寸-use_guide: True:启用引导注意力机制(提升长文本识别效果)-Head.fc_decay: 0.00001:全连接层权重衰减系数 |
Head.head_list[1].NRTRHead | NRTR 识别头 | 辅助识别头(基于注意力机制,提升复杂文本识别精度):-nrtr_dim: 384:NRTR 维度-max_text_length: *max_text_length:复用全局配置的最大文本长度 |
四、Loss(损失函数)
定义模型训练的损失计算方式,多识别头对应多损失。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 损失函数名称 | MultiLoss多损失函数(对应 MultiHead 多识别头) |
loss_config_list | 损失配置列表 | -CTCLoss:CTC 损失(对应 CTCHead,识别任务核心损失)-NRTRLoss:NRTR 损失(对应 NRTRHead,辅助损失)注:MultiLoss 会自动融合两种损失,提升模型泛化能力 |
五、PostProcess(后处理)
将模型输出的概率分布转换为最终识别文本的过程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 后处理方法 | CTCLabelDecode基于 CTC 算法的标签解码(将模型输出的序列概率转换为字符) |
六、Metric(评估指标)
定义验证集的评估标准,衡量识别模型的性能。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 评估方法 | RecMetric文本识别专用评估方法 |
main_indicator | 核心评估指标 | acc识别准确率(正确识别的样本数 / 总样本数,识别任务的核心指标) |
七、Train(训练集配置)
定义训练集的数据加载、数据增强等流程(识别模型数据增强更轻量)。
7.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 数据集类型 | MultiScaleDataSet多尺度数据集加载类(支持不同尺寸图片输入) |
ds_width | 固定宽度 | false不固定宽度(配合多尺度采样) |
data_dir | 图片根目录 | 训练图片存放路径 |
ext_op_transform_idx | 扩展增强索引 | 1指定数据增强的执行位置(内部参数,无需修改) |
label_file_list | 标签文件路径 | 训练集标签文件(每行格式:图片名\t真实文本) |
transforms | 数据预处理 / 增强流程 | 按顺序执行:-DecodeImage:解码图片(BGR 模式,通道在后)-RecAug:识别专用数据增强(如随机模糊、亮度调整、透视变换等,提升鲁棒性)-MultiLabelEncode:多标签编码(同时生成 CTC 和 NRTR 所需标签,gtc_encode: NRTRLabelEncode指定 NRTR 标签编码方式)-KeepKeys:保留训练所需字段(图片、CTC 标签、NRTR 标签、文本长度、有效比例) |
7.2 sampler(采样器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 采样器类型 | MultiScaleSampler多尺度采样器(随机选择图片尺寸,提升模型对不同尺寸文本的适应性) |
scales | 采样尺寸列表 | [[320, 32], [320, 48], [320, 64]]随机选择宽度 320、高度 32/48/64 的尺寸(模拟不同高度的文本) |
first_bs | 初始批次大小 | 128(YAML 锚点&bs供 loader 复用),多尺度采样的初始批次大小 |
fix_bs | 固定批次大小 | false不固定批次大小(适配多尺度采样) |
divided_factor | 尺寸整除因子 | [8, 16]宽度 / 高度需分别被 8/16 整除(保证模型下采样后尺寸为整数) |
is_training | 训练模式 | True采样器适配训练场景(打乱、多尺度) |
7.3 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle | 打乱数据 | true每 epoch 打乱训练集(避免模型过拟合) |
batch_size_per_card | 单卡批次大小 | 128(复用锚点&bs),每张 GPU 每次加载 128 张图片(识别模型显存占用低,可设较大批次) |
drop_last | 丢弃最后批次 | true丢弃最后一个不足 batch_size 的批次(保证批次完整性,提升训练稳定性) |
num_workers | 加载线程数 | 16启用 16 个线程加载数据(识别数据量通常大,多线程加速读取) |
八、Eval(验证集配置)
定义验证集的数据加载流程(无数据增强,固定尺寸)。
8.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name | 数据集类型 | SimpleDataSet通用数据集加载类(验证集无需多尺度) |
data_dir | 图片根目录 | 验证集图片存放路径 |
label_file_list | 标签文件路径 | 验证集标签文件 |
transforms | 预处理流程 | 与训练集的区别:- 无RecAug数据增强(保证评估准确性)-RecResizeImg:固定调整图片尺寸为[3, 48, 320](与训练最终尺寸一致)- 保留标签字段用于计算准确率 |
8.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle | 打乱数据 | false验证集无需打乱(按顺序评估即可) |
batch_size_per_card | 单卡批次大小 | 128验证集批次大小与训练集一致(提升评估速度) |
drop_last | 丢弃最后批次 | false保留最后批次(不遗漏验证样本) |
num_workers | 加载线程数 | 4验证集数据量小,减少线程数(节省资源) |
模型训练:
文本检测--模型训练命令:
#单卡训练 (默认训练方式) python3 tools/train.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \ -o Global.pretrained_model=./PP-OCRv5_server_det_pretrained.pdparams \ Train.dataset.data_dir=./ocr_det_dataset_examples \ Train.dataset.label_file_list='[./ocr_det_dataset_examples/train.txt]' \ Eval.dataset.data_dir=./ocr_det_dataset_examples \ Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]' #多卡训练,通过--gpus参数指定卡号 python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py \ -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \ -o Global.pretrained_model=./PP-OCRv5_server_det_pretrained.pdparams \ Train.dataset.data_dir=./ocr_det_dataset_examples \ Train.dataset.label_file_list='[./ocr_det_dataset_examples/train.txt]' \ Eval.dataset.data_dir=./ocr_det_dataset_examples \ Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]'文本识别--模型训练命令:
#单卡训练 (默认训练方式) python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \ -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams #多卡训练,通过--gpus参数指定卡号 python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \ -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams模型训练脚本:
#!/bin/bash # 脚本名称:model_train.sh # 功能:执行PaddleOCR表格检测模型训练 # 依赖:已安装PaddleOCR环境和相关依赖包 # 训练命令(保持原始参数不变) # Global.pretrained_model:预训练模型路径 # Train.dataset.data_dir:训练集路径 # Train.dataset.label_file_list:训练集标签路径 # Eval.dataset.data_dir:验证集路径 # Eval.dataset.label_file_list:验证集标签路径 # Global.save_model_dir:训练完模型保存路径 # PP-OCRv5_server_det python3 tools/train.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \ -o Global.pretrained_model=/xxx/PP-OCRv5_server_det_pretrained.pdparams \ Train.dataset.data_dir=/xxx/det/train \ Train.dataset.label_file_list='[/xxx/det/train.txt]' \ Eval.dataset.data_dir=/xxx/det/val \ Eval.dataset.label_file_list='[/xxx/det/val.txt]' \ Global.save_model_dir=/xxx/det/output # PP-OCRv5_server_rec python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \ -o Global.pretrained_model=/xxx/PP-OCRv5_server_rec_pretrained.pdparams \ Train.dataset.data_dir=/xxx/rec/train \ Train.dataset.label_file_list='[/xxx/rec/train.txt]' \ Eval.dataset.data_dir=/xxx/rec/val \ Eval.dataset.label_file_list='[/xxx/rec/val.txt]' \ Global.save_model_dir=/xxx/rec/output # 检查命令执行状态 if [ $? -eq 0 ]; then echo "======================================" echo "训练任务执行完成!" echo "======================================" else echo "======================================" echo "训练任务执行失败!请检查错误信息" echo "======================================" exit 1 fi模型评估:
您可以评估已经训练好的权重,如,output/PP-OCRv5_server_det/best_accuracy.pdprams
文本检测--模型评估命令:
# 注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。 # demo 测试集评估 python3 tools/eval.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \ -o Global.pretrained_model=output/PP-OCRv5_server_det/best_accuracy.pdparams \ Eval.dataset.data_dir=./ocr_det_dataset_examples \ Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]'文本识别--模型评估命令:
#注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。 #demo 测试集评估 python3 tools/eval.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_model=output/xxx/xxx.pdparams模型导出
文本检测--模型导出命令:
python3 tools/export_model.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o \ Global.pretrained_model=output/PP-OCRv5_server_det/best_accuracy.pdparams \ Global.save_inference_dir="./PP-OCRv5_server_det_infer/"文本识别--模型导出命令:
python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_model=output/xxx/xxx.pdparams \ Global.save_inference_dir="./PP-OCRv5_server_rec_infer/"模型导出脚本:
#!/bin/bash # 脚本名称:model_export.sh # 功能:执行PaddleOCR表格检测模型转换 # 依赖:已安装PaddleOCR环境和相关依赖包 # 训练命令(保持原始参数不变) # Global.pretrained_model:训练完模型路径 # Global.save_inference_dir:静态图模型导出到的路径 #PP-OCRv5_server_det python3 tools/export_model.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o \ Global.pretrained_model=/xxx/det/best_accuracy.pdparams \ Global.save_inference_dir="/xxx/output/det/export_model/" #PP-OCRv5_server_rec python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_model=/xxx/rec/best_accuracy.pdparams \ Global.save_inference_dir="/xxx/output/rec/export_model/" # 检查命令执行状态 if [ $? -eq 0 ]; then echo "======================================" echo "导出任务执行完成!" echo "======================================" else echo "======================================" echo "导出任务执行失败!请检查错误信息" echo "======================================" exit 1 fi导出模型后,静态图模型会存放于当前目录的./PP-OCRv5_server_rec_infer/中,在该目录下,您将看到如下文件:
./PP-OCRv5_server_rec_infer/
├── inference.json
├── inference.pdiparams
├── inference.yml
