Я получаю совершенно неверные результаты / прогноз (без результатов или неправильных прогнозов), когда я использую формат Tflite - PullRequest
0 голосов
/ 20 марта 2020

Информация о системе

Платформа и распространение ОС: Linux Ubuntu 18.04.4 LTS

TensorFlow установлен из (источника или двоичного файла): pip3 install --user --upgrade tenorflow

Версия TensorFlow (или SHA github, если из источника): 1.14.0

Описание

Я получаю хорошие результаты на frozen_inference_graph. pb, но я получаю совершенно неверные результаты / прогноз (без результатов или неправильных прогнозов), когда я конвертирую его в формат Tflite. Я обучил две модели с разными наборами данных (дорожные знаки и фрукты) и получил неправильные результаты в обеих.

Сначала я следовал этому Блогу для обнаружения дорожных знаков. Когда я использую свой файл Tflite в приложении android, он всегда возвращает 0 результатов. Поэтому я подумал: Может быть, что-то не так с моим кодом приложения. Но затем я создал недостаточно обученную модель для того же набора данных (100 шагов), а затем использовал ее в своем приложении. На этот раз результаты были возвращены, но, очевидно, они были полностью ошибочны. Тем не менее, это помогло мне понять, что с моим файлом Tflite что-то не так. Примечание: я использовал приложение Android из официального репо обнаружения объектов Tensorflow.

Затем я следовал этому Среднему блогу для обнаружения фруктов. Здесь я также получил хорошие результаты на frozen_inference_graph.pb, но мой tflite дал совершенно неправильный результат, обнаружив любые объекты и фон случайным образом. Вот моя тетрадь для обнаружения фруктов.

Я буду объяснять шаги, которым я следовал, чтобы создать файл Tflite для обнаружения дорожных знаков согласно https://towardsdatascience.com/deeppicar-part-6-963334b2abe0

Пожалуйста, обратитесь к моему репозиторию Github , чтобы найти некоторые важные файлы, такие как мой Mobil enet -SSD mOdel, model.ckpt-2000, frozen_inference_graph.pb, tflite_graph.pb и sign.tflite файлы

Я использовал неквантованную модель для обучения на том же наборе данных и тренировался на 2000 шагов. Моя версия тензорного потока 1.14

Я выполнил следующие шаги для получения файла Tflite

1) Модель поезда

python3 model_main.py
--pipeline_config_path=/machine-learning/ssd_mobilenet_v2_coco_2018_03_29/pipeline.config
--model_dir=/home/omkar/machine-learning/road_sign_detection/
--alsologtostderr
--num_train_steps=2000
--num_eval_steps=50

2) Экспортируйте файл tflite_graph.pb, используя model.ckpt-2000, полученный после обучения.

python3 export_tflite_ssd_graph.py
--pipeline_config_path='/machine-learning/ssd_mobilenet_v2_coco_2018_03_29/pipeline.config'
--trained_checkpoint_prefix='/machine-learning/road_sign_detection/model.ckpt-2000'
--output_directory='/home/omkar/machine-learning/road_sign_detection/tflite'
--add_postprocessing_op=true

3) Создание файла Tflite из файла tflite_graph.pb

tflite_convert
--output_file='/machine-learning/road_sign_detection/tflite/mysign.tflite'
--graph_def_file='/machine-learning/road_sign_detection/tflite/tflite_graph.pb' \ --input_arrays='normalized_input_image_tensor'
--inference_type=FLOAT
--output_arrays='TFLite_Detection_PostProcess,TFLite_Detection_PostProcess:1,TFLite_Detection_PostProcess:2,TFLite_Detection_PostProcess:3'
--mean_values=128
--std_dev_values=128
--input_shapes=1,300,300,3
--change_concat_input_ranges=false
--allow_nudging_weights_to_use_fast_gemm_kernel=true
--allow_custom_ops

Примечание. Я также пытался использовать TOCO для преобразования в Tflite, но добился тех же результатов.

Сведения об ошибке Tflite дает совершенно неверные результаты. На модели обнаружения дорожных знаков не было результатов / объектов с нулевым прогнозом. На модели обнаружения фруктов было слишком много неправильных прогнозов / результатов.

Я что-то не так делаю? Что-то не так с процессом, командами?

...