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:
- Klonen Sie das Git-Repository mit dem folgenden Befehl:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 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:
- FaceStylizationHelper.kt: Inicializuje den Gesichtsstilizer und verarbeitet das Modell und die Auswahl des Delegaten.
- MainActivity.kt: Bietet Ergebnisse und Ausgaben und verarbeitet Fehler.
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:
Die obige Ausgabe wurde erstellt, indem das Modell Farbskizze auf das folgende Eingabebild angewendet wurde: