Guía de estilización de rostros para Python

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 Face Stylizer proporciona una implementación completa de esta tarea en Python como referencia. Este código te ayuda a probar esta tarea y comenzar a compilar tu propio estilizador de rostros. Puedes ver, ejecutar y editar el código de ejemplo de Face Stylizer solo con tu navegador web.

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. Para 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 de Python.

Paquetes

La tarea de Face Stylizer de MediaPipe requiere el paquete mediapipe de PyPI. Puedes instalar y importar estas dependencias con lo siguiente:

$ python -m pip install mediapipe

Importaciones

Importa las siguientes clases para acceder a las funciones de tareas de Face Stylizer:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

Modelo

La tarea de Face Stylizer de MediaPipe requiere un 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 un directorio local:

model_path = '/absolute/path/to/face_stylizer.task'

Usa el parámetro model_asset_path del objeto BaseOptions para especificar la ruta de acceso del modelo que se usará. Para ver un ejemplo de código, consulta la siguiente sección.

Crea la tarea

La tarea de Face Stylizer de MediaPipe usa la función create_from_options para configurar la tarea. La función create_from_options acepta valores para que las opciones de configuración los controlen.

En el siguiente código, se muestra cómo compilar y configurar esta tarea.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
Facestylizer = mp.tasks.vision.face_stylizer
FacestylizerOptions = mp.tasks.vision.FaceStylizerOptions

# Create a face stylizer instance with the image mode:
options = FacestylizerOptions(
    base_options=BaseOptions(model_asset_path=model_path),
with Facestylizer.create_from_options(options) as stylizer:
  # The stylizer is initialized. Use it here.
  # ...

Preparar los datos

Prepara tu entrada como un archivo de imagen o un array de numpy y, luego, conviértela en un objeto mediapipe.Image. Si tu entrada es un archivo de video o una transmisión en vivo desde una cámara web, puedes usar una biblioteca externa, como OpenCV, para cargar tus fotogramas de entrada como arrays de numpy.

import mediapipe as mp

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)

Ejecuta la tarea

El Face Stylizer usa la función stylize para activar inferencias. En el caso de la estilización de rostros, esto implica preprocesar los datos de entrada y estilizar los rostros en la imagen.

En el siguiente código, se muestra cómo ejecutar el procesamiento con el modelo de tareas.

# Perform face stylization on the provided single image.
# The face stylizer must be created with the image mode.
face_stylizer_result = stylizer.stylize(mp_image)

Cómo controlar y mostrar los resultados

El Face Stylizer muestra un objeto Image con una estilización del rostro más prominente de la imagen de entrada.

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

Primer plano generado de una mujer dibujada con un estilo de boceto a lápiz y marcador.

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

Fotografía de la mujer cuya imagen se usó para generar el resultado anterior