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.
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:
- Android: exemplo de código - guia
- Python: exemplo de código - guia
- Web: exemplo de código: guia
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:
|
O Image Embedder gera uma lista de embeddings que consistem em:
|
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 |