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

GitHub - sunnyden/YOLOV5_NCNN_Android: YOLOv5 C++ Implementation on Android using NCNN framework

有Android 4.0 ios,还有别的网络,比如yolov4

GitHub - cmdbug/YOLOv5_NCNN: 🍅 Deploy ncnn on mobile phones. Support Android and iOS. 移动端ncnn部署,支持Android与iOS。

GitHub - cmdbug/YOLOv5_NCNN: 🍅 Deploy ncnn on mobile phones. Support Android and iOS. 移动端ncnn部署,支持Android与iOS。

步骤:

1.torch转onnx

 ./onnx2ncnn crnn_lite_lstm_v2-sim.onnx crnn_lite_lstm_v2.param crnn_lite_lstm_v2.bin

 如果报层不支持,安装:

pip install onnxsim

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参数
输入尺寸没写,才会这样,写了输入尺寸就可以转换了。

可以用python代码调用:

roialigned_feature,proposals就是onnx的输出参数

   import onnxsim
    model = onnx.load(new_onnx_filepath)
    # convert model
    model_simp, check = onnxsim.simplify(model, check_n=0,input_shapes={'roialigned_feature':[-1,256, 7, 7],'proposals':[-1,4]},
                                dynamic_input_shape=True)

    onnx.save(model_simp, new_onnx_filepath)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值