Конвертировал мою собственную модель Keras CNN в TensorFlow Lite.Результаты обнаружения в демо-приложении TensorFlow Lite неверны - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю с Keras CNN для классификации изображений, которую я создал сам.Результаты обнаружения на моем компьютере в настоящее время удовлетворительные (около 290 из 300 тестовых изображений обнаружены правильно).Теперь мне нужно, чтобы моя модель работала на телефоне Android.Я установил TFLite Demo App на свой телефон.Пока что это хорошо работает с предустановленной моделью, а также с некоторыми случайными предтренированными моделями, которые я нашел в Интернете.К сожалению, если я конвертирую модель в TFLite, она покажет неверные результаты обнаружения.

Теперь, чтобы конвертировать мои Keras (.h5-файл) в TFLite (.tflite-файл), я следовал описанию на официальном Tensorflow веб-сайт, используя этот код:

# Convert to TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_keras_model_file(keras_file)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

Как я уже говорил выше, только что созданная keras-модель (keras_file), которую я использовал для преобразования в TFLite, прекрасно работает при тестировании, ноTFLite-модель не имеет.Если быть точным.Для целей тестирования в настоящее время существует 4 возможных категории для обнаружения.В 3 из 4 случаев приложение покажет мне неверный результат обнаружения, заявив, что оно на 100% достоверно.Я думал, что может быть проблема с файлом метки, который я создал.Но нет схемы для поиска (например, порядок строк в файле неправильный или что-то в этом роде).Так что я почти уверен, что файл метки в порядке.

Теперь, что я сделал в приложении для Android:

  • (Как уже упоминалось в описании )изменить классификатор на ImageClassifierFloatInception.
  • Создать файл метки, содержащий 4 строки для моих 4 категорий
  • Изменить размер изображения
  • Изменить возвращаемое значение getNumBytesPerChannel()до 4, чтобы соответствовать количеству моих категорий

Характеристики:

  • Windows 10
  • Tf-nightly-gpu 1.13.0a20181125 (TensorFlow-gpu 1.12.0 не будет поддерживать метод конвертирования)
  • Galaxy S6 на Android 7.0

Я что-то упустил?Если вам нужна дополнительная информация, я с удовольствием предоставлю.

Stephan

1 Ответ

0 голосов
/ 24 июля 2019

Может быть проблема с вашей convertBitmaptoByteBuffer() функцией, или, возможно, с вашей .tflite моделью.

...