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 模型转换为 TensorFlow Lite 模型:使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。在转换过程中,您可以应用量化等优化措施,以减小模型大小和延迟时间,同时最大限度降低或完全避免准确率损失。默认情况下,所有模型都不包含元数据。
2. 运行推断
推断是指在设备上执行 TensorFlow Lite 模型,以便根据输入数据进行预测的过程。您可以根据模型类型通过以下方式运行推断:
不含元数据的模型:使用 TensorFlow Lite 解释器 API。支持多种平台和语言,例如 Java、Swift、C++、Objective-C 和 Python。
包含元数据的模型:您可以使用 TensorFlow Lite 支持库构建自定义推断流水线。在 Android 设备上,用户可以使用 Android Studio 机器学习模型绑定或 TensorFlow Lite 代码生成器自动生成代码封装容器。仅在 Java (Android) 上受支持,而 Swift (iOS) 和 C++ 正在开发中。
在 Android 和 iOS 设备上,您可以使用硬件加速来提升性能。在任一平台上,您可以使用 GPU 代理;在 iOS 上,您可以使用 Core ML 代理。如需添加对新的硬件加速器的支持,您可以定义自己的代理。
开始使用
根据目标设备,您可以参阅以下指南:
Android 和 iOS:浏览 Android 快速入门和 iOS 快速入门。
嵌入式 Linux:浏览适用于嵌入式设备的 Python 快速入门(例如 Raspberry Pi 和搭载 Edge TPU 的 Coral 设备)或适用于 ARM 的 C++ 构建说明。
微控制器:对于仅包含几千字节内存的微控制器和 DSP,请浏览适用于微控制器的 TensorFlow Lite 库。
技术限制
- 所有 TensorFlow 模型都无法 转换为 TensorFlow Lite 模型,请参阅运算符兼容性。