coremltools icon indicating copy to clipboard operation
coremltools copied to clipboard

TF2 SSD MobileNet v2 - NonMaxSuppressionV5 not implemented (ver 5.2)

Open apivovarov opened this issue 3 years ago • 2 comments

I got NonMaxSuppressionV5 not implemented when converting TF2 SSD MobileNet v2 320x320 using coremltools 5.2

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 Frontend ==> MIL Ops:  63%|███████████████████████████████████████████████████████████████████████████████████████████▉                                                     | 2847/4491 [00:04<00:02, 581.00 ops/s]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/_converters_entry.py", line 363, in convert
    debug=debug,
  File "/usr/local/lib/python3.7/dist-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 "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 215, in _mil_convert
    **kwargs
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 273, in mil_convert_to_proto
    prog = frontend_converter(model, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/converter.py", line 95, in __call__
    return tf2_loader.load()
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/load.py", line 84, in load
    program = self._program_from_tf_ssa()
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow2/load.py", line 200, in _program_from_tf_ssa
    return converter.convert()
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/converter.py", line 401, in convert
    self.convert_main_graph(prog, graph)
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/converter.py", line 330, in convert_main_graph
    outputs = convert_graph(self.context, graph, self.outputs)
  File "/usr/local/lib/python3.7/dist-packages/coremltools/converters/mil/frontend/tensorflow/convert_utils.py", line 188, in convert_graph
    raise NotImplementedError(msg)
NotImplementedError: Conversion for TF op 'NonMaxSuppressionV5' not implemented.

name: "StatefulPartitionedCall/Postprocessor/BatchMultiClassNonMaxSuppression/MultiClassNonMaxSuppression/non_max_suppression_with_scores/NonMaxSuppressionV5"
op: "NonMaxSuppressionV5"

apivovarov avatar Aug 24 '22 23:08 apivovarov

Can you give us a minimal example to reproduce this problem (i.e. something which doesn't use an external model)?

TobyRoseman avatar Aug 25 '22 18:08 TobyRoseman

I think I provided quite popular model from tensorflow/models project and the code to reproduce the issue. I guess somebody from coremltools should investigate on it.

apivovarov avatar Aug 25 '22 20:08 apivovarov