Guia da tarefa de incorporação de imagens

A tarefa MediaPipe Image Embedder 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 é frequentemente usada para comparar a semelhança de duas imagens usando técnicas de comparação matemática, como a Similaridade de cossenos. Essa tarefa opera em dados de imagem com um modelo de machine learning (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 atributo de alta dimensão, também conhecidos como vetores de embedding, em formato de ponto flutuante ou quantizado.

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 usando um modelo recomendado e fornecem exemplos 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.
  • Região de interesse: realiza a incorporação em uma região da imagem, e não em toda a imagem.
  • Como incorporar a computação de similaridade: função utilitária integrada para calcular a semelhança de cossenos entre dois vetores de atributos
  • Quantização: oferece suporte à quantização escalar para os vetores de atributos.
Entradas de tarefas Saídas de tarefas
A entrada pode ser de um destes tipos de dados:
  • Imagens estáticas
  • Frames de vídeo decodificados
  • Feed de vídeo ao vivo
O incorporador de imagens gera uma lista de embeddings que consiste em:
  • Embedding: o próprio vetor de atributo, em forma de ponto flutuante ou quantizado escalar.
  • Índice de cabeçalho: o índice do cabeçalho que produziu esse embedding.
  • Nome do cabeçalho (opcional): o nome do cabeçalho que produziu essa incorporação.

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
l2_normalize Define se o vetor de atributo retornado será normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver uma operação nativa do TFLite L2_NORMALIZATION. Na maioria dos casos, esse já é o caso, e a normalização L2 é, portanto, feita por meio da inferência TFLite sem precisar dessa opção. Boolean False
quantize Define se o embedding retornado precisa ser quantizado em bytes por meio da quantização escalar. Os embeddings são implicitamente considerados padrão de unidade e, portanto, qualquer dimensão tem um valor em [-1.0, 1.0]. Use a opção l2_normalize se esse não for o caso. Boolean False
result_callback Define o listener de resultados para receber os resultados de incorporação de forma assíncrona quando o incorporador de imagens 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ão definido

Modelos

O incorporador de imagens exige que um modelo de incorporação de imagens seja transferido por download e armazenado no diretório do projeto. Comece com o modelo padrão recomendado para a plataforma de destino ao desenvolver com essa tarefa. Os outros modelos disponíveis normalmente compensam requisitos de desempenho, precisão, resolução e recursos e, em alguns casos, incluem outros recursos.

Modelo MobileNetV3

Essa família de modelos usa uma arquitetura MobileNet V3 e foi treinada com dados do ImageNet (link em inglês). Esse modelo usa um multiplicador de 0,75 para a profundidade (número de recursos) nas camadas convolucionais a fim de ajustar a compensação entre acurácia e latência. Além disso, o 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 Versions
MobileNet-V3 (pequena) 224 x 224 Nenhum (float32) Mais recente
MobileNet-V3 (grande) 224 x 224 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
MobileNet-V3 (pequena) 3,94 ms 7,83 ms
MobileNet-V3 (grande) 9,75 ms 9,08 ms