Paper/3D vision

COLMAP-Free 3D Gaussian Splatting

침닦는수건 2023. 12. 18. 20:58
반응형

내 맘대로 Introduction

 

또 나왔다. Gaussian splatting SLAM. 대신 RGB만 대상으로 한다고 명확히 적혀있고 depth 대신 monodepth pseudo GT를 쓴다. 조금 더 progressive optimization을 섬세하게 한 느낌. 이론적 내용보다 구현을 되게 잘했지 않을까 싶다.

 

내용은 이전 논문들과 완전히 동일하다. 카메라 포즈가 같이 최적화되도록 열어둔 것. 이 논문도 간단히 기록하고 넘어간다.

 

메모하며 읽기


1) t-1, t 두 프레임 간의 gaussian을 최적화해서 초기값을 계속 잡아주는 local 3d gs

2) ~~ t frame 까지의 gaussian과 카메라 포즈를 전체 업데이트하는 global 3d gs로 나뉜다. 




생략



설명이 길지만 한줄 요약하면,

3d gaussian은 NeRF와 달리 explicit하게 존재하기 때문에 이전 프레임과 현 프레임 간의 관계가 단순히 SE3 하나로 표현 가능하다.

NeRF와 달리 SLAM이 쉽게 가능하단 소리.
일단 초기화다. SfM point가 없기 때문에 3d 위치를 잡아주기 위해서 mono depth 네트워크를 활용했다. 

DPT 를 이용해 mono depth를 뽑고 orthogonal back projection으로 초기 위치를 잡아 준다. (camera intrinsic 알고 있는 것 같은데 왜 이렇게 했는지 모르겠다...)

scale 없는 문제는 신경쓸 필요없는게 어차피 SLAM 했을 때 카메라 한 대면 scale 못 맞춘다.

첫 프레임에서 잡은 scale이 나머지 프레임에서 유지되는 것이 핵심

따라서 첫 프레임에서는 마구잡이 초기화해도 된다. 

마구잡이 초기화 후 3D GS 그냥 이미지 1장으로 학습.
다음 프레임이 들어오면, 이전 프레임 gs 고정. SE3만 추정해서 color loss를 최소화 한다.

(별 다른 특별한 점이 없는 걸로보아 카메라 움직임이 엄청 작아야 잘 될 듯. 오버랩 없는 영역에 대한 처리가 하나도 없다.)

------------
다음 프레임 들어왔을 때 초기화하고 올리는 작업을 그대로 함
(pruning으로 알아서 정리되길 기대함)
local로 그 때 그 때 추가되는 것 다 모아서 전체 opmization도 한다.

3d gaussian 뿐만 아니라 카메라 포즈까지 전부다.
하나 디테일은 densification을 지금 매 새로운 프레임마다 각각 다 하도록 방치하기 때문에 pruning에 맡기긴 하지만 지저분해질 여지가 크다.

특히 한 번 관찰됐던 영역은 2번 3번 생성될 것이고 관찰 안된 영역은 그보다 적게 생성될 것이므로 불균형이 가장 크다.

이를 막고 관찰 안된 영역을 우선으로 하기 위해서 3d gs densification을 계속 활성화해두진 않고 새 프레임 들어올 때만 잠시 N step 활성화하는 식으로 했다.

그러면 새로 들어온 프레임만 position gradient가 클테니 여기에 집중하는 효과가 생긴다. (densification없이 global adjustment를 계속 돌다보면 기존 프레임 gs들은 gradient가 작을것)

 

 

반응형