apple / apple/coremltools

convert detectron2 pointrend model failed

Open
#1,435 5 comments 2 reactions 0 assignees View on GitHub
question
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.