PaddleOCR v4模型转onnx踩坑记

1、训练得到的模型格式及推理格式

在训练的时候,我的paddlepaddle用的版本是3.2.0,用的是pp-ocrv4_mobile_rec的预训练模型,

训练命令是

复制代码
python tools/train.py -c configs/rec/PP-OCRv4/PP-OCRv4_mobile_rec.yml  

训练出来得模型是这种格式

./output/rec_ppocr_v4/best_model

├── model.pdopt

├── model.pdparams

转成推理模型的时候,是参照官方的命令

PaddleOCR/docs/version3.x/module_usage/text_recognition.md at main · PaddlePaddle/PaddleOCR · GitHub

复制代码
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/"

得出来的模型结构是

./PP-OCRv4_mobile_rec_infer/

├── inference.json

├── inference.pdiparams

├── inference.yml

这种推理模型,在paddlepaddle的环境下是可以正常推理的

2、所遇到的困境1(model.pdparams转inference.pdmodel和inference.pdiparams)

但是这种推理模型,是不能够使用paddle2onnx工具转成onnx模型的

要使用paddle2onnx工具转成onnx模型,得是下面这种推理结构

./PP-OCRv4_mobile_rec_old_infer/

├── inference.pdmodel

├── inference.pdiparams

├── inference.yaml

├── inference.pdiparams.info

要得到.pdmodel和.pdiparams的推理格式,得用paddlepaddle==2.4.2的版本,但是现在所有的镜像上好像都没有了paddlepaddle==2.4.2的版本

幸运的是,我搜到了另一个博客

https://blog.csdn.net/weixin_27219587/article/details/159817838

这个博主整理了一个对照表,我先在我原先的paddlepaddle==3.2.0的版本上测试,没有成功;我想新建个conda环境,尝试安装一下paddlepaddle==3.0.0b2的版本

复制代码
#新建环境
conda create --name paddleonnx2 python==3.9.12
#安装paddlepaddle==3.0.0b2
pip install paddlepaddle==3.0.0b2 -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装PaddleOCR包中的依赖项
pip install -r requirements.txt

使用上面博主这个命令

复制代码
# 强制使用传统IR格式导出(兼容性最佳)
python tools/export_model.py \
    -c configs/rec/PP-OCRv4/en_PP-OCRv4_mobile_rec.yml \
    -o Global.export_with_pir=null \
    Global.checkpoints="output/rec_ppocr_v4/best" \
    Global.save_inference_dir="./output"

再尝试转换,成功了

但是测试的时候,乱码

3、所遇到的困境2(inference.pdmodel和inference.pdiparams转onnx)

在上面这个环境中,我安装paddle2onnx工具,版本是2.1.0,进行onnx模型的转换,转换命令是

复制代码
paddle2onnx --model_dir ./output/rec_ppocr_v4_oldinference --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./inference/rec_ppocr_v4_onnx/rec.onnx --opset_version 11 --enable_onnx_checker True

最后转换错误,报错

复制代码
ImportError: DLL load failed while importing paddle2onnx_cpp2py_export: 找不指定的程序

这个时候,我又搜到了另外一个博主的博客

https://blog.csdn.net/weixin_46028455/article/details/159731735

于是我想着既然有inference.pdmodel和inference.pdiparams,跟paddlepaddle环境没关系了,再新建一个环境好了。

复制代码
#新建环境
conda create --name paddleonnx3 python==3.8
#安装特定 nightly 版 paddlepaddle(CPU)
pip install paddlepaddle==3.0.0.dev20250426 -i https://www.paddlepaddle.org.cn/packages/nightly/cpu/ --pre
#安装 paddle2onnx
pip install paddle2onnx

再安装上缺少的相关依赖,转换成功了

但是最后onnx有问题,推理也是乱码

相关推荐
Raink老师3 小时前
【AI面试临阵磨枪-79】实时数据 RAG:订单、商家、物流、天气、动态库存
人工智能·面试·职场和发展
脑极体3 小时前
点亮星河AI+鸿蒙,一座艺术场馆的日神觉醒
人工智能·华为·harmonyos
Cosolar3 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
BUG指挥官3 小时前
Claude Code的自动化编程
人工智能
意图共鸣4 小时前
意图共鸣科技《认知智能白皮书》——感知与执行分离:认知架构(CA)如何重塑大模型底层结构
人工智能·架构
等一个人的@4 小时前
让数据自己开口:数睿通智库新增智能问数模块
人工智能·自然语言处理
ZGi.ai4 小时前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
王莎莎-MinerU4 小时前
MinerU 深度技术解析:从架构原理到生产部署的全面指南
css·人工智能·自然语言处理·架构·ocr·个人开发
盘古信息IMS5 小时前
盘古信息IMS V6 8.0重磅发布:以薪火AI数智平台点燃离散制造数智化引擎
大数据·人工智能·制造
weilaieqi15 小时前
从音响制造到AI家庭娱乐生态:不见不散AI智能K歌音响亮相第二十届深圳国际金融博览会
人工智能·制造·娱乐