当前位置: 首页 > news >正文

训练后数据集后部署PaddleOCR转trt流程

训练后的模型部署,首先要进行训练

0.训练流程见文章

PaddleOCR字符识别,训练自己的数据集全流程(环境、标注、训练、推理)-CSDN博客文章浏览阅读1.6k次,点赞53次,收藏23次。PaddleOCR是基于百度飞桨框架的开源OCR工具,支持80多种语言,适用于复杂文本场景。本文介绍了PaddleOCR的环境配置、数据集制作和模型训练流程。首先通过conda创建虚拟环境并安装PaddlePaddle和PaddleOCR,然后使用PPOCRLabel工具标注数据集,划分训练集、验证集和测试集。接着下载预训练权重,分别训练文本检测和识别模型,最后评估模型性能并导出静态图模型。整个过程涵盖了从数据准备到模型部署的完整OCR开发流程,适用于票据识别、文档数字化等应用场景。 https://blog.csdn.net/wwwwww7733/article/details/150445308?spm=1001.2014.3001.5502

1.安装环境

这个环境要求太苛刻了,经常出现版本不兼容的情况,很烦

pip install paddle2onnx==0.9.7
pip install paddleocr==3.1.0

2.导出Paddle推理模型

python3 tools/export_model.py -c /home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/config.yml -o Global.pretrained_model=/home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model/model.pdparams Global.save_inference_dir=/home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model

参数解释:

-c 训练时配置文件路径

Global.pretrained_model=../best_model/model.pdparams  训练生成的pdparams模型路径

Global.save_inference_dir=../best_model  推理模型想要保存到的路径

3.Paddle推理模型转换ONNX模型

paddle2onnx --model_dir /home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=/home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model/model.onnx --opset_version 16 --enable_onnx_checker True
--model_dir指向包含 Paddle 模型的文件夹路径,里面通常有 inference.pdmodel 和 inference.pdiparams
--model_filename指定模型结构文件的文件名,一般是 inference.pdmodel
--params_filename指定模型参数权重文件的文件名,一般是 inference.pdiparams
--save_file转换后导出的 ONNX 模型保存路径,如 /home/best_model/model.onnx
--opset_version指定 ONNX 的 opset 版本,常用 11 或 16,版本越高支持的算子越多
--enable_onnx_checker是否在导出后自动运行 ONNX 的合法性检查,True 表示启用,建议开启

4.ONNX使用onnx_optimizer.py转换为simply-onnx

import onnx
import onnxsim
import onnx.helper as helperdef rename_io_names(model_path, new_input_name, new_output_name):# 加载ONNX模型model = onnx.load(model_path)# 获取模型的输入和输出inputs = model.graph.inputoutputs = model.graph.output# 创建新的输入和输出Tensor, 保留原有属性new_input = helper.make_tensor_value_info(new_input_name,inputs[0].type.tensor_type.elem_type,[d.dim_param if d.dim_param else d.dim_value for d in inputs[0].type.tensor_type.shape.dim])new_output = helper.make_tensor_value_info(new_output_name,outputs[0].type.tensor_type.elem_type,[d.dim_param if d.dim_param else d.dim_value for d in outputs[0].type.tensor_type.shape.dim])# 替换图中的节点引用for node in model.graph.node:for index, inp in enumerate(node.input):if inp == inputs[0].name:node.input[index] = new_input_namefor index, out in enumerate(node.output):if out == outputs[0].name:node.output[index] = new_output_name# 替换旧的输入输出名model.graph.input.remove(inputs[0])model.graph.output.remove(outputs[0])model.graph.input.insert(0, new_input)model.graph.output.insert(0, new_output)return modelif __name__ == "__main__":model_onnx = rename_io_names("/home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model/model.onnx", "images", "output")model_onnx.ir_version = 9# 检查导入的onnx modelonnx.checker.check_model(model_onnx)print(f"Simplifying with onnx-simplifier {onnxsim.__version__}...")model_onnx, check = onnxsim.simplify(model_onnx)assert check, "assert check failed"onnx.save(model_onnx, "/home/boshi/AI_programming/PaddleOCR/output/rec_ppocr_v4/best_model/tkx-ocr_sim.onnx")

        这段脚本把 PaddleOCR 导出的 ONNX 模型的输入、输出节点重命名为固定名字 images / output,并做简化,从而让后续 TensorRT、ONNXRuntime 等推理框架在不知道原模型细节的情况下也能直接加载运行

5.ONNX转换为trt

trtexec --onnx=tkx-ocr_sim.onnx --minShapes=images:1x3x48x640 --optShapes=images:1x3x48x640 --maxShapes=images:8x3x48x640 --memPoolSize=workspace:2048 --saveEngine=tkx-ocr_sim.trt --fp16
参数说明
--onnx=tkx-ocr_sim.onnx指定输入的 ONNX 模型文件路径。
--minShapes=images:1x3x48x640动态 shape 输入设置最小允许尺寸;这里规定 images 张量的最小形状是 NCHW = 1×3×48×640。
--optShapes=images:1x3x48x640设置优化目标形状,TensorRT 会在这个尺寸上做最多的 kernel 搜索与调优;通常选你实际推理时最常见的 batch/size。
--maxShapes=images:8x3x48x640设置最大允许尺寸,运行时不允许超过该形状;构建引擎时也会为这一上限预留资源。
--memPoolSize=workspace:2048新版 TensorRT 用来替代已废弃的 --workspace;指定构建引擎时可用的临时显存(workspace)上限为 2048 MB。
--saveEngine=tkx-ocr_sim.trt把构建好的 TensorRT 引擎序列化并保存到指定文件,方便后续 C++/Python 推理直接加载。
--fp16启用 FP16 精度模式;如果 GPU 支持 Tensor Core,可显著减少显存占用并提升速度,精度一般可接受。

6.最终所有的文件列表

 

http://www.xdnf.cn/news/1337275.html

相关文章:

  • 使用C++17标准 手写一个vector
  • [Mysql数据库] Mysql安全知识
  • 12KM无人机高清图传通信模组——打造未来空中通信新高度
  • Docker操作速查表
  • 动态规划----6.单词拆分
  • AI重塑软件测试:质量保障的下一站
  • 【clion】cmake脚本1:调试脚本并构建Fargo项目win32版本
  • Linux: network: arp: arp_accept
  • HTML应用指南:利用POST请求获取全国刘文祥麻辣烫门店位置信息
  • 我从零开始学习C语言(12)- 循环语句 PART1
  • DRF序列化器
  • PyTorch API 7
  • 数据安全事件分级
  • 嵌入式的各个要点总结(不断更新)
  • KubeBlocks for ClickHouse 容器化之路
  • 第三十三天(信号量)
  • GO环境变量中GO111MODULE到底是干啥的?
  • 【NFTurbo】基于Redisson滑动窗口实现验证码发送限流
  • 【运维】githubvercel学习使用
  • nginx-下载功能-状态统计-访问控制
  • Qt 中最经典、最常用的多线程通信场景
  • 安装electron报错的解决方法
  • 【Express零基础入门】 | 构建简易后端服务的核心知识
  • jvm三色标记
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • 机器学习--数据清洗—(续篇)
  • 算法 ----- 链式
  • 基础笔记8.20
  • 【运维进阶】shell三剑客
  • RK-Android11-PackageInstaller安装器自动安装功能实现