반응형
내 맘대로 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분 비디오... |
반응형