模型
ch_PP-OCRv4_rec_infer
版本
python '3.9.6'
onnxsim '0.4.7'
paddle2onnx '1.0.5'
再現方法
- paddle2onnx --model_dir ch_PP-OCRv4_rec_infer --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ch_PP-OCRv4_rec_infer\rec_onnx\model.onnx --opset_version 16 --input_shape_dict="{'x':[-1,3,-1,-1]}" --enable_onnx_checker True
- python -m onnxsim model.onnx model_new.onnx --overwrite-input-shape 1,3,48,320
- ncnn-20240102-windows-vs2022-shared/x64/bin/onnx2ncnn.exe model_new.onnx
得到:
Unsupported transpose type !
Unsupported transpose type ! - 按照 這裡 把 transpose 修改完,之後再將未定義的p2o.helper.constant.37_splitncnn_-1 ~ 8 換成 p2o.helper.constant.37_splitncnn_0,到目前模型不會跳出錯誤,但是會直接crash。
- 分別看每個層的輸出:
onnx:
"transpose_44.tmp_0_splitncnn_0" (3, 1, 8, 40, 15)
"p2o.Slice.5" (1, 1, 8, 40, 15)
ncnn:
"transpose_44.tmp_0_splitncnn_0" (3, 8, 40, 15)
"p2o.Slice.5" (3, 1, 1, 1)
所以目前推測是 Crop 出了問題:
第328行:Crop p2o.Slice.4 3 1 transpose_44.tmp_0_splitncnn_2 p2o.helper.constant.37_splitncnn_5 p2o.helper.constant.37_splitncnn_4 p2o.Slice.5 -23309=0 -23310=0
第331行:Crop p2o.Slice.6 3 1 transpose_44.tmp_0_splitncnn_1 p2o.helper.constant.50 p2o.helper.constant.37_splitncnn_2 p2o.Slice.7 -23309=0 -23310=0
第333行:Crop p2o.Slice.8 3 1 transpose_44.tmp_0_splitncnn_0 p2o.helper.constant.50 p2o.helper.constant.37_splitncnn_0 p2o.Slice.9 -23309=0 -23310=0
onnx 在 p2o.Slice.8 的 參數:
ncnn 的參數:
好像少了一些參數像是:p2o.helper.constant.36、p2o.helper.constant.34
到這邊我就卡住了,請問我要怎解決?
1条答案
按热度按时间nue99wik1#
针对onnx模型转换的各种问题,推荐使用最新的pnnx工具转换到ncnn
In view of various problems in onnx model conversion, it is recommended to use the latest pnnx tool to convert your model to ncnn
详细参考文档
Detailed reference documentation
https://github.com/pnnx/pnnx
https://github.com/Tencent/ncnn/wiki/use-ncnn-with-pytorch-or-onnx#how-to-use-pnnx