Guia de segmentação de imagens

Exemplos lado a lado de uma foto em close de um homem ao lado da máscara de imagem que descreve a forma do homem

A tarefa do segmentador de imagens do MediaPipe permite dividir imagens em regiões com base em categorias predefinidas. Você pode usar essa funcionalidade para identificar objetos ou texturas específicos e aplicar efeitos visuais, como desfoque de plano de fundo. Essa tarefa inclui vários modelos treinados especificamente para segmentar pessoas e os recursos delas nos dados de imagem, incluindo:

  • Pessoa e plano de fundo
  • Apenas o cabelo da pessoa
  • Cabelo, rosto, pele, roupas e acessórios da pessoa

Essa tarefa opera em dados de imagem com um modelo de machine learning (ML) com imagens únicas ou um fluxo de vídeo contínuo. Ele gera uma lista de regiões segmentadas, representando objetos ou áreas em uma imagem, dependendo do modelo escolhido.

Teste!

Começar

Para começar a usar essa tarefa, siga um destes guias de implementação para sua plataforma de destino. Estes guias específicos para plataformas orientam você em uma implementação básica desta tarefa, incluindo um modelo recomendado e um exemplo de código com opções de configuração recomendadas:

Detalhes da tarefa

Esta seção descreve os recursos, entradas, saídas e opções de configuração desta tarefa.

Recursos

  • Processamento de imagem de entrada: o processamento inclui rotação, redimensionamento, normalização e conversão de espaço de cores.
Entradas da tarefa Saídas de tarefas
A entrada pode ser um dos seguintes tipos de dados:
  • Imagens estáticas
  • Frames de vídeo decodificados
  • Feed de vídeo ao vivo
O segmentador de imagem gera dados de imagem segmentados, que podem incluir um ou ambos dos seguintes, dependendo das opções de configuração definidas:
  • CATEGORY_MASK: uma lista que contém uma máscara segmentada como uma imagem de formato uint8. Cada valor de pixel indica se ele faz parte de uma categoria de segmento específica aceita pelo modelo.
  • CONFIDENCE_MASK: uma lista de canais que contém uma máscara segmentada com valores de pixel no formato float32. Cada valor de pixel indica o nível de confiança de que ele faz parte de uma categoria específica com suporte do modelo.

Opções de configuração

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

Nome da opção Descrição Intervalo de valor Valor padrão
running_mode Define o modo de execução da tarefa. Há três modos:

IMAGE: o modo para entradas de imagem única.

VÍDEO: o modo para quadros decodificados de um vídeo.

LIVE_STREAM: o modo de uma transmissão ao vivo de dados de entrada, como de uma câmera. Nesse modo, o resultListener precisa ser chamado para configurar um listener para receber resultados de forma assíncrona.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Se definido como True, a saída inclui uma máscara de segmentação como uma imagem uint8, em que cada valor de pixel indica o valor da categoria vencedora. {True, False} False
output_confidence_masks Se definido como True, a saída inclui uma máscara de segmentação como uma imagem de valor flutuante, em que cada valor flutuante representa o mapa de pontuação de confiança da categoria. {True, False} True
display_names_locale Define o idioma dos rótulos a serem usados para os nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para o inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API Writer de metadados do TensorFlow Lite. Código de localidade en
result_callback Define o listener de resultado para receber os resultados da segmentação de forma assíncrona quando o segmentador de imagens está no modo LIVE_STREAM. Só pode ser usado quando o modo de execução está definido como LIVE_STREAM. N/A N/A

Modelos

O segmentador de imagens pode ser usado com mais de um modelo de ML. A maioria dos modelos de segmentação a seguir é criada e treinada para realizar a segmentação com imagens de pessoas. No entanto, o modelo DeepLab-v3 foi criado como um segmentador de imagens de uso geral. Selecione o modelo mais adequado para seu aplicativo.

Modelo de segmentação de selfie

Esse modelo pode segmentar o retrato de uma pessoa e pode ser usado para substituir ou modificar o plano de fundo de uma imagem. O modelo gera duas categorias, o plano de fundo no índice 0 e a pessoa no índice 1. Esse modelo tem versões com diferentes formas de entrada, incluindo a versão quadrada e a paisagem, que podem ser mais eficientes para aplicativos em que a entrada é sempre dessa forma, como videochamadas.

Nome do modelo Forma de entrada Tipo de quantização Card de modelo Versões
SelfieSegmenter (quadrado) 256 x 256 float 16 Informações Mais recente
SelfieSegmenter (paisagem) 144 x 256 float 16 Informações Mais recente

Modelo de segmentação de cabelo

Esse modelo usa uma imagem de uma pessoa, localiza o cabelo na cabeça e gera um mapa de segmentação de imagem para o cabelo. Você pode usar esse modelo para recolorir o cabelo ou aplicar outros efeitos. O modelo gera as seguintes categorias de segmentação:

0 - background
1 - hair
Nome do modelo Forma de entrada Tipo de quantização Card de modelo Versões
HairSegmenter 512 x 512 Nenhum (float32) Informações Mais recente

Modelo de segmentação de selfies multiclasse

Esse modelo captura uma imagem de uma pessoa, localiza áreas diferentes, como cabelo, pele e roupas, e gera um mapa de segmentação de imagem para esses itens. Você pode usar esse modelo para aplicar vários efeitos a pessoas em imagens ou vídeos. O modelo gera as seguintes categorias de segmentação:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nome do modelo Forma de entrada Tipo de quantização Card de modelo Versões
SelfieMulticlass (256 x 256) 256 x 256 Nenhum (float32) Informações Mais recente

Modelo DeepLab-v3

Esse modelo identifica segmentos para várias categorias, incluindo plano de fundo, pessoa, gato, cachorro e planta em vaso. O modelo usa o agrupamento de pirâmide espacial Atrous para capturar informações de maior alcance. Para mais informações, consulte DeepLab-v3.

Nome do modelo Forma de entrada Tipo de quantização Versões
DeepLab-V3 257 x 257 Nenhum (float32) Mais recente

Comparações de mercado de tarefas

Confira os comparativos de mercado da tarefa para todo o pipeline com base nos modelos pré-treinados acima. O resultado da latência é a latência média no Pixel 6 usando CPU / GPU.

Nome do modelo Latência da CPU Latência da GPU
SelfieSegmenter (quadrado) 33,46 ms 35,15 ms
SelfieSegmenter (paisagem) 34,19 ms 33,55 ms
HairSegmenter 57,90 ms 52,14 ms
SelfieMulticlass (256 x 256) 217,76 ms 71,24 ms
DeepLab-V3 123,93 ms 103,30 ms