PaddleOCR 是目前最好的开源OCR框架, 但paddle框架的兼容性实在不怎么好, 部署的时候容易出现各种各样的问题. 如果能把PaddleOCR转成ONNX, 就可以跳过paddle框架坑的同时, 又可以白嫖PaddleOCR的强大检测性能.
本文会介绍一下, 如何把最新的PP_OCRv4模型转成onxx格式, 并正确运行.
步骤1: PaddleOCR模型转ONNX
jspaddle2onnx --model_dir /mnt/d/Downloads/202406/paddelocr/pp/ch_PP-OCRv4_det_infer/ --model_filename inference.pdmodel --params_filename inference.pdiparams --opset_version 11 --save_file /mnt/d/Downloads/202406/paddelocr/onnx/ch_PP-OCRv4_det_infer.onnx
paddle2onnx --model_dir /mnt/d/Downloads/202406/paddelocr/pp/ch_PP-OCRv4_rec_infer/ --model_filename inference.pdmodel --params_filename inference.pdiparams --opset_version 11 --save_file /mnt/d/Downloads/202406/paddelocr/onnx/ch_PP-OCRv4_rec_infer.onnx
步骤2: ONNX推理运行
转换格式成功后得到的ONNX模型可以进行推理。若要用于识别任务,还需补充输入图片的预处理和检测结果的输出等外围数据处理步骤。
https://github.com/jingsongliujing/OnnxOCR
该项目基于转换后的ppocr_server_v2.0模型,已经完成了文本识别所需的外围数据处理部分。
经过测试,pp_ocr系列模型的预处理和后处理部分是通用的。只需在此代码基础上集成转换好的ONNX模型即可。
https://github.com/CKboss/pp_onnx
这是基于原项目fork后的修改版,支持运行PP_OCRv4,并能调用v4版本的det和rec OCR模型。旋转检测部分的cls模型保持不变,仍使用server_v2.0版本。此外,还修改了可能导致引用冲突的包名和部分模型输入参数。
注:
转换为ONNX格式后的模型精度损失情况尚不明确,但从简单的demo来看,模型能够正常进行推理。
本文作者:JiangOil
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!