apple / apple/coremltools

Can't convert TF2 Zoo model

Open
#805 12 comments 1 reaction 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

## 🐞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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.