Avançando a Estimativa de Pose 3D a partir de Imagens Únicas
Esse estudo apresenta um novo método pra estimar poses corporais 3D a partir de imagens 2D.
― 7 min ler
Esse trabalho foca em descobrir como entender as posições do corpo humano em 3D usando só uma imagem. A gente apresenta um jeito novo de fazer isso, combinando dois métodos: Cinemática Direta (FK) e redes neurais. Essa combinação permite prever rapidamente e com precisão onde as partes do corpo de uma pessoa estão em três dimensões.
No nosso método, o corpo humano é representado como uma rede de articulações, tipo uma árvore genealógica, onde cada articulação tem limites de movimento. Quando encontramos pontos-chave do corpo a partir de uma imagem 2D, usamos redes neurais pra transformar essas informações em 3D, prevendo como as articulações giram e qual o comprimento dos ossos. Depois, juntamos essas previsões com um conjunto de regras de como o corpo pode se mover. O método que desenvolvemos funciona bem e consegue estimar as posições do corpo em 3D rapidamente.
Testamos nosso método e descobrimos que ele é muito mais preciso do que um método chamado MediaPipe. Verificamos seu desempenho analisando erros nas posições das articulações e quão naturais as poses pareciam. Também mostramos que nosso método funciona bem com diferentes conjuntos de dados e tipos de linguagem de sinais. Nosso modelo roda em 100-200 milissegundos pra cada imagem só usando CPU.
A estimativa de pose em 3D é uma área importante de pesquisa. Recentemente, muitos métodos novos usando deep learning surgiram pra identificar pontos 2D dos corpos humanos em imagens. Porém, como as pessoas se movem de várias maneiras e podem parecer muito diferentes, isso torna o trabalho bem complicado. Passar de imagens 2D pra poses 3D tem incertezas que só podem ser resolvidas notando detalhes visuais pequenos. Isso geralmente exige raciocínio inteligente ou métodos estatísticos complicados.
No nosso trabalho, mostramos que treinando nosso modelo especificamente pra estimativa de poses, conseguimos resultados melhores em comparação com métodos gerais. Nosso foco é na linguagem de sinais, mas mesmo em casos mais amplos, nosso método simples pode superar técnicas mais complexas.
Entender as poses humanas é um primeiro passo chave pra reconhecer a linguagem de sinais, já que usar um esqueleto nos faz menos preocupados com quem é a pessoa, que roupas ela tá vestindo e como é o fundo. Porém, a linguagem de sinais tem seus próprios desafios que podem confundir os métodos típicos de estimativa de pose. Por exemplo, durante a sinalização, as mãos se movem muito rápido, o que pode criar borrões de movimento e levar a erros na detecção das partes do corpo.
Além disso, a linguagem de sinais envolve muitas interações entre as mãos e o rosto, o que pode confundir os métodos de estimativa de pose. Temos exemplos mostrando como outros sistemas como OpenPose e Monocular Total Capture têm dificuldade com essas interações, levando a poses confusas ou incorretas.
Montamos um sistema que usa uma imagem pra criar uma pose 3D. O primeiro passo é detectar pontos em 2D usando uma ferramenta como HRNet ou MediaPipe. Depois, redes separadas preveem os ângulos e comprimentos dos ossos tanto do corpo quanto das mãos. Por fim, juntamos essas informações usando FK pra criar uma pose 3D completa.
Existem duas maneiras principais de enfrentar o problema de estimar poses 3D a partir de uma única imagem. A primeira maneira adivinha os pontos 3D diretamente com base em posições 2D ou características de um modelo de imagem. O segundo método combina FK com as informações 2D levantadas.
Uma escolha que temos que fazer é se devemos prever a orientação das articulações em vez da posição delas. Alguns métodos tentaram usar diferentes representações pra rotações 3D. Por exemplo, usando quaternions permite um desempenho melhor em algumas configurações.
Vários estudos anteriores demonstraram métodos que vão desde usar redes neurais pra prever poses até refiná-las usando técnicas que garantem que os ângulos e comprimentos se encaixem bem.
Nós projetamos nosso sistema usando uma CNN pra encontrar pontos-chave 2D, seguidos por várias camadas que criam rotações de articulações e comprimentos de ossos. Por último, aplicamos FK pra obter a pose 3D completa. A rede angular especificamente nos ajuda a definir os movimentos das articulações.
Usar ângulos de Euler pra representar rotações tem suas vantagens. Como o corpo humano tem muitas articulações, algumas das quais só podem se mover de uma ou duas maneiras, representar isso de forma simples é crucial. Além disso, usar ângulos de Euler nos permite adicionar limites a como as articulações podem se mover, garantindo que as previsões sejam mais realistas.
A rede angular utiliza várias camadas e processa os pontos 2D pra prever ângulos válidos. Os ângulos de saída são normalizados pra se encaixar dentro de limites específicos. Isso evita rotações incomuns e mantém o realismo das poses.
A rede de comprimento dos ossos é mais simples, mas ainda é necessária pra garantir a precisão. Ela prevê os comprimentos dos ossos, mantendo-os positivos.
Combinando as saídas da rede angular e da rede de comprimento dos ossos, a camada FK cria uma pose 3D completa. A posição e a rotação de cada articulação são calculadas com base na articulação raiz, que geralmente fica nos quadris, controlando a pose geral.
Pra treinar o modelo, usamos diferentes objetivos pra o MLP angular. Esses incluem a diferença absoluta dos ângulos reais, distâncias comparando nossa pose 3D gerada com a real, e projeções no plano da imagem.
Existem vantagens e desvantagens em cada tipo de função de perda. Um método ajuda a acelerar o treino, mas não ensina muito ao modelo sobre onde os pontos deveriam estar em 3D. Outro método foca na precisão no espaço 3D, mas isso leva mais tempo pra treinar porque precisa aprender a projetar na imagem também.
Nas nossas experiências, usamos dois modelos, um pra o corpo e outro pra as mãos. Isso ajuda a evitar problemas, já que os erros no corpo podem ser muito maiores do que nos da mãos. Treiná-los separadamente permite um desempenho melhor.
Treinamos nossos modelos usando o conjunto de dados de linguagem de sinais Smile, que foi cuidadosamente criado pra esse propósito. Rodar nosso sistema nesse conjunto de dados permitiu que a gente visse como ele se sai em comparação com MediaPipe e outros sistemas em diferentes línguas de sinais.
Quando comparamos nossos resultados com o MediaPipe em vários conjuntos de dados de imagem, descobrimos que nosso método produz poses mais claras e precisas. O MediaPipe muitas vezes teve dificuldades, especialmente com as mãos, levando a saídas mais barulhentas.
Resumindo, nossa pesquisa mostra um método pra transformar pontos 2D de uma única imagem em uma pose corporal 3D válida. A combinação de redes pra prever movimentos das articulações com um modelo cinemático nos permite alcançar resultados precisos. Focando na linguagem de sinais, mostramos que nosso método superou modelos comumente usados em avaliações visuais e de precisão, alcançando resultados de ponta na estimativa geral de poses 3D também.
Título: Improving 3D Pose Estimation for Sign Language
Resumo: This work addresses 3D human pose reconstruction in single images. We present a method that combines Forward Kinematics (FK) with neural networks to ensure a fast and valid prediction of 3D pose. Pose is represented as a hierarchical tree/graph with nodes corresponding to human joints that model their physical limits. Given a 2D detection of keypoints in the image, we lift the skeleton to 3D using neural networks to predict both the joint rotations and bone lengths. These predictions are then combined with skeletal constraints using an FK layer implemented as a network layer in PyTorch. The result is a fast and accurate approach to the estimation of 3D skeletal pose. Through quantitative and qualitative evaluation, we demonstrate the method is significantly more accurate than MediaPipe in terms of both per joint positional error and visual appearance. Furthermore, we demonstrate generalization over different datasets. The implementation in PyTorch runs at between 100-200 milliseconds per image (including CNN detection) using CPU only.
Autores: Maksym Ivashechkin, Oscar Mendez, Richard Bowden
Última atualização: 2023-08-18 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2308.09525
Fonte PDF: https://arxiv.org/pdf/2308.09525
Licença: https://creativecommons.org/licenses/by-nc-sa/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.