La tarea Face Stylizer de MediaPipe te permite aplicar estilizaciones de rostro 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 funciones, 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 de Face Stylizer para Android. En el ejemplo, se aplica la estilización de rostros a las imágenes proporcionadas a la app.
Puedes usar la app como punto de partida para tu propia app para Android o consultarla cuando modifiques una app 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, sigue estos pasos:
- Clona el repositorio de git con el siguiente comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
- De manera opcional, configura tu instancia de git para usar el control de revisión 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 para 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 el modelo y la selección del delegado.
- MainActivity.kt: proporciona resultados y salidas, y controla los errores.
Configuración
En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y codificar proyectos específicamente para usar Face Stylizer. Si deseas 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 Face Stylizer 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 de Face Stylizer de MediaPipe requiere un paquete de modelo entrenado que sea compatible con esta tarea. Para obtener más información sobre los modelos entrenados disponibles para Face Stylizer, consulta la sección Modelos de la descripción general de la tarea.
Selecciona y descarga el modelo, y guárdalo en el directorio de tu proyecto:
<dev-project-root>/src/main/assets
Especifica la ruta de acceso 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 de Face Stylizer de MediaPipe usa la función createFromOptions()
para configurar la tarea. La función createFromOptions()
acepta valores para las opciones de configuración. Para 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 tiene 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
Face Stylizer funciona con imágenes estáticas. La tarea controla el procesamiento previo de la entrada de datos, lo que incluye 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 Face Stylizer muestra un objeto FaceStylizerResult
, que contiene un objeto MPImage
con una estilización del rostro más prominente en la imagen de entrada.
A continuación, se muestra un ejemplo de los datos de resultado de esta tarea:
El resultado anterior se creó aplicando el modelo Boceto de color a la siguiente imagen de entrada: