一键搞定!PP-OCRv5模型转ONNX格式全攻略,解锁多平台无缝部署

电子说

1.4w人已加入

描述

飞桨技术生态伙伴 算力魔方

| 引言:还在为OCR模型在不同硬件上的部署而头疼吗?百度飞桨的PP-OCRv5重磅升级,准确率提升13%,且一个模型同时支持中、英、日等五种文字!本文将手把手教你如何将PP-OCRv5模型转换为通用ONNX格式,让你能在Intel、AMD、高通、苹果等各类设备上轻松部署,真正实现“一次转换,随处运行”。

OCR

在当前多语言混合文档处理需求日益增长的背景下,百度飞桨推出的PP-OCRv5

https://github.com/PaddlePaddle/PaddleOCR

成为了业界瞩目的焦点。这款轻量级光学字符识别(OCR)系统不仅将准确率提升了13%,更强大的是,它实现了单一模型同时识别简体中文、繁体中文、英文、日文和拼音五大文本类型,堪称文档处理领域的“瑞士军刀”。

一,为何需要转换为ONNX格式?

尽管PP-OCRv5本身非常强大,但若想将其部署在Intel、AMD、高通、苹果、瑞芯微等各式各样的AI推理设备上,直接使用原模型可能会面临兼容性挑战。而ONNX(Open Neural Network Exchange) 作为一个开放的模型格式标准,就像是AI世界的“通用翻译官”,能够帮助你的模型在不同的硬件和框架之间自由穿梭。

只需完成一次转换,即可利用ONNX Runtime, TensorRT, OpenVINO, ROCm等众多推理引擎进行高速推理,极大地扩展了应用边界。

二,四步上手:PP-OCRv5模型转换ONNX全流程

1,准备工作:安装所需环境与工具

首先,我们需要一个干净的Python环境来避免库版本冲突。推荐使用Anaconda创建虚拟环境。

# 创建并激活名为 ppocrv5_ov 的虚拟环境
conda create -n ppocrv5_ov python=3.11
conda activate ppocrv5_ov

OCR

接下来,安装必不可少的PaddlePaddle深度学习框架和PaddleOCR库。

# 安装PaddlePaddle和PaddleOCR
pip install paddlepaddle
pip install paddleocr
# 安装高性能推理依赖(CPU版)
paddleocr install_hpi_deps cpu

最后,安装本次转换的“主角”——模型转换工具 paddle2onnx 。

# 安装paddle2onnx转换工具
paddlex --install paddle2onnx

OCR

2,下载预训练模型

我们将官方提供的服务器版高性能模型下载到本地。它们分别是检测(detection)、识别(recognition)和分类(classification) 模型。

# 1. 下载并解压文本检测模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_det_infer.tar
tar -xvf PP-OCRv5_server_det_infer.tar
# 2. 下载并解压文本识别模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_rec_infer.tar
tar -xvf PP-OCRv5_server_rec_infer.tar
# 3. 下载并解压文本方向分类模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-LCNet_x1_0_doc_ori_infer.tar
tar -xvf PP-LCNet_x1_0_doc_ori_infer.tar

OCR

3,核心步骤:模型转换

现在,我们使用安装好的 paddle2onnx 工具,将三个模型依次转换为ONNX格式。

# 转换检测模型
paddlex --paddle2onnx --paddle_model_dir ./PP-OCRv5_server_det_infer --onnx_model_dir ./PP-OCRv5_server_det_onnx
# 转换识别模型
paddlex --paddle2onnx --paddle_model_dir ./PP-OCRv5_server_rec_infer --onnx_model_dir ./PP-OCRv5_server_rec_onnx
# 转换分类模型
paddlex --paddle2onnx --paddle_model_dir ./PP-LCNet_x1_0_doc_ori_infer --onnx_model_dir ./PP-OCRv5_server_cls_onnx

转换成功后,你将在当前目录看到三个对应的新文件夹(PP-OCRv5_server_det_onnx, PP-OCRv5_server_rec_onnx, PP-OCRv5_server_cls_onnx),里面便是生成的ONNX模型文件。
OCR

4,验证转换结果

理论转完了,实际能用吗?让我们写个脚本测试一下。

首先,下载一张示例图片:

wget https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png

然后,使用PaddleOCR命令,指定我们刚刚转换好的ONNX模型进行推理:

paddleocr ocr -i ./general_ocr_002.png 
              --text_detection_model_name PP-OCRv5_server_det 
              --text_detection_model_dir PP-OCRv5_server_det_onnx 
              --text_recognition_model_name PP-OCRv5_server_rec 
              --text_recognition_model_dir PP-OCRv5_server_rec_onnx/ 
              --enable_hpi True 
              --device cpu

如果终端成功打印出了图片中的文字识别结果,那么恭喜你!这意味着从模型转换到推理的整个流程已全部跑通,ONNX模型工作正常。

OCR

三,结语与展望
通过以上五个步骤,我们成功地将PP-OCRv5模型转换为了ONNX格式,为其在广阔硬件平台上的部署打开了大门。无论是云端服务器还是边缘设备,ONNX都能提供强大的跨平台能力。
审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分