Path: blob/master/site/pt-br/lite/models/pose_estimation/overview.md
25118 views
Estimativa de pose
Estimativa de pose é a tarefa de usar um modelo de aprendizado de máquina para estimar a pose de uma pessoa em uma imagem ou vídeo. Isso é feito estimando-se as localizações espaciais de juntas importantes do corpo (pontos-chave).
Como começar
Se você estiver apenas começando a usar o TensorFlow Lite e estiver trabalhando com Android ou iOS, confira os exemplos de aplicativo abaixo que podem te ajudar a começar.
Exemplo do Android Exemplo do iOS
Se você já conhecer bem as APIs do TensorFlow Lite, baixe o modelo inicial de estimativa de pose MoveNet e os arquivos de suporte.
Se você quiser testar a estimativa de pose em um navegador, confira a Demonstração em JS do TensorFlow.
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 determinar, por exemplo, onde o cotovelo de uma pessoa aparece em uma imagem. É importante saber que a estimativa de pose estima apenas onde estão as juntas importantes do corpo e não reconhece quem está em uma imagem ou vídeo.
Os modelos de estimativa de pose recebem uma imagem de câmera pré-processada como entrada e geram como saída informações sobre os pontos-chave. Os pontos-chave detectados são indexados por um ID da parte do corpo, com uma pontuação de confiança entre 0,0 e 1,0. A pontuação de confiança indica a probabilidade de um ponto-chave existir nessa posição.
Fornecemos a implementação de referência de dois modelos de estimativa de pose do TensorFlow Lite:
MoveNet: modelo moderno de estimativa de pose em duas versões: Lighting e Thunder. Confira o comparativo entre as duas na seção abaixo.
PoseNet: modelo de estimativa de pose da geração anterior, lançado em 2017.
As diversas juntas do corpo detectadas pelo modelo de estimativa de pose estão tabuladas abaixo:
ID | Parte do corpo |
---|---|
0 | nose (nariz) |
1 | leftEye (olho esquerdo) |
2 | rightEye (olho direito) |
3 | leftEar (orelha esquerda) |
4 | rightEar (orelha direita) |
5 | leftShoulder (ombro esquerdo) |
6 | rightShoulder (ombro direito) |
7 | leftElbow (cotovelo esquerdo) |
8 | rightElbow (cotovelo direito) |
9 | leftWrist (punho esquerdo) |
10 | rightWrist (punho direito) |
11 | leftHip (lado esquerdo do quadril) |
12 | rightHip (lado direito do quadril) |
13 | leftKnee (joelho esquerdo) |
14 | rightKnee (joelho direito) |
15 | leftAnkle (tornozelo esquerdo) |
16 | rightAnkle (tornozelo direito) |
Veja um exemplo de saída abaixo:
Referenciais de desempenho
MoveNet está disponível em duas versões:
MoveNet.Lightning é menor, mas menos exata do que a versão Thunder. Pode ser executada em tempo real em smartphones modernos.
MoveNet.Thunder é a versão mais exata e lenta do que a versão Lightning. É útil para casos de uso que exigem maior exatidão.
O MoveNet tem desempenho melhor do que o PoseNet para diversos datasets, especialmente com imagens de exercícios físicos. Portanto, recomendamos usar o MoveNet em vez do PoseNet.
Os números de referencial de desempenho são gerados com a ferramenta descrita aqui. Os números de exatidão (mAP) são mensurados em um subconjunto do dataset COCO, em que filtramos e cortamos cada imagem para que contenha somente uma pessoa.
Modelo | Tamanho (em MB) | mAP | Latência (em ms) | ||
---|---|---|---|---|---|
Pixel 5 - 4 threads de CPU | Pixel 5 - GPU | Raspberry Pi 4 - 4 threads de CPU | |||
MoveNet.Thunder (quantizado em FP16) | 12,6 | 72,0 | 155 | 45 | 594 |
MoveNet.Thunder (quantizado em INT8) | 7,1 | 68,9 | 100 | 52 | 251 |
MoveNet.Lightning (quantizado em FP16) | 4,8 | 63,0 | 60 | 25 | 186 |
MoveNet.Lightning (quantizado em INT8) | 2,9 | 57,4 | 52 | 28 | 95 |
PoseNet(MobileNetV1 backbone, FP32) | 13,3 | 45,6 | 80 | 40 | 338 |
Leituras e recursos adicionais
Confira esta postagem no blog para saber mais sobre a estimativa de pose usando o MoveNet e o TensorFlow Lite.
Confira esta postagem no blog para saber mais sobre a estimativa de pose na web.
Confira este tutorial para saber mais sobre como executar o MoveNet no Python usando um modelo do TensorFlow Hub.
O Coral/EdgeTPU pode deixar a execução da estimativa de pose muito mais rápida em dispositivos de borda. Confira mais detalhes em Modelos otimizados para EdgeTPU.
Leia o artigo do PoseNet aqui
Além disso, confira estes casos de uso de estimativa de pose:
- ‘PomPom Mirror’
- Amazing Art Installation Turns You Into A Bird | Chris Milk "The Treachery of Sanctuary" (Instalação de arte incrível transforma você em um pássaro | Chris Milk "A Traição do Santuário")
- Puppet Parade - Interactive Kinect Puppets (Desfile de marionetes – Marionetes interativos no Kinect)
- Messa di Voce (Performance), Excerpts [Messa di Voce (Desempenho), Trechos]
- Realidade aumentada
- Animação interativa
- Análise do modo de andar