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报错的解决方法