Guía de estilización de rostros para Android

La tarea MediaPipe Face Stylizer te permite aplicar estilos de rostros a los rostros de una imagen. Puedes usar esta tarea para crear avatares virtuales en varios estilos.

La muestra de código que se describe en estas instrucciones está disponible en GitHub. Para obtener más información sobre las capacidades, los modelos y las opciones de configuración de esta tarea, consulta la Descripción general.

Ejemplo de código

El código de ejemplo de MediaPipe Tasks es una implementación básica de una app del estilizador de rostros para Android. En el ejemplo, se aplica el estilo facial a las imágenes que se proporcionan a la app.

Puedes usarla como punto de partida para tu propia app para Android o consultarla cuando modifiques una existente. El código de ejemplo de Face Stylizer se aloja en GitHub.

Descarga el código

En las siguientes instrucciones, se muestra cómo crear una copia local del código de ejemplo con la herramienta de línea de comandos git.

Para descargar el código de ejemplo, haz lo siguiente:

  1. Usa el siguiente comando para clonar el repositorio de Git:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. De manera opcional, configura tu instancia de Git para que use un proceso de confirmación de compra disperso, de modo que solo tengas los archivos de la app de ejemplo de Face Stylizer:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Después de crear una versión local del código de ejemplo, puedes importar el proyecto a Android Studio y ejecutar la app. Para obtener instrucciones, consulta la Guía de configuración de Android.

Componentes clave

Los siguientes archivos contienen el código fundamental para esta aplicación de ejemplo de estilización de rostros:

  • FaceStylizationHelper.kt: Inicializa el estilizador de rostros y controla la selección del modelo y del delegado.
  • MainActivity.kt: Proporciona resultados y resultados, y maneja cualquier error.

Configuración

En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y los proyectos de código específicamente para usar el estilizador de rostros. Si quieres obtener información general sobre cómo configurar tu entorno de desarrollo para usar tareas de MediaPipe, incluidos los requisitos de la versión de la plataforma, consulta la Guía de configuración para Android.

Dependencias

La tarea Estilizador de rostros usa la biblioteca com.google.mediapipe:tasks-vision. Agrega esta dependencia al archivo build.gradle de tu app para Android:

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

Modelo

La tarea MediaPipe Face Stylizer requiere un paquete de modelos entrenados que sea compatible con esta tarea. Si quieres obtener más información sobre los modelos entrenados disponibles para el Estilizador de rostros, consulta la sección Modelos de la descripción general de la tarea.

Selecciona y descarga el modelo, y almacénalo en el directorio de tu proyecto:

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

Especifica la ruta del modelo dentro del parámetro ModelAssetPath.

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

Crea la tarea

La tarea MediaPipe Face Stylizer usa la función createFromOptions() para configurar la tarea. La función createFromOptions() acepta valores para las opciones de configuración. Si deseas obtener más información sobre las opciones de configuración, consulta Opciones de configuración.

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)

Opciones de configuración

Esta tarea incluye las siguientes opciones de configuración para apps para Android:

Nombre de la opción Descripción Rango de valores Valor predeterminado
errorListener Establece un objeto de escucha de errores opcional. N/A Not set

Preparar los datos

El Estilizador de rostros funciona con imágenes fijas. Esta tarea controla el procesamiento previo de entrada de datos, incluidos el cambio de tamaño, la rotación y la normalización de valores. En el siguiente código, se muestra cómo transferir datos para su procesamiento.

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

Ejecuta la tarea

Usa el método FaceStylizer.stylize() en la imagen de entrada para ejecutar el estilizador:

val result = FaceStylizer.stylize(mpImage)

Cómo controlar y mostrar los resultados

El estilizador de rostros muestra un objeto FaceStylizerResult, que contiene un objeto MPImage con una estilización del rostro más prominente dentro de la imagen de entrada.

A continuación, se muestra un ejemplo de los datos de salida de esta tarea:

El resultado anterior se creó aplicando el modelo Boceto de color a la siguiente imagen de entrada: