paddleocr Android推理

x33g5p2x  于2022-05-05 转载在 Java  
字(2.6k)|赞(0)|评价(0)|浏览(620)

导出ncnn

1.导出inference

2.导出onnx

上面命令报错,后来删掉最后两个参数,导出onnx ok

3.onnx转ncnn

官方Android PaddleLite 推理示例

模型相关资源路径

导出Android PaddleLite nb文件:

导出ncnn

步骤:先导出inference,再导出onnx,最后导出ncnn模型

1.导出inference

-c 后面设置训练算法的yml配置文件

-o 配置可选参数

Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。

Global.save_inference_dir参数设置转换的模型将保存的地址。

python tools/export_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrained_model=./ch_lite/ch_ppocr_mobile_v2.0_det_train/best_accuracy Global.save_inference_dir=./inference/det_db/


python tools/export_model.py -c ./configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_kuaidi.yml -o Global.pretrained_model=./tools/output/ch_db_mv3_train/best_accuracy Global.save_inference_dir=./inference/det_db/

2.导出onnx

paddle2onnx --model_dir=./inference/det_db/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10 --input_shape_dict="{'x': [-1, 3, -1, -1]}" --enable_onnx_checker=True

上面命令报错,后来删掉最后两个参数,导出onnx ok

paddle2onnx --model_dir=./inference/det_db/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10

3.onnx转ncnn

下载转换工具:ncnn-20220420-windows-vs2017.zip

Releases · Tencent/ncnn · GitHub

转ncnn模型:

E:\project\xxxx\ncnn-20220420-windows-vs2017\x64\bin\onnx2ncnn model.onnx det_sim.param det_sim.bin

转成功会有det_sim.param和det_sim.bin生成

官方Android PaddleLite 推理示例

模型相关资源路径

模型路径:

src/main/assets/models/ocr_v2_for_cpu 

模型:

src/main/assets/models/ocr_v2_for_cpu/ch_ppocr_mobile_v2.0_det_opt.nb

文字识别keys_v1.txt

src/main/assets/labels/ppocr_keys_v1.txt

项目资源列表

** c++推理代码:**

在Project视图中:

导出Android PaddleLite nb文件:

官方自带demo是用PaddleLite推理的

1,打开cmd 输入 pip install paddlelite 回车,安装paddlelite工具;

2,运行 main.py文件

# paddle模型导出安卓端可以运行的nb文件
#paddlehub模型库网址:https://www.paddlepaddle.org.cn/hublist
 
# 引用Paddlelite预测库
from paddlelite.lite import *
 
def convert():
    # 1. 创建opt实例
    opt = Opt()
    # 2. 指定输入模型地址
    opt.set_model_file(r"D:\project\pymodel\pandel\inference_model\__model__")
    opt.set_param_file(r"D:\project\pymodel\pandel\inference_model\__params__")
    # opt.set_model_dir(r"D:\project\nb\model\ace2p\ace2p_human_parsing")
    
    # 3. 指定转化类型: arm、x86、opencl、npu
    opt.set_valid_places("arm")
    # 4. 指定模型转化类型: naive_buffer、protobuf
    opt.set_model_type("naive_buffer")
    # 4. 输出模型地址
    opt.set_optimize_out("model_opt")
    # 5. 执行模型优化
    opt.run()
    # opt.run_optimize("", "", "model.pdparams", "arm,npu", "deepl3p_opt")
 
if __name__ == '__main__':
    print('导出模型开始....')
    convert()
    print('导出结束.....')

原文链接:https://blog.csdn.net/zdb1314/article/details/119187219

相关文章