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 TensorFlow Lite und Firebase verwenden, um ein Textklassifizierungsmodell zu trainieren und in Ihrer App bereitzustellen. Dieses Codelab basiert auf diesem TensorFlow Lite-Beispiel.

Bei der Textklassifizierung werden Textinhalte mit Tags oder Kategorien versehen. Sie ist eine der grundlegenden Aufgaben im Bereich Natural Language Processing (NLP) und wird in vielen Anwendungen eingesetzt, z. B. bei der Sentimentanalyse, der Themenkennzeichnung, der Spamerkennung und der Absichtserkennung.

Die Sentimentanalyse ist die Interpretation und Klassifizierung von Emotionen (positiv, negativ und neutral) in Textdaten mithilfe von Textanalysetechniken. Mit der Sentimentanalyse können Unternehmen die Kundenstimmung in Bezug auf Produkte, Marken oder Dienstleistungen in Online-Gesprächen und ‑Feedback ermitteln.

In dieser Anleitung wird gezeigt, wie Sie ein Modell für maschinelles Lernen für die Sentimentanalyse erstellen, insbesondere zum Klassifizieren von Text als positiv oder negativ. Dies ist ein Beispiel für die binäre oder Zwei-Klassen-Klassifizierung, eine wichtige und weit verbreitete Art von Machine-Learning-Problem.

Lerninhalte

  • TF Lite-Sentimentanalysemodelle mit TF Lite Model Maker trainieren
  • TF Lite-Modelle in Firebase ML bereitstellen und über Ihre App darauf zugreifen
  • TF Lite-Sentimentanalysemodelle mithilfe 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-Dienste 9.8 oder höher oder ein Emulator mit Google Play-Dienste 9.8 oder höher
  • Wenn Sie ein Gerät verwenden, ein Verbindungskabel.

Wie werden Sie diese Anleitung verwenden?

Nur lesen Lesen und Übungen durchführen

Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?

Anfänger Mittelstufe Fortgeschritten

2. Beispielcode abrufen

Klonen Sie das GitHub-Repository über die 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 Download des Beispielcodes aus (File > Open > .../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, kann die App zum ersten Mal ausgeführt werden. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( execute.png).

Die App sollte auf Ihrem Gerät gestartet werden. Sie enthält nur eine einfache Benutzeroberfläche, die die Integration und das Testen von Textklassifizierungsmodellen in den nächsten Schritten erleichtert. Wenn Sie jetzt versuchen, Stimmungen 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 ihn ein.
  4. Folgen Sie den verbleibenden Einrichtungsschritten in der Firebase Console und klicken Sie dann auf „Projekt erstellen“ (oder „Firebase hinzufügen“, wenn Sie ein vorhandenes Google-Projekt verwenden).

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“ Ihrer App 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 zu erhalten. Kopieren Sie dann die Datei google-services.json in das Verzeichnis *app* in Ihrem Projekt.

Google-Services-Plug-in zur App hinzufügen

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

Das google-services-Plug-in 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 in der Android Studio-Symbolleiste File > Sync Project with Gradle Files aus.

7. App mit Firebase ausführen

Nachdem Sie das google-services-Plug-in mit Ihrer JSON-Datei konfiguriert haben, können Sie 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 Ihrem Gerät gestartet werden. An diesem Punkt sollte Ihre App weiterhin erfolgreich erstellt werden.

8. Sentimentanalyse-Modell trainieren

Wir verwenden TensorFlow Lite Model Maker, um ein Textklassifizierungsmodell zu trainieren, das das Sentiment eines bestimmten Texts vorhersagt.

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 auf einmal auszuführen.

In Colab öffnen

Nach Abschluss dieses Schritts haben Sie ein TensorFlow Lite-Modell für die Stimmungsanalyse, das für die Bereitstellung in einer mobilen App bereit ist.

9. Modell in Firebase ML bereitstellen

Die Bereitstellung eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:

  1. Wir können die Installationsgröße der App gering 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 Konsole oder programmatisch mit dem Firebase Admin SDK bereitgestellt werden. In diesem Schritt stellen wir die Funktion über die Console bereit.

Öffnen Sie zuerst die Firebase Console und klicken Sie im Navigationsbereich auf der linken Seite auf „Machine Learning“. Klicken Sie auf „Erste Schritte“, wenn Sie die Funktion zum ersten Mal öffnen. Klicken Sie dann auf „Benutzerdefiniert“ und auf die Schaltfläche „Modell hinzufügen“.

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

3c3c50e6ef12b3b.png

10. Modell aus Firebase ML herunterladen

Es kann schwierig sein, den richtigen Zeitpunkt für das Herunterladen des Remote-Modells aus Firebase in Ihre App zu wählen, da TFLite-Modelle relativ groß werden können. Im Idealfall möchten wir vermeiden, das Modell sofort beim Start der App zu laden. Wenn unser Modell nur für eine Funktion verwendet wird und der Nutzer diese Funktion nie verwendet, haben wir unnötigerweise eine große Menge an Daten heruntergeladen. Wir können auch Downloadoptionen festlegen, z. B. dass Modelle nur 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 als Backup auch ohne die App zu bündeln.

Der Einfachheit halber entfernen wir das standardmäßig gebündelte Modell 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 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 Sync Now (Jetzt synchronisieren) aus.

Fügen wir nun etwas Code hinzu, um das Modell von 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 Task Library können Sie TensorFlow Lite-Modelle mit nur wenigen Zeilen Code in Ihre App einbinden. Wir initialisieren eine NLClassifier-Instanz mit dem TensorFlow Lite-Modell, das von Firebase heruntergeladen wurde. Anschließend verwenden wir sie, um die Texteingabe der App-Nutzer zu klassifizieren und das Ergebnis auf der Benutzeroberfläche anzuzeigen.

Abhängigkeit hinzufügen

Rufen Sie die Gradle-Datei der App auf und fügen Sie die TensorFlow Lite Task Library (Text) den Abhängigkeiten der App 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 Sync Now (Jetzt synchronisieren) aus.

Textklassifizierer initialisieren

Anschließend laden wir das aus Firebase heruntergeladene Sentimentanalysemodell mit NLClassifier aus der Task Library.

MainActivity.java

Deklarieren wir 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 Modell für die Sentimentanalyse. Suchen Sie diesen Kommentar:

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

Fügen Sie dann Folgendes hinzu:

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

Text klassifizieren

Nachdem die textClassifier-Instanz eingerichtet wurde, können Sie die Stimmungsanalyse 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

Schließlich 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, mit dem der Platzhaltertext für das Ergebnis generiert wird:

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. Endgültige App ausführen

Sie haben das Sentimentanalysemodell in die App integriert. Lassen Sie uns es testen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( execute.png).

Die App sollte das Sentiment der eingegebenen Filmrezension korrekt vorhersagen können.

img/text-classification-result.png

13. App mit weiteren Firebase-Funktionen optimieren

Firebase bietet neben dem Hosting Ihrer TFLite-Modelle auch mehrere andere Funktionen, mit denen Sie Ihre Anwendungsfälle für maschinelles Lernen optimieren können:

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

Weitere Informationen zur Verwendung dieser Funktionen in Ihrer App finden Sie in den folgenden Codelabs:

14. Glückwunsch!

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

Behandelte Themen

  • TensorFlow Lite
  • Firebase ML

Nächste Schritte

  • Mit Firebase Performance Monitoring können Sie die Inferenzgeschwindigkeit Ihres Modells messen.
  • Stellen Sie das Modell direkt aus Colab über die Firebase ML Model Management API in Firebase bereit.
  • Fügen Sie ein Verfahren hinzu, mit dem Nutzer Feedback zum Vorhersageergebnis geben können, und verwenden Sie Firebase Analytics, um Nutzerfeedback zu erfassen.
  • Führen Sie A/B-Tests für das Average Word Vector-Modell und das MobileBERT-Modell mit Firebase A/B Testing durch.

Weitere Informationen

Haben Sie Fragen?

Probleme melden