TensorFlow Lite 允许您在 Android 应用程序中运行 TensorFlow 机器学习 (ML) 模型。TensorFlow Lite 系统提供预构建和可定制的执行环境,用于快速高效地在 Android 上运行模型,包括硬件加速选项。
学习路线图
机器学习模型
TensorFlow Lite 使用 TensorFlow 模型,这些模型被转换为更小、更便携、更高效的机器学习模型格式。您可以在 Android 上使用 TensorFlow Lite 的预构建模型,也可以构建自己的 TensorFlow 模型并将其转换为 TensorFlow Lite 格式。
此页面讨论使用已构建的机器学习模型,不涵盖构建、训练、测试或转换模型。在 模型 部分了解有关为 TensorFlow Lite 选择、修改、构建和转换机器学习模型的更多信息。
在 Android 上运行模型
在 Android 应用程序中运行的 TensorFlow Lite 模型接收数据、处理数据并根据模型的逻辑生成预测。TensorFlow Lite 模型需要特殊的运行时环境才能执行,并且传递到模型中的数据必须采用特定数据格式,称为 张量。当模型处理数据时,称为运行推理,它会生成预测结果作为新的张量,并将它们传递到 Android 应用程序,以便应用程序可以采取行动,例如向用户显示结果或执行其他业务逻辑。
图 1. TensorFlow Lite 模型在 Android 应用程序中的功能执行流程。
在功能设计级别,您的 Android 应用程序需要以下元素才能运行 TensorFlow Lite 模型
- 用于执行模型的 TensorFlow Lite 运行时环境
- 模型输入处理程序,用于将数据转换为张量
- 模型输出处理程序,用于接收输出结果张量并将其解释为预测结果
以下部分介绍 TensorFlow Lite 库和工具如何提供这些功能元素。
使用 TensorFlow Lite 构建应用程序
本节介绍在 Android 应用中实现 TensorFlow Lite 的推荐且最常用的路径。您应该重点关注 运行时环境 和 开发库 部分。如果您已开发自定义模型,请务必查看 高级开发路径 部分。
运行时环境选项
在您的 Android 应用中,您可以通过多种方式启用运行时环境来执行模型。以下列出的是首选选项。
- TensorFlow Lite 在 Google Play 服务运行时环境 中(推荐)
- 独立的 TensorFlow Lite 运行时环境
通常,您应该使用 Google Play 服务提供的运行时环境,因为它比标准环境更节省空间,因为它是动态加载的,可以使您的应用大小更小。Google Play 服务还会自动使用最新、稳定的 TensorFlow Lite 运行时版本,随着时间的推移,为您提供更多功能和性能改进。如果您在不包含 Google Play 服务的设备上提供您的应用,或者您需要仔细管理您的 ML 运行时环境,那么您应该使用标准 TensorFlow Lite 运行时。此选项会将更多代码捆绑到您的应用中,使您能够更好地控制应用中的 ML 运行时,但会增加应用的下载大小。
通过将 TensorFlow Lite 开发库添加到您的应用开发环境中,您可以在 Android 应用中访问这些运行时环境。有关如何在应用中使用标准运行时环境的信息,请参见下一节。
开发 API 和库
您可以使用两种主要 API 将 TensorFlow Lite 机器学习模型集成到您的 Android 应用中。
解释器 API 提供用于使用现有 TensorFlow Lite 模型运行推理的类和方法。TensorFlow Lite 任务 API 封装了解释器 API,并提供了一个更高级别的编程接口,用于执行处理视觉、音频和文本数据的常见机器学习任务。除非您发现它不支持您的特定用例,否则您应该使用任务 API。
库
您可以使用 Google Play 服务 访问任务 API 或解释器 API。您也可以在 Android 应用中使用 TensorFlow Lite 任务 的独立库或 TensorFlow Lite 核心 和 支持 库。有关使用 TensorFlow Lite 库和运行时环境的编程详细信息,请参见 Android 开发工具。
获取模型
在 Android 应用中运行模型需要 TensorFlow Lite 格式的模型。您可以使用预构建的模型,也可以使用 TensorFlow 构建模型并将其转换为 Lite 格式。有关为 Android 应用获取模型的更多信息,请参见 TensorFlow Lite 模型 部分。
处理输入数据
您传递到 ML 模型的任何数据都必须是具有特定数据结构的张量,通常称为张量的形状。为了使用模型处理数据,您的应用代码必须将数据从其本机格式(例如图像、文本或音频数据)转换为模型所需的形状的张量。
TensorFlow Lite 任务库 提供数据处理逻辑,用于将视觉、文本和音频数据转换为具有正确形状的张量,以便由 TensorFlow Lite 模型进行处理。
运行推理
通过模型处理数据以生成预测结果称为运行推理。在 Android 应用中运行推理需要 TensorFlow Lite 运行时环境、模型 和 输入数据。
模型在特定设备上生成推理的速度取决于处理的数据量、模型的复杂度以及可用的计算资源(如内存和 CPU 或称为加速器的专用处理器)。机器学习模型可以在这些专用处理器(如图形处理单元 (GPU) 和张量处理单元 (TPU))上更快地运行,使用称为委托的 TensorFlow Lite 硬件驱动程序。有关委托和模型处理硬件加速的更多信息,请参见 硬件加速概述。
处理输出结果
模型以张量的形式生成预测结果,这些结果必须由您的 Android 应用通过采取行动或向用户显示结果来处理。模型输出结果可以像图像分类的单个结果(0 = 狗,1 = 猫,2 = 鸟)对应的数字一样简单,也可以像图像中多个分类对象的多个边界框(带有 0 到 1 之间的预测置信度评级)一样复杂。
高级开发路径
当使用更复杂和定制的 TensorFlow Lite 模型时,您可能需要使用比上面描述的更高级的开发方法。以下部分描述了在 Android 应用中执行模型和为 TensorFlow Lite 开发模型的高级技术。
高级运行时环境
除了 TensorFlow Lite 的标准运行时和 Google Play 服务运行时环境之外,您还可以使用其他运行时环境与您的 Android 应用一起使用。这些环境最有可能的用途是,如果您有一个使用标准 TensorFlow Lite 运行时环境不支持的 ML 操作的机器学习模型。
- Flex 运行时 for TensorFlow Lite
- 自定义构建的 TensorFlow Lite 运行时
TensorFlow Lite Flex 运行时 允许您包含模型所需的特定运算符。作为运行模型的高级选项,您可以构建 TensorFlow Lite for Android 以包含运行 TensorFlow 机器学习模型所需的运算符和其他功能。有关更多信息,请参见 为 Android 构建 TensorFlow Lite。
C 和 C++ API
TensorFlow Lite 还提供了一个 API,用于使用 C 和 C++ 运行模型。如果您的应用使用 Android NDK,您应该考虑使用此 API。如果您希望能够在多个平台之间共享代码,您可能还想考虑使用此 API。有关此开发选项的更多信息,请参见 开发工具 页面。
基于服务器的模型执行
通常,您应该在 Android 设备上的应用中运行模型,以利用更低的延迟和为用户提高数据隐私。但是,在某些情况下,在云服务器上(设备外)运行模型是更好的解决方案。例如,如果您有一个大型模型,它不能轻松压缩到适合用户 Android 设备的大小,或者不能在这些设备上以合理的性能执行。如果跨各种设备的模型一致性能是重中之重,这种方法也可能是您的首选解决方案。
Google Cloud 提供了一套完整的服务,用于运行 TensorFlow 机器学习模型。有关更多信息,请参见 Google Cloud 的 AI 和机器学习产品 页面。
自定义模型开发和优化
更高级的开发路径可能包括开发自定义机器学习模型并优化这些模型以在 Android 设备上使用。如果您计划构建自定义模型,请确保您考虑应用 量化技术 到模型,以降低内存和处理成本。有关如何构建用于 TensorFlow Lite 的高性能模型的更多信息,请参见模型部分中的 性能最佳实践。
下一步
- 尝试 Android 快速入门 或教程
- 探索 TensorFlow Lite 示例
- 了解如何查找或构建 TensorFlow Lite 模型