Leitfaden zur Gesichtsstilisierung für Android

Mit der Aufgabe „MediaPipe Face Stylizer“ können Sie Gesichter auf die Gesichter in einem Bild stilisieren. Bei dieser Aufgabe können Sie virtuelle Avatare in verschiedenen Stilen erstellen.

Das in dieser Anleitung beschriebene Codebeispiel ist auf GitHub verfügbar. Weitere Informationen zu den Funktionen, Modellen und Konfigurationsoptionen dieser Aufgabe finden Sie in der Übersicht.

Codebeispiel

Der Beispielcode von MediaPipe Tasks ist eine einfache Implementierung einer Face Stylizer-App für Android. In diesem Beispiel wird die Gesichtsstilisierung auf Bilder angewendet, die in der App bereitgestellt werden.

Du kannst die App als Ausgangspunkt für deine eigene Android-App verwenden oder beim Modifizieren einer vorhandenen App darauf zurückgreifen. Der Beispielcode für Face Stylizer wird auf GitHub gehostet.

Code herunterladen

In der folgenden Anleitung erfahren Sie, wie Sie mit dem git-Befehlszeilentool eine lokale Kopie des Beispielcodes erstellen.

So laden Sie den Beispielcode herunter:

  1. Klonen Sie das Git-Repository mit dem folgenden Befehl:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Konfigurieren Sie optional die Git-Instanz für die Verwendung von Sparse Checkout, sodass Sie nur die Dateien für die Face Stylizer-Beispiel-App haben:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Nachdem Sie eine lokale Version des Beispielcodes erstellt haben, können Sie das Projekt in Android Studio importieren und die App ausführen. Eine Anleitung finden Sie im Einrichtungsleitfaden für Android.

Schlüsselkomponenten

Die folgenden Dateien enthalten den wichtigen Code für diese Beispielanwendung zur Gesichtsstilisierung:

  • FaceStylizationHelper.kt: Initialisiert den Face Stylizer und verarbeitet die Modell- und Bevollmächtigtenauswahl.
  • MainActivity.kt: Stellt Ergebnisse und Ausgaben bereit und verarbeitet etwaige Fehler.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten der Entwicklungsumgebung und Programmierprojekte speziell für die Verwendung des Face Stylizers beschrieben. Allgemeine Informationen zum Einrichten der Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich der Anforderungen an die Plattformversion, finden Sie im Einrichtungsleitfaden für Android.

Abhängigkeiten

Für die Aufgabe „Face Stylizer“ wird die com.google.mediapipe:tasks-vision-Bibliothek verwendet. Füge diese Abhängigkeit in die Datei build.gradle deiner Android-App ein:

dependencies {
    implementation 'com.google.mediapipe:tasks-vision:latest.release'
}

Modell

Für die Aufgabe „MediaPipe Face Stylizer“ ist ein Bundle mit trainiertem Modell erforderlich, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu verfügbaren trainierten Modellen für Face Stylizer finden Sie in der Aufgabenübersicht im Abschnitt „Modelle“.

Wählen Sie das Modell aus, laden Sie es herunter und speichern Sie es in Ihrem Projektverzeichnis:

<dev-project-root>/src/main/assets

Geben Sie den Pfad des Modells innerhalb des Parameters ModelAssetPath an.

val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)

Aufgabe erstellen

Die MediaPipe Face Stylizer-Aufgabe verwendet die Funktion createFromOptions(), um die Aufgabe einzurichten. Die Funktion createFromOptions() akzeptiert Werte für die Konfigurationsoptionen. Weitere Informationen zu Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.

val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(modelName)
val baseOptions = baseOptionBuilder.build()

val optionsBuilder =
    FaceStylizer.FaceStylizerOptions.builder()
        .setBaseOptions(baseOptionsBuilder.build())

val options = optionsBuilder.build()

FaceStylizer =
    FaceStylizer.createFromOptions(context, options)

Konfigurationsoptionen

Diese Aufgabe umfasst die folgenden Konfigurationsoptionen für Android-Apps:

Option Beschreibung Wertebereich Standardwert
errorListener Legt einen optionalen Fehler-Listener fest. N/A Not set

Daten vorbereiten

Face Stylizer funktioniert mit Standbildern. Die Aufgabe übernimmt die Vorverarbeitung der Dateneingabe, einschließlich Größenanpassung, Rotation und Wertenormalisierung. Der folgende Code zeigt, wie Daten zur Verarbeitung übergeben werden.

import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.framework.image.MPImage

// Convert the input Bitmap object to an MPImage object to run inference
val mpImage = BitmapImageBuilder(image).build()

Task ausführen

Verwenden Sie die Methode FaceStylizer.stylize() für das Eingabebild, um den Stilizer auszuführen:

val result = FaceStylizer.stylize(mpImage)

Ergebnisse verarbeiten und anzeigen

Der Face Stylizer gibt ein FaceStylizerResult-Objekt zurück, das ein MPImage-Objekt mit einer Stilisierung des auffälligsten Gesichts im Eingabebild enthält.

Im Folgenden sehen Sie ein Beispiel für die Ausgabedaten dieser Aufgabe:

Die obige Ausgabe wurde erstellt, indem das Modell Color sketch auf das folgende Eingabebild angewendet wurde: