Я создаю пользовательский образец обнаружения объекта для 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 файла:
- tflite_graph.pb
- 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.
Любая помощь или совет будут высоко оценены.