Leitfaden zur Gesichtsstilisierung für Android

Mit der MediaPipe-Aufgabe „Gesichtsstilisierung“ können Sie Gesichter in einem Bild stilisieren. Mit dieser Aufgabe können Sie virtuelle Avatare in verschiedenen Stilen erstellen.

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

Codebeispiel

Der Beispielcode für MediaPipe Tasks ist eine grundlegende Implementierung einer App zum Stilisieren von Gesichtern für Android. Im Beispiel wird die Gesichtsstilisierung auf Bilder angewendet, die der App zur Verfügung gestellt werden.

Sie können die App als Ausgangspunkt für Ihre eigene Android-App verwenden oder sich an ihr orientieren, wenn Sie eine vorhandene App ändern. Der Beispielcode für Face Stylizer wird auf GitHub gehostet.

Code herunterladen

In der folgenden Anleitung wird beschrieben, wie Sie mit dem Befehlszeilentool git 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. Optional können Sie Ihre Git-Instanz für die Verwendung einer spärlichen Überprüfung konfigurieren, sodass nur die Dateien für die Beispielanwendung „Face Stylizer“ vorhanden sind:
    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 dazu finden Sie im Einrichtungsleitfaden für Android.

Schlüsselkomponenten

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

Einrichtung

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

Abhängigkeiten

Für die Aufgabe „Gesichtsstilisierung“ wird die com.google.mediapipe:tasks-vision-Bibliothek verwendet. Fügen Sie der Datei build.gradle Ihrer Android-App diese Abhängigkeit hinzu:

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

Modell

Für die MediaPipe-Aufgabe „Gesichtsstilisierung“ ist ein trainiertes Modellpaket erforderlich, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu verfügbaren trainierten Modellen für den Face-Styler finden Sie in der Aufgabenübersicht im Abschnitt „Modelle“.

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

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

Geben Sie den Pfad des Modells im Parameter 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

Für die MediaPipe-Aufgabe „Gesichtsstilisierung“ wird die Funktion createFromOptions() verwendet, 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

Für diese Aufgabe sind die folgenden Konfigurationsoptionen für Android-Apps verfügbar:

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

Daten vorbereiten

Der Gesichts-Styler funktioniert nur mit Standbildern. Die Aufgabe übernimmt die Vorverarbeitung der Dateneingabe, einschließlich Größenänderung, Drehung und Wertnormalisierung. Im folgenden Code wird gezeigt, 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()

Aufgabe 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 Gesichtsstilizer gibt ein FaceStylizerResult-Objekt zurück, das ein MPImage-Objekt mit einer Stilisierung des auffälligsten Gesichts im Eingabebild enthält.

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

Eine generierte Nahaufnahme einer Frau, die im Stil einer Bleistift- und Markierungsskizze gezeichnet wurde.

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

Foto der Frau, deren Bild für die vorherige Ausgabe verwendet wurde