TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。
主要特性
- 通过解决以下 5 项约束条件,针对设备端机器学习进行了优化:延时(数据无需往返服务器)、隐私(没有任何个人数据离开设备)、连接性(无需连接互联网)、大小(缩减了模型和二进制文件的大小)和功耗(高效推断,且无需网络连接)。
- 支持多种平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 和微控制器。
- 支持多种语言,包括 Java、Swift、Objective-C、C++ 和 Python。
- 高性能,支持硬件加速和模型优化。
- 提供多种平台上的常见机器学习任务的端到端示例,例如图像分类、对象检测、姿势估计、问题回答、文本分类等。
开发工作流程
以下指南介绍了该工作流程的每个步骤,并提供了进一步说明的链接:
1. 创建 TensorFlow Lite 模型
TensorFlow Lite 模型以名为 FlatBuffer 的专用高效可移植格式(由“.tflite”文件扩展名标识)表示。与 TensorFlow 的协议缓冲区模型格式相比,这种格式具有多种优势,例如可缩减大小(代码占用的空间较小)以及提高推断速度(可直接访问数据,无需执行额外的解析/解压缩步骤),这样一来,TensorFlow Lite 即可在计算和内存资源有限的设备上高效地运行。
TensorFlow Lite 模型可以选择包含元数据,并在元数据中添加人类可读的模型说明和机器可读的数据,以便在设备推断过程中自动生成处理前和处理后流水线。如需了解详情,请参阅添加元数据。
您可以通过以下方式生成 TensorFlow Lite 模型:
使用现有的 TensorFlow Lite 模型:若要选择现有模型,请参阅 TensorFlow Lite 示例。模型可能包含元数据,也可能不含元数据。
创建 TensorFlow Lite 模型:使用 TensorFlow Lite Model Maker,利用您自己的自定义数据集创建模型。默认情况下,所有模型都包含元数据。
将 TensorFlow 模型转换为 TensorFlow Lite 模型:使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。在转换过程中,您可以应用量化等优化措施,以缩减模型大小和缩短延时,并最大限度降低或完全避免准确率损失。默认情况下,所有模型都不含元数据。
2. 运行推断
推断是指在设备上执行 TensorFlow Lite 模型,以便根据输入数据进行预测的过程。您可以通过以下方式运行推断,具体取决于模型类型:
不含元数据的模型:使用 TensorFlow Lite Interpreter API。在多种平台和语言(如 Java、Swift、C++、Objective-C 和 Python)中均受支持。
包含元数据的模型:您可以使用 TensorFlow Lite Task 库以利用开箱即用的 API,也可以使用 TensorFlow Lite Support 库构建自定义的推断流水线。在 Android 设备上,用户可以使用 Android Studio ML Model Binding 或 TensorFlow Lite Code Generator 自动生成代码封装容器。仅在 Java (Android) 中受支持,我们正在努力使其在 Swift (iOS) 和 C++ 中受支持。
在 Android 和 iOS 设备上,您可以使用硬件加速来提升性能。在任何一个平台上,您都可以使用 GPU 代理:在 Android 上,您可以使用 NNAPI 代理(适用于新款设备)或 Hexagon 代理(适用于旧款设备);在 iOS 上,您可以使用 Core ML 代理。如需添加对新的硬件加速器的支持,您可以定义自己的代理。
开始使用
根据目标设备,您可以参阅以下指南:
Android 和 iOS:请浏览 Android 版快速入门和 iOS 版快速入门。
嵌入式 Linux:对于 Raspberry Pi 和具有 Edge TPU 的 Coral 设备等嵌入式设备,请浏览 Python 版快速入门;对于 ARM,请浏览 C++ 构建说明。
微控制器:对于仅包含几千字节内存的微控制器和 DSP,请浏览适用于微控制器的 TensorFlow Lite 库。