Detecção de Pontos-Chave

Visão geral

A detecção de pontos-chave (keypoint detection) prevê as localizações 2D (e às vezes 3D) de marcos semânticos em uma imagem ou vídeo. Esses marcos são definidos pela tarefa e repetíveis, como:

  • Pose humana: articulações como punhos, cotovelos, joelhos, tornozelos
  • Alinhamento facial: olhos, ponta do nariz, cantos da boca
  • Mãos: articulações dos dedos
  • Animais: focinho, base da cauda, patas
  • Produtos/objetos: cantos de uma caixa, extremidades de uma ferramenta

Em cenas com múltiplas pessoas, a detecção de pontos-chave normalmente inclui:

  • Confiança por ponto-chave (quão certo o modelo está)
  • Associação de partes (quais pontos-chave detectados pertencem à mesma instância de pessoa)

Como pose humana é o caso de uso mais comum, a tarefa é frequentemente chamada de estimativa de pose (pose estimation) (2D), mas “detecção de pontos-chave” é o termo mais geral.

A detecção de pontos-chave fica ao lado de outras tarefas centrais de visão como Detecção de Objetos, Regressão de Caixa Delimitadora e Segmentação de Imagens. Muitos sistemas reais as combinam: por exemplo, detectar pessoas e, em seguida, estimar a pose de cada pessoa.

O que exatamente é um “ponto-chave”?

Um ponto-chave é um marco nomeado com um significado semântico consistente. Por exemplo, “punho esquerdo” é um rótulo diferente de “punho direito”, e “canto do olho esquerdo” é diferente de “ponta do nariz”.

A maioria dos conjuntos de dados modela cada ponto-chave com:

  • coordenadas (x, y) em pixels da imagem (às vezes normalizadas)
  • um indicador de visibilidade (visível, ocluído, não rotulado/fora do quadro)
  • incerteza/confiança opcionais (previstas no momento da inferência)

Em configurações com múltiplas instâncias (por exemplo, várias pessoas), cada instância tem seu próprio conjunto de pontos-chave.

Formulações do problema

A detecção de pontos-chave pode ser formulada de várias maneiras. Duas das mais comuns são a predição por mapa de calor (heatmap prediction) e a regressão direta de coordenadas (direct coordinate regression).

Detecção de pontos-chave baseada em mapa de calor (predição densa)

Ideia: Prever um mapa de probabilidade 2D (mapa de calor) por tipo de ponto-chave. O pico indica a localização do ponto-chave.

  • O formato de saída geralmente se parece com: (K, H', W'), onde K é o número de tipos de ponto-chave.
  • Alvo de treinamento: tipicamente um blob Gaussiano 2D centrado no ponto-chave de verdade-terreno.

Prós

  • Funciona bem com características convolucionais e raciocínio espacial
  • Fornece naturalmente uma confiança (valor do pico)
  • Frequentemente alcança alta precisão, especialmente com cabeças de alta resolução

Contras

  • A resolução do mapa de calor pode limitar a precisão (erro de quantização)
  • Exige decodificação (argmax, refinamento subpixel)
  • Memória/compute escalam com a resolução de saída e o número de pontos-chave

Perdas comuns

  • Erro quadrático médio (MSE) entre mapas de calor previstos e alvos
  • Variantes no estilo focal para picos densos (menos comuns em pipelines clássicos de pose)

Decodificação típica

  • argmax sobre o mapa de calor
  • Refinamento opcional usando gradientes locais ou ajustando uma quadrática ao redor do pico

Regressão direta (predição de coordenadas)

Ideia: Prever coordenadas (x, y) diretamente para cada ponto-chave.

  • Formato de saída: (K, 2) (e possivelmente confianças (K,))
  • Pode ser feito a partir de um vetor de características global ou de características por instância.

Prós

  • Representação de saída simples
  • Sem gargalo de resolução do mapa de calor
  • Menor memória do que mapas de calor densos

Contras

  • Historicamente mais difícil de treinar e menos preciso sem um desenho cuidadoso
  • Pode ter dificuldades quando existem múltiplas localizações plausíveis (ambiguidade/oclusão)
  • Estimativa de confiança e modelagem de incerteza se tornam mais importantes

Perdas comuns

  • L1 / smooth L1 / L2 nas coordenadas
  • Perdas robustas para lidar com oclusões/outliers

Abordagens híbridas (o melhor dos dois)

Sistemas modernos frequentemente combinam ideias:

  • Regressão integral / soft-argmax: prever um mapa de calor e, em seguida, computar a coordenada esperada como uma operação diferenciável.
  • Mapa de calor + deslocamento (offset): prever uma localização grossa no mapa de calor mais um deslocamento local para precisão subpixel.
  • Regressão baseada em tokens (token-based regression) (Transformers): prever coordenadas de pontos-chave diretamente, mas com forte contexto global.

Essas abordagens híbridas buscam manter o aprendizado espacial no estilo de mapas de calor ao mesmo tempo em que melhoram a precisão e o treinamento ponta a ponta.

Detecção de pontos-chave de uma pessoa vs múltiplas pessoas

Detecção de pontos-chave de uma pessoa

Assume-se que a entrada contém uma pessoa/objeto de interesse (frequentemente recortado ao redor dele). Isso é mais simples porque não há necessidade de agrupar pontos-chave em instâncias.

Detecção de pontos-chave de múltiplas pessoas

O modelo precisa:

  1. Encontrar todos os pontos-chave na imagem
  2. Associá-los à instância correta de pessoa/objeto

É aqui que as escolhas de desenho do sistema mais importam.

Famílias de modelos: top-down vs bottom-up

Uma forma clássica de categorizar a estimativa de pose multi-pessoa é top-down vs bottom-up.

Top-down (detectar e depois estimar pose)

Pipeline

  1. Executar um detector de pessoas (por exemplo, um modelo padrão de Detecção de Objetos)
  2. Para cada caixa detectada, recortar/redimensionar e executar um modelo de pontos-chave de uma pessoa
  3. Opcionalmente aplicar Supressão de Não Máximos (NMS) (Non-Maximum Suppression) nas caixas e/ou poses

Prós

  • Geralmente alta precisão (cada recorte foca em uma pessoa)
  • A cabeça de pontos-chave pode ser especializada e de alta resolução
  • Problema de associação mais simples (cada recorte = uma instância)

Contras

  • O tempo de execução escala com o número de pessoas detectadas (pode ser caro em multidões)
  • A qualidade depende do detector (caixas perdidas → poses perdidas)
  • Recorte/redimensionamento pode perder contexto

Comum na prática

  • Muitos sistemas em produção usam top-down por ser modular e robusto.

Bottom-up (detectar pontos-chave e depois agrupar)

Pipeline

  1. Prever todos os pontos-chave na imagem (frequentemente via mapas de calor)
  2. Prever um sinal de associação para que os pontos-chave possam ser agrupados em instâncias

Métodos de associação incluem:

  • Campos de Afinidade de Partes (PAFs) (Part Affinity Fields) (por exemplo, OpenPose): campos vetoriais conectando articulações relacionadas (punho ↔ cotovelo).
  • Embedding associativo (associative embedding): cada ponto-chave prevê um embedding; pontos-chave com embeddings similares pertencem à mesma pessoa.
  • Agrupamento baseado em centro (center-based grouping): detectar centros de pessoas e atribuir pontos-chave ao centro mais próximo/mais compatível.

Prós

  • Tempo de execução menos sensível ao número de pessoas (um único forward pass)
  • Frequentemente melhor em cenas lotadas quando bem implementado

Contras

  • O agrupamento é complexo e pode ser frágil
  • Erros de associação são modos de falha comuns (membros trocados, pessoas misturadas)

Um terceiro estilo: pontos-chave em estágio único com consciência de instância

Algumas arquiteturas integram detecção de instâncias e pontos-chave de forma mais estreita (por exemplo, pontos-chave como uma cabeça de instância). Isso se assemelha à detecção de objetos com saídas estruturadas extras e pode compartilhar ideias com Segmentação de Instâncias.

Arquiteturas na prática

A maioria dos modelos de pontos-chave combina:

  • Um backbone (extrator de características)
  • Um neck (pirâmide de características / fusão multiescala)
  • Uma cabeça de pontos-chave (mapas de calor ou saídas de regressão)

Backbones

  • CNNs (por exemplo, variantes de ResNet) continuam comuns devido ao forte viés indutivo espacial.
  • Desenhos de características de alta resolução são populares para pose porque a localização se beneficia de detalhes.
  • Transformers são cada vez mais usados, especialmente para pose top-down, devido a forte raciocínio global (Arquitetura Transformer (Transformer Architecture)).

Cabeças de mapa de calor

Uma cabeça típica de mapa de calor faz upsample das características para uma resolução espacial mais alta e prevê K mapas de calor. O trade-off de desenho é precisão vs velocidade/memória.

Cabeças de regressão

Cabeças de regressão podem agregar características (global average pooling ou attention pooling) e produzir coordenadas, ou podem regredir deslocamentos relativos a grades/âncoras grosseiras (semelhante em espírito à Regressão de Caixa Delimitadora).

Alvos de treinamento e perdas (detalhes práticos)

Geração de mapa de calor Gaussiano

Um mapa de calor alvo padrão para o ponto-chave (k) centrado em ((x_k, y_k)) é:

[ H_k(u, v) = \exp\left(-\frac{(u-x_k)^2 + (v-y_k)^2}{2\sigma^2}\right) ]

  • (\sigma) controla quão largo é o blob (frequentemente ajustado por conjunto de dados/tamanho de entrada)
  • Pontos-chave invisíveis/não rotulados geralmente são mascarados fora da perda

Exemplo de pseudo-código para gerar um alvo de mapa de calor:

import torch

def gaussian_heatmap(H, W, x, y, sigma):
    yy, xx = torch.meshgrid(torch.arange(H), torch.arange(W), indexing="ij")
    return torch.exp(-((xx - x)**2 + (yy - y)**2) / (2 * sigma**2))

# target shape: (K, H, W)

Decodificação de coordenadas a partir de mapas de calor

A decodificação mais simples é argmax, mas ela é quantizada aos centros de pixel. Um refinamento comum é adicionar um pequeno deslocamento com base em valores vizinhos.

# heatmaps: (K, H, W)
flat_idx = heatmaps.view(K, -1).argmax(dim=1)
y = flat_idx // W
x = flat_idx % W

Para maior precisão, modelos podem produzir:

  • um mapa de calor de maior resolução,
  • uma cabeça de deslocamento (offset), ou
  • usar soft-argmax/regressão integral diferenciável.

Oclusão e visibilidade

Conjuntos de dados frequentemente rotulam se um ponto-chave é:

  • visível
  • ocluído mas rotulado
  • não rotulado / fora da imagem

Funções de perda geralmente mascaram pontos-chave ausentes e podem reduzir o peso dos ocluídos dependendo das convenções de anotação.

Aumento de dados (especialmente importante)

O treinamento de pontos-chave depende fortemente de aumento de dados:

  • Escala/rotação aleatórias
  • Recorte/translação aleatórios
  • Espelhamento horizontal (com troca de pontos-chave esquerda/direita)
  • Jitter de cor, desfoque, ruído
  • Simulação de oclusão (por exemplo, cutout)

Esses aumentos ajudam a robustez a mudanças de ponto de vista e visibilidade parcial. (Veja também Aumento de Dados.)

Avaliação em benchmarks (COCO keypoints e além)

A avaliação é crucial porque “erro de distância em pixels” não escala entre tamanhos de objeto. Benchmarks de pose humana normalmente normalizam pela escala da pessoa.

COCO keypoints: OKS e AP

O benchmark COCO Keypoints avalia usando OKS (Object Keypoint Similarity), análogo ao IoU para caixas:

[ \text{OKS} = \frac{\sum_i \exp\left(-\frac{d_i^2}{2 s^2 k_i^2}\right)\delta(v_i>0)}{\sum_i \delta(v_i>0)} ]

Onde:

  • (d_i) é a distância Euclidiana entre o ponto-chave previsto e o ponto-chave GT (verdade-terreno) (i)
  • (s) é a escala do objeto (aproximadamente a área da pessoa)
  • (k_i) é uma constante por ponto-chave (alguns pontos-chave são mais difíceis)
  • (v_i) indica visibilidade/presença de rótulo

O COCO reporta:

  • AP médio ao longo de limiares de OKS (0.50:0.95)
  • AP50, AP75
  • AP por tamanho (médio, grande)
  • AR (revocação média)

Isso torna a avaliação do COCO mais robusta do que erro bruto em pixels e recompensa tanto a qualidade de detecção quanto de localização.

Outras métricas comuns

  • PCK (Percentage of Correct Keypoints): um ponto-chave está correto se estiver dentro de um limiar de distância normalizada (por exemplo, fração do tamanho da cabeça).
  • AUC da curva de PCK: sumariza o desempenho ao longo dos limiares.
  • NME (Normalized Mean Error): comum para marcos faciais, normalizado pela distância interocular ou pelo tamanho da caixa delimitadora.

Por que métricas importam operacionalmente

Um modelo pode ter:

  • boa localização média, mas trocas catastróficas ocasionais (ruim para etapas downstream)
  • boa detecção, mas baixa precisão (ruim para aplicações de medição)
  • forte precisão para uma pessoa, mas fraca associação em múltiplas pessoas

Observar recortes (ocluído vs visível, cenas lotadas, pessoas pequenas) frequentemente revela onde melhorias são necessárias.

Exemplos práticos e aplicações

Exemplo 1: Análise de forma em fitness / esportes

Um app móvel estima a pose do usuário enquanto faz agachamentos:

  • Pontos-chave: quadris, joelhos, tornozelos, ombros
  • Sinais derivados: ângulo do joelho ao longo do tempo, profundidade do quadril, simetria
  • Requisitos práticos: estabilidade temporal (reduzir jitter), robustez a auto-oclusão

Isso frequentemente usa um pipeline top-down (detectar pessoa → pose) por simplicidade.

Exemplo 2: Controle por gestos e RA

Pontos-chave de mão permitem reconhecimento de gestos:

  • Detecção de pinça = distância entre a ponta do polegar e a ponta do indicador
  • A pose direciona a manipulação de objetos virtuais

Aqui, latência e rastreamento suave importam. Sistemas podem:

  • executar detecção de pontos-chave em resolução menor por velocidade,
  • usar filtragem temporal (por exemplo, Kalman/EMA),
  • fundir com sensores inerciais quando disponíveis.

Exemplo 3: Alinhamento de marcos faciais

Pontos-chave faciais dão suporte a:

  • frontalização e alinhamento do rosto (pré-processamento para reconhecimento)
  • rastreamento de expressão e animação
  • monitoramento do motorista (fechamento dos olhos, proxy de direção do olhar)

Marcos faciais tipicamente são avaliados com NME e frequentemente usam híbridos de regressão/mapa de calor para precisão subpixel.

Exemplo 4: Marcos médicos e industriais

Pontos-chave podem marcar marcos anatômicos (por exemplo, articulações em raios X) ou fiduciais em manufatura:

  • fortes restrições de precisão e confiabilidade
  • pode exigir estimativas de incerteza e validação humana no loop

Pós-processamento e estabilidade em tempo de inferência

Saídas de pontos-chave frequentemente são melhoradas com pós-processamento:

  • NMS de pose: remover instâncias de pose duplicadas (semelhante à Supressão de Não Máximos (NMS) (Non-Maximum Suppression), mas para conjuntos de pontos-chave)
  • Restrições cinemáticas: impor comprimentos/ângulos plausíveis de membros (priors leves)
  • Suavização temporal (vídeo): reduzir jitter e preencher oclusões curtas
  • Limiarização por confiança: descartar pontos-chave ou instâncias de baixa confiança

Para métodos bottom-up, o agrupamento é em si uma etapa de pós-processamento e pode dominar tempo de execução/complexidade.

Modos de falha comuns (e como aparecem)

  • Confusão esquerda-direita: especialmente sob espelhamentos ou poses incomuns
  • Erros de associação em multidões: punhos atribuídos à pessoa errada
  • Alucinação sob oclusão: ponto-chave confiante, porém errado, atrás de um objeto
  • Degradação em pessoas pequenas: pixels insuficientes → localização ruim
  • Desfoque de movimento (vídeo): membros borrados reduzem a nitidez do pico

O debug frequentemente se beneficia de visualizar:

  • mapas de calor previstos,
  • distribuições de confiança,
  • campos/embeddings de associação,
  • erros por articulação (punhos/tornozelos tipicamente são os mais difíceis).

Extensões: pose 3D e pose em vídeo

Pontos-chave 3D / pose 3D

A estimativa de pose 3D pode ser:

  • Elevação monocular (monocular lifting): prever pontos-chave 2D e depois “elevar” para 3D usando um modelo separado
  • 3D direto (direct 3D): prever coordenadas 3D, às vezes com parâmetros de câmera
  • Mapas de calor volumétricos (volumetric heatmaps): prever uma grade 3D de probabilidades (preciso, mas pesado)

O 3D introduz ambiguidade (profundidade) e frequentemente depende de priors fortes ou restrições multi-view.

Estimativa de pose em vídeo

Vídeo adiciona informação temporal:

  • pode melhorar a estabilidade e recuperar de oclusões breves
  • modelos podem usar convolução temporal, RNNs ou atenção sobre sequências de quadros
  • rastreamento pode manter identidade entre quadros (pose tracking)

Notas de implementação (o que importa em sistemas reais)

  • Resolução de entrada: maior ajuda em pontos-chave pequenos, mas aumenta custo.
  • Escolha do backbone: o trade-off precisão/velocidade frequentemente é dominado pelos FLOPs do backbone.
  • Calibração de confiança: picos brutos de mapa de calor podem não ser probabilidades bem calibradas.
  • Incompatibilidade de conjunto de dados: um modelo treinado no COCO pode falhar em ângulos de câmera do mundo real ou domínios especializados (fábrica, esportes).
  • Convenções de anotação: “ocluído mas rotulado” vs “não rotulado” muda a máscara de perda e a avaliação.

Relação com outras tarefas de visão

Resumo

A detecção de pontos-chave (estimativa de pose) prevê localizações de marcos semânticos—frequentemente com confianças e, em cenários com múltiplas pessoas, associações entre partes e instâncias. As formulações dominantes são localização baseada em mapa de calor e regressão de coordenadas, com muitos métodos híbridos bem-sucedidos combinando os pontos fortes de ambos. Para pose multi-pessoa, sistemas top-down (detectar e depois estimar pose) são amplamente usados por precisão e simplicidade, enquanto sistemas bottom-up oferecem eficiência e bom desempenho em multidões, mas exigem agrupamento cuidadoso. Benchmarks como COCO keypoints avaliam usando AP baseado em OKS, recompensando tanto a localização precisa quanto predições corretas de instância.

Se você quiser, posso adicionar uma seção curta de “receita inicial” (arquiteturas recomendadas, aumentos de dados e configurações de decodificação) para pose top-down no COCO ou para marcos faciais.