Android 开发工具

TensorFlow Lite 提供了许多工具,用于将模型集成到 Android 应用程序中。本页介绍了用于使用 Kotlin、Java 和 C++ 构建应用程序的开发工具,以及在 Android Studio 中支持 TensorFlow Lite 开发。

要快速开始编写 Android 代码,请参阅 Android 快速入门

使用 Kotlin 和 Java 构建的工具

以下部分介绍了使用 Kotlin 和 Java 语言的 TensorFlow Lite 开发工具。

TensorFlow Lite 任务库

TensorFlow Lite 任务库包含一组功能强大且易于使用的特定于任务的库,供应用程序开发人员使用 TensorFlow Lite 进行构建。它为流行的机器学习任务(如图像分类、问答等)提供优化的开箱即用模型接口。模型接口专为每个任务而设计,以实现最佳性能和可用性。任务库跨平台工作,并在 Java 和 C++ 上受支持。

要在您的 Android 应用程序中使用任务库,请使用 MavenCentral 的 AAR,分别用于 任务视觉库任务文本库任务音频库

您可以在您的 build.gradle 依赖项中指定如下

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-task-vision:+'
    implementation 'org.tensorflow:tensorflow-lite-task-text:+'
    implementation 'org.tensorflow:tensorflow-lite-task-audio:+'
}

如果您使用的是夜间快照,请确保将 Sonatype 快照存储库 添加到您的项目中。

有关更多详细信息,请参阅 TensorFlow Lite 任务库概述 中的介绍。

TensorFlow Lite 库

通过将 托管在 MavenCentral 的 AAR 添加到您的开发项目中,在您的 Android 应用程序中使用 TensorFlow Lite 库。

您可以在您的 build.gradle 依赖项中指定如下

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:+'
}

如果您使用的是夜间快照,请确保将 Sonatype 快照存储库 添加到您的项目中。

此 AAR 包含所有 Android ABI 的二进制文件。您可以通过仅包含需要支持的 ABI 来减小应用程序二进制文件的大小。

除非您针对特定硬件,否则在大多数情况下,您应该省略 x86x86_64arm32 ABI。您可以使用以下 Gradle 配置进行配置。它专门包含 armeabi-v7aarm64-v8a,并且应该涵盖大多数现代 Android 设备。

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

要了解有关 abiFilters 的更多信息,请参阅 Android NDK 文档中的 Android ABI

TensorFlow Lite 支持库

TensorFlow Lite Android 支持库使将模型集成到您的应用程序变得更加容易。它提供高级 API,可帮助将原始输入数据转换为模型所需的格式,并解释模型的输出,从而减少所需的样板代码量。

它支持常见的输入和输出数据格式,包括图像和数组。它还提供预处理和后处理单元,执行图像大小调整和裁剪等任务。

通过在您的 Android 应用中包含 TensorFlow Lite 在 MavenCentral 托管的支持库 AAR,在您的 Android 应用中使用支持库。

您可以在您的 build.gradle 依赖项中指定如下

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

如果您使用的是夜间快照,请确保将 Sonatype 快照存储库 添加到您的项目中。

有关入门说明,请参阅 TensorFlow Lite Android 支持库

库的最低 Android SDK 版本

minSdkVersion 设备要求
tensorflow-lite 19 NNAPI 使用需要 API 27+
tensorflow-lite-gpu 19 GLES 3.1 或 OpenCL(通常仅在 API 21+ 上可用)
tensorflow-lite-hexagon 19 -
tensorflow-lite-support 19 -
tensorflow-lite-task-vision 21 android.graphics.Color 相关 API 需要 API 26+
tensorflow-lite-task-text 21 -
tensorflow-lite-task-audio 23 -
tensorflow-lite-metadata 19 -

使用 Android Studio

除了上面描述的开发库之外,Android Studio 还提供对集成 TensorFlow Lite 模型的支持,如下所述。

Android Studio ML 模型绑定

Android Studio 4.1 及更高版本的 ML 模型绑定功能允许您将 .tflite 模型文件导入到您现有的 Android 应用中,并生成接口类,以更轻松地将您的代码与模型集成。

要导入 TensorFlow Lite (TFLite) 模型

  1. 右键单击您要使用 TFLite 模型的模块,或单击 **文件 > 新建 > 其他 > TensorFlow Lite 模型**。

  2. 选择 TensorFlow Lite 文件的位置。请注意,该工具使用 ML 模型绑定配置模块的依赖项,并自动将所有必需的依赖项添加到您的 Android 模块的 build.gradle 文件中。

  3. 单击 完成 开始导入过程。导入完成后,该工具将显示一个屏幕,描述模型,包括其输入和输出张量。

  4. 要开始使用该模型,请选择 Kotlin 或 Java,并将 **示例代码** 部分中的代码复制并粘贴。

您可以通过双击 Android Studio 中 ml 目录下的 TensorFlow Lite 模型,返回到模型信息屏幕。有关使用 Android Studio 的 Modle Binding 功能的更多信息,请参阅 Android Studio 发行说明。有关在 Android Studio 中使用模型绑定的概述,请参阅代码示例 说明

使用 C 和 C++ 构建的工具

TensorFlow Lite 的 C 和 C++ 库主要面向使用 Android Native Development Kit (NDK) 构建其应用的开发人员。如果您使用 NDK 构建应用,则可以通过 C++ 使用 TFLite 的两种方法

TFLite C API

对于使用 NDK 的开发人员,使用此 API 是推荐的方法。下载 在 MavenCentral 托管的 TensorFlow Lite AAR 文件,重命名为 tensorflow-lite-*.zip,然后解压缩。您必须在 NDK 项目的 headers/tensorflow/lite/headers/tensorflow/lite/c/ 文件夹中包含四个头文件,以及 jni/ 文件夹中的相关 libtensorflowlite_jni.so 动态库。

c_api.h 头文件包含有关使用 TFLite C API 的基本文档。

TFLite C++ API

如果您想通过 C++ API 使用 TFLite,您可以构建 C++ 共享库

32 位 armeabi-v7a

bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so

64 位 arm64-v8a

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

目前,没有直接的方法来提取所有必需的头文件,因此您必须包含 TensorFlow 存储库中 tensorflow/lite/ 中的所有头文件。此外,您还需要来自 FlatBuffersAbseil 的头文件。