Can't convert TF2 Zoo model
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 850
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 10
Description
## 🐞Description the bug
- [Tensorflow model zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md) was recently updated to TF2. I attempted to convert one of their sample models (efficientdet_d5_coco17_tpu-32) but got a model format error.
## Trace
```
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
in
4
5 # Convert to CoreML
----> 6 mlmodel = ct.convert(detect_fn, source='tensorflow')
~/.local/share/virtualenvs/le_models_ios/lib/python3.7/site-packages/coremltools/converters/_converters_entry.py in convert(model, source, inputs, outputs, classifier_config, minimum_deployment_target, **kwargs)
256 outputs=outputs,
257 classifier_config=classifier_config,
--> 258 **kwargs
259 )
260
~/.local/share/virtualenvs/le_models_ios/lib/python3.7/site-packages/coremltools/converters/mil/converter.py in _convert(model, convert_from, convert_to, converter_registry, **kwargs)
118 backend_converter = backend_converter_type()
119
--> 120 prog = frontend_converter(model, **kwargs)
121 common_pass(prog)
122 out = backend_converter(prog, **kwargs)
~/.local/share/virtualenvs/le_models_ios/lib/python3.7/site-packages/coremltools/converters/mil/converter.py in __call__(self, *args, **kwargs)
50
51 tf2_loader = TF2Loader(*args, **kwargs)
---> 52 return tf2_loader.load()
53
54
~/.local/share/virtualenvs/le_models_ios/lib/python3.7/site-packages/coremltools/converters/mil/frontend/tensorflow/load.py in load(self)
56 logging.info("Loading TensorFlow model '{}'".format(self.model))
57 outputs = self.kwargs.get("outputs", None)
---> 58 self._graph_def = self._graph_def_from_model(outputs)
59
60 if self._graph_def is not None and len(self._graph_def.node) == 0:
~/.local/share/virtualenvs/le_models_ios/lib/python3.7/site-packages/coremltools/converters/mil/frontend/tensorflow2/load.py in _graph_def_from_model(self, outputs)
108 return self.extract_sub_graph(graph_def, outputs)
109 else:
--> 110 raise NotImplementedError(msg.format(self.model))
111
112 def _tf_ssa_from_graph_def(self, fn_name="main"):
NotImplementedError: Expected model format: [SavedModel | [concrete_function] | tf.keras.Model | .h5], got ._UserObject object at 0x1852730d0>
```
## To Reproduce
Use this [notebook](https://github.com/tensorflow/models/blob/master/research/object_detection/colab_tutorials/inference_from_saved_model_tf2_colab.ipynb) and add this code a last step:
```
!pip install coremltools==4.0b2
import coremltools as ct
# Convert to CoreML
mlmodel = ct.convert(detect_fn, source='tensorflow')
```
## System environment (please complete the following information):
- coremltools version 4.0b2
- macOS version 10.15.5 (19F101)
- XCode version (if applicable): Version 11.6 (11E708)
- How you install python (anaconda, virtualenv, system): Pipenv
This is my `pipfile`:
```
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
coremltools = "==4.0b2"
tensorflow = "*"
jupyter = "*"
matplotlib = "*"
scipy = "==1.4.1"
[requires]
python_version = "3.7"
Contributor guide
Research direction
Reproduce the failure using inference_from_saved_model_tf2_colab.ipynb and the ct.convert(detect_fn, source='tensorflow') entry point. Start with the TF2Loader._graph_def_from_model path shown in the trace and compare the detected object with the accepted model formats. Done means the TensorFlow 2 Zoo model converts without the model-format error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, tensorflow
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100