Paper/Human

Expressive Whole-Body 3D Gaussian Avatar

침닦는수건 2024. 8. 6. 13:29
반응형

내 맘대로 Introduction

 

이 논문은 video -> SMPLX(+offset) + LBS. 비디오에서 해당 사람의 animatalbe avatar를 얻어내는 것이 목적. 

 

핵심 아이디어는 1) HybrIK-X + DECA + mmpose를 다 활용한 강한 초기화 (registration) 2) triplane으로 per-vertex offset, isotropic 3DGS 값 찾기 이다.

 

알고리즘적 진일보보다 기존 알고리즘들 잘 활용하고, 섬세하게 최적화해서 완성도를 높이는데 기여한 논문이라고 생각한다. 논문에 기재된 전처리, 후처리, 최적화 노하우 밑에 한 스텝 한 스텝 보다 높은 완성도를 위해 구른 내용이 있어 보인다. 

 

HybrIK-X, DECA에서 발생하는 noise 뿐만 아니라 mmpose 튀는 것, 2D pose에 mesh registration할 때 smoothness며 일그러지는 것 등 잡아내야 할 것들이 많았을텐데, 그런 것들 다 잡아내서 결과물을 완성해낸 노력이 보이는 논문.

 

메모



초기화 방법

1) HybrIK-X를 사용해서 SMPL-X 파라미터 찾기 + 얼굴은 DECA로 찾기

2) 2D keypoint 갖고 한 번 더 fitting

3) 모든 canonical joint에 offset 부여

4) 모든 face vertex에 offset 부여

5) 2D keypoint 갖고 3)~4) 최적화


----
대충하는게 아니라 엄청 정확하게 fitting될 때까지 반복

매 프레임을 해야하는 것은 매프레임,

shape parameter같이 공유되는 것은 묶어서 

표현력 증대를 위해 사용하는 SMPL-X는 subdivision 을 통해 upsample해서 사용했음.

여기까지가 초기화

-----------
초기화된 값에서 한발더 나아간 offset 계산으로 최종 완성하는 단계는 

triplane을 이용해서 해결한다. 

triplane에서 query point feature를 뽑아내서 대응되는 vertex의 vertex offset, 3DGS 를 추정한다.

이 때 하나 주의점이 query point feature는 초기화에서 만든 mesh를 쓰지 않는다. 계속 변화하니까 수렴이 방해됨.

따라서 query point 뽑아낼 때는 그냥 neutral SMPL-X 이용해서 고정된 위치에서 계속 뽑았음. 

3DGS는 isotropic하지 않으면 LBS 시에 회전 까지 신경써야 하므로 그냥 isotropic으로 했음.

per-vertex offset은 당연히 pose-dependent로 또 생길수도 있으니, 이를 해결하기 위한 3D pose conditioned MLP도 추가.

이건 vertex offset, 3DGS offset + NORMAL VECTOR도 내뱉는다. 
초기화 + 2개의 per-vertex offset이 계산되면 skinning weight를 원래 갖고 있던 per vertex skinning weight를 그대로 사용하지 않고

초기화 까지만 수행한 vertex와 nearest neighbor를 이용해 업데이트 해준다
-> 이유는 변형된 최종 mesh는 옷을 입고 있기 때문에 거리가 충분히 멀어졌다면 새로 업데이트해주는 게 낫다고 판단한 것 같음.

-> 얼굴이나 손은 당연히 그대로.


찾아내야 될게 많다.

triplane 수렴시켜야지
per vertex offset 2가지
3DGS offset 2가지
translation
shape parameter
joint offset 
다 찾아내야 한다. 

초기화하고 고정해두는게 아니다.
(그러니 수렴시키기 얼마나 어려웠을까)
-----------------------
image loss가 핵심.

사실 SMPLX fitting으로 끝나버릴 일을 옷과 같은 형상 복원까지 나아가게 한 핵심은 per-vertex 3DGS를 부여해서 image loss를 사용할 수 있게 만든 점이다. 

image loss로 인해서 geometry 추정이 더 정확해진 것

l1, ssim LPIPS 다 썼다.
-------
face loss는 위 image loss만으론 얼굴 geometry가 잘 안만들어지는 문제가 있어서 추가한 것

그냥 냅두면 geometry랑 rendered image랑 따로 노는 불상사 발생.

geometry랑 rendered image랑 잘 맞아떨어지도록 하기 위해 differentiable renderer로 geometry vs color 1대1 매치를 시켜버리는 loss를 가해줌

이러려면 texture map이 있어야 하는데 이걸 아까 섬세하게 준비해둔 registration 결과의 UV map을 뗘와서 사용함.
--------------

per-vertex offset을 사용하는 한 무조건 필수적인 regularization

laplacian smoothness 추가

offset 더하기 전, 한 번 더 한 후, 다 더한 후 총 3단계에 걸쳐 전부 다 걸어준다.

데이터 박치기한 논문보다 섬세하게 한 스텝 한 스텝 다 준비한 결과가 성능으로 이어진게 아닐까.
반응형