Si votre application utilise des modèles TensorFlow Lite personnalisés, vous pouvez utiliser Firebase ML pour les déployer. En déployant des modèles avec Firebase, vous pouvez réduire la taille de téléchargement initiale de votre application et mettre à jour ses modèles ML sans publier de nouvelle version. De plus, avec Remote Config et les tests A/B, vous pouvez diffuser dynamiquement différents modèles auprès de différents ensembles d'utilisateurs.
Modèles TensorFlow Lite
Les modèles TensorFlow Lite sont des modèles ML optimisés pour s'exécuter sur des appareils mobiles. Pour obtenir un modèle TensorFlow Lite :
- Utilisez un modèle prédéfini, tel que l'un des modèles TensorFlow Lite officiels.
- Convertissez un modèle TensorFlow, un modèle Keras ou une fonction concrète en TensorFlow Lite.
Notez qu'en l'absence d'une bibliothèque TensorFlow Lite maintenue pour Dart, vous devrez l'intégrer à la bibliothèque TensorFlow Lite native pour vos plates-formes. Cette intégration n'est pas documentée ici.
Avant de commencer
Installez et initialisez les SDK Firebase pour Flutter si ce n'est pas déjà fait.
Dans le répertoire racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in de téléchargement de modèles ML :
flutter pub add firebase_ml_model_downloaderRecréez votre projet :
flutter run
1. Déployer le modèle
Déployez vos modèles TensorFlow personnalisés à l'aide de la console Firebase ou des SDK Firebase Admin Python et Node.js. Consultez Déployer et gérer des modèles personnalisés.
Une fois que vous avez ajouté un modèle personnalisé à votre projet Firebase, vous pouvez le référencer dans vos applications à l'aide du nom que vous avez spécifié. Vous pouvez à tout moment déployer un nouveau modèle TensorFlow Lite et le télécharger sur les appareils des utilisateurs en appelant getModel() (voir ci-dessous).
2. Télécharger le modèle sur l'appareil et initialiser un interpréteur TensorFlow Lite
Pour utiliser votre modèle TensorFlow Lite dans votre application, commencez par utiliser le téléchargeur de modèles pour télécharger la dernière version du modèle sur l'appareil. Ensuite, instanciez un interpréteur TensorFlow Lite avec le modèle.
Pour lancer le téléchargement du modèle, appelez la méthode getModel() du téléchargeur de modèles, en spécifiant le nom que vous avez attribué au modèle lors de son importation, si vous souhaitez toujours télécharger le dernier modèle et les conditions dans lesquelles vous souhaitez autoriser le téléchargement.
Vous avez le choix entre trois comportements de téléchargement :
| Type de téléchargement | Description |
|---|---|
localModel
|
Obtenez le modèle local à partir de l'appareil.
Si aucun modèle local n'est disponible, ce comportement est identique à celui de latestModel. Utilisez ce type de téléchargement si vous ne souhaitez pas vérifier les mises à jour du modèle. Par exemple, vous utilisez Remote Config pour récupérer les noms de modèles et vous importez toujours des modèles sous de nouveaux noms (recommandé). |
localModelUpdateInBackground
|
Obtenez le modèle local à partir de l'appareil et commencez à mettre à jour le modèle en arrière-plan.
Si aucun modèle local n'est disponible, ce comportement est identique à celui de latestModel. |
latestModel
|
Obtenez le dernier modèle. Si le modèle local est la dernière version, il renvoie le modèle local. Sinon, téléchargez le dernier modèle. Ce comportement sera bloqué jusqu'à ce que la dernière version soit téléchargée (non recommandé). N'utilisez ce comportement que dans les cas où vous avez explicitement besoin de la dernière version. |
Vous devez désactiver les fonctionnalités liées au modèle (par exemple, griser ou masquer une partie de votre interface utilisateur) jusqu'à ce que vous confirmiez que le modèle a été téléchargé.
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;
// ...
});
De nombreuses applications lancent la tâche de téléchargement dans leur code d'initialisation, mais vous pouvez le faire à tout moment avant d'avoir besoin d'utiliser le modèle.
3. Effectuer une inférence sur les données d'entrée
Maintenant que vous avez votre fichier de modèle sur l'appareil, vous pouvez l'utiliser avec l'interpréteur TensorFlow Lite pour effectuer une inférence. En l'absence d'une bibliothèque TensorFlow Lite maintenue pour Dart, vous devrez l'intégrer aux bibliothèques TensorFlow Lite natives pour iOS et Android.
Annexe : Sécurité des modèles
Quelle que soit la manière dont vous mettez vos modèles TensorFlow Lite à la disposition de Firebase ML, Firebase ML les stocke au format protobuf sérialisé standard dans le stockage local.
En théorie, cela signifie que n'importe qui peut copier votre modèle. Toutefois, en pratique, la plupart des modèles sont tellement spécifiques à une application et obscurcis par des optimisations que le risque est similaire à celui de concurrents qui désassemblent et réutilisent votre code. Néanmoins, vous devez être conscient de ce risque avant d'utiliser un modèle personnalisé dans votre application.