Guia de segmentação de imagens

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

  • Pessoa e histórico
  • Somente cabelo de uma pessoa
  • Cabelo, rosto, pele, roupas e acessórios de uma pessoa

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

Faça um teste.

Comece já

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

Detalhes da tarefa

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

Recursos

  • Processamento de imagem de entrada: o processamento inclui rotação, redimensionamento, normalização e conversão do espaço de cor da imagem.
Entradas de tarefas 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 imagens gera dados de imagens segmentados, que podem incluir um dos itens a seguir ou ambos, 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 contendo uma máscara segmentada com valores de pixels no formato float32. Cada valor de pixel indica o nível de confiança de que ele faz parte de uma categoria específica compatível com o modelo.

Opções de configuração

Essa 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.

VIDEO: o modo para frames decodificados de um vídeo.

LIVE_STREAM: é o modo para 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 incluirá 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 incluirá 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 ser usado para nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API TensorFlow Lite Metadata Writer Código da localidade en
result_callback Define o listener de resultados para receber os resultados da segmentação de forma assíncrona quando o segmento de imagem está no modo de transmissão ao vivo. Só pode ser usado quando o modo de corrida está definido como LIVE_STREAM N/A N/A

Modelos

O Segmenter de imagem pode ser usado com mais de um modelo de ML. A maioria dos modelos de segmentação a seguir é criada e treinada para segmentar 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 por selfie

Esse modelo pode segmentar o retrato de uma pessoa e ser usado para substituir ou modificar o plano de fundo de uma imagem. O modelo gera duas categorias: segundo plano no índice 0 e pessoa no índice 1. Esse modelo tem versões com diferentes formas de entrada, incluindo a versão quadrada e uma em modo 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 Versions
Selfiesegmentr (quadrado) 256 x 256 ponto flutuante 16 informações Mais recente
Selfiesegmentr (paisagem) 144 x 256 ponto flutuante 16 informações Mais recente

Modelo de segmentação de cabelo

Este modelo usa a imagem de uma pessoa, localiza o cabelo na cabeça dela e gera um mapa de segmentação de imagens para o cabelo dela. Você pode usar esse modelo para colorir 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 Versions
HairSegmenter 512 x 512 Nenhum (float32) informações Mais recente

Modelo de segmentação de selfie multiclasse

Esse modelo usa a imagem de uma pessoa, localiza áreas para diferentes áreas, como cabelo, pele e roupas, e gera um mapa de segmentação de imagens para esses itens. Use 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 Versions
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 pooling de pirâmide espacial atórica para capturar informações de maior alcance. Para mais informações, consulte DeepLab-v3.

Nome do modelo Forma de entrada Tipo de quantização Versions
DeepLab-V3 (link em inglês) 257 x 257 Nenhum (float32) Mais recente

Comparativos de mercado de tarefas

Aqui estão os comparativos de mercado de tarefas 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
Segmentação de selfie (quadrado) 33,46 ms 35,15 ms
Selfiesegmentr (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