A tarefa do estilizador de rostos do MediaPipe permite aplicar estilizações a rostos em uma imagem. Você pode usar 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 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 app de estilizador de rosto 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 se referir a ele ao modificar um app existente. O código de exemplo do Face Stylizer está hospedado no GitHub.
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 do Git usando o seguinte comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Opcionalmente, configure sua instância do git para usar o checkout esparso, para que você tenha
apenas os arquivos do app de exemplo do Face Stylizer:
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 para o Android Studio e executar o app. Para ver instruções, consulte o Guia de configuração para Android.
Principais componentes
Os arquivos a seguir contêm o código crucial para este exemplo de aplicativo de estilização de rosto:
- FaceStylizationHelper.kt: inicializa o estilizador de rosto e processa a seleção de modelo e delegado.
- MainActivity.kt: fornece resultados e saídas e processa 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 Face Stylizer. Para informações gerais sobre como configurar seu ambiente de desenvolvimento para usar as tarefas do MediaPipe, incluindo os requisitos da versão da plataforma, consulte o Guia de configuração para Android.
Dependências
A tarefa do Face Stylizer usa a biblioteca com.google.mediapipe:tasks-vision
. Adicione
essa dependência ao arquivo build.gradle
do app Android:
dependencies {
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
Modelo
A tarefa do MediaPipe Face Stylizer requer um pacote de modelo treinado compatível com essa tarefa. Para mais informações sobre os modelos treinados disponíveis para o Face Stylizer, consulte a seção "Modelos" da 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 do MediaPipe Face Stylizer 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 Face Stylizer funciona com imagens estáticas. A tarefa processa a entrada de dados, incluindo redimensionamento, rotação e normalização de valores. O código abaixo 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)
Processar e mostrar resultados
O Face Stylizer retorna um objeto FaceStylizerResult
, que contém um
objeto MPImage
com uma estilização do rosto mais proeminente na imagem
de entrada.
Confira a seguir um exemplo dos dados de saída desta tarefa:
A saída acima foi criada aplicando o modelo Color sketch à seguinte imagem de entrada: