Estimativa de pose

A estimativa de pose é a tarefa de usar um modelo de ML para estimar a pose de uma pessoa a partir de uma imagem ou vídeo, estimando as localizações espaciais das principais articulações do corpo (pontos-chave).

iniciar

Se você é novo no TensorFlow Lite e trabalha com Android ou iOS, explore os exemplos de aplicativos a seguir que podem ajudá-lo a começar.

Exemplo Android Exemplo iOS

Se você estiver familiarizado com as APIs do TensorFlow Lite , baixe o modelo inicial de estimativa de pose MoveNet e os arquivos de suporte.

Baixe o modelo inicial

Se você quiser tentar a estimativa de pose em um navegador da web, confira a demonstração do TensorFlow JS .

Descrição do modelo

Como funciona

A estimativa de pose refere-se a técnicas de visão computacional que detectam figuras humanas em imagens e vídeos, para que se possa determinar, por exemplo, onde o cotovelo de alguém aparece em uma imagem. É importante estar ciente do fato de que a estimativa de pose apenas estima onde estão as principais articulações do corpo e não reconhece quem está em uma imagem ou vídeo.

Os modelos de estimativa de pose pegam uma imagem de câmera processada como entrada e geram informações sobre pontos-chave. Os pontos-chave detectados são indexados por um ID de peça, com uma pontuação de confiança entre 0,0 e 1,0. A pontuação de confiança indica a probabilidade de existir um ponto-chave naquela posição.

Fornecemos implementação de referência de dois modelos de estimativa de pose do TensorFlow Lite:

  • MoveNet: o modelo de estimativa de pose de última geração disponível em dois sabores: Iluminação e Trovão. Veja uma comparação entre os dois na seção abaixo.
  • PoseNet: o modelo de estimativa de pose da geração anterior lançado em 2017.

As várias articulações do corpo detectadas pelo modelo de estimativa de pose são tabuladas abaixo:

Eu ia Papel
0 nariz
1 olho esquerdo
2 olho direito
3 orelha esquerda
4 orelha direita
5 ombro esquerdo
6 ombro direito
7 cotovelo esquerdo
8 cotovelo direito
9 pulso esquerdo
10 direitoPulso
11 quadril esquerdo
12 quadril direito
13 joelho esquerdo
14 joelho direito
15 tornozelo esquerdo
16 tornozelo direito

Um exemplo de saída é mostrado abaixo:

Animação mostrando estimativa de pose

Referências de desempenho

MoveNet está disponível em dois sabores:

  • MoveNet.Lightning é menor, mais rápido, mas menos preciso que a versão Thunder. Ele pode ser executado em tempo real em smartphones modernos.
  • MoveNet.Thunder é a versão mais precisa, mas também maior e mais lenta que o Lightning. É útil para casos de uso que exigem maior precisão.

MoveNet supera PoseNet em uma variedade de conjuntos de dados, especialmente em imagens com imagens de ação de fitness. Portanto, recomendamos o uso do MoveNet em vez do PoseNet.

Os números de benchmark de desempenho são gerados com a ferramenta descrita aqui . Os números de precisão (mAP) são medidos em um subconjunto do conjunto de dados COCO no qual filtramos e cortamos cada imagem para conter apenas uma pessoa.

Modelo Tamanho (MB) mapa Latência (ms)
Pixel 5 – CPU 4 threads Pixel 5 – GPU Raspberry Pi 4 - CPU 4 threads
MoveNet.Thunder (FP16 quantizado) 12,6 MB 72,0 155ms 45ms 594ms
MoveNet.Thunder (INT8 quantizado) 7,1 MB 68,9 100ms 52ms 251ms
MoveNet.Lightning (FP16 quantizado) 4,8 MB 63,0 60ms 25ms 186ms
MoveNet.Lightning (INT8 quantizado) 2,9 MB 57,4 52ms 28ms 95ms
PoseNet (espinha dorsal MobileNetV1, FP32) 13,3 MB 45,6 80ms 40ms 338ms

Leitura adicional e recursos

  • Confira esta postagem do blog para saber mais sobre estimativa de pose usando MoveNet e TensorFlow Lite.
  • Confira esta postagem do blog para saber mais sobre estimativa de pose na web.
  • Confira este tutorial para saber como executar o MoveNet em Python usando um modelo do TensorFlow Hub.
  • Coral/EdgeTPU pode fazer com que a estimativa de pose seja executada muito mais rapidamente em dispositivos de ponta. Consulte modelos otimizados para EdgeTPU para obter mais detalhes.
  • Leia o artigo da PoseNet aqui

Além disso, verifique estes casos de uso de estimativa de pose.