В API обнаружения объектов TensorFlow можно указать в файле конфигурации модель кераса (например, 'ssd_mobilenet_v2_keras'
), и, таким образом, встроенный экстрактор функций и блок предиктора будетбыть от tf.keras.Model. Я хотел бы создать простую модель OD Keras, используя их. Это означает, что я смогу определить экстрактор объектов, блок-предиктор и затем сделать следующее:
def keras_model(model, shape):
input = tf.keras.Input(shape=shape)
feature_maps = model._feature_extractor(input)
predictions = model._box_predictor(feature_maps)
return tf.keras.Model(inputs=input, outputs=predictions)
, когда model
построен с использованием model_builder.build(model_config)
(что вызовет this ).
Однако, когда я пытаюсь это сделать, я получаю следующее исключение из команды извлечения функции:
feature_maps = model._feature_extractor(input)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py", line 584, in __call__
inputs, outputs, args, kwargs)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py", line 1416, in _set_connectivity_metadata_
input_tensors=inputs, output_tensors=outputs, arguments=kwargs)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py", line 1524, in _add_inbound_node
arguments=arguments)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py", line 1732, in __init__
self.output_shapes = [backend.int_shape(x) for x in output_tensors]
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py", line 1732, in <listcomp>
self.output_shapes = [backend.int_shape(x) for x in output_tensors]
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/backend.py", line 951, in int_shape
shape = x.shape
AttributeError: 'odict_values' object has no attribute 'shape'
Любая идея, в чем заключается проблема, или есть либолее простой способ извлечь объект обнаружения Keras для модели?
Заранее спасибо!