상세 컨텐츠

본문 제목

[논문 리뷰 스터디] A simple yet effective baseline for 3D human pose estimation

심화 스터디/논문 리뷰 스터디

by Imjjun 2023. 5. 4. 02:33

본문

#0 3D pose estimation?

 

 본 분야 도메인 지식도 많지 않기도 하고(사실상 전무), 현재 필자가 처한 다양한 상황(...)으로 인해 본 논문을 리딩하면서 human pose estimation에 필요한 기본적인 내용들을 간단하게 파악할 수 있는 논문으로 본 논문을 선택했다.

 3D human pose respresentation에 대한 개괄적인 이해와, 2차원에서 3차원으로 이를 어떻게 고차원화시키는지 눈여겨서 읽어볼 필요가 있을 것이다.

 

#1 Introduction

 

현존하는 대부분의 Depiction들은 2차원으로 구성된 비디오, 이미지 들이 대다수이나, 이러한 representation들은 전통적으로 정보 전달에 중요한 역할을 수행하였다. 허나, 인간처럼 '깊이'에 대한 이해를 통해 대다수 machine에 적용하기 위해서는 공간 추론 능력은 굉장히 중요하다. 이러한 점에서 본 논문은 spatial reasoning problem: 3d human pose estimation에 주목하였다.

 

본 논문에서는 이미지에서 직접 3차원 pose estimation을 뽑아내는 것이 아니라, 2D pose estimation으로부터 3차원 pose estimation을 뽑아냈다. 3차원 이미지에 대해서 invariant하기 위해서는 많은 요인들을 고려해야 하는 알고리즘을 가지고 있어야 하는데, 2D와 달리 3D의 경우 대규모 GroundTruth 데이터셋이 없어 추론에 있어 어려움이 존재했다. 따라서 본 논문에서는 3D pose estimation을 잘 연구된 2D pose estimation과 2d joint(관절)로부터 3D pose estimation을 이끌어내는 방식을 연구하였다.

 

이는 두 가지 활용가능성을 주는데 첫째, 기존의 2D pose estimation으로부터 invariance를 확보할 수 있으며, data-hungry-algorithm에 대해, 저차원에서 고차원을 추론해야 하는 데이터셋의 작업에 있어 대량의 3D mocap 데이터를 활용할 수 있다.

 

이 문제에 대한 주요 기여는 SOTA 시스템보다 조금 더 나은 성능과 속도를 가진의 네트워크 디자인 및 분석이다. 이러한 정확성과 성능의 이유는 간단한 아이디어 set으로부터 기인하는데, camera coordinate frame으로부터 3차원 관절을 파악하거나 residual connection, batch normalization을 이용한 것 등이다. 이러한 간단함 덕분에 더 빠르게 수행될 수 있었다.

 

#2 Previous work

 

- Top-down 3D reasoning

  * 3D pose estimation에는 Top-down/Bottom-up 방식이 존재한다. Top-down은 사람을 먼저 탐지하고, 그 사람에서 관절을 뽑아내는 기법이고, Bottom-up은 관절들을 모두 찾아낸 후, 이를 그룹화하여 representation을 구현해내는 기법

  Sparse 2d Projection들로부터 human motion을 받아서 이를 Top-down information에 적용시킨다.

 

- 2d to 3d joint

  classic problem으로, binary decision tree를 기반으로 joint constraint(관절 구동 제한 범위)를 가지치기하는데, 이것은 single solution을 가질 수 없다는 문제를 가진다. 따라서 이를 대량의 데이터셋으로 nearest neighbor algorithm에 넣어 해결하고자 하는 시도도 있었으며, overcomplete bases를 만들거나 extreme human poses의 RKHS를 만드는 방법 역시 시도되었다.

  * overcomplete bases: 선형 조합들의 집합에서 특정 phi가 빠지더라도 그 completeness를 유지하는 system

  +) completeness는 유한개의 선형 조합의 특정 element로 X의 모든 element가 임의로 근사되는 것을 의미함

  _ (정확하지 않을 수 있음)

  * RKHS: 모든 특징 맵은 특징 공간 안에 있으며, 재생산이 가능하다 --> 특정 집합 X보다 크다.

 

 - Deep-net-based 2d to 3d joints

  - Stacked hourglass architecture: Hourglass [Residual connection + Down/Up sampling]이 사용되어 쌓인 신경망

  - Pairwise distance matrix(DM): invariant up to rotation, translation, and reflection

 본 논문에서는 2d joint detection에서부터 3d keypoint를 직접적으로 추정하는 것이 지양되었으며, 잘 디자인된 신경망으로서 3d keypoint regression을 수행하였다. (direct 3d joint representation이 신경망이 아닌 volumetric approach로 선행된 예가 있음)

 

 - 2d to 3d Angular pose

  3D pose estimation에서 두번째 가지는 angle 추정인데, 차원의 저주 문제를 낮추어 주고 비교적 쉽게 representation을 표현할 수 있다는 장점이 있지만, 매우 비선형적인 mapping이기에 cost가 높고 추정이 어렵다는 단점이 있다. 따라서, 3D 관절 추정을 직접적으로 수행하였다.

 

#3 Solution Methodology

 주어진 Task인 2차원 pose estimation에 대한 3차원 pose estimation을 추정하는 것이기 때문에, R^2 차원의 x에서 R^3 차원의 x를 예측하는 데 있어 그 오차를 줄이는 것을 목적으로 한다.

 따라서, Loss에 대한 최소화를 위한 loss function을 설정하였으며, 실제로 x_i는 2d camera detector나 joint detector의 groundtruth로 얻어진다. 

 * 벡터간의 norm, 즉 두 좌표 간 유클리디안 거리의 제곱에 의하여 두 차이가 정의되며, f*는 loss function, f는 네트워크의 출력값(관절 좌표)을 의미한다. 

 

#4 Network Design

 최근에 나오는 Deep convolution network에서의 이점들을 활용하여, Linear+Batch Norm + RELU + DropOut + Residual Connection을 수행하는 Multi layer network를 구축하였다. diagram과 같이 linear 수행 후 Normalization, ReLU, dropout이 진행되며, 두번 수행 후 residual connection이 일어난다. 그리고 이 process를 두번 수행한다.

 

 2D Dataset은 정보를 비교적 덜 담고 있지만, Dense Dataset이기에 비용 효율적으로 연산이 가능하며, 네트워크의 가속화를 야기하였다. 또한 Residual Connection은 error를 10% 정도 줄여주었으며, noisy data들에 대하여 robust하게 대응하기 위하여 Batch Norm과 Dropout을 진행하였다. 물론 이 과정으로 인하여 연산 시간은 증가하였으나 시스템 성능이 전반적으로 상승하였다. 또한, Max Norm-constraint를 설정하여 각 층의 가중치의 상한값을 1로 설정하여 학습을 안정화시키고 일반화 성능을 향상시켰다.

 

#5 Data Preprocessing

 - Camera Coordinates

  $필자 생각에 가장 중요한 부분 !

   임의의 좌표 공간에서 3D 관절 추론을 하려다보면, 카메라가 사람이 바라보는 거리와 각도를 고려하기 어렵다. 따라서 아무런 변형을 가하지 않은 input 데이터를 임의의 좌표계에서 단순히 추론하는 것은 비현실적이다. 따라서 global frame으로 카메라 좌표계를 설정하여, 특정한 좌표계에 오버피팅되는 것을 예방하고 더 많은 훈련데이터를 묵시적으로 활용하도록 하였다. 그리고 이를 위하여 camera coordinate로의 inverse transform을 적용하였으며 회전과 3D groundTruth에 대한 해석이 수반되었다. 

 유의할 점은 이 camera coordinate 역시 논문 저자들이 설정한 임의의 좌표계이며, pose estimation에서 global하게 사용하는 방식은 아니다.

 

  - 2D Detection

  모델이 2D pose estimation representation을 기반으로 3D pose estimation을 수행하는 만큼, 2D Detector에 대한 선정도 이루어졌다. 당시 SOTA를 달리던 Stacked Hourglass Network와 CPM을 각각 backbone처럼 활용하였다. 또한, Human3.6M Dataset에서의 Stacked Hourglass Network의 Fine Tuning도 진행되었으며, 이미지를 Detector에 의해 계산된 중앙을 중심으로 440*440으로 Crop하여 input으로 넣었다(모델에서 256*256으로 다시 resize 됨)

 

 - Training Details: (with Tensorflow)

  * Learning rate: 0.001 + exponential decay

  * Optimizer: Adam
  * Batch size: 64

  * Weight initialization: Kaiming Initialization

  * Epoch: 200

 

#6 Experiment

 

 DMR과 본 논문의 모델과 비교한 결과이며, 각 loss는 mm 단위로 표시된다. DMR에 비해 더욱 작은 에러를 만들고 있는 것을 확인할 수 있다. 또한, Gausian Noise를 추가하였을때도, 똑같이 좋은 성능을 발휘하는 것으로 보아 노이즈에도 역시 robust한, 즉 overfitting이 크게 되지 않고 일반화가 잘 이루어졌음을 의미한다.

Stacked Hourglass network+Fine-tuning이 진행된 모델이 모든 pose part에서 가장 좋은 성능을 보여주었다.

2D representation에서 3D pose estimation을 뽑아낸 결과물은 상기된 이미지와 같다. 추가로, 논문의 저자들은 최적의 hyperparameter를 찾기 위한 실험을 진행했었는데 그 내용은 다음과 같다.

오차로 미루어보아, camera coordinates(preprocessing)으로 변환이 되지 않았을 때, 그리고 batch norm이 되지 않았을 때 가장 큰 오류의 차이가 발생했다. 이를 통해 공간적인 특징, 그리고 학습의 안정 및 수렴을 위한 Normalization이 중요하다는 것을 알 수 있다.

또한, block 개수에 대한 실험도 진행되었는데, block수를 늘리면 오히려 그 error가 증가하는 것이 관찰되었다. 연산 속도도 중요한 만큼 최적의 block 개수로 pose estimation을 하는 것이 중요했다.

 

[Reference]
https://arxiv.org/abs/1705.03098; Julieta Martinez, Rayat Hossain,Javier Romero, James J. Little, A simple yet effective baseline for 3d human pose estimation, 2017, CVPR
https://ctkim.tistory.com/entry/A-simple-yet-effective-baseline-for-3d-human-pose-estimation-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC

관련글 더보기

댓글 영역