Android 開發工具

TensorFlow Lite 提供多種工具,可將模型整合至 Android 應用程式。本頁面說明用於建構 Kotlin、Java 和 C++ 應用程式的開發工具,以及 Android Studio 中對 TensorFlow Lite 開發的支援。

如要快速開始撰寫 Android 程式碼,請參閱Android 快速入門

使用 Kotlin 和 Java 建構的工具

以下章節說明使用 Kotlin 和 Java 語言的 TensorFlow Lite 開發工具。

TensorFlow Lite Task Library

TensorFlow Lite Task Library 包含一組功能強大且容易使用的工作專用程式庫,供應用程式開發人員使用 TensorFlow Lite 建構應用程式。它為熱門的機器學習工作 (例如圖片分類、問答等) 提供最佳化的現成模型介面。模型介面專為各項工作設計,以達到最佳效能和實用性。Task Library 可跨平台運作,並支援 Java 和 C++。

如要在 Android 應用程式中使用 Task Library,請使用 MavenCentral 的 AAR,適用於Task Vision 程式庫Task Text 程式庫Task Audio Library

您可以在 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 Task Library 總覽中的簡介。

TensorFlow Lite 程式庫

在您的 Android 應用程式中使用 TensorFlow Lite 程式庫,方法是將MavenCentral 上託管的 AAR新增至您的開發專案。

您可以在 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 Support Library

TensorFlow Lite Android Support Library 可讓您更輕鬆地將模型整合至應用程式。它提供高階 API,可協助將原始輸入資料轉換成模型所需的格式,並解譯模型的輸出,進而減少所需的重複程式碼量。

它支援常見的輸入和輸出資料格式,包括圖片和陣列。它也提供預先處理和後續處理單元,可執行圖片大小調整和裁剪等工作。

在您的 Android 應用程式中使用 Support Library,方法是納入 TensorFlow Lite Support Library AAR (在 MavenCentral 上託管)

您可以在 build.gradle 相依性中指定此項目,如下所示

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

如果您使用每夜快照版本,請務必將Sonatype 快照版本存放區新增至您的專案。

如需如何開始使用的操作說明,請參閱TensorFlow Lite Android Support Library

程式庫的最低 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 Model Binding

Android Studio 4.1 及更高版本的 ML Model Binding 功能可讓您將 .tflite 模型檔案匯入現有的 Android 應用程式,並產生介面類別,以便更輕鬆地將程式碼與模型整合。

匯入 TensorFlow Lite (TFLite) 模型的方法

  1. 在您要使用 TFLite 模型的模組上按一下滑鼠右鍵,或按一下 [File] > [New] > [Other] > [TensorFlow Lite Model]。

  2. 選取 TensorFlow Lite 檔案的位置。請注意,此工具會使用 ML Model binding 設定模組的相依性,並自動將所有必要的相依性新增至 Android 模組的 build.gradle 檔案。

  3. 按一下 Finish 以開始匯入程序。匯入完成後,此工具會顯示一個畫面,說明模型 (包括其輸入和輸出張量)。

  4. 如要開始使用模型,請選取 [Kotlin] 或 [Java],然後複製並貼上 [Sample Code] 區段中的程式碼。

您可以按兩下 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 的標頭檔。