Неверный вывод от Mobil eNet SSD V2, преобразованной модели tflite - PullRequest
0 голосов
/ 25 февраля 2020

Я работаю над приложением обнаружения объектов на android, используя TensorflowLite C ++ API. Когда я конвертирую модель ssd_mobilenet_v2_coco_2018_03_29 в tflite, вывод преобразованной модели tflite отличается от вывода первоначально предоставленного файла .pb на тех же тестовых изображениях.

Преобразование файла .pb в. tflite

Терминальная команда (я использовал эту ссылку для помощи.):

python3 object_detection/export_tflite_ssd_graph.py --pipeline_config_path=/content/ssd_mobilenet_v2_coco_2018_03_29/pipeline.config --trained_checkpoint_prefix=/content/ssd_mobilenet_v2_coco_2018_03_29/model.ckpt --output_directory=/tmp/tflite_graph --add_postprocessing_op=true

Приведенная выше команда вызвала ошибку:

google.protobuf.text_format.ParseError: 109: 7: Тип сообщения «object_detection.protos.SsdFeatureExtractor» не имеет поля с именем «batch_norm_trainable»

Ошибка была устранена после выполнения предложенных шагов здесь . Я закомментировал тег 'batch_norm_trainable' из файла 'pipe.config'.

Но результаты обнаружения преобразованной модели tflite отличаются от результатов, предоставленных первоначально предоставленным файлом .pb. Как преобразовать файлы .pb в .tflite, чтобы файл .tflite выдает правильный вывод?

Вывод изображений:

  1. Использование .pb (и .pbtxt) файлы: pb_output_image1 pb_output_image2
  2. Использование преобразованного файла .tflite: tflite_output_image1 tflite_output_image2 * *

    Используемые версии:

    • ОС: Ubuntu 18.04
    • Устройство: QUALCOMM MSM8996 для arm64 (Development Board) (Android 9), motorola одна сила (Android 10)
    • версия TensorFlow (установлена ​​в Ubuntu, используется для преобразования): 1.15
    • версия TensorFlow (для tflite, используемого в устройстве Android, собранном из исходного кода): 2.1.0
    • Python версия: 3.6.9
    • Bazel версия: 2.0.0
    • GCC / версия компилятора: 8.3.0

    Любая помощь / руководство будет приветствоваться.

    Приветствия:)

1 Ответ

0 голосов
/ 25 февраля 2020

попробуйте использовать Keras с тензорным потоком в качестве бэкэнда

...