Paper/Human

Learning Personalized High Quality Volumetric Head Avatars from Monocular RGB Videos

침닦는수건 2024. 4. 22. 14:58
반응형

내 맘대로 Introduction

 

2023 CVPR monoavatar라는 논문으로 video to implicit head avatar 논문이다. 3DMM(FLAME) + NeRF representation으로 다양한 표정의 얼굴 이미지를 찍어낼 수 있다. 

 

핵심 아이디어는 FLAME vertex 마다 learnable feature를 할당 -> NeRF 방식으로 compositing해서 픽셀화하는 방식으로 학습시키는 것이다. 이제는 좀 알려진 방식이지만 2023년이므로 이게 첫 시작이었지 싶다.

 

또, CNN(UV map) feature를 쓰는 것인 3DMM 이용할 때 효과적이라는 것을 밝힘.

 

메모


0) 배경 제거, 3DMM 피팅, camera pose 찾기

1) CNN(Ref. uv map - deformed uv map)으로 vertex feature 추출

2) pixel ray 별로 nearest vertex 찾아서 rendering

3) color loss로 전체 업데이트.

표정을 움직이면서 나중에 컨트롤이 가능해야 하므로 가장 쉬운 시작점은 3DMM을 쓰는 것임

3DMM (FLAME) 가져와서 vertex마다 feature를 배정함.

후술하겠지만 이는 CNN(UVmap)으로 만들어진 feature.
vertex feature가 배정이 끝나면 전처리에서 얻은 camera pose, head pose와 함께 NeRF 방식으로 렌더링함.

ray sampling마다 가장 가까운 3DMM vertex feature를 weighted sum으로 구한 뒤 composition해서 렌더링.

위 과정은 사실 rigid target일 때는 전혀 문제가 없음. 하지만 지금 대상이 사람 머리기 때문에 머리카락이나 옷 같이 non-rigid도 있음

이를 커버하기 위해서 per-frame으로 point level warping을 할 수 있게 만들었다. 한 frame 이 공유하는 frame latent를 네트워크에 추가로 넣어주는 식.

학습이 완료되고 나면 더이상 frame latent는 쓸 필요가 없다. per-frame 변화를 반영해서 제대로 된 아바타를 만들어냈다면 그때부터는 의미가 없기 때문. 

expression에 따라 변화하는 vertex feature를 만들어 내기 위해선 expression-conditioned feature를 추출할 수 있어야 함.

기본적인 방식은 expresssion 넣은 3DMM UV map을 입력받아 바로  feature (ours-C) 추출하는 방식. ==> 성능 구림

그래서 residual UV map 넣는 방식 (ours-D)을 고안함.

neutral 3DMM UV map 과 expressed 3DMM UV map 간의 차이를 입력으로 받아서 expressed vertex feature를 만듬.
학습은 rendering loss (color loss)가 당연히 기본.

elastic loss는 per-frame point warp를 계산할 때 R, t로 나누어서 계산하는데, Jacobian과 R이 비슷하도록, J=USV.T 시 S가 작도록 억제하는 loss다.

의미는 회전변환이 극단적이지 않도록, translation이 엄청 크지 않도록 억제하는 것.

마지막 mag loss를 warping의 기능이 보정이다보니 크기 자체가 일단 작아야 되므로 억제하는 역할.



입력 frame의 수가 생각보다 많이 중요한 듯. 확실한 단점이긴 하다 2분 비디오...
반응형