將自定義 TensorFlow Lite 模型與 Flutter 結合使用

如果您的應用使用自定義TensorFlow Lite模型,您可以使用 Firebase ML 來部署您的模型。通過使用 Firebase 部署模型,您可以減少應用的初始下載大小並更新應用的 ML 模型,而無需發布應用的新版本。而且,通過遠程配置和 A/B 測試,您可以為不同的用戶組動態地提供不同的模型。

TensorFlow Lite 模型

TensorFlow Lite 模型是經過優化以在移動設備上運行的 ML 模型。要獲取 TensorFlow Lite 模型:

在你開始之前

  1. 如果您尚未安裝並初始化 Flutter 的 Firebase SDK

  2. 在 Flutter 項目的根目錄中,運行以下命令來安裝 ML 模型下載器插件:

    flutter pub add firebase_ml_model_downloader
    
  3. 重建你的項目:

    flutter run
    

1. 部署你的模型

使用 Firebase 控制台或 Firebase Admin Python 和 Node.js SDK 部署您的自定義 TensorFlow 模型。請參閱部署和管理自定義模型

將自定義模型添加到 Firebase 項目後,您可以使用您指定的名稱在應用中引用該模型。您可以隨時部署新的 TensorFlow Lite 模型,並通過調用getModel()將新模型下載到用戶的設備上(見下文)。

2. 將模型下載到設備並初始化 TensorFlow Lite 解釋器

要在您的應用中使用您的 TensorFlow Lite 模型,請首先使用模型下載器將模型的最新版本下載到設備。然後,使用模型實例化一個 TensorFlow Lite 解釋器。

要開始模型下載,請調用模型下載器的getModel()方法,指定上傳模型時指定的名稱、是否要始終下載最新模型以及允許下載的條件。

您可以從三種下載行為中進行選擇:

下載類型描述
localModel從設備獲取本地模型。如果沒有可用的本地模型,則其行為類似於latestModel 。如果您對檢查模型更新不感興趣,請使用此下載類型。例如,您正在使用遠程配置來檢索模型名稱,並且您總是以新名稱上傳模型(推薦)。
localModelUpdateInBackground從設備獲取本地模型並開始在後台更新模型。如果沒有可用的本地模型,則其行為類似於latestModel
latestModel獲取最新型號。如果本地模型是最新版本,則返回本地模型。否則,請下載最新型號。在下載最新版本之前,此行為將被阻止(不推薦)。僅在您明確需要最新版本的情況下使用此行為。

您應該禁用與模型相關的功能(例如,灰顯或隱藏部分 UI),直到您確認模型已下載。

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 解釋器一起使用來執行推理。為此,您有多種選擇:

附錄:模型安全

無論您如何使 TensorFlow Lite 模型可用於 Firebase ML,Firebase ML 都會以標準序列化 protobuf 格式將它們存儲在本地存儲中。

理論上,這意味著任何人都可以復制您的模型。然而,在實踐中,大多數模型都是特定於應用程序的,並且被優化混淆了,其風險類似於競爭對手反彙編和重用代碼的風險。不過,在您的應用程序中使用自定義模型之前,您應該意識到這種風險。