Text- und Gesichtsmerkmale mit ML Kit erkennen: Android

1. Einführung

ML Kit ist ein mobiles SDK, das die Expertise von Google im Bereich maschinelles Lernen in einem leistungsstarken und dennoch benutzerfreundlichen Paket für Android- und iOS-Apps bereitstellt. Egal, ob Sie neu im Bereich maschinelles Lernen sind oder bereits Erfahrung haben, Sie können die benötigten Funktionen ganz einfach mit wenigen Codezeilen implementieren. Sie brauchen kein tiefes Wissen über neuronale Netzwerke oder Modelloptimierung, um loszulegen.

Wenn beim Durcharbeiten dieses Codelabs Probleme auftreten (Code-Fehler, Grammatikfehler, unklare Formulierungen usw.), melden Sie sie bitte über den Link Fehler melden links unten im Codelab.

Wie funktioniert das?

ML Kit erleichtert die Anwendung von ML-Techniken in Ihren Apps, indem es die ML-Technologien von Google wie Mobile Vision und TensorFlow Lite in einem einzigen SDK vereint. Egal, ob Sie die Echtzeitfunktionen der On-Device-Modelle von Mobile Vision oder die Flexibilität benutzerdefinierter TensorFlow Lite-Modelle benötigen – ML Kit bietet die richtige Lösung.

In diesem Codelab lernen Sie Schritt für Schritt, wie Sie Ihre eigene Android-App erstellen, mit der Text und Gesichtsmerkmale in einem Bild automatisch erkannt werden können.

Überblick

In diesem Codelab entwickeln Sie eine Android-App mit ML Kit. Mit der Anwendung können Sie Folgendes tun:

  • Mit der ML Kit Text Recognition API Text in Bildern erkennen
  • ML Kit Face Contour API verwenden, um Gesichtsmerkmale in Bildern zu erkennen

Aufgaben in diesem Lab

  • Mit dem ML Kit SDK erweiterte Funktionen für maschinelles Lernen wie Texterkennung und Gesichtserkennung hinzufügen

Voraussetzungen

  • Eine aktuelle Version von Android Studio (Version 3.0 oder höher)
  • Android Studio-Emulator oder ein physisches Android-Gerät
  • Beispielcode
  • Grundkenntnisse der Android-Entwicklung in Java
  • Grundlegende Kenntnisse zu Modellen für maschinelles Lernen

In diesem Codelab geht es um ML Kit. Auf irrelevante Konzepte wird nicht genauer eingegangen und entsprechende Codeblöcke können Sie einfach kopieren und einfügen.

2. Einrichtung

Code herunterladen

Klicken Sie auf den folgenden Link, um den gesamten Code für dieses Codelab herunterzuladen:

Entpacken Sie die heruntergeladene ZIP-Datei. Dadurch wird ein Stammordner (mlkit-android-master) mit allen erforderlichen Ressourcen entpackt. Für dieses Codelab benötigen Sie nur die Ressourcen im Unterverzeichnis vision.

Das Unterverzeichnis vision im Repository mlkit-android-master enthält zwei Verzeichnisse:

  • android_studio_folder.pngstarter: Der Startcode, auf dem Sie in diesem Codelab aufbauen.
  • android_studio_folder.pngfinal: Der vollständige Code der fertigen Beispiel-App.

3. Abhängigkeiten für ML Kit prüfen

Abhängigkeiten für ML Kit prüfen

Die folgenden Zeilen sollten bereits am Ende der Datei „build.gradle“ im Verzeichnis app Ihres Projekts hinzugefügt worden sein (klicken Sie zur Bestätigung auf das Kästchen):

build.gradle

dependencies {
  // Face features
  implementation 'com.google.mlkit:face-detection:16.0.0'

  // Text features
  implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}

Dies sind die spezifischen ML Kit-Abhängigkeiten, die Sie zur Implementierung der Funktionen in diesem Codelab benötigen.

4. Start-App ausführen

Nachdem Sie das Projekt in Android Studio importiert und die Abhängigkeiten für ML Kit geprüft haben, können Sie die App zum ersten Mal ausführen. Starten Sie den Android Studio-Emulator und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( execute.png).

Die App sollte auf Ihrem Emulator gestartet werden. Sie sollten jetzt ein einfaches Layout mit einem Drop-down-Menü sehen, über das Sie zwischen drei Bildern auswählen können. Im nächsten Abschnitt fügen Sie Ihrer App die Texterkennung hinzu, um Text in Bildern zu erkennen.

5. Texterkennung auf dem Gerät hinzufügen

In diesem Schritt fügen wir Ihrer App die Funktion hinzu, mit der Text in Bildern erkannt wird.

On-Device-Texterkennung für ein Bild einrichten und ausführen

Fügen Sie der runTextRecognition-Methode der Klasse MainActivity Folgendes hinzu:

MainActivity.java

private void runTextRecognition() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   TextRecognizer recognizer = TextRecognition.getClient();
   mTextButton.setEnabled(false);
   recognizer.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<Text>() {
                       @Override
                       public void onSuccess(Text texts) {
                           mTextButton.setEnabled(true);
                           processTextRecognitionResult(texts);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mTextButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });
}

Mit dem obigen Code wird der Texterkennungsdetektor konfiguriert und die Funktion processTextRecognitionResult mit der Antwort aufgerufen.

Texterkennungsantwort verarbeiten

Fügen Sie processTextRecognitionResult in der Klasse MainActivity den folgenden Code hinzu, um die Ergebnisse zu parsen und in Ihrer App anzuzeigen.

MainActivity.java

private void processTextRecognitionResult(Text texts) {
   List<Text.TextBlock> blocks = texts.getTextBlocks();
   if (blocks.size() == 0) {
       showToast("No text found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < blocks.size(); i++) {
       List<Text.Line> lines = blocks.get(i).getLines();
       for (int j = 0; j < lines.size(); j++) {
           List<Text.Element> elements = lines.get(j).getElements();
           for (int k = 0; k < elements.size(); k++) {
               Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
               mGraphicOverlay.add(textGraphic);

           }
       }
   }
}

App im Emulator ausführen

Klicken Sie jetzt in der Android Studio-Symbolleiste auf Ausführen ( execute.png). Achten Sie nach dem Laden der App darauf, dass im Drop-down-Feld Test Image 1(Text) ausgewählt ist, und klicken Sie auf die Schaltfläche FIND TEXT.

Ihre App sollte jetzt wie auf dem Bild unten aussehen. Die Ergebnisse der Texterkennung und die Begrenzungsboxen werden jetzt über dem Originalbild eingeblendet.

10b12d0e8822eaf5.png

Foto: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0

Herzlichen Glückwunsch! Sie haben Ihrer App mit ML Kit die On-Device-Texterkennung hinzugefügt. Die Texterkennung auf dem Gerät eignet sich für viele Anwendungsfälle hervorragend, da sie selbst dann funktioniert, wenn Ihre App keine Internetverbindung hat. Sie ist schnell genug, um Standbilder und Live-Videoframes zu verwenden.

6. On-Device-Erkennung von Gesichtskonturen hinzufügen

In diesem Schritt fügen wir Ihrer App eine Funktion hinzu, mit der die Konturen von Gesichtern in Bildern erkannt werden.

On-Device-Gesichtskonturerkennung für ein Bild einrichten und ausführen

Fügen Sie der runFaceContourDetection-Methode der Klasse MainActivity Folgendes hinzu:

MainActivity.java

private void runFaceContourDetection() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   FaceDetectorOptions options =
           new FaceDetectorOptions.Builder()
                   .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
                   .setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
                   .build();

   mFaceButton.setEnabled(false);
   FaceDetector detector = FaceDetection.getClient(options);
   detector.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<List<Face>>() {
                       @Override
                       public void onSuccess(List<Face> faces) {
                           mFaceButton.setEnabled(true);
                           processFaceContourDetectionResult(faces);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mFaceButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });

}

Im Code oben wird der Gesichtskontur-Detektor konfiguriert und die Funktion processFaceContourDetectionResult mit der Antwort aufgerufen.

Antwort der Gesichtskonturerkennung verarbeiten

Fügen Sie processFaceContourDetectionResult in der Klasse MainActivity den folgenden Code hinzu, um die Ergebnisse zu parsen und in Ihrer App anzuzeigen.

MainActivity.java

private void processFaceContourDetectionResult(List<Face> faces) {
   // Task completed successfully
   if (faces.size() == 0) {
       showToast("No face found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < faces.size(); ++i) {
       Face face = faces.get(i);
       FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
       mGraphicOverlay.add(faceGraphic);
       faceGraphic.updateFace(face);
   }
}

App im Emulator ausführen

Klicken Sie jetzt in der Android Studio-Symbolleiste auf Ausführen ( execute.png). Achten Sie darauf, dass Test Image 2 (Face) im Drop-down-Menü ausgewählt ist, nachdem die App geladen wurde, und klicken Sie auf die Schaltfläche FIND FACE CONTOUR.

Ihre App sollte jetzt wie in der Abbildung unten aussehen. Die Ergebnisse der Gesichtskonturerkennung und die Konturen des Gesichts werden als Punkte über dem Originalbild eingeblendet.

f9ff2fcbf63f0f3b.png

Glückwunsch, Sie haben die Gesichtskonturerkennung auf dem Gerät mit ML Kit zu Ihrer App hinzugefügt. Die geräteseitige Gesichtskonturerkennung eignet sich für viele Anwendungsfälle, da sie auch dann funktioniert, wenn Ihre App keine Internetverbindung hat. Außerdem ist sie schnell genug, um sie sowohl auf Standbildern als auch auf Live-Videoframes zu verwenden.

7. Glückwunsch!

Sie haben mit ML Kit erfolgreich erweiterte ML-Funktionen in Ihre App eingebunden.

Behandelte Themen

  • ML Kit zur Android-App hinzufügen
  • On-Device-Texterkennung in ML Kit verwenden, um Text in Bildern zu finden
  • On-Device-Gesichtskontur in ML Kit verwenden, um Gesichtsmerkmale in Bildern zu identifizieren

Nächste Schritte

  • ML Kit in Ihrer eigenen Android-App verwenden

Weitere Informationen