Wenn Ihre App benutzerdefinierte TensorFlow Lite Modelle verwendet, können Sie Ihre Modelle mit Firebase ML bereitstellen. 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 der App zu veröffentlichen. Mit Remote Config und A/B-Tests können Sie außerdem verschiedenen Nutzergruppen dynamisch unterschiedliche Modelle 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:
- Verwenden Sie ein vordefiniertes Modell, z. B. eines der offiziellen TensorFlow Lite-Modelle
- Konvertieren Sie ein TensorFlow-Modell, ein Keras-Modell oder eine konkrete Funktion in TensorFlow Lite.
Da es keine verwaltete TensorFlow Lite-Bibliothek für Dart gibt, müssen Sie die native TensorFlow Lite-Bibliothek für Ihre Plattformen einbinden. Diese Einbindung wird hier nicht dokumentiert.
Hinweis
Installieren und initialisieren Sie die Firebase SDKs für Flutter falls noch nicht geschehen.
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plug-in zum Herunterladen von ML-Modellen zu installieren:
flutter pub add firebase_ml_model_downloaderErstellen Sie Ihr Projekt neu:
flutter run
1. Modell bereitstellen
Stellen Sie Ihre benutzerdefinierten TensorFlow-Modelle entweder über die Firebase-Konsole oder die Firebase Admin SDKs für Python und Node.js bereit. Weitere Informationen finden Sie unter Benutzerdefinierte Modelle bereitstellen und verwalten.
Nachdem Sie Ihrem Firebase-Projekt ein benutzerdefiniertes Modell hinzugefügt haben, können Sie in Ihren Apps anhand des von Ihnen angegebenen Namens auf dieses Modell verweisen. Sie können jederzeit ein neues TensorFlow Lite-Modell bereitstellen und das neue Modell auf die Geräte der Nutzer herunterladen, indem Sie getModel() aufrufen (siehe unten).
2. Modell auf das Gerät herunterladen und einen TensorFlow Lite-Interpreter initialisieren
Wenn Sie Ihr TensorFlow Lite-Modell in Ihrer App verwenden möchten, laden Sie zuerst mit dem Modell-Downloader die neueste Version des Modells auf das Gerät herunter. Instanziieren Sie dann einen TensorFlow Lite-Interpreter mit dem Modell.
Rufen Sie zum Starten des Modell-Downloads die Methode getModel() 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 das Herunterladen zulässig sein soll.
Sie können zwischen drei Download-Verhaltensweisen wählen:
| Downloadtyp | Beschreibung |
|---|---|
localModel
|
Ruft das lokale Modell vom Gerät ab.
Wenn kein lokales Modell verfügbar ist, verhält sich diese Option wie latestModel. Verwenden Sie diesen Downloadtyp, wenn Sie nicht nach Modellaktualisierungen suchen möchten. Sie verwenden beispielsweise Remote Config, um Modellnamen abzurufen, und laden Modelle immer unter neuen Namen hoch (empfohlen). |
localModelUpdateInBackground
|
Ruft das lokale Modell vom Gerät ab und beginnt mit der Aktualisierung des Modells im Hintergrund.
Wenn kein lokales Modell verfügbar ist, verhält sich diese Option wie latestModel. |
latestModel
|
Ruft das neueste Modell ab. Wenn das lokale Modell die neueste Version ist, wird das lokale Modell zurückgegeben. Andernfalls wird das neueste Modell heruntergeladen. Dieses Verhalten blockiert, bis die neueste Version heruntergeladen wurde (nicht empfohlen). Verwenden Sie dieses Verhalten nur, wenn Sie ausdrücklich die neueste Version benötigen. |
Sie sollten modellbezogene Funktionen deaktivieren, z. B. Teile der 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 den Downloadvorgang in ihrem Initialisierungscode. Sie können dies aber auch jederzeit tun, bevor Sie das Modell verwenden müssen.
3. Inferenz für Eingabedaten ausführen
Nachdem Sie die Modelldatei auf dem Gerät haben, können Sie sie mit dem TensorFlow Lite-Interpreter verwenden, um Inferenz auszuführen. Da es keine verwaltete TensorFlow Lite-Bibliothek für Dart gibt, müssen Sie die nativen TensorFlow Lite-Bibliotheken für iOS und Android einbinden.
Anhang: Modellsicherheit
Unabhängig davon, wie Sie Ihre TensorFlow Lite-Modelle für Firebase ML verfügbar machen, speichert Firebase ML sie im standardmäßigen serialisierten Protobuf-Format im lokalen Speicher.
Theoretisch kann also jeder Ihr Modell kopieren. In der Praxis sind die meisten Modelle jedoch so anwendungsspezifisch und durch Optimierungen verschleiert, dass das Risiko ähnlich hoch ist wie das Risiko, dass Wettbewerber Ihren Code disassemblieren und wiederverwenden. Sie sollten sich dieses Risikos jedoch bewusst sein, bevor Sie ein benutzerdefiniertes Modell in Ihrer App verwenden.