PaddleOCR转ONNX推理

举报
风吹稻花香 发表于 2022/01/23 23:29:54 2022/01/23
【摘要】 PaddleOCR转ONNX推理 onnxruntime: https://github.com/RapidAI/RapidOCR c++动态库: https://github.com/doubleright/PdddleOCRSDK 1、环境: Windows10下PaddleOCR可以正常inference,然后转存...

PaddleOCR转ONNX推理

onnxruntime:

https://github.com/RapidAI/RapidOCR

c++动态库:

https://github.com/doubleright/PdddleOCRSDK


1、环境:
Windows10下PaddleOCR可以正常inference,然后转存为onnx模型进行推理加速。
paddle:paddlepaddle-gpu=2.3.0;
paddle2onnx:paddle2onnx=0.5;
onnx:onnx=1.8.0;
onnxruntime:onnxruntime-gpu=1.6.0;
cuda:cuda=10.1;
cudnn:cudnn=7.6.5;
这边onnxruntime-gpu需要安装cuda,onnxruntime就不需要,正常无需gpu加速,已可达到使用需求。

2、模型转换(paddle-onnx)
(1)检测模型
paddle2onnx --model_dir ./inference_large/det/ --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./onnx_model/det_large.onnx --opset_version 11 --enable_onnx_checker True 

通过上述命令在目录onnx_model下得到PaddleOCR检测模型的onnx模型,该模型可以放到netron上查看输入尺寸,默认为(-1 * 3 * 640 * 640),如果我们需要修改模型输入的尺寸和batch,可以用onnx修改得到的onnx模型输入尺寸(? * 3 * ? * ?):


  
  1. file_path = './onnx_model/det_large.onnx'
  2. model = onnx.load(file_path)
  3. model.graph.input[0].type.tensor_type.shape.dim[0].dim_param = '?'
  4. model.graph.input[0].type.tensor_type.shape.dim[2].dim_param = '?'
  5. model.graph.input[0].type.tensor_type.shape.dim[3].dim_param = '?'
  6. onnx.save(model, './onnx_model/det_large_dynamic.onnx')



(2)识别模型
paddle2onnx --model_dir ./inference_large/rec/ --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./onnx_model/rec_large.onnx --opset_version 11 --enable_onnx_checker True 
1
同理,通过上述命令在目录onnx_model下得到PaddleOCR检测模型的onnx模型,该模型可以放到netron上查看输入尺寸,默认为(-1 * 3 * 32 * 100),如果我们需要修改模型输入的尺寸和batch,可以用onnx修改得到的onnx模型输入尺寸(? * 3 * ? * ?):


  
  1. file_path = './onnx_model/rec_large.onnx'
  2. model = onnx.load(file_path)
  3. model.graph.input[0].type.tensor_type.shape.dim[0].dim_param = '?'
  4. model.graph.input[0].type.tensor_type.shape.dim[2].dim_param = '?'
  5. model.graph.input[0].type.tensor_type.shape.dim[3].dim_param = '?'
  6. onnx.save(model, './onnx_model/rec_large_dynamic.onnx')


具体onnx模型如何推理的后续文章会陆续介绍!

参考文章:

https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/README_zh.md
https://blog.csdn.net/GeneralJing/article/details/113564817

原文链接:https://blog.csdn.net/favorxin/article/details/113838901

这个成功了:

paddle2onnx --model_dir ./ch_PP-OCRv2_rec_infer/ --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./vc_rec.onnx --opset_version 11
 

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/122646624

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。