如果您的應用使用自定義TensorFlow Lite模型,您可以使用 Firebase ML 來部署您的模型。通過使用 Firebase 部署模型,您可以減少應用的初始下載大小並更新應用的 ML 模型,而無需發布應用的新版本。而且,通過遠程配置和 A/B 測試,您可以動態地為不同的用戶組提供不同的模型。
TensorFlow Lite 模型
TensorFlow Lite 模型是經過優化以在移動設備上運行的 ML 模型。要獲取 TensorFlow Lite 模型:
請注意,如果沒有為 Dart 維護的 TensorFlow Lite 庫,您將需要為您的平台集成原生的 TensorFlow Lite 庫。此集成未在此處記錄。
在你開始之前
如果您還沒有安裝並初始化 Firebase SDKs for Flutter ,請執行此操作。
在 Flutter 項目的根目錄中,運行以下命令來安裝 ML 模型下載器插件:
flutter pub add firebase_ml_model_downloader
重建你的項目:
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 。如果您對檢查模型更新不感興趣,請使用此下載類型。例如,您正在使用 Remote Config 檢索模型名稱,並且始終以新名稱上傳模型(推薦)。 |
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 解釋器一起使用來執行推理。在沒有為 Dart 維護的 TensorFlow Lite 庫的情況下,您將需要與適用於 iOS 和 Android 的原生 TensorFlow Lite 庫集成。
附錄:模型安全
無論您如何使 TensorFlow Lite 模型可用於 Firebase ML,Firebase ML 都會將它們以標準序列化 protobuf 格式存儲在本地存儲中。
從理論上講,這意味著任何人都可以復制您的模型。然而,在實踐中,大多數模型都是特定於應用程序的,並且被優化所混淆,以至於風險類似於競爭對手反彙編和重用您的代碼的風險。然而,在您的應用程序中使用自定義模型之前,您應該意識到這種風險。