TensorFlow Lite 是一套工具,通过帮助开发者在移动设备、嵌入式设备和边缘设备上运行其模型,从而实现设备上机器学习。
主要功能
- 针对设备上机器学习进行了优化,通过解决 5 个关键约束:延迟(没有往返服务器)、隐私(没有个人数据离开设备)、连接性(不需要互联网连接)、大小(减少模型和二进制文件大小)和功耗(高效推理和缺乏网络连接)。
- 支持多个平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 以及 微控制器。
- 支持多种语言,包括 Java、Swift、Objective-C、C++ 和 Python。
- 高性能,具有 硬件加速 和 模型优化。
- 端到端 示例,用于在多个平台上执行常见的机器学习任务,例如图像分类、目标检测、姿态估计、问答、文本分类等。
开发工作流程
以下指南介绍了工作流程的每个步骤,并提供了指向进一步说明的链接
1. 生成 TensorFlow Lite 模型
TensorFlow Lite 模型以一种特殊的、高效的、可移植的格式表示,称为 FlatBuffers(由 .tflite 文件扩展名标识)。与 TensorFlow 的协议缓冲区模型格式相比,这提供了几个优势,例如减小了大小(代码占用空间小)和更快的推理(数据直接访问,无需额外的解析/解包步骤),这使得 TensorFlow Lite 能够在计算能力和内存资源有限的设备上高效地执行。
TensorFlow Lite 模型可以选择性地包含元数据,其中包含人类可读的模型描述和机器可读的数据,用于在设备上推理期间自动生成预处理和后处理管道。有关更多详细信息,请参阅 添加元数据。
您可以通过以下方式生成 TensorFlow Lite 模型
使用现有的 TensorFlow Lite 模型:请参阅 TensorFlow Lite 示例,选择一个现有的模型。模型可能包含或不包含元数据。
创建 TensorFlow Lite 模型:使用 TensorFlow Lite 模型制作器 使用您自己的自定义数据集创建模型。默认情况下,所有模型都包含元数据。
将 TensorFlow 模型转换为 TensorFlow Lite 模型: 使用 TensorFlow Lite 转换器 将 TensorFlow 模型转换为 TensorFlow Lite 模型。在转换过程中,您可以应用 优化,例如 量化,以在精度损失最小或没有损失的情况下减小模型大小和延迟。默认情况下,所有模型都不包含元数据。
2. 运行推理
推理是指在设备上执行 TensorFlow Lite 模型以根据输入数据进行预测的过程。您可以根据模型类型以以下方式运行推理
没有元数据的模型: 使用 TensorFlow Lite 解释器 API。支持多种平台和语言,例如 Java、Swift、C++、Objective-C 和 Python。
有元数据的模型: 您可以利用 TensorFlow Lite 任务库 中的开箱即用的 API,或者使用 TensorFlow Lite 支持库 构建自定义推理管道。在 Android 设备上,用户可以使用 Android Studio ML 模型绑定 或 TensorFlow Lite 代码生成器 自动生成代码包装器。仅支持 Java(Android),Swift(iOS)和 C++ 正在开发中。
在 Android 和 iOS 设备上,您可以使用硬件加速来提高性能。在任何平台上,您都可以使用 GPU 代理,在 Android 上,您可以使用 NNAPI 代理(对于较新的设备)或 Hexagon 代理(对于较旧的设备),在 iOS 上,您可以使用 Core ML 代理。要添加对新硬件加速器的支持,您可以 定义自己的代理。
入门
您可以根据目标设备参考以下指南
Android 和 iOS: 探索 Android 快速入门 和 iOS 快速入门。
嵌入式 Linux: 探索 Python 快速入门,适用于 树莓派 和 带有 Edge TPU 的 Coral 设备 等嵌入式设备,或 ARM 的 C++ 构建说明。
微控制器: 探索 适用于微控制器的 TensorFlow Lite 库,适用于仅包含几 KB 内存的微控制器和 DSP。