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.
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:
- Android: exemplo de código – Guia
- Python: exemplo de código Guia
- Web – Exemplo de código – Guia
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:
|
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:
|
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 |