convert detectron2 pointrend model failed
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 850
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 10
Description
## ❓Question
Convert a traceable model from detectron2 failed with type mismatch:
```
2022-03-30 23:03:08,037:20:builder.py:165: Adding op 'num_proposals_i.1_alpha_0' of type const
Converting Frontend ==> MIL Ops: 72%|███████████████████████████████████ | 1641/2290 [00:02<00:00, 804.48 ops/s]
Traceback (most recent call last):
File "~/.local/lib/python3.8/site-packages/coremltools/converters/_converters_entry.py", line 352, in convert
mlmodel = mil_convert(
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 183, in mil_convert
return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 210, in _mil_convert
proto, mil_program = mil_convert_to_proto(
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 273, in mil_convert_to_proto
prog = frontend_converter(model, **kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 105, in __call__
return load(*args, **kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/load.py", line 47, in load
return _perform_torch_convert(converter, debug)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/load.py", line 84, in _perform_torch_convert
prog = converter.convert()
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/converter.py", line 250, in convert
convert_nodes(self.context, self.graph)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/ops.py", line 89, in convert_nodes
add_op(context, node)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/ops.py", line 3770, in clamp
context.add(mb.clip(x=inputs[0], alpha=min_val, beta=max_val, name=node.name))
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/ops/registry.py", line 63, in add_op
return cls._add_op(op_cls, **kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/builder.py", line 175, in _add_op
new_op = op_cls(**kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/ops/defs/elementwise_unary.py", line 229, in __init__
super(clip, self).__init__(**kwargs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/operation.py", line 170, in __init__
self._validate_and_set_inputs(input_kv)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/operation.py", line 454, in _validate_and_set_inputs
self.input_spec.validate_inputs(self.name, self.op_type, input_kvs)
File "~/.local/lib/python3.8/site-packages/coremltools/converters/mil/mil/input_type.py", line 124, in validate_inputs
raise ValueError(msg.format(name, var.name, input_type.type_str,
ValueError: Op "num_proposals_i.1" (op_type: clip) Input beta="1709" expects float tensor or scalar but got int32
```
but it looks like the num_proposals_i actually should be an int
## System Information
- coremltools 5.2.0
- detectron2 0.6
- pytorch 1.10.0
Contributor guide
Research direction
Start in coremltools/converters/mil/frontend/torch/ops.py at the clamp conversion, then read mil/ops/defs/elementwise_unary.py where clip validates alpha and beta. Reproduce the failure with coremltools 5.2.0, detectron2 0.6, and PyTorch 1.10.0; done means the traceable Detectron2 PointRend model converts successfully despite the integer-valued num_proposals_i bound.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, pytorch
- Domain
- machine-learning, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100