透過 Flutter 使用自訂 TensorFlow Lite 模型

如果您的應用程式使用自訂 TensorFlow Lite 模型 如何運用 Firebase ML 部署模型透過 Firebase 部署模型後 可縮減應用程式的初始下載大小,並更新應用程式的機器學習模型 不必發布新版應用程式然後利用遠端設定和 A/B 功能 透過測試,您可以針對不同的使用者群組動態提供不同的模型。

TensorFlow Lite 模型

TensorFlow Lite 模型是最佳化的機器學習模型,適合在行動裝置上執行 裝置。如要取得 TensorFlow Lite 模型,請按照下列步驟操作:

請注意,如果沒有供 Dart 維護的 TensorFlow Lite 程式庫, 則需要與原生 TensorFlow Lite 程式庫整合 平台。這裡並未記錄這項整合。

事前準備

  1. 安裝並初始化 Flutter 適用的 Firebase SDK 如果尚未建立

  2. 在 Flutter 專案的根目錄中執行下列指令 安裝機器學習模型下載工具外掛程式的指令:

    flutter pub add firebase_ml_model_downloader
    
  3. 重新建構您的專案:

    flutter run
    

1. 部署模型

您可以使用 Firebase 控制台或 Firebase Admin Python 和 Node.js SDK詳情請見 部署及管理自訂模型

在 Firebase 專案中加入自訂模型後,您就能參照 在應用程式中使用您指定的名稱您隨時可以將 新的 TensorFlow Lite 模型,並將新模型下載至使用者的裝置劃分依據: 呼叫 getModel() (請見下方)。

2. 將模型下載至裝置,然後初始化 TensorFlow Lite 解譯器

如要在應用程式中使用 TensorFlow Lite 模型,請先使用模型下載工具 下載最新版本的模型到裝置。接著,將 TensorFlow Lite 解譯器搭配模型。

如要開始下載模型,請呼叫模型下載工具的 getModel() 方法。 指定您在上傳模型時為模型指派的名稱 因此建議您一律下載最新模型 需要允許下載

有三種下載行為可供選擇:

下載類型 說明
localModel 取得裝置的本機模型。 如果沒有本機模型可用,這個 的運作方式與 latestModel 類似。使用這份草稿 然後下載 檢查模型更新狀態例如: 就是使用遠端設定 而且每次都會將模型上傳到 的新名稱 (建議)。
localModelUpdateInBackground 取得裝置的本機模型,並 開始在背景更新模型 如果沒有本機模型可用,這個 的運作方式與 latestModel 類似。
latestModel 取得最新模型。如果本機模型 最新版本,會傳回本機 模型否則,請下載最新版本 模型這項行為會封鎖,直到 就會下載最新版本 建議)。這個行為僅限用於 明確需要 版本。

您應該停用模型相關功能,例如 隱藏部分使用者介面,直到您確認下載模型為止。

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

許多應用程式會在初始化程式碼中啟動下載工作,但您可以這麼做 因此在您需要使用模型前

3. 對輸入資料執行推論

將模型檔案儲存在裝置上後,就能將模型檔案與 TensorFlow Lite 解譯器來執行推論。在沒有維護 適用於 Dart 的 TensorFlow Lite 程式庫,您需要與 原生 TensorFlow Lite 程式庫 分為 iOS 和 Android 版

附錄:模型安全性

無論您是以何種方式將 TensorFlow Lite 模型提供給 Firebase ML、Firebase 機器學習會以標準的序列化 protobuf 格式儲存檔案, 本機儲存空間

理論上,這代表任何人都可以複製您的模型不過 實務上,大多數模型 都特別適合應用程式,並經過模糊處理 並預測其他可能與競爭對手拆解及 重複使用程式碼然而,在使用 之前,請務必先瞭解此風險 在應用程式中加入自訂模型