Paper/Human

Topo4D: Topology-Preserving Gaussian Splatting for High-Fidelity 4D Head Capture

침닦는수건 2024. 12. 26. 11:29
반응형

내 맘대로 Introduction

 

Multiview video -> uniform topology Gaussian Mesh per frame 논문. 캘리브레이션/싱크 완벽한 카메라 세팅에서 찍은 비디오가 준비된 상황에서 첫 프레임만 MVS+Registration으로 gaussian mesh 초기화하고 이후부터는 tracking 하듯이 움직여서 나머지 프레임을 찾는 방식이다. 

 

기존 방식이 매프레임 registration하고 나서 tracking하는 방식인데 첫프레임만 그렇게 하고 나머지는 최적화로 풀어서 속도가 빠르다는 것도 contribution으로 가져간다. 

 

핵심이 되는 내용은 안정적으로 GS를 매 프레임 최적화할 수 있도록 넣은 scale loss, prior loss 들이다. 마지막에 3DGS color -> texture map으로 옮겨서 텍스처도 얻을 수 있다. 

 

메모

1) 첫 프레임만 MVS + registration으로 mesh 얻음

2)  mesh vertex마다 GS부여 (GaussianMesh)

3) 첫프레임에서 physical property 최적화 (Vanilla 3DGS)

4) 이후 프레임은 트래킹하듯이 순차적으로 최적화 t-1 -> t

1) Agisoft써서 mesh 얻은 것 같고

2) ICP는 registration 의미하는 것 같음 (non-rigid ICP포함)

3) GS normal은 vertex normal 초기화하고 시작.

4) color도 MVS texture map에서 sampling해서 초기화 
5) scale 이 자유도가 3인데

flat Gaussian, 거의 2D gaussian으로 만들어야 mesh face에 달라붙을 확률이 높으므로 

3자유도 중 가장 값이 작은 (eigenvalue가 가장 작은) 값이 0이 되도록 강제해준다.

이후 과정은 연쇄적으로 tracking 하듯이 다음 프레임 3DGS 상태를 최적화하는 것

1) geometric 하게 최적화 (1000 iter)
2) texture를 위한 최적화 (300 iter)

번갈아하는 방식이다. 동시에 하면 망가지기 때문에 이렇게 따로 한 듯하다 
-> positional, rotation, scale을 먼저 최적화 하는 느낌.

---------------

1) geometric 최적화 할때

one-ring neighbor랑 rotation (normal) 차이가 이전 프레임과 같도록 
-> 이전 프레임 대비 face가 확확 돌아가지 않도록
-> vertex 간 거리로 weight. 멀수록 작고 가까울수록 크게


초기화했던 mesh에서 vertex 간 거리가 프레임 t일 때도 최대한 유지되도록 


+ 매 vertex의 위치가 one ring neighbor 위치 평균과 같도록. 
-> vertex 간격이 항상 균일하고 neighbor들이 flat하도록 도와줌
-> mesh smoothing 효과

+ 이웃한 face 간의 각도가 0에 가깝도록
-> 똑같이 face가 서로 flat해지므로 mesh smoothing 효과
2) texture 업데이트할 때는

기존 topology vertex 개수만큼만 GS를 사용하면 절대 8K 해상도는 못만들기 때문에

geometric optimization (이전 1000iter)에서 찾은 3DGS 위치를 고정해두고, UV cooridnate 상에서 N번 densification한다. 
-> 사실 상 8K texture map 해상도로 3DGS를 더 부여하는 것
-> 그러고 최적화 
매프레임 최적화가 다 끝나고 나면

1) geometry는 각 gaussian position을 꺼내고 face 대로 묶어주면 됨
-> 하지만 gaussian scale이 2D가 되도록 강제하긴 했지만 완벽히 2D, scale 0이 되진 않음
-> normal 방향으로 minimul scale만큼 강제 이동시켜서 후처리하는 식으로 보정

2) texture 는 8k texture map 해상도로 3DGS를 추가 생성해서 color를 찾아놨기 때문에  UV texturemap pixel마다 3DGS를 찾아가 RGB 값을 읽어오는 식으로 간단히 생성했다.

데이터가 light stage 포함해서 만들어진 것.

topology는 거의 FLAME 수준 밀도


 
반응형