pytorch转onnx转ncnn问题Unsqueeze not supported yet!

Posted xdk1002

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch转onnx转ncnn问题Unsqueeze not supported yet!相关的知识,希望对你有一定的参考价值。

1、pytorch模型转onnx

input = cv.imread(‘c:/123.jpg‘)
input = np.transpose(input, (2, 0, 1)).astype(np.float32)
now_image1 = Variable(torch.from_numpy(input))
dummy_input = now_image1.unsqueeze(0)
input_name = [‘input‘]
output_name = [‘output‘]
torch_out = torch.onnx._export(model, dummy_input, "c:/resnet50.onnx", verbose=True, input_names=input_name, output_names=output_name)

2、onnx再精简模型python -m onnxsim c:/resnet50.onnx c:/resnet50-sim.onnx

注意这里需要安装一些库>pip install onnx-simplifier  pip install  onnxruntime

 

3、下载ncnn源码,编译后会有onnx2ncnn的应用

转换过程出现技术图片

 

 

查找了各种办法都不行,后面看了一下onnx2ncnn的源码,发现每一层里面都有对应的代码处理,而我用的onnx2ncnn里面没有对Unsqueeze和Squeeze的层做处理,因为我的onnx2ncnn的代码是较早的版本,再去github上看最新的代码,发现已经有对Unsqueeze和Squeeze的层的处理,于是重新下载最新的代码编译,成功转换完成。可是转换后的模型测试结果都是正确的,就是速度好像特别慢,单线程在windows上要4.3秒,这也太慢了吧。这个还没找到什么原因。

 

以上是关于pytorch转onnx转ncnn问题Unsqueeze not supported yet!的主要内容,如果未能解决你的问题,请参考以下文章

pytorch转caffe2 之 onnx转caffe2报错的解决方法

Pytorch模型(.pth)转onnx模型(.onnx)

Pytorch的pth模型转onnx,再用ONNX Runtime调用推理(附python代码)

pytorch 转tensorflow注意

Window系统中onnx转化为ncnn详细教程

yolov5 6.0版本->onnx->ncnn +安卓部署 附加ncnn环境配置 保姆级详细教程