Paper/Human

[Human] SCANimate: Weakly Supervised Learning of Skinned Clothed Avatar Networks

침닦는수건 2023. 3. 30. 23:55
반응형

SCANimate: Weakly Supervised Learning of Skinned Clothed Avatar Networks

내 맘대로 Introduction

이 논문은 3D Scan으로 얻은 human point cloud가 여러 sequence로 있을 때, 해당 사람의 animatable avatar를 생성하는 방법을 소개한다. 한마디로 scan to avatar 방법이다. 
 
논문은 크게 두 단계로 나뉘며, 첫번째는 Scan sequence 하나 하나마다 canonical pose, 즉 기본 자세로 unpose하는 단계이고 두번째는 unposed scan sequence를 모두 다 합쳐 하나의 아바타로 만드는 단계이다. 
 
한 사람을 정밀 복원하는 것이 목표로 다른 사람까지 복원해내는 범용적인 형태가 아닌 알고리즘이고 실시간성과도 거리가 먼 알고리즘이다. 다만 그 퀄리티와 animatable하게 만들었다는 점에서 contribution이 있는 것 같다.
 

핵심 내용

STEP 1

Canonicalization이라고 불리는 STEP 1은 주어진 3D scan sequence의 매 프레임마다 각각 독립적으로 적용된다. 앞서 언급했듯이 매 프레임의 3D scan을 canonical pose, T-pose로 자세 변경하는 작업이다. 
 
이 논문 역시 사람의 다양한 자세를 아무런 가이드 없이 커버하는 것은 무리가 있다고 판단했는지 3D scan 내부에 SMPL을 fitting한 뒤 이를 활용했다. 참고로 SMPL은 Pymaf라는 알고리즘을 이용해서 fitting했다고 한다.
 

대략의 컨셉은 3D scan point cloud 중 한 point를 잡고 이 point에 해당하는 skinning weight를 계산하는 것인데 다른 말로 forward와 backward, LBS weight와 inverse LBS weight를 찾으면 되는 문제라고 정의했다. skinning weight와 동시에 필요한 joint와 joint transformation을 SMPL 것을 사용한다. 
 

LBS weight와 inverse LBS weight는 각각 별개의 네트워크를 이용해 추정하는 값이고 매 프레임마다 다른 네트워크가 되겠다. inverse LBS weight는 SMPL의 pose latent embedding을 같이 넣어줘서 사용한 것 같다. (연산 효율성은 정말 포기한 것 같다.)
 

그리곤 3D scan의 한 point를 unpose(inverse LBS)해서 canonical space로 옮긴 뒤 이를 다시 pose(LBS)했을 때 제자리로 가야한다는 cyclic consistency를 이용해 LBS와 inverse LBS를 하나의 loss function으로 묶어 학습한다.

loss를 디테일하게 살펴보면, 일단 SMPL skinning weight를 과하게 벗어나면 안되니 regularization term으로 body-guided loss들이 있다. 두 개인 이유는 하나는 body surface와 body surface 근처를 나눴기 때문이다. 

그리고 본체인 cyclic loss는 weight level에서, vertex level에서 총 2개가 있다.
 

STEP 2

그 다음은 canonicalized scan sequence로 부터 하나의 animatable avatar를 만들어내는 작업이다. 그 방법은 canonical space에서 human body surface를 표현하는 SDF function, f(x) 하나를 학습시키는 것이다. 
 

하나의 f(x)에서 예측된 SDF 값은 모든 canonicalized scan 표면을 이용해 만든 각각의 SDF 값과 일치해야 하도록 학습한다. 디테일은 복원하는데 normal 정보도 중요하니 f(x)가 예측한 SDF를 이용해 만든 surface normal도 canonicalized scan surface 과 일치하도록 학습한다. 
 
학습 효율성을 높이기 위해 (16)과 같은 eikonal loss나 (17)과 같은 표면 외 위치에서의 값을 억누르는 regularization term을 추가해두었다. 
 

하나의 팁은, 그냥 point, x만 던져주니 학습이 좀 더뎠고 x가 신체 어느 부위인지 정보를 같이 넣어주니 효과적이었다고 한다. 단순히 fitted SMPL pose parameter를 넣어주는 방식으론 부족해서 W라는 weight matrix를 이용해 x가 해당하는 신체 부위의 SMPL 파라미터만 같이 넣어주어 사용했다고 한다. 
 

Results

아바타 자체의 외형에만 집중했을 때 기존 방법 대비 디테일을 더 잘 살리는 결과를 보여주었으며,

animatable을 지향한 만큼 새로운 임의의 자세로 변경했을 때 자연스러움이 더 뛰어나다고 한다. 

반응형