Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

將自定義 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 格式將它們存儲在本地存儲中。

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