Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rs export: Failed to export an ONNX attribute #190

Open
markmester opened this issue Oct 22, 2019 · 4 comments
Open

rs export: Failed to export an ONNX attribute #190

markmester opened this issue Oct 22, 2019 · 4 comments

Comments

@markmester
Copy link

Hi All!

I've been experimenting with this framework the past few weeks with great success -- thanks to all who have worked on this tool.

I've run into an issue with the rs export command that looks like it may be an underlying library issue? I've tried it on the releasedbavaria-dop80-checkpoint.pth as well as a few of my own and they all produce the following error:

docker run --name exporter --rm -it -v /home/mmester/robosat-tanzania-19/data:/data -v /home/mmester/robosat-tanzania-19/config:/config mapbox/robosat:latest-cpu export /data/checkpoints/onnx.pb --dataset /config/dataset-building-mapbox.toml --image_size 512 --checkpoint /data/checkpoints/checkpoint-00050-of-00050.pth
/usr/src/app/robosat/unet.py:120: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  assert size[-1] % 32 == 0 and size[-2] % 32 == 0, "image resolution has to be divisible by 32 for resnet"
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/src/app/robosat/tools/__main__.py", line 58, in <module>
    args.func(args)
  File "/usr/src/app/robosat/tools/export.py", line 40, in main
    torch.onnx.export(net, batch, args.model)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/__init__.py", line 25, in export
    return utils.export(*args, **kwargs)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/utils.py", line 131, in export
    strip_doc_string=strip_doc_string)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/utils.py", line 363, in _export
    _retain_param_name, do_constant_folding)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/utils.py", line 278, in _model_to_graph
    _disable_torch_constant_prop=_disable_torch_constant_prop)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/utils.py", line 188, in _optimize_graph
    graph = torch._C._jit_pass_onnx(graph, operator_export_type)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/__init__.py", line 50, in _run_symbolic_function
    return utils._run_symbolic_function(*args, **kwargs)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/utils.py", line 589, in _run_symbolic_function
    return fn(g, *inputs, **attrs)
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/symbolic.py", line 130, in wrapper
    args = [_parse_arg(arg, arg_desc) for arg, arg_desc in zip(args, arg_descriptors)]
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/symbolic.py", line 130, in <listcomp>
    args = [_parse_arg(arg, arg_desc) for arg, arg_desc in zip(args, arg_descriptors)]
  File "/opt/venv/lib/python3.6/site-packages/torch/onnx/symbolic.py", line 90, in _parse_arg
    raise RuntimeError("Failed to export an ONNX attribute, "
RuntimeError: Failed to export an ONNX attribute, since it's not constant, please try to make things (e.g., kernel size) static if possible

My dataset.config:

# Configuration related to a specific dataset.
# For syntax see: https://github.com/toml-lang/toml#table-of-contents

# Dataset specific common attributes.
[common]
  # Image side size in pixels.
  image_size = 256

  # The slippy map dataset's base directory.
  dataset = "/data/mapbox"

  # Human representation for classes.
  classes = ['background', 'building']

  # Color map for visualization and representing classes in masks.
  # Note: available colors can be found in `robosat/colors.py`
  colors  = ['denim', 'orange']


# Dataset specific class weights computes on the training data.
# Needed by 'mIoU' and 'CrossEntropy' losses to deal with unbalanced classes.
# Note: use `./rs weights -h` to compute these for new datasets.
[weights]
  values = [1.570984, 7.152249]

Any debugging suggestions or potential fixes would be greatly appreciated!

@markmester
Copy link
Author

An update to anyone having this issue --

I've confirmed if you apply the changes is the following commit, the rs export command will work as expected.

pytorch/pytorch@11845cf

The file is located /opt/venv/lib/python3.6/site-packages/torch/onnx/symbolic.py in the Dockerfile.cpu container.

@daniel-j-h
Copy link
Collaborator

Thanks for flagging. By now we are a bit behind with pytorch & torchvision.

Upgrading them is tracked in #182.

@aleksandrmelnyk
Copy link

hi guys,

any quick solutions to it. Or need to w8 for the update?

thanks.

@daniel-j-h
Copy link
Collaborator

Happy to review and accept pull requests for #182 - I don't have the time or resources anymore to run robosat out on my own.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants