Я разработал и обучил сверточную нейронную сеть с TensorFlow и Keras.Теперь я хочу развернуть эту модель на устройстве Android, где она мне нужна для приложения реального времени.
Я нашел два способа развернуть модель Keras на Android:
- Остановите график в виде файла .pb (например, «model.pb»), а затем используйте «TensorFlowInferenceInterface» на устройстве Android.
- Преобразуйте замороженный график в модель .tflite (например, «model.tflite '), а затем используйте интерпретатор TesorFlow Lite на устройстве Android.
Оба подхода работают на устройстве Android и дают ожидаемые результаты.Тем не менее, к моему большому удивлению, вывод с интерпретатором TensorFlow Lite занимает как минимум вдвое больше времени, чем вывод с TensorFlowInterface (конечно, на том же устройстве).Я проверил это на разных устройствах, и результаты одинаковы во всех случаях.
Для создания модели tflite я использую следующий код:
tflite_convert --graph_def_file=" + frozen_graph_name + "
--output_file=" + TFLite_file_name + " --inference_type=FLOAT
--input_type=FLOAT --input_shape=1,768,64,1
--input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE
--input_arrays=input_1 --output_arrays=conv2d_10/Sigmoid" \
В качестве альтернативы я попробовал следующий код Python
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_keras_model_file('keras_model.h5')
tflite_model = converter.convert()
open(TFLite_file_name, "wb").write('model.tflite')
В обоих случаях результат былто же самое - вывод tflite был намного медленнее, чем вывод TensorFlowInterface на всех устройствах Android.Добавление флага оптимизации «OPTIMIZE_FOR_LATENCY» увеличило время вывода tflite в два раза.
Я проверил Квантование TensorFlow Lite не может улучшить задержку вывода , Почему TensorFlow Lite медленнее, чемTensorFlow на рабочем столе? и Вывод объекта Tensorflow медленный на CPU , но не получил удовлетворительных ответов.
Согласно всем документам, я обнаружил, что TFLite должен работать намного быстрееУстройства Android.Итак, что я могу сделать, чтобы ускорить мой вывод TFLite на Android?На моем ПК TFLite действительно быстрее, что еще более удивительно.
Любая помощь очень ценится!