Verwenden Sie ein benutzerdefiniertes TensorFlow Lite-Modell mit Flutter

Wenn Ihre App benutzerdefinierte TensorFlow Lite- Modelle verwendet, können Sie Firebase ML verwenden, um Ihre Modelle bereitzustellen. Durch die Bereitstellung von Modellen mit Firebase können Sie die anfängliche Downloadgröße Ihrer App reduzieren und die ML-Modelle Ihrer App aktualisieren, ohne eine neue Version Ihrer App zu veröffentlichen. Und mit Remote Config und A/B Testing können Sie unterschiedliche Modelle dynamisch für unterschiedliche Benutzergruppen bereitstellen.

TensorFlow Lite-Modelle

TensorFlow Lite-Modelle sind ML-Modelle, die für die Ausführung auf Mobilgeräten optimiert sind. So erhalten Sie ein TensorFlow Lite-Modell:

Beachten Sie, dass Sie in Ermangelung einer gepflegten TensorFlow Lite-Bibliothek für Dart eine Integration mit der nativen TensorFlow Lite-Bibliothek für Ihre Plattformen vornehmen müssen. Diese Integration ist hier nicht dokumentiert.

Bevor Sie beginnen

  1. Installieren und initialisieren Sie die Firebase SDKs für Flutter , falls Sie dies noch nicht getan haben.

  2. Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das ML-Modell-Downloader-Plugin zu installieren:

    flutter pub add firebase_ml_model_downloader
    
  3. Erstellen Sie Ihr Projekt neu:

    flutter run
    

1. Stellen Sie Ihr Modell bereit

Stellen Sie Ihre benutzerdefinierten TensorFlow-Modelle entweder mit der Firebase-Konsole oder den Python- und Node.js-SDKs von Firebase Admin bereit. Siehe Bereitstellen und Verwalten von benutzerdefinierten Modellen .

Nachdem Sie Ihrem Firebase-Projekt ein benutzerdefiniertes Modell hinzugefügt haben, können Sie in Ihren Apps mit dem von Ihnen angegebenen Namen auf das Modell verweisen. Sie können jederzeit ein neues TensorFlow Lite-Modell bereitstellen und das neue Modell auf die Geräte der Benutzer herunterladen, indem getModel() aufrufen (siehe unten).

2. Laden Sie das Modell auf das Gerät herunter und initialisieren Sie einen TensorFlow Lite-Interpreter

Um Ihr TensorFlow Lite-Modell in Ihrer App zu verwenden, verwenden Sie zunächst den Modell-Downloader, um die neueste Version des Modells auf das Gerät herunterzuladen. Instanziieren Sie dann einen TensorFlow Lite-Interpreter mit dem Modell.

Rufen Sie zum Starten des Modell-Downloads die getModel() -Methode des Modell-Downloaders auf und geben Sie den Namen an, den Sie dem Modell beim Hochladen zugewiesen haben, ob Sie immer das neueste Modell herunterladen möchten und unter welchen Bedingungen Sie das Herunterladen zulassen möchten.

Sie können zwischen drei Download-Verhaltensweisen wählen:

Download-Typ Beschreibung
localModel Holen Sie sich das lokale Modell vom Gerät. Wenn kein lokales Modell verfügbar ist, verhält sich dies wie latestModel . Verwenden Sie diesen Downloadtyp, wenn Sie nicht nach Modellaktualisierungen suchen möchten. Beispielsweise verwenden Sie Remote Config, um Modellnamen abzurufen, und Sie laden Modelle immer unter neuen Namen hoch (empfohlen).
localModelUpdateInBackground Holen Sie sich das lokale Modell vom Gerät und starten Sie die Aktualisierung des Modells im Hintergrund. Wenn kein lokales Modell verfügbar ist, verhält sich dies wie latestModel .
latestModel Holen Sie sich das neueste Modell. Wenn das lokale Modell die neueste Version ist, wird das lokale Modell zurückgegeben. Andernfalls laden Sie das neueste Modell herunter. Dieses Verhalten wird blockiert, bis die neueste Version heruntergeladen wurde (nicht empfohlen). Verwenden Sie dieses Verhalten nur in Fällen, in denen Sie ausdrücklich die neueste Version benötigen.

Sie sollten modellbezogene Funktionen deaktivieren, z. B. Teile Ihrer Benutzeroberfläche ausgrauen oder ausblenden, bis Sie bestätigen, dass das Modell heruntergeladen wurde.

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;

      // ...
    });

Viele Apps starten die Download-Aufgabe in ihrem Initialisierungscode, aber Sie können dies jederzeit tun, bevor Sie das Modell verwenden müssen.

3. Führe Rückschlüsse auf Eingabedaten durch

Jetzt, da Sie Ihre Modelldatei auf dem Gerät haben, können Sie sie mit dem TensorFlow Lite-Interpreter verwenden, um Inferenzen durchzuführen. In Ermangelung einer gepflegten TensorFlow Lite-Bibliothek für Dart müssen Sie die nativen TensorFlow Lite-Bibliotheken für iOS und Android integrieren.

Anhang: Modellsicherheit

Unabhängig davon, wie Sie Ihre TensorFlow Lite-Modelle Firebase ML zur Verfügung stellen, speichert Firebase ML sie im standardmäßigen serialisierten Protobuf-Format im lokalen Speicher.

Theoretisch bedeutet dies, dass jeder Ihr Modell kopieren kann. In der Praxis sind die meisten Modelle jedoch so anwendungsspezifisch und durch Optimierungen verschleiert, dass das Risiko ähnlich ist wie bei Wettbewerbern, die Ihren Code zerlegen und wiederverwenden. Dennoch sollten Sie sich dieses Risikos bewusst sein, bevor Sie ein benutzerdefiniertes Modell in Ihrer App verwenden.