yolov5 ncnn
c++ input_size要设置为640,即onnx导出模型输入是320,
如果onnx输入改为640,Android执行会死机。
原版是394,375,output,3.0输出是:
394,374,output,这3个是看对应onnx或者sim.onnx的输出层,
-
{"394",32,{{116,90},{156,198},{373,326}}},
-
{"374",16,{{30,61},{62,45},{59,119}}},
-
{"output",8,{{10,13},{16,30},{33,23}}},
举个栗子:onnx或者sim.onnx都有:

yolov5 ncnn
精简版,只有yolov5,ok
https://github.com/sunnyden/YOLOV5_NCNN_Android
有Android 4.0 ios,还有别的网络,比如yolov4
https://github.com/cmdbug/YOLOv5_NCNN
https://github.com/WZTENG/YOLOv5_NCNN




步骤:
1.torch转onnx
2.
./onnx2ncnn crnn_lite_lstm_v2-sim.onnx crnn_lite_lstm_v2.param crnn_lite_lstm_v2.bin
如果报层不支持,
pip install onnx-simplifier pip install onnxruntime
2、onnx再精简模型python -m onnxsim c:/resnet50.onnx c:/resnet50-sim.onnx
这个如果报错:
第二步:
python -m onnxsim _0.9628_1471.onnx crnn_lstm_ex.onnx
E:\project\hjam\ncnn\build-vs2017\tools\onnx\onnx2ncnn.exe crnn_lstm_ex.onnx yolov5s_out.param yolov5s_out.bin
(base37) C:\WINDOWS\system32>python -m onnxsim I:\OCR\chineseocr_lite-onnx\models\crnn_lstm.onnx I:\OCR\chineseocr_lite-onnx\models\crnn_lstm_ex.onnx
Simplifying...
Traceback (most recent call last):
File "E:\ProgramData\Anaconda3\envs\base37\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "E:\ProgramData\Anaconda3\envs\base37\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim_main.py", line 52, in
main()
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim_main.py", line 40, in main
args.input_model, check_n=args.check_n, perform_optimization=not args.skip_optimization, skip_fuse_bn=not args.enable_fuse_bn, input_shapes=input_shapes, skipped_optimizers=args.skip_optimizer, skip_shape_inference=args.skip_shape_inference)
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim\onnx_simplifier.py", line 331, in simplify
model, const_nodes, input_shapes=input_shapes)
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim\onnx_simplifier.py", line 172, in forward_for_node_outputs
res = forward(model, input_shapes=input_shapes)
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim\onnx_simplifier.py", line 157, in forward
inputs = generate_rand_input(model, input_shapes=input_shapes)
File "E:\ProgramData\Anaconda3\envs\base37\lib\site-packages\onnxsim\onnx_simplifier.py", line 108, in generate_rand_input
'please determine the input size manually by --input-shape xxx'.format(key))
RuntimeError: The shape of input "input" has dynamic size, please determine the input size manually by --input-shape xxx
使用onnx_simplify时,--input-shape 参数应该怎么写,上面使用时,没写--input-shape参数
输入尺寸没写,才会这样,写了输入尺寸就可以转换了。
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/109301164
- 点赞
- 收藏
- 关注作者
评论(0)