Не удалось преобразовать граф .pb в tflite - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю пользовательский образец обнаружения объекта для android, я использовал ssd_mobilenet_v1_coco предварительно обученную модель для обучения передаче и получил приличную точность. Мне также удалось экспортировать model.ckpt-XXXX в граф * tflite .pb, используя эту строку кода в терминале (запускается из папки object_detection после клонирования API обнаружения объектов Tensorflow из github):

python export_tflite_ssd_graph.py --pipeline_config_path=training/ssd_mobilenet_v1_coco.config --trained_checkpoint_prefix=training/model.ckpt-40500--output_directory=tflite --add_postprocessing_op=true

Вышеуказанная папка создала tflite, и она содержала 2 файла:

  1. tflite_graph.pb
  2. tflite_graph.pbtxt

Однако, когда я хочу преобразование tflite_graph.pb в detect.tflite Я получаю следующую ошибку, и программа внезапно завершается:

"TOCO failed. See console for info.\n%s\n%s\n" % (stdout, stderr))
tensorflow.lite.python.convert.ConverterError: TOCO failed.

.
.
.
Check failed: input_array_dims[i] == input_array_proto.shape().dims(i) (300 vs. 128)
Fatal Python error: Aborted
.
.
.

Это команда, которую я использовал для преобразования .pb в .tflite:

tflite_convert --graph_def_file=tflite/tflite_graph.pb --output_file=tflite/detect.tflite --input_shapes=1,128,128,3 --input_arrays=normalized_input_image_tensor --output_arrays=TFLite_Detection_PostProcess,TFLite_Detection_PostProcess:1,TFLite_Detection_PostProcess:2,TFLite_Detection_PostProcess:3 --allow_custom_ops

Изображения, которые я использовал, имели размер 128x128, поэтому я предположил, что это будут input_shapes. У меня также установлен Toco.

Любая помощь или совет будут высоко оценены.

1 Ответ

0 голосов
/ 30 апреля 2020

Итак, проведя дополнительное исследование, я обнаружил, что это потому, что файл конфигурации модели просматривал изображения размером 300 x 300. Поэтому я изменил размер изображения в файле конфигурации на 128, и это сработало.

...