728x90
반응형

 

Paper : https://arxiv.org/pdf/2303.11579v1.pdf

GitHub : https://github.com/patrick-swk/d3dp

 

GitHub - paTRICK-swk/D3DP: The PyTorch implementation for "Diffusion-Based 3D Human Pose Estimation with Multi-Hypothesis Aggreg

The PyTorch implementation for "Diffusion-Based 3D Human Pose Estimation with Multi-Hypothesis Aggregation" - GitHub - paTRICK-swk/D3DP: The PyTorch implementation for "Diffusion-Bas...

github.com

 

 

오늘 리뷰할 논문은 Diffusion-Based 3D Human Pose Estimation with Multi-Hypothesis Aggregation 입니다. 드디어 Pose Estimation을 Diffusion으로 풀어내는 논문이 등장했네요. 코드는 약 2일 전에 공개되었습니다 ㅎㅎ 

 

이 논문은 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 접근법은 여러 3d pose hypotheses를 예측하기 위해 생성 모델(GAN) 또는 normalizing flow를 사용하였다고 하네요. 하지만 이런 기술 발전이 엄청난데도 불구하고 다음과 같은 단점이 있다고 합니다. 

 

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로 전송이 됩니다. 

 

 

 

이전 접근 방식과 비교하였을 때 본 논문은 두 가지 장점을 갖습니다. 

 

1. denoiser는 기존 3d pose estimator를 backbone으로 사용할 수 있는 호환성을 지님.

그래서 deterministic 방법론에서 probabilistic 방법론 버전으로 쉽게 변환이 가능함 

2. hypotheses의 수는 추론 도중 customizing 될 수 있음. 결과를 점진적으로 개선 할 수 있는 adjustable parameter를 지원함.

더 많은 hypotheses와 interation은 더 큰 계산 오버헤드를 일으키면서 더 나은 결과를 가져오게 됨. 이 두 가지 매개변수는 제한된 컴퓨팅 리소스에서 성능과 효율성 사이의 균형을 맞추는데 도움이 됨 

 

또한 본 논문에서 두번째 문제 (여러 가지 가능한 hypotheses을 생성하더라도, 실제 사용할 3D Pose를 적절히 고르는 것이 필요한 문제)를 해결하기 위해서 여러 3d pose hypotheses를 하나의 3d pose로 aggregation 합니다. joint level에서 aggregation의 upper-bound performance는 pose level 보다 훨씬 높다고 합니다. 

 

이러한 결과는 3d pose hypotheses를 다시 2d camera plan으로 re-projection 하고, re-projection error를 기반으로 best hypotheses를 선택하는 JPMA(joint-wise reprojection-based multi-hypothesis aggregation) 방법을 제안합니다. 이렇게 선택된 joint는 final output으로 완전한 3d pose로 assemble 됩니다. 

 

또한 2d keypoint의 marginal distribution(한계 분포)가 고려되기 때문에 final 3d pose의 posterior distribution를 모델링 하는데도 도움을 줍니다. pose의 평균을 내는 방식과 비교하여 JPMA는 joint level의 geometric prior를 multi-hypothesis aggregation에 통합하게 되므로 예측 성능이 향상됩니다. 

 

따라서 본 논문의 main contribution은 아래와 같습니다. 

 

1. 기존 3d pose estimator와 호환 가능 및 customize 가능한 diffusion 기반의 3d human pose estimation (D3DP) 방법을 제안 

2. 여러 hypotheses가 single prediction으로 결합 될 때 joint level에서 정보를 결합하여 높은 수준의 결과를 냄 

3. final 3d pose 예측 정확도를 향상시키기 위해 joint level에서 2d prior를 이용하는 JPMA 방법 제안 

4. 3d human pose estimation 벤치마크에서 SOTA 달성 

 

 

 

Method

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

 

Training 

학습은 아래 그림 왼쪽 그림과 같이 이루어지며, time step $t$를 샘플링 합니다. 그 다음 GT 3D Pose인 $y_0$은 t-step에서 independent gaussian noise를 추가하여 손상된 pose $y_t$를 생성합니다.

 

 DDPM에 따르면 이 과정을 아래 식으로 나타낼 수 있다고 합니다. 여기서 $\bar{\alpha_t} := \prod_{s=0}^{t} \alpha_s$ 이고, $\bar{\alpha_t} := 1 - \beta_t $ 이며, $\beta_t$는 cosine noise variance schedule 이라고 합니다. 

 

 

$T$가 충분히 크면 $q(yT)$의 분포는 거의 isotropic(등방성) gaussian distribution 이라고 합니다. 참고로 등방성 개념은 물리학에서 나오는 개념으로, 밀도가 구의 형태를 지니게 됩니다.

 

 

결과적으로 $y$는 noise 없이 3d pose $y_t$를 재구성 하기 위해 2d keypoint $x$ 및 timestep $t$에 따라 denoiser $\mathfrak{D}$로 전송됩니다. 

 

 

전체 framework는 간단히 MSE Loss에 의해 계산됩니다. 

 

 

 

Inference

noise 입혀진 데이터는 diffusion 과정을 거친 후 gaussian distribution로 잘 근사되었기 때문에 unit gaussian으로 부터 noise를 샘플링 하여 H initial 3d pose $y_{0:H,T}$를 얻을 수 있고, 그림 2 오른쪽에서 볼 수 있듯 실현 가능한 3d pose hypotheses $\tilde{y}_{0:H, 0}$은 $\tilde{y}_{0:H, T}$를 denoiser에 전달하여 예측됩니다. 

 

그 후 $\tilde{y}_{0:H, 0}$은 DDIM(Denoising diffusion implicit model)을 통해 next timestep 에 대한 denoiser에 대한 입력으로 noise 3d pose $\tilde{y}_{0:H, T'}$를 생성하는데 사용된다고 합니다. 이를 식으로 나타내면 아래와 같습니다. 

 

 

여기서 $t, t'$는 각 current, next timestep 입니다. initial $t$는 $\tilde{y}_{0:H, T}$의 독립적인 standard gaussian noise 이고, 나머지는 아래와 같습니다. 여기서 $\epsilon_t$는 timestep t에서 noise이고(식 1에서 파생된), $\sigma_t$는 diffusion process의 확률적 정도를 제어한다고 하네요. 

 

 

그러고나서 $y_{0:H, t'}$를 사용하여 $\tilde{y}_{0:H, 0}$을 denoise의 input으로 다시 생성할 수 있고, 이러한 과정은 $K$ 만큼 반복될 수 있습니다. 이러한 방식으로 제안된 방법은 gaussian distribution에서 여러번 샘플링하여 사용자 정의 가능한 수의 hypotheses를 지원합니다. 또한 denoiser는 한번만 학습되지만 추론 중에 최종 예측을 점진적으로 개선하기 위해 여러번 사용 될 수 있다고 하네요. 따라서 사용자들은 가설 $H$와 얼마나 반복할 것인지에 대한 $K$를 지정할 수 있습니다. 

 

 

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개)

 

 

그 다음 각 joint에 대해 각 H와 각 H에 입력된 2d keypoint $x$ 사이의 거리를 계산하고, 최소 거리를 갖는 joint H를 선택합니다. 이러한 과정을 통해 서로 다른 joint에 대해 서로 다른 H를 선택하고, 선택한 모든 joint를 다음과 같이 최종 예측으로 나타낼 수 있습니다. 여기서 $i$는 joint index이고, $P(·)$는 reprojection function 입니다. 

 

 

Architecture

 

본 논문에서는 backbone으로 MixSTE 모델을 사용하고, 약간의 수정을 통해 probabilistic 방식에서 deterministic 방식으로 변환 할 수 있습니다. 

 

2D conditioning

본 논문의 목표는 2d keypoint에서 3d pose를 추정하는 것이기 때문에 noise가 있는 3d pose $y_{0:H, t}$만 사용한다면 denoiser에 대한 입력으로는 충분하지 않을 수 있어서 2d keypoint는 denosing process를 가이드 해주는 추가 정보로 사용됩니다. 또한 cross attention, concatenation과 같은 방법으로 2d keypoint와 noise가 있는 3d pose를 결합합니다. 

 

Timestep embedding

denoiser는 noise level이 다른 3d pose를 처리 해야 하기 때문에 gaussian noise가 추가된 횟수를 나타내는 현재 time step에 대한 정보를 제공해야합니다. 즉, gaussian noise가 얼마나 추가되었는지에 대한 정보를 담고 있어야해서 transformer positinal embedding과 같은 방식으로 input embedding 뒤에 추가합니다. 

 

이러한 두 가지 수정 사항은 무시해도 될 만큼의 계산량을 가지게 되며, JPMA는 주로 re-projection process로 구성되기 때문에 거의 계산량이 없다고 합니다. 따라서 JPMA를 사용하는 D3DP의 총 계산 오버헤드는 거의 backbone만 사용할 때의 오버헤드와 같다고 하네요. 

 

 

 

Evaluation 

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

 

 

 

 

 

 

정성 평가 결과는 아래와 같습니다. 

 

 

 

 

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

P-Agg : pose-level aggregation method (depth ordinal guidance, mean, mean-shift) 사용

J-Agg : JPMA을 사용하여 최종 예측 생성, 각 joint는 가장 작은 unit으로 취급 

P-Best : GT와 가장 가까운 3d pose hypothesis, 이는 P-Agg 성능의 upper bound

J-Best : GT와 가장 가까운 joint hypothesis, 선택된 joint를 final 3d pose으로 합쳐줌, J-Agg 성능의 upper bound 

 

 

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

 

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

 

 

 

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

 

 

augmentation은 flip, diffusion flip 만 주나 봅니다. diffusion flip을 썼을 때 가장 성능이 좋다고 합니다. 

 

728x90
반응형