TensorFlow Lite入门

概述

  • TensorFlow Lite 允许用户在多种设备上运行 TensorFlow 模型。TensorFlow 模型是一种数据结构,这种数据结构包含了在解决一个特定问题时,训练得到的机器学习网络的逻辑和知识。

  • 而Tensorflow Lite的即是提供给我们一个在Android平台或者其他平台上运行TF模型的中介。要具体使用,我们得谈到以下几个步骤:

模型选择

  • 首先要找到一个TensorFlow模型,这个模型需要使用Tensorflow Lite Converter转化为Tensorflow Lite支持的格式,同时又因为Tensorflow Lite并非支持全部的tensorflow运算符,所以并非所有模型都可以转换。面对不支持的运算符,可以使用TensorFlow Select在模型中使用,但需要构建一个包含运算符的自定义版本解释器。转换的代码如下

import tensorflow astf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)

tflite_model = converter.convert()

open("converted_model.tflite", "wb").write(tflite_model)

转换器会为模型应用各种优化措施,可以帮助提高性能,减小文件大小等等。

使用模型进行推理

  • 推理(Inference) 是通过模型(model)运行数据(data)以获得预测(predictions)的过程。这个过程需要模型(model)、解释器(interpreter)和输入数据(input data)。而以上这些条件当中,我们已经具备了模型,接下来要解决的就是解释器。
TensorFlow Lite 解释器
  • TensorFlow Lite 解释器是一个库(library),它接收一个模型文件(model file),执行模型文件在输入数据(input data)上定义的运算符(operations),并提供对输出(output)的访问。
  • 同时提供了多个平台的支持,提供了一个简单的 API,用于从 Java、Swift、Objective-C、C++ 和 Python 运行 TensorFlow Lite 模型。安卓平台可以戳这里下载aar: TensorFlow Lite AAR调用实例如下:
try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
  interpreter.run(input, output);
}
GPU 加速和委托
  • 一些设备为机器学习运算符提供硬件加速(hardware acceleration)。例如,大多数手机有 GPU,这些 GPU 可以比 CPU 执行更快的浮点矩阵运算(floating point matrix operations)。

  • 速度提升(speed-up)能有显著(substantial)效果。例如,当使用 GPU 加速时,MobileNet v1 图像分类模型在 Pixel 3 手机上的运行速度提高了 5.5 倍。

  • TensorFlow Lite 解释器可以配置委托(Delegates)以在不同设备上使用硬件加速。GPU 委托(GPU Delegates)允许解释器在设备的 GPU 上运行适当的运算符。实例如下:

GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(tensorflow_lite_model_file, options);
try {
  interpreter.run(input, output);
}

模型转换器

工作流
  • 整体的工作流如上,模型转换器在这其中起到了一个中继的作用,将原本的模型转化到Flatbuffer格式,支持转换的类型有保存了的模型,keras的模型,还有Concrete function。转换后可以提供给cline端调用,而此处的client端通常为安卓、ios、iot等设备。

你可能感兴趣的:(TensorFlow Lite入门)