A API Pose Detection do Kit de ML é uma solução versátil e leve para desenvolvedores de apps detectarem a pose do corpo de uma pessoa em tempo real usando um vídeo contínuo ou uma imagem estática. Uma pose descreve a posição do corpo em um momento no tempo com um conjunto de pontos de referência esqueléticos. Os pontos de referência correspondem a diferentes partes do corpo, como ombros e quadris. As posições relativas de pontos de referência podem ser usadas para distinguir uma pose de outra.
A detecção de poses do Kit de ML produz uma correspondência esquelética de 33 pontos no corpo inteiro, que inclui pontos de referência faciais (orelhas, olhos, boca e nariz) e pontos nas mãos e nos pés. A Figura 1 abaixo mostra os pontos de referência olhando para o usuário pela câmera, portanto, é uma imagem espelhada. O lado direito do usuário aparece à esquerda da imagem:
A detecção de poses do kit de ML não requer equipamentos especializados ou experiência em ML para alcançar ótimos resultados. Com essa tecnologia, os desenvolvedores podem criar experiências únicas para os usuários com apenas algumas linhas de código.
O rosto do usuário precisa estar presente para detectar uma pose. A detecção de poses funciona melhor quando todo o corpo da pessoa está visível no frame, mas também detecta uma pose parcial. Nesse caso, os pontos de referência que não são reconhecidos recebem coordenadas fora da imagem.
Principais recursos
- Suporte multiplataforma Aproveite a mesma experiência no Android e no iOS.
- Rastreamento de corpo inteiro: o modelo retorna 33 pontos de referência esqueléticos principais, incluindo as posições das mãos e dos pés.
- Pontuação InFrameLikelihood para cada ponto de referência, uma medida que indica a probabilidade de que ele esteja dentro do frame da imagem. A pontuação varia de 0,0 a 1,0, em que 1,0 indica alta confiança.
- Dois SDKs otimizados O SDK base é executado em tempo real em smartphones modernos, como o Pixel 4 e o iPhone X. Ele retorna resultados com uma taxa de aproximadamente 30 e 45 fps, respectivamente. No entanto, a precisão das coordenadas do ponto de referência pode variar. O SDK preciso retorna resultados em um frame rate mais lento, mas produz valores de coordenadas mais precisos.
- Z Coordenada para análise de profundidade: esse valor pode ajudar a determinar se partes do corpo do usuário estão na frente ou atrás dos quadris. Para mais informações, consulte a seção Coordenada Z abaixo.
A API Pose Detection é semelhante à API Facial Recognition, porque retorna um conjunto de pontos de referência e a localização deles. No entanto, embora a detecção facial também tente reconhecer características como uma boca sorridente ou olhos abertos, ela não atribui nenhum significado aos pontos de referência em uma pose ou à própria pose. É possível criar seus próprios algoritmos para interpretar uma pose. Consulte Dicas de classificação de postura para ver alguns exemplos.
A detecção de poses só detecta uma pessoa em uma imagem. Se duas pessoas estiverem na imagem, o modelo atribuirá pontos de referência à pessoa detectada com mais confiança.
Coordenada Z
Coordenada Z é um valor experimental calculado para cada ponto de referência. Ele é medido em "pixels de imagem", como as coordenadas X e Y, mas não é um valor 3D verdadeiro. O eixo Z é perpendicular à câmera e passa entre o quadril de uma pessoa. A origem do eixo Z é aproximadamente o ponto central entre os quadris (esquerdo/direita e frontal/de trás em relação à câmera). Valores negativos de Z são direcionados para a câmera, enquanto os valores positivos ficam longe dela. A coordenada Z não tem um limite superior ou inferior.
Resultados da amostra
A tabela a seguir mostra as coordenadas e o InFrameLikelihood para alguns pontos de referência na pose à direita. As coordenadas Z para a mão esquerda do usuário são negativas, porque estão à frente do centro do quadril da pessoa e em direção à câmera.
Ponto de referência | Tipo | Cargo | InFrameLikelihood |
---|---|---|---|
11 | LEFT_SHOULDER | (734.9671, 550.7924, -118.11934) | 0,9999038 |
12 | RIGHT_SHOULDER | (391.27032, 583.2485, -321.15836) | 0,9999894 |
13 | LEFT_ELBOW | (903.83704, 754.676, -219.67009) | 0,9836427 |
14 | RIGHT_ELBOW | (322.18152, 842.5973, -179.28519) | 0,99970156 |
15 | LEFT_WRIST | (1073.8956, 654.9725, -820.93463) | 0,9737737 |
16 | RIGHT_WRIST | (218.27956, 1015.70435, -683.6567) | 0,995568 |
17 | LEFT_PINKY | (1146.1635, 609.6432, -956.9976) | 0,95273364 |
18 | RIGHT_PINKY | (176.17755, 1065.838, -776.5006) | 0,9785348 |
Configurações avançadas
Para mais detalhes de implementação sobre os modelos de ML subjacentes para essa API, confira nossa postagem do blog de IA do Google (em inglês).
Para saber mais sobre nossas práticas de imparcialidade de ML e como os modelos foram treinados, consulte nosso Card de modelo.