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:
- Clone o repositório git usando o seguinte comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 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:
- FaceStylizationHelper.kt: inicializa o estilizador de rostos, processa o modelo e delega a seleção.
- MainActivity.kt: 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 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: