3

Testing ONNX model for super resolution model, I have error running this sample program.

My ONNX version is 1.5.0 with onnxruntime 1.4.0. Onnxruntime was installed using pip. Pytorch version is 1.6.0

Error is at ort_session = onnxruntime.InferenceSession('/home/itc/pytorch/sub_pixel_cnn_2016/model/super-resolution-10.onnx')

The error is in loading onnx model.

Traceback (most recent call last):
  File "test.py", line 73, in <module>
    ort_session = onnxruntime.InferenceSession('/home/itc/pytorch/sub_pixel_cnn_2016/model/super-resolution-10.onnx')
  File "/home/itc/pytorch/lib/python3.7/site-packages/onnxruntime/capi/session.py", line 158, in __init__
    self._load_model(providers or [])
  File "/home/itc/pytorch/lib/python3.7/site-packages/onnxruntime/capi/session.py", line 166, in _load_model
    True)
RuntimeError: /onnxruntime_src/onnxruntime/core/session/inference_session.cc:238 onnxruntime::InferenceSession::InferenceSession(const onnxruntime::SessionOptions&, const onnxruntime::Environment&, const string&) status.IsOK() was false. Given model could not be parsed while creating inference session. Error message: Protobuf parsing failed.
 

How can I solve the error?

batuman
  • 7,066
  • 26
  • 107
  • 229

1 Answers1

3

super-resolution-10.onnx seems to load OK for me. I downloaded the file from https://github.com/onnx/models/blob/master/vision/super_resolution/sub_pixel_cnn_2016/model/super-resolution-10.onnx

$ pip install onnxruntime
...
Successfully installed onnxruntime-1.5.1

I also tried pip install onnxruntime==1.4.0 - also works fine.

Then tried to load it (there are bunch of warnings, but it loads ok):

In [1]: import onnxruntime

In [2]: onnxruntime.InferenceSession("super-resolution-10.onnx")
2020-10-12 23:25:23.486256465 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv1.bias appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486293664 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv1.weight appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486308563 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv2.bias appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486322663 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv2.weight appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486335363 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv3.bias appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486348462 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv3.weight appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486361862 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv4.bias appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
2020-10-12 23:25:23.486384161 [W:onnxruntime:, graph.cc:1030 Graph] Initializer conv4.weight appears in graph inputs and will not be treated as constant value/weight. This may prevent some of the graph optimizations, like const folding. Move it out of graph inputs if there is no need to override it, by either re-generating the model with latest exporter/converter or with the tool onnxruntime/tools/python/remove_initializer_from_input.py.
Out[2]: <onnxruntime.capi.session.InferenceSession at 0x7f58367236d0>

I think it's likely your ONNX file is corrupted, please try to load it with Netron to verify.

As a side note, PyTorch version and onnx version should be irrelevant for the loading.

Sergii Dymchenko
  • 6,890
  • 1
  • 21
  • 46
  • 1
    Thanks. Yes the model downloaded from this link (https://github.com/onnx/models) was corrupted. I downloaded the whole folders of models and super resolution model inside can't be displayed using Netron. The link you provided has good model. Netron can display the model. Actually they are same. Downloaded the whole folder and the model inside is corrupted. – batuman Oct 14 '20 at 03:01