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 来减小应用程序二进制文件的大小。
除非您针对特定硬件,否则在大多数情况下,您应该省略 x86
、x86_64
和 arm32
ABI。您可以使用以下 Gradle 配置进行配置。它专门包含 armeabi-v7a
和 arm64-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) 模型
右键单击您要使用 TFLite 模型的模块,或单击 **文件 > 新建 > 其他 > TensorFlow Lite 模型**。
选择 TensorFlow Lite 文件的位置。请注意,该工具使用 ML 模型绑定配置模块的依赖项,并自动将所有必需的依赖项添加到您的 Android 模块的
build.gradle
文件中。单击
完成
开始导入过程。导入完成后,该工具将显示一个屏幕,描述模型,包括其输入和输出张量。要开始使用该模型,请选择 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/
中的所有头文件。此外,您还需要来自 FlatBuffers 和 Abseil 的头文件。