mapbox / mapbox/robosat

rs export: Failed to export an ONNX attribute

Open
#190 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2.1k
Forks
385
PR merge metrics
No merged PRs in 30d

Description

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 released`bavaria-dop80-checkpoint.pth` as well as a few of my own and they all produce the following error:

```bash
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
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
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:

```toml
# 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!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with robosat/tools/export.py, especially the torch.onnx.export call shown in the traceback, and reproduce the supplied rs export command with the listed checkpoint and dataset configuration. Trace the ONNX attribute error through the export path; done means the command successfully exports the model without the reported RuntimeError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, pytorch
Domain
machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.