인간을 이해하기 위한 기술 PoseGPT: Chatting about 3D Human Pose에 대하여
PoseGPT: Chatting about 3D Human Pose
오늘은 인간을 이해하기 위한 기술 중 하나인 PoseGPT에 관한 논문을 리뷰하며 드는 생각을 정리해보고자 합니다.
PoseGPT는 Max Planck Institute for Intelligent Systems에서 제안한 논문이며,
2023년 11월 30일에 제안된 따끈따끈한 논문입니다. 🔥🚨🧑🚒
PoseGPT란 이미지나 텍스트 설명을 통해 3D 인간 포즈를 이해하고 추론하기 위해 LLM을 사용하는 프레임워크라고 할 수 있습니다. 현재까지 진행되어왔던 연구에서는 이미지 또는 텍스트 기반의 인간 자세 추정 문제들은 전체적인 장면을 이해하거나 세세한 추론이 부족해서 시각적 데이터와 실제 자세가 의미하는 바가 연결성이 부족했습니다.
예를 들면 "드레스를 입은 여자는 어떤 행동을 하고 있나요?" 라는 질문에 답하려면 이미지를 이해하는 능력도 필요하고, 문맥에 맞는 답을 내놓기 위한 지식들 및 인간의 신체 언어를 이해하는 과정 모두 필요합니다. 이미지에서 3D 인간 포즈를 추정하는 현재 방법들은 일반적으로 사람을 먼저 감지한 다음, 신경망을 이용하여 아래 사진과 같이 SMPL 모델 처럼 3D 포즈와 모양을 예측하게 되는데요, 이 과정에서는 "상황"에 대한 이해가 빠져있습니다. 즉, 3D 인간 포즈는 상황별 정보가 포함되지 않은 2D 키포인트 정보만 추정되는 경우가 많습니다.
텍스트 기반으로 포즈를 생성하는 연구도 빠르게 발전하고 있지만, 이러한 작업들은 "텍스트"에 대해 명시적으로만 작동하게 됩니다. 예를 들면 "더 빠르게" 또는 "더 높게"와 같은 modifier를 이용하여 모션을 편집할 수 있게 되는 것이죠. 하지만 이렇게 제한적인 정보로 학습하게 되면 모델 자체도 제한적으로 만들어지게 됩니다.
그래서 LLM을 도입할 필요가 있습니다. LLM은 말 그대로 대형 언어 모델(Large Language Model)입니다. 제한적인 일반 텍스트와는 달리 multi-modal 기반의 LLM은 풍부한 world knowledge를 기반으로 정보를 능숙하게 해석할 수 있습니다. 그래서 PoseGPT는 multi-modal LLM 에서 SMPL 포맷의 자세들을 직접 생성하게 됩니다.
LLM이 3D 인간 포즈를 이해하고 해석할 수 있게 하려면 3D Pose에 대해 어떤 것을 이해하고 있는지, 3D 인간 포즈에 대해 어떻게 가르쳐야 하는지를 알기 위해 SMPL 형식의 Pose를 고유한 <Pose> 토큰으로 설정하여, SMPL 포즈 관련 질문에 대해 쿼리할 때 LLM이 이를 출력하도록 유도합니다.
이러한 토큰에서 language embedding을 추출하고, MLP(Multi-layer perceptron)을 사용하여 SMPL 포즈 매개변수들을 직접 예측합니다. 참고로 SMPL 포즈 매개변수는 pose와 관련된 매개변수(jaw joint, finger joint, body joint)와 body shape에 대한 매개변수, facial expression에 대한 매개변수 등이 있습니다.
이를 통해 모델은 아래 그림 1과 같이 텍스트 또는 이미지를 입력으로 사용하고, 이어서 3D 신체 포즈들을 출력 할 수 있습니다. SMPL projection layer를 학습하고, LoRA를 사용하여 LLM 모델을 fine-tuning 하는 동안 vision component 들을 frozen state로 유지하게 됩니다. 여기서 image-to-SMPL, text-to-SMPL 쌍의 데이터들로 구성된다고 하네요.
이러한 PoseGPT로는 다음과 같은 작업이 가능해집니다.
1. Speculative Pose Generation(SPG)
"사람이 앉아있다" 와 같은 텍스트 기반으로 "앉아 있다" 라는 포즈를 생성하는 기존의 방법과는 달리, SPG에서는 LLM에게 "앞으로 어떻게 될 것인가?"를 추측 할 수 있게 합니다. 예를 들면 "피곤하면 포즈가 바뀌나요?" 라는 질문에 대한 포즈를 얻을 수 있습니다. 이러한 데이터는 이전의 포즈 데이터에는 찾아 볼 수 없습니다. (실제로 Sitting, Sitting and Standing 등 만 있음)
이는 LLM을 통해 피로가 신체에 미치는 영향과 이러한 영향이 어떻게 3D 포즈로 변환되는지에 대한 종합적인 이해가 필요한 것이죠.
2. Reasoning-based Pose Estimation (RPE)
두번째 가능한 작업은 추론 기반 자세 추정이 가능해집니다. 예전 Pose Regression 방법과는 달리, 모델은 전체 장면을 이해하게 되고, 해당 문맥 안에서 개인의 각 포즈에 대한 쿼리를 공식화 할 수 있게 됩니다. 예를 들면 "안경을 쓴 사람들은 모두 어떤 포즈를 취하고 있나요?" 와 같은 장면을 이해 할 수 있게 됩니다.
PoseGPT의 장점을 더 얘기해보자면 Occlusion이 일어난 데이터에 대해서도 높은 추론 능력을 보여줍니다. 원래 기존 모델들은 저만큼 가려지면 이렇게 추론 못했어요..^_^, 새삼 PoseGPT 성능이 좋은걸 깨닫게 됩니다. 사실 저만큼 가려져 있으면 인간인 제가 봐도 나머지 신체 포즈를 예측하기가 어려운데, PoseGPT는 어떤 포즈일 확률이 가장 높을 것이다 정도를 알고, 추론해주니 좋은 것 같습니다.
아래는 다른 기존의 multi-model LLM 모델들과, 기존의 3D 포즈 추론 방법들 (SPIN, HMR 2.0)과 비교한 자료인데요, SMPL 결과도 그렇고, Text Description 결과도 그렇고 둘 다 상당히 잘 되는걸 볼 수 있습니다.
이렇게 이전에 없었던 종합적인 상황에 대한 이해가 더해진 포즈 데이터가 생성되고, 그러한 포즈들을 종합적으로 이해하고 추론하는 것이 가능해진다면, 어떤 일이 일어날까요? 바로 "인간을 종합적으로 이해" 할 수 있게 됩니다.
예전에는 카메라를 통해 인간의 행동을 분석 할 때, Sitting, Standing, Walking 등과 같이 하나의 동작만 이해할 수 있었습니다. 왜냐하면 데이터세트가 그렇게 한정되어 있었기 때문이죠. 복합적인 동작 이해는 이러한 동작 인식들이 합쳐지고 그에 따른 Reasoning이 되어야 가능했습니다.
그런데 이제는 이러한 데이터를 LLM을 통해 생성할 수 있으니, 앞으로 인간의 행동을 이해하는 기술은 물론이고, 인간을 종합적으로 이해할 수 있는 기술이 만들어질 것이라고 생각되네요. 더 나아가서는 "나 라는 사람을 이해하는 로봇"이 만들어질 수도 있을 것 같아요 🤖
Paper : https://arxiv.org/abs/2311.18836
Project page : https://yfeng95.github.io/posegpt/