Guia da tarefa de incorporação de imagens

Dois exemplos de imagens de casquinhas de sorvete que incluem as embeddings numéricas das imagens como matrizes

A tarefa de incorporação de imagem do MediaPipe permite criar uma representação numérica de uma imagem, o que é útil para realizar várias tarefas de imagem baseadas em ML. Essa funcionalidade é usada com frequência para comparar a similaridade de duas imagens usando técnicas de comparação matemática, como a similaridade de cosseno. Essa tarefa opera em dados de imagem com um modelo de aprendizado de máquina (ML) como dados estáticos ou um fluxo contínuo e gera uma representação numérica dos dados de imagem como uma lista de vetores de características de alta dimensão, também conhecidos como vetores de embeddings, em formato de ponto flutuante ou quantizado.

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, usando um modelo recomendado, e fornecem exemplos de código com as 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.
  • Região de interesse: realiza a incorporação em uma região da imagem em vez de toda a imagem.
  • Cálculo de similaridade de embedding: função utilitária integrada para calcular a semelhança de cosseno entre dois vetores de recursos.
  • Quantização: oferece suporte à quantização escalar para os vetores de atributos.
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 Image Embedder gera uma lista de embeddings que consistem em:
  • Embedding: o próprio vetor de características, seja na forma de ponto flutuante ou quantizado por escalar.
  • Índice da cabeça: o índice da cabeça que produziu esse embedding.
  • Nome da cabeça (opcional): o nome da cabeça que produziu a incorporação.

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
l2_normalize Se o vetor de recursos retornado vai ser normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver uma operação TFLite L2_NORMALIZATION nativa. Na maioria dos casos, isso já acontece e a normalização L2 é alcançada pela inferência do TFLite sem a necessidade dessa opção. Boolean False
quantize Indica se o embedding retornado precisa ser quantizado em bytes por meio de quantização escalar. As inclusões são implicitamente consideradas como unidade-norm e, portanto, qualquer dimensão tem garantia de ter um valor em [-1,0, 1,0]. Use a opção l2_normalize se não for esse o caso. Boolean False
result_callback Define o listener de resultado para receber os resultados de incorporação de forma assíncrona quando o incorporador de imagem está no modo de transmissão ao vivo. Só pode ser usado quando o modo de execução está definido como LIVE_STREAM. N/A Não definido

Modelos

O Image Embedder exige que um modelo de embedding de imagem seja transferido por download e armazenado no diretório do projeto. Comece com o modelo padrão recomendado para sua plataforma de destino ao começar a desenvolver com essa tarefa. Os outros modelos disponíveis geralmente fazem compensações entre desempenho, precisão, resolução e requisitos de recursos e, em alguns casos, incluem recursos adicionais.

Modelo MobileNetV3

Essa família de modelos usa uma arquitetura MobileNet V3 e foi treinada com dados do ImageNet. Esse modelo usa um multiplicador de 0,75 para a profundidade (número de recursos) nas camadas convolucionais para ajustar o trade-off entre precisão e latência. Além disso, a MobileNet V3 tem dois tamanhos diferentes, pequeno e grande, para adaptar a rede a casos de uso de recursos baixos ou altos.

Nome do modelo Forma de entrada Tipo de quantização Versões
MobileNet-V3 (pequena) 224 x 224 Nenhum (float32) Mais recente
MobileNet-V3 (grande) 224 x 224 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
MobileNet-V3 (pequeno) 3,94 ms 7,83 ms
MobileNet-V3 (grande) 9,75 ms 9,08 ms