Guia de detecção de pontos de referência manuais

Com a tarefa MediaPipe Hand Pointser, você pode detectar os pontos de referência dos mãos em uma imagem. Você pode usar essa tarefa para localizar os principais pontos das mãos e renderizar efeitos visuais neles. 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 pontos de referência em coordenadas de imagem, pontos de referência em coordenadas mundiais e mão dominante(esquerda/direita) de várias mãos detectadas.

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 de imagens.
  • Limite de pontuação: filtre os resultados com base nas pontuações de previsão.
Entradas de tarefas Saídas de tarefas
O ponto de referência da mão aceita uma entrada de um dos seguintes tipos de dados:
  • Imagens estáticas
  • Frames de vídeo decodificados
  • Feed de vídeo ao vivo
O ponto de referência da mão gera os seguintes resultados:
  • Mãos detectadas
  • Pontos de referência de mãos detectadas em coordenadas de imagem
  • Pontos de referência de mãos detectadas em coordenadas mundiais

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
num_hands O número máximo de ponteiros detectados pelo detector de pontos de referência de mão. Any integer > 0 1
min_hand_detection_confidence A pontuação de confiança mínima para que a detecção da mão seja considerada bem-sucedida no modelo de detecção de palma. 0.0 - 1.0 0.5
min_hand_presence_confidence A pontuação de confiança mínima para a pontuação de presença da mão no modelo de detecção de pontos de referência da mão. No modo de vídeo e no modo de transmissão ao vivo, se a pontuação de confiança de presença da mão do modelo de ponto de referência da mão estiver abaixo desse limite, o Hand Markdown vai acionar o modelo de detecção de palma. Caso contrário, um algoritmo leve de rastreamento de mãos determina a localização das mãos para detecções subsequentes de pontos de referência. 0.0 - 1.0 0.5
min_tracking_confidence A pontuação de confiança mínima para que o rastreamento da mão seja considerado bem-sucedido. Este é o limite de IoU da caixa delimitadora entre ponteiros no frame atual e no último frame. Nos modos de vídeo e de stream do Hand Markdown, se o rastreamento falhar, o Hand Markdown vai acionar a detecção da mão. Caso contrário, a detecção da mão será ignorada. 0.0 - 1.0 0.5
result_callback Define o listener de resultado para receber os resultados de detecção de forma assíncrona quando o ponto de referência da mão está no modo de transmissão ao vivo. Aplicável apenas quando o modo de corrida está definido como LIVE_STREAM N/A N/A

Modelos

O Hand Markdown usa um pacote com dois modelos empacotados: um modelo de detecção de palma e outro de detecção de pontos de referência em mãos. Você precisa de um pacote de modelos que tenha esses dois modelos para executar essa tarefa.

Nome do modelo Forma de entrada Tipo de quantização Card de modelo Versions
HandLandmarker (completo) 192 x 192, 224 x 224 ponto flutuante 16 informações Mais recente

O pacote de modelos de pontos de referência da mão detecta a localização do ponto-chave de 21 coordenadas de joelho nas regiões de mão detectadas. O modelo foi treinado com aproximadamente 30 mil imagens do mundo real, bem como vários modelos renderizados de mão sintética impostos sobre vários planos de fundo.

O pacote de modelos de ponto de referência da mão contém um modelo de detecção de palma e um de detecção de pontos de referência de mão. O modelo de detecção de palma localiza as mãos na imagem de entrada, e o modelo de detecção de pontos de referência em mãos identifica pontos de referência específicos da mão na imagem da mão cortada definida pelo modelo de detecção de palma.

Como a execução do modelo de detecção da palma da mão é demorada, no modo de execução de vídeo ou transmissão ao vivo, o Hand Markdown usa a caixa delimitadora definida pelo modelo de pontos de referência em um frame para localizar a região dos ponteiros para frames subsequentes. O Hand Markdown só aciona novamente o modelo de detecção de palma se o modelo de pontos de referência da mão não identificar mais a presença de mãos ou não rastrear as mãos no quadro. Isso reduz o número de vezes que o Hand Markdown ativa o modelo de detecção de palma.

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
Marcador de campo (completo) 17,12 ms 12,27 ms