Как создать файл tflite из save_model (SSD MobileNet) - PullRequest
0 голосов
/ 15 мая 2019

Я хочу создать приложение для обнаружения объектов на основе переобученной модели ssd_mobilenet, которую я переобучил как парень на youtube .

Я выбрал модель ssd_mobilenet_v2_coco из Tensorflow Model Zoo . После процесса переподготовки у меня появилась модель со следующей структурой:

- saved_model
    - variables (empty folder)
    - saved_model.pb
- checkpoint
- frozen_inverence_graph.pb
- model.ckpt.data-00000-of-00001
- model.ckpt.index
- model.ckpt.meta
- pipeline.config

В той же папке у меня есть скрипт python со следующим кодом:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model("saved_model")
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

После запуска этого кода я получил следующую ошибку:

ValueError: None is only supported in the 1st dimension. Tensor 'image_tensor' has invalid shape '[None, None, None, 3]'.

Похоже, в модели отсутствуют ширина и высота изображения. Когда я использую модель, как в видео на YouTube, она работает.

После большого количества исследований и попыток я попробовал другие способы, такие как запуск bazel / toco, но ничто не помогло мне создать tflite-файл.

1 Ответ

0 голосов
/ 15 мая 2019

Как описано в документации , вы можете передать различные параметры в tf.lite.TFLiteConverter.from_saved_model.

Для более сложных SavedModels необязательные параметры, которые можно передать в TFLiteConverter.from_saved_model()input_arrays, input_shapes, output_arrays, tag_set and signature_key.Подробную информацию о каждом параметре можно получить, запустив help(tf.lite.TFLiteConverter).

. Вы можете передать эту информацию, как описано здесь .Вам необходимо указать имя входного тензора и его форму, а также имя выходного тензора и его форму.А для ssd_mobilenet_v2_coco вам необходимо определить, для какой формы входа вам нужно использовать сеть, например,

tf.lite.TFLiteConverter.from_saved_model("saved_model", input_shapes={("image_tensor" : [1,300,300,3])})
...