Guia de estilização de rostos para Python

Com a tarefa do Estilizador de rostos do MediaPipe, é possível aplicar estilizações de rostos aos rostos em uma imagem. Use essa tarefa para criar avatares virtuais em vários estilos.

O exemplo de código descrito nestas instruções está disponível no GitHub. Para mais informações sobre os recursos, modelos e opções de configuração dessa tarefa, consulte a Visão geral.

Exemplo de código

O código de exemplo do estilizador de rostos fornece uma implementação completa dessa tarefa em Python para sua referência. O código ajuda você a testar essa tarefa e começar a criar seu próprio estilizador facial. É possível visualizar, executar e editar o código de exemplo do Estilizador facial usando apenas o navegador da Web.

Configuração

Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código para usar o estilizador facial. Para informações gerais sobre a configuração do ambiente de desenvolvimento para uso de tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o Guia de configuração para Python.

Pacotes

A tarefa do Estilizador de rostos do MediaPipe exige o pacote PyPI de mediaPipe. É possível instalar e importar essas dependências com o seguinte:

$ python -m pip install mediapipe

Importações

Importe as classes abaixo para acessar as funções da tarefa do Estilizador de rostos:

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

Modelo

A tarefa do Estilizador de rostos do MediaPipe requer um modelo treinado compatível com essa tarefa. Para mais informações sobre os modelos treinados disponíveis para o estilizador de rostos, consulte a seção Modelos de visão geral da tarefa.

Selecione e faça o download do modelo e armazene-o em um diretório local:

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

Use o parâmetro model_asset_path do objeto BaseOptions para especificar o caminho do modelo a ser usado. Confira um exemplo de código na próxima seção.

Criar a tarefa

A tarefa do Estilizador de rostos do MediaPipe usa a função create_from_options para configurar a tarefa. A função create_from_options aceita valores a serem processados pelas opções de configuração.

O código a seguir demonstra como criar e configurar essa tarefa.

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 dados

Prepare sua entrada como um arquivo de imagem ou uma matriz numpy e a converta em um objeto mediapipe.Image. Se a entrada for um arquivo de vídeo ou uma transmissão ao vivo de uma webcam, use uma biblioteca externa, como OpenCV, para carregar os frames de entrada como matrizes 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)

Executar a tarefa

O estilizador de rostos usa a função stylize para acionar inferências. Para estilização de rostos, isso envolve o pré-processamento de dados de entrada e a estilização de rostos na imagem.

O código a seguir demonstra como executar o processamento com o modelo de tarefa.

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

Gerenciar e mostrar resultados

O estilizador de rostos retorna um objeto Image com uma estilização do rosto mais em destaque na imagem de entrada.

Veja a seguir um exemplo dos dados de saída dessa tarefa:

O resultado acima foi criado aplicando o modelo Desenho de cor à seguinte imagem de entrada: