Pose Estimation
A estimativa de pose localiza pontos-chave, como articulações, para descrever a posição de um corpo ou objeto. Métodos top-down, bottom-up e de etapa única, e OKS.
A estimativa de pose é a tarefa de visão computacional que consiste em localizar um conjunto predefinido de pontos-chave num corpo ou objeto, como os ombros, cotovelos e joelhos de uma pessoa, e ligá-los num esqueleto que descreve a sua postura. Um modelo produz as coordenadas de imagem de cada ponto-chave, ou a sua posição em 3D, juntamente com uma pontuação de confiança, para que as aplicações possam medir ângulos articulares, contar repetições ou reconhecer ações. A estimativa de pose descreve como cada pessoa está de pé ou se move, algo que nem uma caixa delimitadora da deteção de objetos nem uma máscara da segmentação de instâncias representa.
Como funciona a estimativa de pose#
Os estimadores de pose 2D multi-pessoa seguem uma de três estratégias, e a terceira espelha os detetores de objetos de uma etapa:
- De cima para baixo: Um detetor de pessoas encontra todas as pessoas na imagem, e um modelo de pessoa única prevê os pontos-chave dentro de cada recorte, como em HRNet (2019) e ViTPose (2022). A precisão é elevada para pessoas grandes e claramente visíveis, e o custo aumenta com o número de pessoas.
- De baixo para cima: A rede encontra todos os pontos-chave na imagem de uma só vez e, em seguida, agrupa-os por pessoa. OpenPose (2017) liga as articulações com campos de afinidade das partes, vetores 2D que apontam ao longo de cada membro, mantendo o custo quase constante em multidões.
- De uma única etapa: A rede prevê a caixa de uma pessoa e todos os seus pontos-chave a partir da mesma localização da grelha, numa única passagem, sem precisar de recortes nem de uma etapa de agrupamento. YOLO-Pose (2022) trouxe este design para YOLO.
As localizações dos pontos-chave são obtidas através de mapas de calor, um mapa de probabilidade por ponto-chave cujo pico indica a localização, ou através da regressão direta das coordenadas. Os mapas de calor lideraram os benchmarks durante anos, mas consomem memória e são limitados pela resolução do mapa. A Estimativa Residual de Log-verosimilhança (RLE) reduziu a diferença da regressão em 2021, aprendendo a distribuição do erro de previsão com um fluxo normalizante. Os modelos de pose YOLO26 são regressores de uma única etapa treinados com RLE: durante o treino, um ramo adicional prevê a incerteza de cada ponto-chave e um fluxo RealNVP calcula a pontuação do erro; ambos são removidos quando o modelo é fundido para inferência, pelo que não acrescentam custos de inferência.
from ultralytics import YOLO
# Carrega um modelo de pose nano YOLO26 treinado nos 17 pontos-chave do corpo do COCO
model = YOLO("yolo26n-pose.pt")
# Encontra todas as pessoas e os respetivos pontos-chave numa única passagem
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# A forma é (pessoas, pontos-chave, xy); guarda a imagem com os esqueletos desenhados
print(result.keypoints.xy.shape)
result.save(filename="pose_result.jpg")A forma apresentada conta as pessoas encontradas, os 17 pontos-chave e as 2 coordenadas de píxeis; a imagem guardada desenha cada esqueleto sobre a respetiva pessoa.
Estimativa de pose 2D e 3D#
Os estimadores 2D devolvem coordenadas de píxeis. A estimativa de pose humana 3D recupera posições articulares no espaço elevando uma sequência de pontos-chave 2D com uma segunda rede, como em VideoPose3D; triangulando pontos-chave vistos por várias câmaras calibradas; ou ajustando à imagem uma malha corporal paramétrica como a SMPL. A estimativa de pose de objetos é uma tarefa distinta: recupera a rotação e a translação 3D de um objeto rígido, muitas vezes a partir de pontos-chave na sua superfície, para preensão robótica e realidade aumentada.
Avaliar a estimativa de pose#
O benchmark COCO Keypoints, com cerca de 250.000 pessoas identificadas com 17 pontos-chave, avalia as previsões com a similaridade de pontos-chave de objetos (OKS), equivalente a pontos-chave da interseção sobre união (IoU). Para cada ponto-chave anotado, a distância d entre a previsão e a anotação se transforma em uma similaridade exp(-d²/(2s²k²)), em que s² é a área segmentada da pessoa e k é uma constante por ponto-chave medida com base na consistência com que os anotadores posicionaram esse ponto. O OKS calcula a média desses termos entre os pontos-chave anotados, e a precisão média média (mAP) é calculada sobre limiares de OKS de 0,50 a 0,95.
import numpy as np
# COCO falloff constants: annotators place eyes far more consistently than hips
sigmas = {"eye": 0.025, "hip": 0.107}
area = 20_000 # person's segmented area in pixels (s squared)
error = 5.0 # predicted keypoint lies 5 pixels from its label
# Per-keypoint OKS term: exp(-d^2 / (2 s^2 k^2)) with k = 2 * sigma
for name, sigma in sigmas.items():
similarity = np.exp(-(error**2) / (2 * area * (2 * sigma) ** 2))
print(f"{name}: {similarity:.2f}")O mesmo erro de 5 píxeis obtém uma pontuação de 0,78 num olho e 0,99 numa anca. Outros benchmarks usam outras medidas: o MPII apresenta PCKh, a proporção de pontos-chave a menos de metade do tamanho da cabeça em relação à anotação, e benchmarks 3D como Human3.6M apresentam o erro médio da posição por articulação, em milímetros.
Aplicações no mundo real#
- Análise desportiva: Os treinadores medem ângulos articulares, comprimento da passada e mecânica do movimento a partir de vídeos comuns, sem os marcadores refletores da captura de movimento em laboratório.
- Reabilitação: As aplicações de fisioterapia acompanham a amplitude de movimento e a forma de fazer exercícios em casa, e os sistemas de deteção de quedas monitorizam se os pontos-chave do corpo descem até ao nível do chão.
- Reconhecimento de ações: As sequências de esqueletos são entradas compactas para classificar ações como acenar, cair ou levantar, e ignoram a roupa e o fundo.
- Investigação animal: Conjuntos personalizados de pontos-chave acompanham a postura dos animais, como os 24 pontos-chave por cão no conjunto de dados Dog-Pose, para estudar a marcha e o comportamento.










