Guia de estilização de rostos para Android

A tarefa MediaPipe Face Stylizer permite aplicar estilizações de rostos a 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 em GitHub. Para mais informações sobre recursos, modelos e opções de configuração, desta 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 Estilizador de rostos. para Android. O exemplo aplica a estilização de rostos às imagens fornecidas ao app.

Você pode usar o app como ponto de partida para seu próprio app Android ou consultá-lo ao modificar um aplicativo existente. O código de exemplo do Estilizador de rostos está hospedado em GitHub.

Fazer o download do código

As instruções a seguir mostram como criar uma cópia local do 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. Opcionalmente, configure sua instância git para usar a finalização esparsa. Assim, você terá somente 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ê pode importar o projeto no Android Studio e executar o app. Para obter instruções, consulte o Guia de configuração do Android.

Principais componentes

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

  • FaceStylizationHelper.kt (link em inglês): Inicializa o estilizador de rostos e gerencia o modelo e a seleção do delegado.
  • MainActivity.kt (link em inglês): Fornece resultados e saídas e processa todos os erros.

Configuração

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

Dependências

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

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

Modelo

A tarefa MediaPipe Face Stylizer exige um pacote de modelo treinado que seja compatível com para essa tarefa. Para mais informações sobre os modelos treinados disponíveis para o Estilizador de rostos, consulte a seção Modelos na visão geral da tarefa.

Selecione e 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 MediaPipe Face Stylizer usa a função createFromOptions() para configurar o tarefa. A função createFromOptions() aceita valores para a configuração. . Para mais informações sobre as opções de configuração, consulte 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 a entrada de dados pré-processamento, incluindo redimensionamento, rotação e normalização de valores. A 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 exibir resultados

O Estilizador de rostos retorna um objeto FaceStylizerResult, que contém uma Objeto MPImage com uma estilização do rosto mais proeminente na entrada imagem.

Confira abaixo um exemplo dos dados de saída desta tarefa:

O resultado acima foi criado com a aplicação do modelo Color sketch para a seguinte imagem de entrada: