查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Utiliser un modèle TensorFlow Lite personnalisé avec Flutter

Si votre application utilise des modèles TensorFlow Lite personnalisés, vous pouvez utiliser Firebase ML pour déployer vos modèles. 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 les modèles ML de votre application sans publier une nouvelle version de votre application. Et, avec la configuration à distance et les tests A/B, vous pouvez servir dynamiquement différents modèles à différents groupes 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 :

Avant que tu commences

  1. Installez et initialisez les SDK Firebase pour Flutter si vous ne l'avez pas déjà fait.

  2. Depuis 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_downloader
    
  3. Reconstruisez votre projet :

    flutter run
    

1. Déployez votre 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. Voir Déployer et gérer des modèles personnalisés .

Après avoir ajouté un modèle personnalisé à votre projet Firebase, vous pouvez référencer le modèle dans vos applications en utilisant le nom que vous avez spécifié. À tout moment, vous pouvez déployer un nouveau modèle TensorFlow Lite et télécharger le nouveau modèle sur les appareils des utilisateurs en appelant getModel() (voir ci-dessous).

2. Téléchargez le modèle sur l'appareil et initialisez un interpréteur TensorFlow Lite

Pour utiliser votre modèle TensorFlow Lite dans votre application, utilisez d'abord 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 démarrer 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 lorsque vous l'avez téléchargé, si vous souhaitez toujours télécharger le dernier modèle et les conditions dans lesquelles vous souhaitez autoriser le téléchargement.

Vous pouvez choisir parmi trois comportements de téléchargement :

Type de téléchargement La description
localModel Obtenez le modèle local à partir de l'appareil. S'il n'y a pas de modèle local disponible, cela se comporte comme 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 des noms de modèles et vous téléchargez 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. S'il n'y a pas de modèle local disponible, cela se comporte comme latestModel .
latestModel Obtenez le dernier modèle. Si le modèle local est la dernière version, renvoie le modèle local. Sinon, téléchargez le dernier modèle. Ce comportement bloquera jusqu'à ce que la dernière version soit téléchargée (non recommandé). Utilisez ce comportement uniquement 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 démarrent la tâche de téléchargement dans leur code d'initialisation, mais vous pouvez le faire à tout moment avant de devoir 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 des inférences. Pour cela, vous avez plusieurs options :

Annexe : Modèle de sécurité

Quelle que soit la manière dont vous mettez vos modèles TensorFlow Lite à 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. Cependant, dans la pratique, la plupart des modèles sont tellement spécifiques à l'application et obscurcis par les optimisations que le risque est similaire à celui des concurrents désassemblant et réutilisant votre code. Néanmoins, vous devez être conscient de ce risque avant d'utiliser un modèle personnalisé dans votre application.