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秒,这也太慢了吧。这个还没找到什么原因。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM