Paper/Neural rendering

RadSplat: Radiance Field-Informed Gaussian Splatting for Robust Real-Time Rendering with 900+ FPS

침닦는수건 2024. 4. 15. 18:27
반응형

내 맘대로 Introduction

 

Gaussian splatting 나왔을 때 누군가는 이미 학습된 NeRF를 3DGS로 옮길 것 같다고 생각했었는데 구글이 했다. 사전학습된 NeRF MLP를 이용해서 3DGS를 학습시키는 방법론을 소개하는 논문이다. 사실 이미지랑 포즈가 있으면 학습시킬 수 있는 것이 3DGS이니까 NeRF가 이미 있다면 못할 이유가 전혀 없다. 이 자체로는 contribution이 부족하다 보니 pruning 쪽에서 한 입, 속도에서 한 입 해서 논문으로 정리했다. 

 

핵심 아이디어는 NeRF의 alpha 값을 갖고 GS의 초기 위치를 잡는 것, NeRF의 color 갖고 GS supervision을 계속 걸어주는 것이다.  가장 직관적이고 심플하다. 누구보다 빠르게 구현한 것이 논문으로 이어진 이유인 것 같기도.

 

메모


1) ZIP-NeRF로 먼저 학습 시킴 (1시간)
2) ZIP-NeRF hold하고 3DGS 초기화 + 학습 (1시간) + pruning 조금 끼얹기
3) postprocessing으로 visibility check해서 렌더링할 때 frustrum culling 범위를 확 줄여서 속도 빠르게
NeRF recap 부분. 근데 ZIP-NeRF를 사용했기 때문에 이 내용은 진짜 칸 채우기임.

GLO가 뭔지 몰라서 사실 정확하진 않음.

근데 내용으로 미루어보아 이미지 마다 learnable latent를 부여해서 사용하면 exposure나 motion blur 줄이는데 의미가 있다는 연구가 있었나 보다. 그래서 zip-nerf 학습 시킬 때 이미지마다 learnable latent를 붙여서 학습함.
이것도 3DGS recap이므로 패스.

1) 위치는 NeRF를 이용해 ray마다 "median depth"를 찾음. alpha를 이용해 weighted sum 하는 방식. 정확한 surface depth를 쓰지 않는 이유는 이게 더 실험적으로 정확했다고 함. (이유는 모르겠네...)

2) 색상은 NeRF ray color를 이용해 SH의 첫 3개 값을 채워주고 나머지 0으로 채움.

3) 회전은 identity

4) 크기는 가장 근접한 point까지 거리 (그냥 반팔 나란히 라고 생각하면 됨) 

GLO는 zip-nerf 학습시 사용한 트릭이므로 이제는 0으로 처리함.

3dgs rendering vs nerf rendering 사이에 l2 norm + ssim으로 학습. 굉장히 간단하다.

사소하게 언급하길 NeRF를 들고 있으면 다양한 intrinsic, 심지어 fisheye 이미지도 렌더링할 수 있으니 다양한 카메라 이미지로 3DGS 학습시킬 수 있다는 점을 짚음.
pruning을 하기 위해서 3DGS 한 개 한 개 마다 score를 매기는데 역시나 rendering에 사용된 횟수를 count하는 방식이다.

다만 NeRF가 있으니 0,1 처럼 사용됐다 안됐다 수준인 아니라 0~1 범위 값으로 표현할 수 있기 때문에 더 정확하다.

계산량을 줄이기 위해 모든 view에서 해당 3DGS의 alpha * t 를 봤을 때 max값만 취해서 score로 쓴다.
score 계산이 끝나면 0, 1 mask로 thresholding해서 삭제해버린다. 

마지막으로 ray contribution을 보아 pruning을 하긴 했지만 NeRF의 noise도 있고 thresholding으로 인한 human error도 있다 보니 아쉬운 점이 있다. 그리고 살아남은 3DGS들이 각각은 다 유효하지만 특정 시점을 렌더링할 때는 의미가 없을 수 있으니 렌더링할 때마다 frustrum culling되는 개수를 줄여주는 식의 후처리를 추가했다.
1) 먼저 입력 카메라포즈를 클러스터링해서 N개 클러스터를 생성해둠

2) 어떤 한 3dgs가 어떤 클러스터에서 주로 보이는지 labeling 해둠

3) 렌더링할 때가 되면 새로운 시점이 어떤 클러스터에 속하는지 분류

4) 해당 클러스터에 labeling된 3dgs만 culling해서 렌더링 (여기서 개수가 폭발적으로 줄어듦)
학습 시간을 줄이는 것은 의미 없고 학습 완료 후 렌더링의 성능과 속도에만 중점을 둔 논문.
반응형