Невозможно протестировать и развернуть модель сегментирования deeplabv3-mobilenetv2 tenorflow-lite для вывода - PullRequest
0 голосов
/ 09 ноября 2018

Мы пытаемся запустить модель семантической сегментации на Android с использованием deeplabv3 и mobilenetv2.Мы следовали официальной процедуре преобразования тензорного потока Lite с использованием TOCO и tflite_convert с помощью bazel. Исходный замороженный график был получен из официального TensorFlow DeepLab Model Zoo .

Мы смогли успешно преобразовать модель с помощью следующей команды: -

CUDA_VISIBLE_DEVICES = "0" toco --output_file = toco256.tflite --graph_def_file = путь / к / deeplab / deeplabv3_mnv2_pascal_trainval / frozen_inference_graph.pb --input_arrays = ImageTensor --output_arrays = SemanticPredictions --input_shapes = 1,256,256,3 --inference_input_type = QUANTIZED_UINT8 --inference_type = FLOAT --mean_values ​​= 128 --std_dev_values ​​= 127 --allow_custom_ops --post_training_ops

Размер файла tflite составлял около 2,25 Мб. Но когда мы попытались протестировать модель с использованием официального инструмента для тестирования производительности, произошел сбой со следующим сообщением об ошибке: -

bazel run -c opt tensorflow/contrib/lite/tools/benchmark:benchmark_model -- --graph=`realpath toco256.tflite`
INFO: Analysed target //tensorflow/contrib/lite/tools/benchmark:benchmark_model (0 packages loaded).
INFO: Found 1 target...
Target //tensorflow/contrib/lite/tools/benchmark:benchmark_model up-to-date:
  bazel-bin/tensorflow/contrib/lite/tools/benchmark/benchmark_model
INFO: Elapsed time: 0.154s, Critical Path: 0.00s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action
INFO: Running command line: bazel-bin/tensorflow/contrib/lite/tools/benchmark/benchmark_model '--graph=path/to/deeplab/venINFO: Build completed successfully, 1 total action
STARTING!
Num runs: [50]
Inter-run delay (seconds): [-1]
Num threads: [1]
Benchmark name: []
Output prefix: []
Warmup runs: [1]
Graph: path/to/venv/tensorflow/toco256.tflite]
Input layers: []
Input shapes: []
Use nnapi : [0]
Loaded model path/to/venv/tensorflow/toco256.tflite
resolved reporter
Initialized session in 45.556ms
Running benchmark for 1 iterations 
tensorflow/contrib/lite/kernels/pad.cc:96 op_context.dims != 4 (3 != 4)
Node number 24 (PAD) failed to prepare.

Failed to invoke!
Aborted (core dumped)

Мы также попробовали эту же команду без включения параметров allow_custom_ops и post_training_quantize и даже использовали тот же размер ввода, что и 1,513,513,3; но результат был тот же.

Эта проблема похожа на следующую проблему с github: (https://github.com/tensorflow/tensorflow/issues/21266). Однако в последней версии TensorFlow проблема должна быть исправлена.

Модель: http://download.tensorflow.org/models/deeplabv3_mnv2_pascal_trainval_2018_01_29.tar.gz Версия Tensorflow: 1.11 Базель версия: 0.17.2 ОС: Ubuntu 18.04

Также приложение для Android не смогло загрузить модель должным образом (tflite interpretr)

Итак, как мы можем правильно преобразовать модель сегментации в формат tflite, который можно использовать для вывода на устройстве Android?

UPDATE: -

Используя tensflow 1.12, мы получили новую ошибку:

$ bazel run -c opt tensorflow/lite/tools/benchmark:benchmark_model -- --graph=`realpath /path/to/research/deeplab/venv/tensorflow/toco256.tflite`

    tensorflow/lite/kernels/depthwise_conv.cc:99 params->depth_multiplier * SizeOfDimension(input, 3) != SizeOfDimension(filter, 3) (0 != 32)
    Node number 30 (DEPTHWISE_CONV_2D) failed to prepare.

Кроме того, при использовании более новой версии той же модели (файл 3 МБ .pb) с deep_multiplier = 0,5 из тензорного потока deeplab модель zoo , мы получили другую ошибку: -

F tensorflow/lite/toco/graph_transformations/propagate_fixed_sizes.cc:116] Check failed: dim_x == dim_y (3 vs. 32)Dimensions must match

В этом случае мы использовали ту же вышеупомянутую команду для преобразования tflite, но мы даже не смогли создать файл 'tflite' в качестве вывода. Кажется, это проблема со значениями множителя глубины. (Даже если мы попытались дать глубину_множителя параметр в качестве аргумента во время преобразования).

1 Ответ

0 голосов
/ 23 ноября 2018

У меня такая же проблема. из https://github.com/tantara/JejuNet Я вижу, что он успешно конвертировал модель в tflite. Я отправляю его за помощью, но, к сожалению, ответа пока нет.

...