민프

[AI] Human Pose Estimation - 2. 3D HPE(Human Pose Estimation) 이란? 본문

[AI | ML]

[AI] Human Pose Estimation - 2. 3D HPE(Human Pose Estimation) 이란?

민프야 2023. 10. 12. 16:38

3D HPE(Human Pose Estimation) 등장 배경

2차원은 X, Y좌표로 구별하기 때문에 사람이 팔을 앞으로 뻗었는지에 대한 깊이 값을 알 수 없지만

3차원은 Z좌표가 추가 되었기 때문이 사람이 팔을 얼마나 뻗었는지에 대한 깊이 값을 알 수 있습니다.

 

이렇게 아래 사진과 같이 2차원상에서 구별할 수 없는 Depth를 알기 위해서 등장하게 되었습니다.

아래 사진을 보시면 위에서 찍은 사람의 모습인데 2D라면 추측하기 어려웠겠지만
3D Model로 인식하여서 잘 추측하는 것을 확인할 수 있습니다. 

https://aiis.snu.ac.kr/bbs/board.php?bo_table=sub5_1&wr_id=10&page=19&lan=


최초의 Single Human 3D Pose 추정 기법
(A simple yet effective baseline for 3d human pose estimation)

이번에 알아볼 3D Pose 추정 기법은 2017년에 ICCV에 나오게 되었는데요

아래 논문은 최초의 Single Human 3D 포즈 추정 기법 입니다.

결론부터 말씀드리면 3D Pose 추정 문제를 '2D 포즈 추정' + 'Lifting' 문제로 분리하여 문제를 접근하여 해결하였는데요

 

그럼 3D Pose에 대한 연구가 왜 등장하게 되었는지 부터 알아보겠습니다. 

3D Pose의 등장 배경

3D 포즈 추정의 어려움

  • 3D 포즈 추정은 2D 이미지에서 3D 정보를 추출하는 복잡한 작업입니다. 

데이터 부족

  • 대량의 3D 그라운드 트루스 데이터의 부족이 이러한 작업을 더욱 어렵게 만듭니다. 
  • 3D HPE는 복잡한 작업으로, 이를 어렵게 만드는 주요 요인 중 하나는 대량의 3D 그라운드 트루스 데이터의 부족입니다. 
    이러한 데이터 부족은 2D 이미지에서 3D 포즈를 직접 추론하는 것을 어렵게 만듭니다.

위 논문에서는 3D 포즈 추정의 어려움과 데이터 부족 현상 문제에 대해서 'Lifting Network' 이라는 기법을 사용해서 해결하였습니다.

여기서 'Lifting Network' 이란
2D 이미지에서 추출된 인체의 키포인트(관절 위치) 데이터를 사용하여 3D 인체 포즈를 추정하는 기법을 의미합니다. 

그럼 위 문제들에 대한 해결 과정이 어떻게 되는지 아키텍쳐에 대해서 알아보겠습니다.

 

아키텍쳐 분석 (사진 a)
  1. 첫번째로 Lifting Network는 2D Pose Data를 받습니다.
    1. 2D 이미지에서 추출된 인체의 키포인트 데이터(인체의 관절 위치 정보...)를 Lifting Network로 보냅니다.
  2.  Linear 1024
    1. 입력 받은 2D 포즈 데이터를 1024차원의 공간으로 변환하는 선형 레이어에서
      2D 데이터가 고차원 공간으로 "Lifting"되며, 이 고차원 공간에서 더 복잡한 특징과 패턴을 학습합니다.
  3. Batch Norm (Batch Normalization)
    1. Batch Normalization은 딥 러닝 모델의 학습을 안정화하고 가속화하는 기술입니다. 
      결론적으로 포즈 데이터의 스케일과 분포가 조정되어, 각 특징이 동일한 스케일에서 학습하게 되고,
      학습 과정을 더 빠르고 안정적으로 만듭니다.

      좀 더 자세하게 말씀드리자면
      이 기술은 각 레이어의 입력을 정규화하여 평균이 0이고 분산이 1이 되도록 만듭니다. 
      이로 인해 모델은 더 빠르게 수렴하고, 더 높은 학습률을 사용할 수 있게 됩니다.

      아래 사진 b에서 정규화가 왜 필요한지 보여주고 있는데요
      간단하게 말하자면 데이터 값의 범위 차이가 클 경우,
      아래 사진 b에서 좌측 그래프처럼 비효율적인 최적화 과정을 거치게 됩니다
      데이터 간 편차가 큰 Feature 위주로 학습이 진행되기 때문에 x축 방향 위주로 파라미터가 갱신되며 최적화가 진행됩니다.

      데이터를 정규화하게 되면 위의 문제점을 해결할 수 있습니다.
      즉, 그림 1 우측처럼, 데이터 범위의 차이가 작아지기 때문에,
      모델 학습 시 모든 Feature마다 파라미터가 유사한 중요도를 갖고 개선되기 때문에 최적화 과정이 개선되는 효과가 있습니다.
  4. ReLU (Rectified Linear Unit)
    1. ReLU 활성화 함수는 선형 변환된 데이터에 비선형성을 추가합니다. 
      입력 값이 0보다 크면 그 값을 그대로 출력하고, 0보다 작으면 0을 출력하는 함수인데요

      결론적으로 포즈 데이터에 비선형성이 도입되어서, 네트워크가 더 복잡한 패턴과 특징을 학습할 수 있게 됩니다. 
  5. Dropout 0.5
    1. 드롭아웃은 Overfiting(과적합)을 방지하는 데 사용되는 기술 입니다.
      학습과정에서 무작위로 노드를 선택하여 그 노드를 무시하고 학습을 진행합니다. 
      여기서 0.5는 무작위로 선택되는 노드의 비율을 나타냅니다.

      결론적으로 포즈 데이터의 노이즈와 변동성을 감소시키고, 더 일반화된 특징을 학습하게 됩니다.

위 과정을 2번 반복함으로써 Lifting Network는 더 복잡한 패턴과 특징을 학습할 수 있게 되었습니다. 

사진 a. 아키텍쳐

 

사진 b. 정규화가 필요한 이유(https://www.jeremyjordan.me/batch-normalization/)

한계점

위 방법을 이용해서 3D 기반으로 Single Person 포즈를 추정하였습니다.

해당 모델은 3D 인간 포즈 추정 방법들이 주로 단일 인물에 초점을 맞추었기 때문에

여러 인물이 있는 씬에서의 포즈 추정에는 적합하지 않았습니다. 

또한, 카메라와 인물 간의 거리를 정확하게 추정하지 못하는 문제도 있었습니다. 

 

현재는 위 문제점들과 그 외에 여러 문제점들을 해결하는 여러 방법론들이 제시되고 있습니다.

그래서 3D Multi-Person Pose에 대해서는 서울대학교에서 발행한 논문을 참고하여 알아보겠습니다.

 

 


Multi-Person 3D Pose

이번에 살펴볼 논문은 서울대학교와 현 Meta 문경식 연구원님의 3DMPPE(2019) 논문을 입니다.

등장배경

기존의 3D 포즈 추정 방법들은 단일 인물에 대한 포즈만을 추정하는데 초점을 맞추었으며, 
이러한 방법들은 여러 인물이 있는 씬에서의 포즈 추정에는 적합하지 않았습니다. 

또한, 카메라와 인물 간의 거리를 정확하게 추정하지 못하는 문제도 있었습니다. 
이러한 한계를 극복하고, 단일 RGB 이미지에서 여러 인물의 3D 포즈를 정확하게 추정할 수 있는 방법을 제시 하기 위해

개발되었습니다. 

 

제안된 방법은 카메라와의 거리를 고려하여서 여러 인물 3D 포즈를 추정하는 방식입니다.

자세한 내용은 아키텍쳐를 분석해보면서 말씀드리겠습니다.

아키텍쳐 분석

1. Input Image 

  • 초기 입력으로 포즈를 추정하고자 하는 여러 인물을 포함 한 RGB 이미지를 사용합니다.

2. DetectNet

  • DetectNet은 입력 이미지에서 인물을 탐지하는 네트워크로써
    이미지 내의 각 인물에 대한 바운딩 박스를 출력합니다.

    해당 논문에서 DetectNet은 컨볼루션 신경망 (CNN) 중 Mask RCNN을 기반으로 하며, 
    이미지의 특징을 추출하여 인물의 위치를 정확하게 탐지합니다.

3. Cropped Humans

  • DetectNet에 의해 탐지된 각 인물에 대한 바운딩 박스를 사용하여 원본 이미지에서 인물을 잘라냅니다. 
    이렇게 잘라낸 이미지 조각을 'Cropped Humans'라고 합니다.

    따라서 이 과정을 통해 각 인물에 대한 별도의 이미지 조각을 얻습니다.

4. RootNet

  • CNN기반으로 하며, cropped human image(잘라낸 인물 이미지)에서 3D Root Joint 좌표를 추정하는 하고,
    실제 카메라와의 거리가 얼마나 되는지 측정해주는 네트워크 입니다.  
    여기서 'Root'는 인물의 중심점 또는 기준점을 의미합니다.

5. PoseNet

  • PoseNet은 cropped human image(잘라낸 인물 이미지)에서 3D 포즈를 추정하는 네트워크입니다. 
    이 네트워크는 인물의 각 관절의 3D 좌표를 출력합니다.

    PoseNet은 CNN을 기반으로 하며, 
    잘라낸 인물 이미지의 특징을 추출하여 각 관절의 3D 좌표를 추정합니다.

https://arxiv.org/abs/1907.11346

위 와 같은 방법으로 제일 오른쪽처럼 3차원 공간에서 잘 표현되는 것을 확인하실 수 있습니다. 

 

결론

여기까지 Single Human 3D Pose, Multi Human 3D Pose 를 알아보았습니다.

요즘에는 스켈레톤 기반의 포즈를 넘어서 아래 사진과 같이 3D Shape and Pose 라고 하는 연구가 활발히 진행되고 있다고 하네요

나중에 시간이 되면 포스팅하도록 하겠습니다.

 


참고논문 

https://arxiv.org/abs/1705.03098

https://arxiv.org/abs/1502.03167

https://arxiv.org/abs/1712.06584

https://www.jeremyjordan.me/batch-normalization/

Comments