我用TensorFlow和Keras开发并训练了卷积神经网络。现在,我想将此模型部署到Android设备上,以便在其中用于实时应用程序。
我发现了将Keras模型部署到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推理比所有Android设备上的TensorFlowInterface推理慢得多。添加优化标志“ OPTIMIZE_FOR_LATENCY”将tflite推理时间增加了两倍。
我检查了TensorFlow Lite quantization fails to improve inference latency,Why is TensorFlow Lite slower than TensorFlow on desktop?和Tensorflow Object Detection inference slow on CPU,但没有收到满意的答案。
根据所有文档,我发现TFLite应该在Android设备上更快。那么,如何在Android上加快TFLite推理速度呢?在我的PC上,TFLite确实更快,这更加令人惊讶。
非常感谢您的帮助!
答案 0 :(得分:0)
您可能希望使用TFLite Benchmark tool对模型进行概要分析,从而为您提供平均推断时间,甚至是操作级延迟。
如果观察到的延迟明显大于基准测试工具显示的延迟,则推断代码可能效率不高。如果没有,那么某些操作可能会成为瓶颈,您可以为此提出Github问题。