eehoeskrap / PaperReview

꾸준희의 꾸준하게 논문 읽기 프로젝트 ✨
8 stars 0 forks source link

Diffusion-Based 3D Human Pose Estimation with Multi-Hypothesis Aggregation #9

Open eehoeskrap opened 1 year ago

eehoeskrap commented 1 year ago

Paper : https://arxiv.org/pdf/2303.11579v1.pdf GitHub : https://github.com/patrick-swk/d3dp

오늘 리뷰할 논문은 Diffusion-Based 3D Human Pose Estimation with Multi-Hypothesis Aggregation 입니다. 드디어 Pose Estimation을 Diffusion으로 풀어내는 논문이 등장했네요.

이 논문은 Joint-wise reProjection-based Multi-hypothesis Aggregation(JPMA)을 이용한 Diffusion 기반 3D Pose estimation(D3DP) 방법 입니다. D3DP는 single 2D pose에 대해 여러가지 3D Pose hypotheses를 생성합니다. GT 3D Pose를 random distribution으로 diffusion 시키고, uncon-taminated 3d pose(오염되지 않은 3d pose)를 복구하기 위해 2d keypoint에 조건이 지정된 de-noiser를 학습 시킵니다.

D3DP는 기존 다른 3D Pose Estimator와 호환 될 수 있으며, 사용자가 두 가지 사용자 정의 가능한 매개변수(customizable parameter)를 통해 추론 하는 도중 효율성과 정확도의 균형을 맞출 수 있도록 합니다. 또한 JPMA는 D3DP에 의해 생성된 여러개의 hypotheses를 single 3d pose로 조합하여 사용할 수 있도록 제안합니다. 3d pose hypotheses를 2d camera plane에 re-projection 하고, re-projection error를 기반으로 joint-by-joint 로 best hypotheses를 선택하고, 선택한 joint를 final pose로 합칩니다.

제안된 JPMA는 joint level에서 aggregation을 수행하고, 2d prior 정보를 사용하게 됩니다. Human3.6M, MPI-INF-3DHP 데이터세트에 대해 SOTA를 달성하였네요.

Introduction

본 논문에서는 2D Pose Estimator(CPN, OpenPose)를 사용하여 2D Joint 위치를 추정한 다음 이 2D 정보를 3D 공간에 매핑하고, 그 다음 2D에서 3D로 lifting 하는 과정에 중점을 둡니다. 기존 연구들은 deterministic 접근법과 probabilistic 접근법의 두 가지 방법으로 나눠집니다.

deterministic 접근법은 각 이미지에 대해 3D Pose를 생성하도록 설계되었고, probabilistic 접근법은 2D에서 3D로 lifting을 확률 분포로 나타내고, lifting process에서 uncertainty 및 ambiguity를 허용하는 각 이미지에 대한 세트를 생성하게 됩니다. 이 논문에서는 probabilistic에 중점을 두지만, deterministic 방법의 장점을 결합합니다. 즉, 실제 모델을 사용 할 때 여러가지 pose hypotheses 중에서 하나의 pose를 고르는 작업(aggregate)을 하게 됩니다.

이전의 probabilistic 접근법은 다음과 같은 단점이 있다고 합니다.

  1. 기존 방법들은 특별한 모델 설계에만 의존하고, 호환성이 좋지 않고, 실제 필요에 따라 hypotheses의 수를 지정 할 수 없음
  2. 기존 방법은 여러 가지 가능한 hypotheses을 생성하더라도, 실제 사용할 3D Pose를 적절히 고르는 것이 필요함

보통의 방법들은 pose level에서 여러 hypotheses에 대해 평균을 내고 최종 출력을 얻는다고 하네요. 이는 joint간의 차이와 2d keypoint의 사전 분포를 고려하지 않기 때문에 실제적으로 평균을 낸 결과는 모든 hypotheses 중 가장 좋은 것 보다 훨씬 나쁜 결과를 가져다준다고 하네요...

그래서 본 논문에서는 첫번째 문제를 해결하기 위해 DDPM(Denoising Dif-fusion Probabilistic Model)을 활용하고, D3DP(Diffusion-based 3D Pose estimation)라는 새로운 접근 방식을 제안합니다. 아래 그림을 참고해보면, GT 3D Pose에 다양한 수준의 Noise를 추가하고, 학습 중에 원본 데이터를 예측하기 위해 Denoiser를 학습하는 과정이 포함되며, 추론 하는 동안에는 Gaussian Distribution에서 pure noise를 샘플링 하여 initial 3D Pose를 생성한다고 합니다. 이러한 pose는 여러 3d pose hypotheses를 예측하기 위해 2d keypoint를 confidtion으로 하는 denoiser로 전송이 됩니다.

image

따라서 본 논문의 main contribution은 아래와 같습니다. **1. 기존 3d pose estimator와 호환 가능 및 customize 가능한 diffusion 기반의 3d human pose estimation (D3DP) 방법을 제안

  1. 여러 hypotheses가 single prediction으로 결합 될 때 joint level에서 정보를 결합하여 높은 수준의 결과를 냄
  2. final 3d pose 예측 정확도를 향상시키기 위해 joint level에서 2d prior를 이용하는 JPMA 방법 제안
  3. 3d human pose estimation 벤치마크에서 SOTA 달성**

Method

D3DP는 2개의 Markov chain을 사용합니다. 하나는 데이터에 noise를 입히는 diffusion process, 다른 하나는 denoiser에 대해 오염되지 않은 데이터를 재구성(reconstruction)하는 reverse process으로 나뉘어집니다.

image

Joint-Wise Reprojection-Based Multi-Hypothesis Aggregation (JPMA) 이전의 방식에서는 주로 3d pose hypothesis를 생성하는데 초점을 맞추고 있으며, 이를 aggregation 하는 방법은 거의 내놓지 않았다고 합니다. 이러한 가설을 효율적으로 aggregation 하기 위해 GT와 가장 가까운 H를 구하여 두 가지 level(pose, joint)에서 aggregation을 수행합니다. 직관적인 비교 그림은 아래 그림 상단에 설명되어 있습니다. pose level(녹색)에서 H가 선택되면 모든 joint에 대한 결과로 사용되고, joint 마다 또 결과가 달라질 수 있습니다. joint level 에서 best H를 선택하는 것은 3d pose를 전체적으로 보는 pose level과는 달리 H를 분해하고, 재결합하는 과정을 거칩니다. 각 H에서 joint의 일부(더 나은 성능을 가지는 joint)만 joint level에 사용된 다음, 선택된 joint가 3d pose로 조립된다고 하네요. 이러한 방식으로 각 H의 장점이 극대화 된다고 합니다.

2d keypoint에서 3d pose에 대한 depth 정보를 포함하지는 않지만, 3d 공간에서 어디쯤에 있는지에 대한 human joint의 가능한 위치를 나타내게 됩니다. 이러한 방식을 바탕으로 JPMA 방법을 제안하여 아래 그림 하단과 같이 3d pose H를 3d 카메라 평면에 re-projection 하기 위해 intrinsic camera parameter를 사용합니다. (핀홀 카메라의 경우 4개, 왜곡된 핀홀 카메라의 경우 9개)

image

Evaluation

evaluation은 Human3.6M, MPI-INF-3DHP(3DHP), 3DPW 총 3가지 데이터세트를 사용하였습니다. 정량평가 결과는 아래와 같습니다.

image image

평가 시 다음과 같은 방법을 사용했습니다.

아래와 같이 각 방법을 사용하였을 때 MPJPE는 아래와 같습니다.

정확도와 속도는 아래와 같습니다. infer FPS가 천단위네요..ㅎ ㅎ ㅎ (NVIDIA RTX 3080 Ti GPU 기준)

H와 K에 따른 실험 결과입니다.

full version : https://eehoeskrap.tistory.com/698