paddleocr Android推理
目录
官方Android推理示例
模型路径:
src/main/assets/models/ocr_v2_for_cpu
模型:
src/main/assets/models/ocr_v2_for_cpu/ch_ppocr_mobile_v2.0_det_opt.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 nb文件:
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
文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/124564802
- 点赞
- 收藏
- 关注作者
评论(0)