eehoeskrap / PaperReview

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

Procedural Humans for Computer Vision #12

Open eehoeskrap opened 1 year ago

eehoeskrap commented 1 year ago

Paper : https://arxiv.org/abs/2301.01161

오늘 읽어볼 논문은 Microsoft에서 공개한 "Procedural Humans for Computer Vision" 논문 입니다.

이전 연구

논문의 이전 Task는 "3D Face Reconstruction with Dense Landmarks" 인데요, 이전 논문에서는 3D Face Reconstruction 분야에서 어떻게하면 Synthetic Dataset을 가지고 Dense Landmark 성능을 끌어올릴 수 있을까에 대한 내용을 담고 있습니다.

image

더 자세히 말하자면 기존에 존재하는 68개의 face landmark는 face identity를 담기에 역부족 합니다. 예를 들면 뺨에 landmark가 없다면 광대가 높은 사람인지 알 수 없고, 눈 바깥쪽 landmark가 없다면 눈을 살짝 감고 있는지 얼굴을 찡그리고 있는지 알 수 없기 때문에 기존 연구들에서는 depth 정보를 같이 이용하거나, optical flow를 이용하여 움직임의 흐름을 추적했다고 합니다. 그래서 해당 논문에서 제안하는 방법은 landmark 개수를 703개로 늘리고, 고 품질의 synthetic dataset을 생성하여 landmark representation을 풍부하게 하고, 더 정확하게 reconstruction을 하게 됩니다.

Introduction

이 연구에 이어 본 논문에서는 synthetic dataset으로 3d face landmark 및 3d reconstruction 분야에서 성능 향상을 입증했으니, 문제를 전체 파이프라인에 적용하기 위해 "full body"로 확장시킵니다. 참고로 synthetic dataset의 이점은 개인 정보 문제, 주석의 일관된 품질이 있습니다.

본 논문에서 full body 모델은 face 쪽은 이전 연구 결과물을 사용하고, hand는 SMPL-H 모델을 사용, body는 MONO (with SMPL) 모델을 사용하였다고 합니다. SMPL-H 모델과 MONO 모델을 결합한 연구 결과물 "Embodied Hands: Modeling and Capturing Hands and Bodies Together" 을 이용하였습니다.

image

synthetic dataset을 만드는 전체 파이프라인은 아래와 같습니다.

image

이러한 synthetic data를 기반으로 만들 수 있는 GT 종류는 아래와 같습니다.

image

Pose Library

본 논문에서 Pose 분야 데이터는 30 fps 환경에서 약 2백만개 이상의 프레임을 갖고 있으며 약 19시간 분량이라고 합니다.

여기서 motion capture 데이터를 수집할 때 시퀀스의 시작이 T-Pose 자세로 시작하는 경우가 많은데, pose를 샘플링 할 때 이 T-Pose의 비율이 많기 때문에 GMM으로 pose를 분류해보면 T-Pose의 비율이 실제로 상당 높았고, 샘플링 할 때 이 비율을 줄이기 위해 T-Pose에 대한 가중치를 낮췄다고 합니다. 그리고 이러한 pose는 landmark detection task에서 학습 시 유용하지 않기 때문에 절대 관절 각도 평균(mean absolute joint angles)이 높은 pose들이 학습에 유용할 것이라고 판단하여 이러한 pose에 대해 가중치를 높였다고 합니다. 이렇게 샘플링 한 pose는 아래와 같습니다.

image

이 task에서 landmark regression을 수행할 때 사용되는 sparse, dense 모델은 아래와 같습니다. sparse landmark는 36개, dense landmark는 무려 1428개로 만들어졌네요!

image

landmark 학습 시 입력 사이즈는 256으로 설정하고, sparse landmark를 학습하기 위해서는 MobileNetV2 모델을 기반으로 학습하고, dense landmark를 학습하기 위해서는 ResNet101 모델을 사용하였다고 합니다. loss는 Gaussian Negative Log Likelihood (GNLL)를 사용하여 landmark 마다의 불확실성(uncertainty) 값을 예측한다고 하네요.

Hand and face sub-networks

그리고 body에 이어 hand, face landmark도 regression을 수행하게 되는데, 이 때 같은 방법을 사용하여 regression을 하면 face, hand의 성능이 좋지 않다고 합니다. 왜냐면 256 입력 크기에서 hand는 굉장히 작기 때문에 발생한다고 하네요. 또한 hand는 다른 joint에 비해 자유도가 높고, occlusion이 많이 일어나기 때문에 어렵다고 합니다. 그래서 hand 만을 포함하는 ROI를 설정하여 별도의 network를 둡니다.

image

입력 사이즈는 128로 설정한 뒤, sparse의 경우 MobileNetV2를 그대로 사용하고, dense의 경우 ResNet18 모델을 이용했다고 합니다. 그리고 hand의 움직임이 실제에서는 굉장히 빠르기 때문에 motion blur의 빈도를 늘렸다고 합니다.

이렇게 task를 나누게 될 때 inference 할 때는 body 먼저 예측 하고, 이 결과를 이용하여 hand 주변 ROI를 설정한다고 하네요. 그리고 학습 시에는 left hand만을 사용하여 학습합니다.

face도 동일한 로직으로 수행됩니다.

Results

결과는 아래와 같습니다.

image

결과 중 주목할 만한 부분은 아무래도 정확도가 높은 synthetic dataset을 사용하다 보니, 실제로 occlusion이 발생한 joint에 대한 불확실성이 굉장히 높게 잘 나온다고 합니다. fail case는 아래와 같습니다.

image

extreme pose, heavy (self-)occlusion, loose clothing, missing, 보철(prosthetic) limbs 등에 의해 fail case는 여전히 존재한다고 합니다. 이유는 synthetic dataset에서 명시적으로 모델링되지 않았기 때문이라고 하네요. 다만, 이를 제외한 일반적인 오류에 대해서는 잘 알 수 있다고 합니다. 향후 작업에서는 실제 데이터에서 이러한 문제가 발생하는 것의 격차를 줄이는 task를 수행한다고 합니다.

eehoeskrap commented 1 year ago

GaussianNLLLoss

image
eehoeskrap commented 1 year ago

이전 task에서의 dense landmark prediction 방법은 아래와 같습니다.

image

먼저 circular 2D Gaussian의 probability density function을 이용하여 각 landmark를 random variable로 예측하고, $L_i$에서 $μ_i$예측된 landmark의 위치 $x_i, y_i$를 나타내고, $σ_i$는 불확실성의 척도를 나타냅니다.

image

이 loss는 landmark position에 대해 L2 loss로 학습한 것 보다 결과가 더 좋다고 합니다. optimizer는 AdamW를 사용했다고 하네요.

가려졌을 때의 예측 결과는 빨간색, 가려지지 않았을 때의 예측 결과는 녹색으로 표시되었습니다.

image

실험 결과는 아래와 같습니다.

image image