apple / apple/coremltools

TF2 SSD MobileNet v2 - Cast: Provided destination type bool not supported (ver 6.0b2)

Open
#1,586 2 comments 0 reactions 0 assignees View on GitHub
bug tf2.x / tf.keras
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

I got `Cast: Provided destination type bool not supported` when converting TF2 [SSD MobileNet v2 320x320](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md) using coremltools 6.0b2

Example1 (convert saved_model dir):
```
import coremltools as ct
image_input = ct.ImageType(shape=(1, 320, 320, 3))
model = ct.convert("saved_model", inputs=[image_input])
```

Example2 (convert "serving_default" function)
```
import tensorflow as tf
m=tf.saved_model.load("saved_model")
f=m.signatures["serving_default"]
import coremltools as ct
image_input = ct.ImageType(shape=(1, 320, 320, 3))
model = ct.convert([f], inputs=[image_input])
```

Got the following Stack Trace (for both examples):
```
Converting TF Frontend ==> MIL Ops: 97%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 4528/4671 [00:05<00:00, 765.76 ops/s]
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/_converters_entry.py", line 463, in convert
specification_version=specification_version,
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 193, in mil_convert
return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 225, in _mil_convert
**kwargs
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 283, in mil_convert_to_proto
prog = frontend_converter(model, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 105, in __call__
return tf2_loader.load()
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/load.py", line 86, in load
program = self._program_from_tf_ssa()
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow2/load.py", line 208, in _program_from_tf_ssa
return converter.convert()
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/converter.py", line 475, in convert
self.convert_main_graph(prog, graph)
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/converter.py", line 398, in convert_main_graph
outputs = convert_graph(self.context, graph, self.output_names)
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/convert_utils.py", line 189, in convert_graph
add_op(context, node)
File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/ops.py", line 1395, in Cast
"supported.".format(types.get_type_info(node.attr["DstT"]))
NotImplementedError: Cast: Provided destination type bool not supported.
```

Contributor guide

Open the contributing guide

Research direction

Start in coremltools/converters/mil/frontend/tensorflow/ops.py at the Cast conversion path named in the traceback, then reproduce with the SSD MobileNet v2 SavedModel using either example. Check how boolean destination types are represented and verify that both conversion forms complete without the reported NotImplementedError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, tensorflow
Domain
machine-learning
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.