Paper/Neural rendering

Depth-Regularized Optimization for 3D Gaussian Splatting in Few-Shot Images

침닦는수건 2023. 11. 24. 20:49
반응형

내 맘대로 Introduction

 

그림만 봐도 익숙한 냄새가 팍팍 나는 논문이다. DS-NeRF가 순식간에 등장한 것처럼 Depth를 prior로 이용한 3D GS 논문이 뚝딱하고 나왔다. 컨셉 자체나 아이디어 자체가 DS-NeRF와 동일하기 때문에 논문 자체가 처음 읽지만 익숙한 느낌이다. 

 

NeRF의 경우, SfM/MVS point cloud를 아예 안 쓰는 구조였다보니 depth prior를 sfm/mvs point로 주었지만, 3D GS는 애초에 SfM 혹은 MVS point cloud를 초기값으로 쓰다보니 더 강한 depth prior를 주기 위해 mono depth를 활용했다는 점이 차이점이다. up-to-scale depth 문제 같은 경우, SfM point가 존재해서 대충 least square로 맞출 수 있다보니 여기선 큰 문제가 아니다.

 

요즘 mono depth가 워낙 잘되기 때문에 효과는 있었고, noise나 이미지 부족 문제가 조금 완화된다는 것을 강조했다. 개인적으로 이론적 내용보다 누구보다 빠르게 구현해서 글 작성까지 한 점이 놀라웠다.

 

내용은 완전 간단! so simple!

 

메모하며 읽기


이름만큼 하고자 하는 것이 명확해서 내용이 간단하다. 

3D GS 학습시킬 것인데 dense depth map갖고 supervision 추가로 걸어주겠다.

부수적으로 smoothness나 few shot setting을 추가했다는데 이건 크게 중요한 파트는 아닌 듯 하다. 

smoothness에 대한 ablation이나 few shot을 강조하는 case study가 없다.

depth GT 준비하기.

mono depth 돌리고 알고 있는 SfM point랑 least square 풀어서 scale 맞춘다.

아주 간단하고 보통 사람들이 하듯이 했다. 
rendered depth 만드는건 color 대신 거리를 blending하면 됨.

이것도 보통 하듯이 했다.
smoothness loss인데 

한 gaussian끼리 뭉치게 해주는 효과인 것 같다.

notation을 보면 rendered depth D가 아니라 gaussian 개별적인 camera view depth, d를 줄인다.

따라서 공중에 떠있는 gaussian끼리 웬만하면 붙어있도록 한다고 보는게 맞을 것 같다.

adjacent를 어떻게 정의했는데 언급이 안되어있는데 같은 frustrum 내에 culling된 gaussian들끼리 했지 않을까

-----------
이게 어떤 의도로 넣은 것일까...? 뭐가 안돼서 뭐가 문제라 추가했을까... 궁금하다 그냥 넣은건가.
이미지 수가 부족할 때 대응하는 노하우를 정리해두었다.

내 생각엔 기본적으로 depth prior가, 그것도 mono depth를 이용해서 dense depth prior가 있는 상황에서는 이미지 수 부족 문제가 어느 정도 자동으로 풀릴 것 같다.

근데 prior가 많아서 이미지가 조금 적어도 된다는 점을 강조할 때 그냥 적어도 된다고 설명할 순 없으니... 뭔가 +@를 더 적어준게 아닐까...?

1) SH max degree =1로 설정

이건 learnable parameter가 줄어드니까 유리한 점이 분명있을 것 같다. 다만 조명변화가 심해 각도마다 색깔 변화가 심한 경우엔 trade off가 분명해보인다. 

2) 전체 loss는 줄지만 depth loss는 더 이상 줄지 않거나 오히려 올라갈 때는 망가지는 중이라고 판단해서 멈추기

이건 확실히 노하우인 것 같다.

3) 주기적으로 opacity 0으로 만드는 과정 생략.

이건 좀 궁금하다. 0으로 초기화하는 스텝이 없으면 현재 logic 상 gaussian을 제거하는 logic이 하나도 없는건데 gaussian 개수가 불필요하게 많아지지 않는지

smoothness term으로 인해 끼리끼리 뭉치니까 rendering했을 때는 불필요하게 많은 개수가 그리 육안으로 보기에 드러나지 않았을 것 같은데.... 개수가 많을 것 같다.

이건 확실히 좋은 방법 아닌 듯.
반응형