在RK3588开发板上部署rknn模型参考的链接https://blog.csdn.net/shajiayu1/article/details/132011855?utm_source=miniapp_weixin
在转换 python rockchip/rknpu2_tools/export.py --config_path tools/rknpu2/config/ppocrv3_cls.yaml --target_platform rk3588 失败
具体错误如下:
E load_onnx: Catch exception when loading onnx model: /home/atw/rknn/FastDeploy-develop/examples/vision/ocr/PP-OCR/ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx!
E load_onnx: Traceback (most recent call last):
E load_onnx: File "rknn/api/rknn_base.py", line 1382, in rknn.api.rknn_base.RKNNBase.load_onnx
E load_onnx: File "rknn/api/rknn_base.py", line 658, in rknn.api.rknn_base.RKNNBase._create_ir_and_inputs_meta
E load_onnx: File "rknn/api/ir_graph.py", line 58, in rknn.api.ir_graph.IRGraph.init
E load_onnx: File "rknn/api/ir_graph.py", line 503, in rknn.api.ir_graph.IRGraph.rebuild
E load_onnx: File "/home/atw/rknn/venv/lib/python3.8/site-packages/onnx/checker.py", line 106, in check_model
E load_onnx: C.check_model(protobuf_string)
E load_onnx: onnx.onnx_cpp2py_export.checker.ValidationError: Field 'shape' of type is required but missing.
整体模型转换的步骤如下:
pdmodel转onnx命令:
paddle2onnx --model_dir ch_ppocr_mobile_v2.0_cls_infer --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx --opset_version 12 --enable_dev_version True
固定模型的输入shape命令
python -m paddle2onnx.optimize --input_model ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx --output_model ch_ppocr_mobile_v2.0_cls_infer/ch_ppocr_mobile_v2.0_cls_infer.onnx --input_shape_dict "{'x':[1,3,48,192]}"
onnx转换成RKNN模型
python rockchip/rknpu2_tools/export.py --config_path tools/rknpu2/config/ppocrv3_cls.yaml --target_platform rk3588
相同的步骤转换飞桨的ch_PP-OCRv3_det_infer和ch_PP-OCRv3_rec_infer这两个模型是没有问题的
请各位不吝赐教
【以下回答由 GPT 生成】
问题原因:错误信息中指出了缺少了必要的字段shape,这是导致转换过程中出错的原因。
解决方案: 在这种情况下,可以尝试一下几种解决方案:
--input_shape_dict
参数来指定输入的形状。确保输入数据的形状与模型所需的形状相匹配。
检查模型是否经过正确的转换。可能是转换步骤中出现了问题。
在进行onnx到RKNN的转换时,确保使用了正确的工具和正确的参数。检查命令中的文件路径、配置文件和目标平台等是否都正确设置。
更新相关库或工具。
如果上述解决方案都不能解决问题,可能需要进一步调查该错误的具体原因,可能需要查看代码、调试或检查模型文件的结构来找到问题所在。