从零开发短视频电商 PaddleOCR Java推理 (五)ONNXRuntime引擎推理

发布时间:2024年01月17日

1.把飞桨OCR推理模型转换为ONNX模型

主要有两种使用方式:

飞桨模型地址示例

  • https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar

  • https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar

  • https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/release/2.7/ppocr/utils/ppocr_keys_v1.txt

2.ONNX模型的pre-process和post-process

python版入口代码:https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/model_zoo/ocr/infer.py

python文本检测:https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/model_zoo/ocr/utils/predict_det.py

python文本识别:https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/model_zoo/ocr/utils/predict_rec.py

java版本:https://github.com/mymagicpower/AIAS/tree/main/1_image_sdks/ocr_v4_sdk

下面是一些DJL中的pre-post的pipeline可以借鉴

NDArray array = image.toNDArray(manager);
Pipeline pipeline = new Pipeline();
pipeline.add(new CenterCrop());
pipeline.add(new Resize(224, 224));
pipeline.add(new ToTensor());
NDList list = pipeline.transform(new NDList(array));
线程配置

您可以在 Criteria 中使用以下设置进行线程优化

Criteria.builder()
    .optOption("interOpNumThreads", <num_of_thread>)
    .optOption("intraOpNumThreads", <num_of_thread>)
    ...

提示:一开始将两者都设置为1以查看性能。然后,将其中之一设置为total_cores/total_java_inference_thread以查看性能如何。

3.推理

方式一 RapidOCR

将PaddleOCR中的模型转换为ONNX格式,使用Python/C++/Java/C# 将它移植到各个平台。

Github: https://github.com/RapidAI/RapidOCR

Java版本:https://github.com/MyMonsterCat/RapidOcr-Java

在线demo: https://www.modelscope.cn/studios/liekkas/RapidOCRDemo/summary

方式二 DJL

直接看这个repo:https://github.com/mymagicpower/AIAS/tree/main/1_image_sdks/ocr_v4_sdk

文章来源:https://blog.csdn.net/abu935009066/article/details/135650093
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。