Guia de estilização de rostos para Android

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 MediaPipe Tasks é uma implementação básica de um app estilizador de rostos para Android. O exemplo aplica a estilização do rosto às imagens fornecidas ao app.

Você pode usar o app como ponto de partida para seu próprio app Android ou se referir a ele ao modificar um app já existente. O código de exemplo do Estilizador de rostos está hospedado no GitHub (em inglês).

Fazer o download do código

As instruções a seguir mostram como criar uma cópia local do código de exemplo usando a ferramenta de linha de comando git.

Para fazer o download do código de exemplo:

  1. Clone o repositório git usando o seguinte comando:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Como opção, configure sua instância do git para usar a finalização da compra esparsa para que você tenha apenas os arquivos do app de exemplo do Estilizador de rostos:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Depois de criar uma versão local do código de exemplo, você poderá importar o projeto para o Android Studio e executar o app. Para conferir instruções, consulte o Guia de configuração para Android.

Principais componentes

Os arquivos a seguir contêm o código essencial para este aplicativo de exemplo de estilização de rostos:

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 ter informações gerais sobre como configurar seu ambiente de desenvolvimento para usar tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o Guia de configuração para Android.

Dependências

A tarefa Estilizador de rostos usa a biblioteca com.google.mediapipe:tasks-vision. Adicione esta dependência ao arquivo build.gradle do seu app Android:

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

Modelo

A tarefa do Estilizador de rostos do MediaPipe requer um pacote de modelos treinados e 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, faça o download do modelo e armazene-o no diretório do projeto:

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

Especifique o caminho do modelo no 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)

Criar a tarefa

A tarefa do Estilizador de rostos do MediaPipe usa a função createFromOptions() para configurar a tarefa. A função createFromOptions() aceita valores para as opções de configuração. Para mais informações sobre as opções de configuração, consulte Opções de configuração.

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)

Opções de configuração

Esta tarefa tem as seguintes opções de configuração para apps Android:

Nome da opção Descrição Intervalo de valor Valor padrão
errorListener Define um listener de erro opcional. N/A Not set

preparar dados

O estilizador de rostos funciona com imagens estáticas. A tarefa lida com o pré-processamento de entrada de dados, incluindo redimensionamento, rotação e normalização de valores. O código a seguir demonstra como transferir dados para processamento.

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

Executar a tarefa

Use o método FaceStylizer.stylize() na imagem de entrada para executar o estilizador:

val result = FaceStylizer.stylize(mpImage)

Gerenciar e mostrar resultados

O estilizador de rostos retorna um objeto FaceStylizerResult, que contém um objeto MPImage com uma estilização do rosto mais proeminente 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: