PaddleOCR转ONNX推理

1、环境:

Windows10下PaddleOCR可以正常inference,然后转存为onnx模型进行推理加速。
paddle:paddlepaddle-gpu=2.0.0rc1;
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 * ? * ?):

file_path = '。/onnx_model/det_large.onnx'
model = onnx.load(file_path)
model.graph.input[0].type.tensor_type.shape.dim[0].dim_param = '?'
model.graph.input[0].type.tensor_type.shape.dim[2].dim_param = '?'
model.graph.input[0].type.tensor_type.shape.dim[3].dim_param = '?'
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 

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

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

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

参考文章:

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

你可能感兴趣的:(PaddleOCR,ONNX)