On-Device-Textklassifizierung mit TensorFlow Lite und Firebase zu Ihrer App hinzufügen – Android Codelab

1. Übersicht

text-classification-result.png

Willkommen beim Codelab zur Textklassifizierung mit TensorFlow Lite und Firebase. In diesem Codelab erfahren Sie, wie Sie mit TensorFlow Lite und Firebase ein Textklassifizierungsmodell trainieren und in Ihrer App bereitstellen. Dieses Codelab basiert auf diesem Beispiel aus TensorFlow Lite.

Bei der Textklassifizierung werden Texten anhand ihres Inhalts Tags oder Kategorien zugewiesen. Die Klassifizierung ist eine der grundlegenden Aufgaben der natürlichen Sprachverarbeitung (Natural Language Processing, NLP) mit weitreichenden Anwendungen wie Sentimentanalyse, Themenkennzeichnung, Spamerkennung und Absichtserkennung.

Bei der Sentimentanalyse werden Emotionen (positiv, negativ und neutral) in Textdaten anhand von Textanalysetechniken interpretiert und klassifiziert. Mithilfe der Sentimentanalyse können Unternehmen die Stimmung der Kunden in Bezug auf Produkte, Marken oder Dienstleistungen in Onlinegesprächen und Feedback ermitteln.

In dieser Anleitung erfahren Sie, wie Sie ein Modell für maschinelles Lernen für die Sentimentanalyse erstellen, insbesondere wenn Sie Text als positiv oder negativ klassifizieren. Dies ist ein Beispiel für die Klassifizierung in zwei Klassen, eine wichtige und weit verbreitete Art von ML-Problem.

Lerninhalte

  • TF Lite-Sentimentanalysemodelle mit TF Lite Model Maker trainieren
  • TF Lite-Modelle in Firebase ML bereitstellen und von Ihrer App aus darauf zugreifen
  • TF Lite-Sentimentanalysemodelle mit der TF Lite Task Library in Ihre App einbinden

Voraussetzungen

  • Die neueste Version von Android Studio.
  • Beispielcode.
  • Ein Testgerät mit Android 5.0 oder höher und Google Play-Diensten 9.8 oder höher oder ein Emulator mit Google Play-Diensten 9.8 oder höher
  • Wenn Sie ein Gerät verwenden: ein Verbindungskabel.

Wie möchten Sie diese Anleitung nutzen?

Nur bis zum Ende lesen Lies sie dir durch und absolviere die Übungen

Wie würden Sie Ihre Erfahrungen mit der Entwicklung von Android-Apps bewerten?

Neuling Mittel Kompetent

2. Beispielcode abrufen

Klonen Sie das GitHub-Repository von der Befehlszeile.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

Wenn Sie Git nicht installiert haben, können Sie das Beispielprojekt auch von der GitHub-Seite herunterladen oder auf diesen Link klicken.

3. Start-App importieren

Wählen Sie in Android Studio das Verzeichnis codelab-textclassification-android-master ( android_studio_folder.png) aus dem Beispielcode-Download aus (Datei > Öffnen > .../codelab-textclassification-android-master/start).

Das Startprojekt sollte jetzt in Android Studio geöffnet sein.

4. Start-App ausführen

Nachdem Sie das Projekt in Android Studio importiert haben, können Sie die App zum ersten Mal ausführen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Run ( execute.png).

Die App sollte auf deinem Gerät gestartet werden. Sie enthält nur eine einfache Benutzeroberfläche, mit der sich Textklassifizierungsmodelle in den nächsten Schritten ganz einfach integrieren und testen lassen. Wenn Sie jetzt versuchen, die Stimmung vorherzusagen, gibt die App nur einige Dummy-Ergebnisse zurück.

2fb4e69fafb2e3ed.png

5. Firebase Console-Projekt erstellen

Firebase zum Projekt hinzufügen

  1. Rufen Sie die Firebase Console auf.
  2. Wählen Sie Projekt hinzufügen aus.
  3. Wählen Sie einen Projektnamen aus oder geben Sie einen ein.
  4. Führen Sie die verbleibenden Einrichtungsschritte in der Firebase Console aus und klicken Sie dann auf „Projekt erstellen“. Falls Sie ein vorhandenes Google-Projekt verwenden, klicken Sie auf „Firebase hinzufügen“.

6. Firebase zur App hinzufügen

  1. Klicken Sie auf dem Übersichtsbildschirm Ihres neuen Projekts auf das Android-Symbol, um den Einrichtungsworkflow zu starten.
  2. Geben Sie den Paketnamen des Codelabs ein: org.tensorflow.lite.codelabs.textclassification

Datei „google-services.json“ zu Ihrer Anwendung hinzufügen

Nachdem Sie den Paketnamen hinzugefügt und „Registrieren“ ausgewählt haben, klicken Sie auf „google-services.json** herunterladen“, um Ihre Firebase-Android-Konfigurationsdatei abzurufen. Kopieren Sie dann die Datei google-services.json in das Verzeichnis *app* in Ihrem Projekt.

Plug-in für Google-Dienste zu Ihrer App hinzufügen

Folgen Sie der Anleitung in der Firebase Console, um die build.gradle.kts-Dateien zu aktualisieren und Firebase Ihrer App hinzuzufügen.

Das Plug-in „google-services“ verwendet die Datei „google-services.json“, um Ihre Anwendung für die Verwendung von Firebase zu konfigurieren.

Projekt mit Gradle-Dateien synchronisieren

Damit alle Abhängigkeiten für Ihre App verfügbar sind, sollten Sie Ihr Projekt jetzt mit Gradle-Dateien synchronisieren. Wählen Sie Datei > Synchronisieren Sie das Projekt mit Gradle-Dateien über die Android Studio-Symbolleiste.

7. App mit Firebase ausführen

Nachdem du das google-services-Plug-in mit deiner JSON-Datei konfiguriert hast, kannst du die App mit Firebase ausführen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen (execute.png).

Die App sollte auf deinem Gerät gestartet werden. An diesem Punkt sollte Ihre App weiterhin erfolgreich erstellt werden.

8. Sentimentanalysemodell trainieren

Wir verwenden den TensorFlow Lite Model Maker, um ein Textklassifizierungsmodell zu trainieren, mit dem das Sentiment eines bestimmten Textes vorhergesagt werden kann.

Dieser Schritt wird als Python-Notebook dargestellt, das Sie in Google Colab öffnen können. Sie können Laufzeit > Alle ausführen auswählen, um das gesamte Notebook gleichzeitig auszuführen.

In Colab öffnen

Nach Abschluss dieses Schritts haben Sie ein Sentimentanalysemodell von TensorFlow Lite, das Sie in einer mobilen App bereitstellen können.

9. Modell in Firebase ML bereitstellen

Es gibt zwei Hauptgründe, warum es sinnvoll ist, ein Modell in Firebase ML bereitzustellen:

  1. Wir können die Installationsgröße der App klein halten und das Modell nur bei Bedarf herunterladen.
  2. Das Modell kann regelmäßig und mit einem anderen Releasezyklus als die gesamte App aktualisiert werden.

Das Modell kann entweder über die Console oder programmatisch mithilfe des Firebase Admin SDK bereitgestellt werden. In diesem Schritt führen wir die Bereitstellung über die Console durch.

Öffnen Sie zuerst die Firebase Console und klicken Sie im linken Navigationsbereich auf „Machine Learning“. Klicken Sie auf „Jetzt starten“. wenn Sie dies zum ersten Mal öffnen. Gehen Sie dann zu „Benutzerdefiniert“ und klicken Sie auf „Modell hinzufügen“, Schaltfläche.

Geben Sie bei Aufforderung den Namen sentiment_analysis für das Modell ein und laden Sie die Datei hoch, die Sie im vorherigen Schritt von Colab heruntergeladen haben.

3c3c50e6ef12b3b.png

10. Modell aus Firebase ML herunterladen

Es kann schwierig sein, den Zeitpunkt für das Herunterladen des Remote-Modells von Firebase in Ihre App zu bestimmen, da TFLite-Modelle relativ groß werden können. Im Idealfall sollte das Modell nicht sofort beim Start der App geladen werden. Wenn unser Modell nur für eine Funktion verwendet wird und der Nutzer diese Funktion nie verwendet, haben wir eine große Menge an Daten ohne Grund heruntergeladen. Wir können auch Download-Optionen festlegen, sodass Modelle nur dann abgerufen werden, wenn eine WLAN-Verbindung besteht. Wenn Sie sicherstellen möchten, dass das Modell auch ohne Netzwerkverbindung verfügbar ist, ist es wichtig, es auch ohne die App als Back-up zu bündeln.

Zur Vereinfachung entfernen wir das gebündelte Standardmodell und laden immer ein Modell aus Firebase herunter, wenn die App zum ersten Mal gestartet wird. So können Sie bei der Sentimentanalyse sicher sein, dass die Inferenz mit dem von Firebase bereitgestellten Modell ausgeführt wird.

Fügen Sie in der Datei app/build.gradle.kts die Firebase Machine Learning-Abhängigkeit hinzu.

app/build.gradle.kts

Suchen Sie diesen Kommentar:

// TODO 1: Add Firebase ML dependency

Fügen Sie dann Folgendes hinzu:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie Jetzt synchronisieren aus.

Fügen Sie dann Code hinzu, um das Modell aus Firebase herunterzuladen.

MainActivity.java

Suchen Sie diesen Kommentar:

// TODO 2: Implement a method to download TFLite model from Firebase

Fügen Sie dann Folgendes hinzu:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

Rufen Sie als Nächstes die Methode downloadModel in der Methode onCreate der Aktivität auf.

MainActivity.java

Suchen Sie diesen Kommentar:

// TODO 3: Call the method to download TFLite model

Fügen Sie dann Folgendes hinzu:

downloadModel("sentiment_analysis");

11. Modell in Ihre App einbinden

Mit der TensorFlow Lite-Aufgabenbibliothek können Sie TensorFlow Lite-Modelle mit nur wenigen Codezeilen in Ihre App einbinden. Wir initialisieren eine NLClassifier-Instanz mit dem TensorFlow Lite-Modell, das von Firebase heruntergeladen wurde. Dann verwenden wir sie, um den von den App-Nutzern eingegebenen Text zu klassifizieren und das Ergebnis auf der Benutzeroberfläche anzuzeigen.

Abhängigkeit hinzufügen

Öffnen Sie die Gradle-Datei der App und fügen Sie den Abhängigkeiten der App die TensorFlow Lite Task Library (Text) hinzu.

app/build.gradle

Suchen Sie diesen Kommentar:

// TODO 4: Add TFLite Task API (Text) dependency

Fügen Sie dann Folgendes hinzu:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie Jetzt synchronisieren aus.

Textklassifikator initialisieren

Anschließend laden wir das von Firebase heruntergeladene Sentimentanalysemodell über die NLClassifier der Taskbibliothek.

MainActivity.java

Deklarieren wir nun eine NLClassifier-Instanzvariable. Suchen Sie diesen Kommentar:

// TODO 5: Define a NLClassifier variable

Fügen Sie dann Folgendes hinzu:

private NLClassifier textClassifier;

Initialisieren Sie die Variable textClassifier mit dem aus Firebase heruntergeladenen Sentimentanalysemodell. Diesen Kommentar suchen:

// TODO 6: Initialize a TextClassifier with the downloaded model

Fügen Sie dann Folgendes hinzu:

textClassifier = NLClassifier.createFromFile(model.getFile());

Text klassifizieren

Sobald die textClassifier-Instanz eingerichtet ist, können Sie die Sentimentanalyse mit einem einzigen Methodenaufruf ausführen.

MainActivity.java

Suchen Sie diesen Kommentar:

// TODO 7: Run sentiment analysis on the input text

Fügen Sie dann Folgendes hinzu:

List<Category> results = textClassifier.classify(text);

Nachbearbeitung implementieren

Zum Schluss wandeln wir die Ausgabe des Modells in einen beschreibenden Text um, der auf dem Bildschirm angezeigt wird.

MainActivity.java

Suchen Sie diesen Kommentar:

// TODO 8: Convert the result to a human-readable text

Entfernen Sie den Code, der den Dummy-Ergebnistext generiert:

String textToShow = "Dummy classification result.\n";

Fügen Sie dann Folgendes hinzu:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. Fertige App ausführen

Sie haben das Sentimentanalysemodell in die App integriert, also lassen Sie es testen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Run ( execute.png).

Die App sollte in der Lage sein, die Stimmung der von Ihnen eingegebenen Filmrezension korrekt vorherzusagen.

img/text-classification-result.png

13. App mit weiteren Firebase-Funktionen optimieren

Neben dem Hosting Ihrer TFLite-Modelle bietet Firebase verschiedene andere Funktionen zum Optimieren Ihrer Anwendungsfälle für maschinelles Lernen:

  • Firebase Performance Monitoring, um die Geschwindigkeit Ihrer Modellinferenz zu messen, die auf dem .
  • Firebase Analytics, um die Leistung Ihres Modells in der Produktion anhand der Nutzerreaktion zu messen
  • Firebase A/B Testing zum Testen mehrerer Versionen Ihres Modells
  • Erinnern Sie sich daran, dass wir bereits zwei Versionen unseres TFLite-Modells trainiert haben? A/B-Tests sind eine gute Möglichkeit, herauszufinden, welche Version in der Produktion besser abschneidet.

Weitere Informationen dazu, wie Sie diese Funktionen in Ihrer App nutzen können, finden Sie in den folgenden Codelabs:

14. Glückwunsch!

In diesem Codelab haben Sie gelernt, wie Sie ein TFLite-Modell für die Sentimentanalyse trainieren und mit Firebase in Ihrer mobilen App bereitstellen. Weitere Informationen zu TFLite und Firebase finden Sie in anderen TFLite-Beispielen und in den Einstiegsleitfäden für Firebase.

Behandelte Themen

  • TensorFlow Lite
  • Firebase ML

Nächste Schritte

  • Messen Sie die Geschwindigkeit der Modellinferenz mit Firebase Performance Monitoring.
  • Stellen Sie das Modell über die Firebase ML Model Management API direkt in Firebase bereit.
  • Fügen Sie einen Mechanismus hinzu, mit dem Nutzer Feedback zum Vorhersageergebnis geben können, und verwenden Sie Firebase Analytics, um das Nutzerfeedback zu erfassen.
  • Führen Sie mit Firebase A/B Testing einen A/B-Test für das Modell „Average Word Vector“ und das Modell „MobileBERT“ durch.

Weitere Informationen

Sie haben eine Frage?

Probleme melden