Paper/3D vision

SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM

침닦는수건 2023. 12. 11. 01:12
반응형

내 맘대로 Introduction

 

이 논문은 GS-SLAM 과 유사하게 3d gaussian을 갖고 SLAM을 동시에 하는 논문이다. 큰 그림에서는 동일한 내용이고, 디테일한 부분에서 3d gaussian을 단순화하거나 densification rule을 다르게 정의하는 부분에서 차이를 보일 뿐이다. 입력도 똑같이 RGB-D 즉, 믿을만한 Depth가 존재해야 한다. 3d gaussian의 위치를 depth를 이용해 강하게 잡아줌으로써 카메라 포즈를 동시에 찾을 수 있는 가능성을 높인다. 

 

핵심 내용은 점진적으로 쌓아나가는 과정에서 camera tracking, densification, map update 총 3가지 과정을 순차적으로 진행하는 식으로 구성했다는 점과 rendered color, depth만 이용하는 것이 아니라 rendered silhouette을 만들어서 mask로 활용한 점이 눈에 띈다. 코드도 공개되어 있어서 참고하기 좋은 논문! 다만 실외에서 성공하는 데이터가 없어서 아쉽다.

 

생각보다 간단하다!

 

메모하며 읽기

당연히 제목에도 적혀있듯이 3d gaussian을 사용한다. 다만 알고리즘이 local minima에 빠지는 것을 막기 위해서 약간의 단순화가 필요한데

gaussian parameter 중 SH를 R,G,B로 바꾸어 view-independent color로 단순화한 것.

isotropic gaussian으로 가정해서 rotation이 없도록 단순화한 것이 있다.
gaussian splatting에서 사용하는 projection과 alpha composition을 그대로 따르는데 isotropic gaussian을 가정하다보니

수식(3)과 같이 mu와 radius만 갖고 2D를 표현할 수 있게 된다.

alpha composition을 따라서 rendered color, depth를 만들어내는데 동시에 gaussian 별 color, depth 없이 위치만 composition해서 실루엣, 즉, mask를 생성한 점이 독특하다.

이 마스크는 나중에 t+1 프레임이 들어왔을 때 어디가 새로운 영역이고 어디가 기존에 복원된 영역인지 찾아내는데 사용된다. 

최적화 대상 영역을 한정하는 중요한 역할을 한다.

SLAM system을 초기화를 제외하면 크게 3가지 단계로 나뉜다. 

초기화가 완료되면 1) t+1 시점의 카메라 위치를 먼저 잡는 것 2) 새 카메라를 이용해 gaussian을 새로 생성하는 것 3) 기존 gaussian과 함께 전체를 업데이트하는 것이다.

3)에서 전체를 업데이트하는 것은 불안정할 수 있으니 최근 N개 프레임만 업데이트하는 식으로 구현했다고 한다. 잘 복원된 것은 더 이상 안 건드리는 컨셉
초기화는 back-projected point 위치에 1픽셀이 back-projection된 크기를 반지름으로 갖도록 한다. opacity는 0.5

실루엣(마스크)가 있다면 해당하는 영역만 초기화에 사용하는데 첫프레임은 모든 픽셀을 초기화에 사용한다.
t+1 새 프레임이 들어오면 일단 기존 t, t-1 카메라 자세를 이용해 등속도 가정으로 위치를 대략잡아준다.

그리곤 기존 gaussian들을 t+1 카메라 자세로 내려찍어 마스크를 만들어 내고, 마스크 내부에 있는 gaussian과 t+1 프레임이 맞아떨어지도록 l1 loss를 걸어준다.

color, depth 둘 다 비교한다.

기존 gaussian으로 비교할 수 있는 영역만 한정하므로 최적화 성능이 좋아짐.

일단 기본적으로 이 논문에서 gaussian densification은 기존 3d gs처럼 증식하거나 분열하는 방식이 아니다.

새 프레임에서 back projection을 통해 새로 추가해주는 과정이다. 

새 프레임이 들어오면,
1) 실루엣이 없는(기존 gaussian이 차지하지 않는) 영역

2) 실루엣이 있더라도, 기존 gaussian으로 찾은 depth과 새프레임 depth가 다른 영역 (이 경우 occlusion인 것) 

두 경우에 해당하면 back projection해서 새로 생성한다.
카메라 추가와 densification이 끝나면, 카메라 포즈와 gaussian의 개수는 고정

가장 최신 프레임 기준으로 n개 범위 안에서 k개 골라서 bundle 돌리듯이 전체 최적화를 해준다. 

최신 프레임 기준으로만 계속 돌리는 이유는, 이전까지 잘 최적화되어 왔다는 가정하에 최신 것만 잘 추가한다는 컨셉이다. 

반응형