LPRNet_Pytorch icon indicating copy to clipboard operation
LPRNet_Pytorch copied to clipboard

请问您试过将网络转onnx嘛?

Open JF-Lee opened this issue 3 years ago • 2 comments

请问在转onnx时出现这样的维度问题应该怎么解决呢? 有一些网络改数据格式是可以解决问题的,但是这里好像不行

graph(%input.1 : Float(1, 3, 24, 94), %backbone.0.weight : Float(64, 3, 3, 3), %backbone.0.bias : Float(64), %backbone.1.weight : Float(64), %backbone.1.bias : Float(64), %backbone.1.running_mean : Float(64), %backbone.1.running_var : Float(64), %backbone.4.block.0.weight : Float(32, 64, 1, 1), %backbone.4.block.0.bias : Float(32), %backbone.4.block.2.weight : Float(32, 32, 3, 1), %backbone.4.block.2.bias : Float(32), %backbone.4.block.4.weight : Float(32, 32, 1, 3), %backbone.4.block.4.bias : Float(32), %backbone.4.block.6.weight : Float(128, 32, 1, 1), %backbone.4.block.6.bias : Float(128), %backbone.5.weight : Float(128), %backbone.5.bias : Float(128), %backbone.5.running_mean : Float(128), %backbone.5.running_var : Float(128), %backbone.8.block.0.weight : Float(64, 64, 1, 1), %backbone.8.block.0.bias : Float(64), %backbone.8.block.2.weight : Float(64, 64, 3, 1), %backbone.8.block.2.bias : Float(64), %backbone.8.block.4.weight : Float(64, 64, 1, 3), %backbone.8.block.4.bias : Float(64), %backbone.8.block.6.weight : Float(256, 64, 1, 1), %backbone.8.block.6.bias : Float(256), %backbone.9.weight : Float(256), %backbone.9.bias : Float(256), %backbone.9.running_mean : Float(256), %backbone.9.running_var : Float(256), %backbone.11.block.0.weight : Float(64, 256, 1, 1), %backbone.11.block.0.bias : Float(64), %backbone.11.block.2.weight : Float(64, 64, 3, 1), %backbone.11.block.2.bias : Float(64), %backbone.11.block.4.weight : Float(64, 64, 1, 3), %backbone.11.block.4.bias : Float(64), %backbone.11.block.6.weight : Float(256, 64, 1, 1), %backbone.11.block.6.bias : Float(256), %backbone.12.weight : Float(256), %backbone.12.bias : Float(256), %backbone.12.running_mean : Float(256), %backbone.12.running_var : Float(256), %backbone.16.weight : Float(256, 64, 1, 4), %backbone.16.bias : Float(256), %backbone.17.weight : Float(256), %backbone.17.bias : Float(256), %backbone.17.running_mean : Float(256), %backbone.17.running_var : Float(256), %backbone.20.weight : Float(68, 256, 13, 1), %backbone.20.bias : Float(68), %backbone.21.weight : Float(68), %backbone.21.bias : Float(68), %backbone.21.running_mean : Float(68), %backbone.21.running_var : Float(68), %container.0.weight : Float(68, 516, 1, 1), %container.0.bias : Float(68)):

Original python traceback for operator 14 in network torch-jit-export_predict in exception above (most recent call last): Traceback (most recent call last): File "to_onnx_lpr.py", line 32, in outputs = rep.run(np.random.randn(1, 3, 24, 94).astype(np.float32)) File "/usr/local/lib/python3.6/dist-packages/caffe2/python/onnx/backend_rep.py", line 57, in run self.workspace.RunNet(self.predict_net.name) File "/usr/local/lib/python3.6/dist-packages/caffe2/python/onnx/workspace.py", line 63, in f return getattr(workspace, attr)(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/caffe2/python/workspace.py", line 255, in RunNet StringifyNetName(name), num_iter, allow_fail, File "/usr/local/lib/python3.6/dist-packages/caffe2/python/workspace.py", line 216, in CallWithExceptionIntercept return func(args, **kwargs) RuntimeError: [enforce fail at conv_op_impl.h:38] C == filter.dim32(1) * G. 128 vs 64. Convolution op: input channels does not match: # of input channels 128 is not equal to kernel channels * group: 641 Error from operator: input: "76" input: "backbone.8.block.0.weight" input: "backbone.8.block.0.bias" output: "77" name: "Conv_14" type: "Conv" arg { name: "strides" ints: 1 ints: 1 } arg { name: "pads" ints: 0 ints: 0 ints: 0 ints: 0 } arg { name: "dilations" ints: 1 ints: 1 } arg { name: "kernels" ints: 1 ints: 1 } arg { name: "group" i: 1 } device_option { device_type: 0 device_id: 0 }

JF-Lee avatar Jul 30 '20 06:07 JF-Lee

import io import torch import torch.onnx from model.LPRNet_noname import build_lprnet

pthfile =r'./save_model/lprnet0.0.pth'

lprnet = build_lprnet(lpr_max_len=8, phase=False, class_num=66, dropout_rate=0.5) lprnet = torch.load(pthfile, map_location='cpu')

dummy_input = torch.randn(1, 3, 24, 94) input_names = [ 'input' ] output_names = [ 'output' ]

onnxfile = pthfile[0:-3]+ r'onnx' torch.onnx.export(lprnet, dummy_input, onnxfile, verbose=True, input_names=input_names, output_names=output_names)

我用这个代码转成功过,你可以试一下 依赖包: torch==1.5.1 torchvision==0.6.1 tf-models-nightly==2.3.0.dev20200811 onnx==1.7.0 onnxruntime==1.7.0 onnx-tf==1.7.0 tensorflow-addons==0.11.2

luxianlebron avatar Jun 17 '21 08:06 luxianlebron

大佬好,我转出来的ONNX模型用opencv DNN 加载会报错:浮点数例外 (核心已转储),你的有这个问题吗

hsl20130659 avatar May 07 '22 08:05 hsl20130659