Text- und Gesichtsmerkmale mit ML Kit erkennen: Android

1. Einführung

ML Kit ist ein mobiles SDK, mit dem das Fachwissen von Google im Bereich maschinelles Lernen in einem leistungsstarken und dennoch nutzerfreundlichen Paket auf Android- und iOS-Apps übertragen wird. Ganz gleich, ob Sie noch keine Erfahrung mit maschinellem Lernen haben – die Funktionalität, die Sie benötigen, lässt sich mit nur 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. Ganz gleich, ob Sie die Echtzeitfunktionen der On-Device-Modelle von Mobile Vision oder die Flexibilität benutzerdefinierter TensorFlow Lite-Modelle benötigen, ML Kit deckt alles ab.

In diesem Codelab erfahren Sie, wie Sie Ihre eigene Android-App erstellen, die Text und Gesichtsmerkmale in einem Bild automatisch erkennen kann.

Ü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
  • Mit der ML Kit Face Contour API Gesichtsmerkmale in Bildern identifizieren

Aufgaben in diesem Lab

  • Mit dem ML Kit SDK erweiterte Machine-Learning-Funktionen wie Text- und Gesichtserkennungsfunktionen einfach 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
  • Grundlegendes Verständnis von 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 der Stammordner (mlkit-android-master) mit allen benötigten 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: Code wird gestartet, auf dem Sie in diesem Codelab aufbauen.
  • android_studio_folder.pngfinal: Der Code für die fertige Beispiel-App wurde fertiggestellt.

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 zum Implementieren 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 überprü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 Run ( execute.png).

Die App sollte in Ihrem Emulator gestartet werden. An dieser Stelle sollten Sie ein Grundlayout mit einem Dropdown-Feld sehen, in dem Sie zwischen drei Bildern auswählen können. Im nächsten Abschnitt fügen Sie Ihrer App 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 zur Erkennung von Text in Bildern hinzu.

Texterkennung auf dem Gerät für ein Bild einrichten und ausführen

Fügen Sie der Methode runTextRecognition 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 sie 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 darauf, dass Test Image 1(Text) im Drop-down-Menü ausgewählt ist, nachdem die App geladen wurde, und klicken Sie auf die Schaltfläche FIND TEXT.

Ihre App sollte jetzt wie auf dem Bild unten aussehen und die Ergebnisse der Texterkennung sowie Begrenzungsrahmen über dem Originalbild einblenden.

10b12d0e8822eaf5.png

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

Herzlichen Glückwunsch, Sie haben Ihrer App gerade mit ML Kit die Texterkennung auf dem Gerät 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. Gesichtskonturerkennung auf dem Gerät hinzufügen

In diesem Schritt fügen wir Ihrer App Funktionen hinzu, mit denen Sie die Konturen von Gesichtern auf Bildern erkennen können.

Gesichtskonturerkennung auf dem Gerät für ein Bild einrichten und ausführen

Fügen Sie der Methode runFaceContourDetection 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();
                       }
                   });

}

Mit dem obigen Code wird der Gesichtskonturen-Detektor konfiguriert und die Funktion processFaceContourDetectionResult mit der Antwort aufgerufen.

Reaktion zur Gesichtskonturerkennung verarbeiten

Fügen Sie processFaceContourDetectionResult in der Klasse MainActivity den folgenden Code hinzu, um die Ergebnisse zu parsen und sie 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 auf dem Bild unten aussehen. Sie sollte die Ergebnisse der Gesichtskonturerkennung und die Konturen des Gesichts als Punkte über dem Originalbild anzeigen.

f9ff2fcbf63f0f3b.png

Glückwunsch, Sie haben die Gesichtskonturerkennung auf dem Gerät mit ML Kit zu Ihrer App hinzugefügt. Die Gesichtskonturerkennung auf dem Gerät eignet sich für viele Anwendungsfälle hervorragend, da sie auch ohne Internetverbindung funktioniert und schnell genug ist, um Standbilder und Live-Videoframes zu verwenden.

7. Glückwunsch!

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

Behandelte Themen

  • So fügen Sie Ihrer Android-App ML Kit hinzu
  • Mit der Texterkennung auf dem Gerät in ML Kit Text in Bildern finden
  • Gesichtskontur auf dem Gerät in ML Kit verwenden, um Gesichtsmerkmale in Bildern zu erkennen

Nächste Schritte

  • Verwenden Sie ML Kit in Ihrer eigenen Android-App.

Weitere Informationen