適用於 Android 的 TensorFlow Lite

TensorFlow Lite 可讓您在 Android 應用程式中執行 TensorFlow 機器學習 (ML) 模型。TensorFlow Lite 系統提供預先建構且可自訂的執行環境,可在 Android 上快速有效率地執行模型,包括硬體加速選項。

學習藍圖

學習使用 TensorFlow Lite 建構 Android 應用程式的概念和程式碼設計,請繼續閱讀
立即透過「快速入門」開始使用 TensorFlow Lite 編寫 Android 應用程式程式碼。
瞭解如何選擇及使用搭配 TensorFlow Lite 的 ML 模型,請參閱「模型」文件。

機器學習模型

TensorFlow Lite 使用已轉換為更小、可攜式、更有效率的機器學習模型格式的 TensorFlow 模型。您可以在 Android 上搭配 TensorFlow Lite 使用預先建構的模型,或建構自己的 TensorFlow 模型並將其轉換為 TensorFlow Lite 格式。

本頁面討論如何使用已建構的機器學習模型,不涵蓋模型的建構、訓練、測試或轉換。如要進一步瞭解如何挑選、修改、建構及轉換用於 TensorFlow Lite 的機器學習模型,請參閱「模型」章節。

在 Android 上執行模型

在 Android 應用程式中執行的 TensorFlow Lite 模型會接收資料、處理資料,並根據模型的邏輯產生預測結果。TensorFlow Lite 模型需要特殊的執行階段環境才能執行,且傳遞至模型的資料必須採用特定的資料格式,稱為張量。當模型處理資料 (亦稱為執行推論) 時,會產生新的張量做為預測結果,並將這些張量傳遞至 Android 應用程式,以便應用程式採取動作,例如向使用者顯示結果或執行其他業務邏輯。

Functional execution flow for TensorFlow Lite models in Android
apps

圖 1:Android 應用程式中 TensorFlow Lite 模型的功能執行流程。

在功能設計層面,您的 Android 應用程式需要下列元素才能執行 TensorFlow Lite 模型

  • 用於執行模型的 TensorFlow Lite 執行階段環境
  • 模型輸入處理常式,用於將資料轉換為張量
  • 模型輸出處理常式,用於接收輸出結果張量並將其解讀為預測結果

以下章節說明 TensorFlow Lite 程式庫和工具如何提供這些功能元素。

使用 TensorFlow Lite 建構應用程式

本節說明在 Android 應用程式中實作 TensorFlow Lite 的建議最常見路徑。您應特別注意執行階段環境和開發程式庫章節。如果您已開發自訂模型,請務必查看「進階開發路徑」章節。

執行階段環境選項

您可以透過幾種方式為 Android 應用程式啟用執行階段環境,以執行模型。以下是建議的選項

  • Google Play 服務執行階段環境中的 TensorFlow Lite (建議)
  • 獨立 TensorFlow Lite 執行階段環境

一般而言,您應使用 Google Play 服務提供的執行階段環境,因為此環境比標準環境更節省空間,而且會動態載入,進而縮減應用程式大小。Google Play 服務也會自動使用最新穩定版本的 TensorFlow Lite 執行階段,長期下來可為您提供額外功能並提升效能。如果您提供的應用程式適用於未搭載 Google Play 服務的裝置,或是您需要密切管理 ML 執行階段環境,則應使用標準 TensorFlow Lite 執行階段。這個選項會將額外程式碼套件組合到您的應用程式中,讓您對應用程式中的 ML 執行階段擁有更多控制權,但缺點是會增加應用程式的下載大小。

您可以將 TensorFlow Lite 開發程式庫新增至應用程式開發環境,藉此在 Android 應用程式中存取這些執行階段環境。如要進一步瞭解如何在應用程式中使用標準執行階段環境,請參閱下一節。

開發 API 和程式庫

您可以使用兩種主要 API 將 TensorFlow Lite 機器學習模型整合至 Android 應用程式中

Interpreter API 提供類別和方法,可讓您使用現有的 TensorFlow Lite 模型執行推論。TensorFlow Lite Task API 包裝了 Interpreter API,並提供更高等級的程式設計介面,可在處理視覺、音訊和文字資料時執行常見的機器學習工作。除非您發現 Task API 不支援您的特定用途,否則應使用 Task API。

程式庫

您可以使用Google Play 服務存取 Task API 或 Interpreter API。您也可以在 Android 應用程式中使用 TensorFlow Lite Tasks 的獨立程式庫,或是 TensorFlow Lite 核心支援程式庫。如要瞭解如何使用 TensorFlow Lite 程式庫和執行階段環境的程式設計詳細資訊,請參閱「Android 開發工具」

取得模型

在 Android 應用程式中執行模型需要 TensorFlow Lite 格式的模型。您可以使用預先建構的模型,或使用 TensorFlow 建構模型並將其轉換為 Lite 格式。如要進一步瞭解如何為 Android 應用程式取得模型,請參閱 TensorFlow Lite 「模型」章節。

處理輸入資料

您傳遞至 ML 模型的任何資料都必須是張量,且具有特定的資料結構 (通常稱為張量的形狀)。如要使用模型處理資料,您的應用程式程式碼必須將資料從其原生格式 (例如圖片、文字或音訊資料) 轉換為模型所需形狀的張量。

TensorFlow Lite Task 程式庫提供資料處理邏輯,可將視覺、文字和音訊資料轉換為具有正確形狀的張量,以便 TensorFlow Lite 模型處理。

執行推論

透過模型處理資料以產生預測結果的過程稱為執行推論。在 Android 應用程式中執行推論需要 TensorFlow Lite 執行階段環境模型輸入資料

模型在特定裝置上產生推論的速度取決於處理的資料大小、模型的複雜程度,以及可用的運算資源,例如記憶體和 CPU,或是稱為加速器的特殊處理器。機器學習模型可以在這些特殊處理器 (例如圖形處理單元 (GPU) 和張量處理單元 (TPU)) 上更快執行,方法是使用稱為委派的 TensorFlow Lite 硬體驅動程式。如要進一步瞭解委派和模型處理的硬體加速功能,請參閱「硬體加速總覽」

處理輸出結果

模型會產生張量做為預測結果,您的 Android 應用程式必須處理這些張量,方法是採取動作或向使用者顯示結果。模型輸出結果可能很簡單,例如與單一結果對應的數字 (0 = 狗、1 = 貓、2 = 鳥,適用於圖片分類),也可能複雜得多,例如圖片中多個已分類物件的多個邊界框,以及介於 0 和 1 之間的預測信賴度評級。

進階開發路徑

使用更精密且自訂的 TensorFlow Lite 模型時,您可能需要使用比上述更進階的開發方法。以下章節說明在 Android 應用程式中執行模型以及開發適用於 TensorFlow Lite 的模型的進階技術。

進階執行階段環境

除了標準執行階段和 Google Play 服務執行階段環境 (適用於 TensorFlow Lite) 之外,您還可以搭配 Android 應用程式使用其他執行階段環境。這些環境最可能的用途是,您的機器學習模型使用標準 TensorFlow Lite 執行階段環境不支援的 ML 運算。

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 使用,請參閱「模型」章節中的「效能最佳做法」

後續步驟