Конвертировать Mobil enet SSD в TensorFlow Lite с квантованием - PullRequest
0 голосов
/ 29 апреля 2020

Думаю, моя цель проста. Я хочу преобразовать предварительно обученную модель ssd mobilenetv2 (или v1) в TFLite с квантованием и оптимизацией, как описано ЗДЕСЬ . Но даже без какого-либо квантования я получаю ошибки при преобразовании модели в модель TFLite.

model = tf.saved_model.load(detection_model_dir)
concrete_func = model.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
concrete_func.inputs[0].set_shape([1,300,300,3])
converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
#converter = tf.compat.v1.lite.TFLiteConverter.from_saved_model(detection_model_dir, input_shapes={"image_tensor" : [1,300,300,3]})
tflite_model = converter.convert() 

Сообщения об ошибках:

2020-04-29 13: 23: 58.432192: I tenorflow / lite / toco / import_tensorflow. cc: 659] Преобразование неподдерживаемой операции : TensorArrayWriteV3 2020-04-29 13: 23: 58.432342: I tenorflow / lite / toco / import_tensorflow. cc: 659] Преобразование неподдерживаемой операции: TensorArrayWriteV3 2020-04-29 13: 23: 58.782402: I tenorflow / lite / toco /graph_transformations/graph_transformations.cc:39] Перед удалением неиспользованных операций: 4058 операторов, 6882 массива (квантовано 0) 2020-04-29 13: 23: 59.302999: I tenorflow / lite / toco / graph_transformations / graph_transformations. cc : 39] После удаления неиспользуемых операций передают 1: 4005 операторов, 6778 массивов (0 квантованных) 2020-04-29 13: 23: 59.925648: I tenorflow / lite / toco / graph_transformations / graph_transformations. cc: 39] Перед общим графом преобразования: 4005 операторов, 6778 массивов (квантовано 0) выбрал outpu от Switch, но поддерживается только Merge. Операции управления потоком, такие как Switch и Merge, обычно не поддерживаются. Мы работаем над устранением этой проблемы, см. Проблему с Github на https://github.com/tensorflow/tensorflow/issues/28485. Неустранимая Python ошибка: прервано

Я потратил несколько дней на преобразование предварительно обученной модели ssd mobilenetv2 в TFLite. Я знаю, что решение для командной строки (export_tflite_ssd_graph.py) работает для преобразования, но не для квалификационной части. Я также хотел бы написать код python, чтобы сделать то же самое и оптимизировать (сжать, квантовать) модель. Я терпел неудачу в этом. Какие-либо предложения?

Мои вопросы можно обобщить следующим образом:

  1. Как преобразовать предварительно обученную модель ssd mobilenetv2 (или v1) в TFLite с квантованием и оптимизацией с использованием кода python, подобного вышеуказанный кодовый блок.
  2. Как преобразовать предварительно обученную модель ssd mobilenetv2 (или v1) в TFLite с квантованием и оптимизацией с помощью командной строки (API обнаружения объектов и API TFLite, если есть)

1 Ответ

0 голосов
/ 04 мая 2020

Кажется, в этой модели неподдерживаемые операции.

Вы можете найти предварительно обученную модель COCO SSD Mobil eNet v1 tflite здесь

...