Guide de stylisation des visages pour Android

La tâche "Styleur de visage MediaPipe" vous permet d'appliquer des stylisations aux visages d'une image. Vous pouvez utiliser cette tâche pour créer des avatars virtuels de différents styles.

L'exemple de code décrit dans ces instructions est disponible sur GitHub. Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la section Présentation.

Exemple de code

L'exemple de code MediaPipe Tasks est une implémentation de base d'une application de stylisation du visage pour Android. L'exemple applique la stylisation des visages aux images fournies à l'application.

Vous pouvez utiliser l'application comme point de départ pour votre propre application Android ou vous y référer lorsque vous modifiez une application existante. L'exemple de code de Face Stylister est hébergé sur GitHub.

Télécharger le code

Les instructions suivantes vous expliquent comment créer une copie locale de l'exemple de code à l'aide de l'outil de ligne de commande git.

Pour télécharger l'exemple de code:

  1. Clonez le dépôt Git à l'aide de la commande suivante:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Vous pouvez éventuellement configurer votre instance git pour qu'elle utilise un "checkout sparse", de sorte que vous n'ayez que les fichiers de l'exemple d'application Face Stylister:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Après avoir créé une version locale de l'exemple de code, vous pouvez importer le projet dans Android Studio et exécuter l'application. Pour obtenir des instructions, consultez le guide de configuration pour Android.

Composants clés

Les fichiers suivants contiennent le code essentiel de cet exemple d'application de stylisation de visage:

  • FaceStylizationHelper.kt : initialise le styliseur de visage et gère le modèle et la sélection du délégué.
  • MainActivity.kt : fournit des résultats et des sorties, et gère les erreurs.

Configuration

Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement et vos projets de code spécifiquement pour utiliser Face Stylister. Pour obtenir des informations générales sur la configuration de votre environnement de développement pour utiliser les tâches MediaPipe, y compris les exigences concernant la version de la plate-forme, consultez le guide de configuration pour Android.

Dépendances

La tâche de stylisation des visages utilise la bibliothèque com.google.mediapipe:tasks-vision. Ajoutez cette dépendance au fichier build.gradle de votre application Android:

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

Modèle

La tâche de stylisation du visage MediaPipe nécessite un bundle de modèle entraîné compatible avec cette tâche. Pour en savoir plus sur les modèles entraînés disponibles pour Face Stylist, consultez la section Modèles de la présentation de la tâche.

Sélectionnez et téléchargez le modèle, puis stockez-le dans le répertoire de votre projet:

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

Spécifiez le chemin d'accès au modèle dans le paramètre ModelAssetPath.

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

Créer la tâche

La tâche de stylisation du visage MediaPipe utilise la fonction createFromOptions() pour configurer la tâche. La fonction createFromOptions() accepte des valeurs pour les options de configuration. Pour en savoir plus sur les options de configuration, consultez la section Options de configuration.

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)

Options de configuration

Cette tâche propose les options de configuration suivantes pour les applications Android:

Nom de l'option Description Plage de valeurs Valeur par défaut
errorListener Définit un écouteur d'erreur facultatif. N/A Not set

Préparer les données

Le styliseur de visage fonctionne avec des images fixes. La tâche gère le prétraitement de l'entrée de données, y compris le redimensionnement, la rotation et la normalisation des valeurs. Le code suivant montre comment transmettre des données pour traitement.

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()

Exécuter la tâche

Utilisez la méthode FaceStylizer.stylize() sur l'image d'entrée pour exécuter le styliseur:

val result = FaceStylizer.stylize(mpImage)

Gérer et afficher les résultats

Le styliseur de visage renvoie un objet FaceStylizerResult, qui contient un objet MPImage avec une stylisation du visage le plus proéminent dans l'image d'entrée.

Voici un exemple des données de sortie de cette tâche:

Gros plan généré sur une femme dessinée au crayon et au marqueur.

Le résultat ci-dessus a été créé en appliquant le modèle Croquis de couleur à l'image d'entrée suivante:

Photographie de la femme dont l&#39;image a été utilisée pour générer le résultat précédent