Paper/Human

gDNA: Towards Generative Detailed Neural Avatars

침닦는수건 2024. 5. 30. 13:11
반응형

내 맘대로 Introduction

 

pose, shape 파라미터 넣으면 naked human body는 얻을 수 있다. SMPL이 대표적인 예. 여기서 detail 파라미터가 만약 존재한다면 clothed human body까지 얻을 수 있지 않을까? 

 

위 질문으로 시작한 논문 같다. 3D SCAN 데이터 대량을 활용해서 SMPL 위에 얹은 deformation (cloth) 파라미터를 학습시킨 내용이다. 

 

결과적으로 pose, shape, detail 파라미터를 넣으면 clothed human body mesh가 나온다.

 

메모


1) detail 파라미터 + shape 파라미터 넣으면 Canonical volume (3D) 상의 occupancy랑 normal을 뱉어주는 네트워크를 학습시키는 것이다. 

2) canocnial volume 상의 canonical human은 T-pose의 SMPL이다.

3) detail, shape 파라미터로 만든 mesh를 forward skinning + pose 변화 이후 3D SCAN과 supervision, rendered normal 과 2D supervsion을 통해 학습한다.



Canonical 3D representation은 위 그림과 같다.

1) shape 파라미터 (SMPL꺼 아님)를 받으면 정해진 3D voxel에 T- pose Occupancy를 채워준다. (T pose smpl일텐데 shape 파라미터 없이 그냥 body size independent T pose SMPL인 듯)

2) voxel 하나 하나마다 nerf 처럼 occupancy, normal 예측.

occupancy feature가 normal 예측에 들어가는건 VolSDF류랑 같음.



canonical 3D -> deformed 3D로 변형하기 위해선 skinning weight가 필요함 (SMPL bone으로 조종하기 위한)

canonical point -> skinning weight 추정하는 네트워크 학습하는 식.



구체적인 입력은 다음과 같음

1) skinning weight

deform(canonical point, smpl shape) + shape 파라미터

smpl bone을 이용해 skinning하는 것이므로 smpl shae 파라미터와 풀어야 한다. 

근데 기존 갖고 있는 shape 파라미터는 smpl shape 파라미터와 다름

따라서 M (warping field) 모듈을 이용해 canonical point -> smpl point로 옮겨주고 skinning weight 계산

smpl bone, smpl pose 파라미터로 LBS 해서 최종 deformed point 생성


deformed point 와 3D SCAN 간의 비교를 해야함. 

nearest point 찾아서 correspondence로 지정

후에 loss 계산



이렇게만 했을 때 학습이 잘 안됐나봄.

2D rendered normal을 만들어서 adversarial loss로 보강.


반응형