Android 版 TensorFlow Lite

借助 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 应用,以便其执行操作,例如向用户显示结果或执行其他业务逻辑。

Android 应用中 TensorFlow Lite 模型的函数执行流程

图 1. Android 应用中 TensorFlow Lite 模型的功能执行流程。

在功能设计级别,您的 Android 应用需要以下元素才能运行 TensorFlow Lite 模型:

  • 用于执行模型的 TensorFlow Lite 运行时环境
  • 模型输入处理程序,用于将数据转换为张量
  • 模型输出处理程序,用于接收输出结果张量并将其解释为预测结果

以下部分将介绍 TensorFlow Lite 库和工具如何提供这些功能元素。

使用 TensorFlow Lite 构建应用

本部分介绍了在 Android 应用中实现 TensorFlow Lite 的推荐最常用路径。您应最关注的是运行时环境开发库部分。如果您已开发自定义模型,请务必查看高级开发路径部分。

运行时环境选项

您可以通过多种方式启用运行时环境,以便在 Android 应用中执行模型。以下是首选方案:

一般来说,您应该使用 Google Play 服务提供的运行时环境,因为它比标准环境更节省空间,因为它以动态方式加载,从而缩减应用大小。Google Play 服务还会自动使用最新的稳定版 TensorFlow Lite 运行时,逐步为您提供更多功能和提升性能。如果您在不包含 Google Play 服务的设备上提供应用,或者您需要密切管理机器学习运行时环境,则应使用标准 TensorFlow Lite 运行时。此选项会将额外代码捆绑到您的应用中,让您能够更好地控制应用中的机器学习运行时,但会增加应用的下载大小。

通过将 TensorFlow Lite 开发库添加到应用开发环境,您可以在 Android 应用中访问这些运行时环境。如需了解如何在应用中使用标准运行时环境,请参阅下一部分。

您可以使用 Google Play 服务访问口译 API。您可以在 Android 应用中使用 TensorFlow Lite 核心库和支持库。如需详细了解如何使用 TensorFlow Lite 库和运行时环境进行编程,请参阅适用于 Android 的开发工具

获取模型

在 Android 应用中运行模型需要 TensorFlow Lite 格式模型。您可以使用预构建的模型,也可以使用 TensorFlow 构建一个模型并将其转换为 Lite 格式。如需详细了解如何获取 Android 应用的模型,请参阅 TensorFlow Lite 模型页面。

处理输入数据

您传递到机器学习模型的任何数据都必须是具有特定数据结构(通常称为张量形状)的张量。如需使用模型处理数据,您的应用代码必须将数据从其原生格式(例如图片、文本或音频数据)转换为模型所需形状的张量。

运行推断

通过模型处理数据以生成预测结果的过程称为运行推断。在 Android 应用中运行推断需要 TensorFlow Lite 运行时环境、一个model输入数据

模型在特定设备上生成推断的速度取决于所处理的数据的大小、模型的复杂程度以及可用的计算资源(例如内存和 CPU),或者称为“加速器”的专用处理器。通过使用称为代理的 TensorFlow Lite 硬件驱动程序,机器学习模型可以在图形处理单元 (GPU) 和张量处理单元 (TPU) 等专用处理器上更快地运行。如需详细了解模型处理的代理和硬件加速,请参阅硬件加速概览

处理输出结果

模型以张量形式生成预测结果,并且必须由您的 Android 应用通过执行操作或向用户显示结果来处理这些结果。模型输出结果可以非常简单,例如与图片分类的单个结果(0 = 狗、1 = 猫、2 = 鸟)对应的数字,也可以是更复杂的结果,例如图片中多个分类对象的多个边界框(预测置信度评分介于 0 和 1 之间)。

高级开发途径

使用更复杂的自定义 TensorFlow Lite 模型时,您可能需要使用比上述方式更高级的开发方法。以下各部分介绍了用于在 Android 应用中为 TensorFlow Lite 执行和开发模型的高级方法。

高级运行时环境

除了 TensorFlow Lite 的标准运行时和 Google Play 服务运行时环境之外,您还可以使用自己的 Android 应用使用其他运行时环境。这些环境最有可能用于以下环境:您的机器学习模型使用的机器学习操作不受 TensorFlow Lite 标准运行时环境支持的机器学习操作。

  • 适用于 TensorFlow Lite 的 Flex 运行时
  • 自定义的 TensorFlow Lite 运行时

借助 TensorFlow Lite Flex 运行时,您可以添加模型所需的特定运算符。作为运行模型的高级选项,您可以构建 Android 版 TensorFlow Lite,以添加运行 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 搭配使用的高性能模型,请参阅“模型”部分中的性能最佳实践