DG-SLAM

SJ·2024년 11월 14일
0

Paper

목록 보기
19/23

오늘 정리할 논문 2024 Neurips에 poster로 선정된 DG-SLAM입니다.
중국 Fudan University에서 Yueming Xu님이 쓰셨습니다.


Introduction

최근 많은 연구에서 SDF, voxel grid, mesh, surfel cloud와 같은 기존의 시각적 SLAM 방식 대신 NeRF 기반의 신경 암묵적 맵 표현을 사용하여 지속적이고 효율적인 맵을 생성하려고 노력하고 있습니다.

NeRF 방식은 렌더링을 통해 최적화가 가능하여 내비게이션이나 재구성 분야에서 장점이 있지만, 미리 정의된 voxel grid를 초기화 하는 과정이 필요하고 정보를 추가하거나 편집하는 것이 어렵다는 단점이 있습니다.

NeRF 방식 이후에 GS-SLAM, SPLATAM,Gaussian splatting SLAM 등과 같은 최근 연구에서 3d-gs 기반의 명시적 표현을 사용하여 장면의 지도를 생성하는 방식을 제안했습니다. 이 방식은 초당 최대 300 프레임까지 고속으로 랜더링 할 수 있어 효율적이지만 동적 장면에서 안정성이 떨어집니다.

그래서 이 논문에서는 동적 실내 환경에서 카메라 모션을 안정적으로 추적할 수 있는 3d gaussian 기반의 시각적 SLAM 시스템을 제안합니다.

이 논문의 주요 contribution은 다음과 같습니다.

  1. 실시간 랜더링과 높은 해상도의 representation을 달성하는 동적 환경 gaussian splatting slam system을 최초로 제안했습니다.

  2. 동적 객체가 위치 추정에 미치는 영향을 줄이기 위해 시공간 일관성 깊이 마스크와 semantic prior를 통합하여 정확한 동적 물체 제거를 구현하였습니다.

  3. 일관성과 정확도를 개선하기 위해 hybrid camera tracking 전략을 설계하였습니다.

  4. gaussian map을 더 잘 관리하기 위해 gaussian point 추가 및 제거 작업을 제안하였습니다.


Approach

  • 3D Gaussian map representation

    이 논문에서는 실시간 rendering 과 고 해상도 map 표현을 위해 3d gaussian ellipsoid들로 장면을 표현합니다. 이 ellopsoid들에는 center position, covariance matrix, opacity, spherical harmonics coefficient가 들어있습니다.\\

    • Color and depth splatting rendering\\

      3d gaussian들은 depth를 정확하게 나타내지 못하기 때문에 이 논문에서는 gaussian들을
      image plane에 2d gaussian으로 projection합니다.


      R 은 viewing transformation 이고 J는 projective transformation의 affine approximation의 jacobian입니다.

      3DGS의 alpha blending 방식을 따라 ellipsoid를 image pixel 의 관측에 따라 축적합니다.

      f는 gaussian distribution 함수입니다. 그냥 rendering 수식이라고 생각하시면 되겠습니다.\\
      2d projection을 통해gaussian을 근사하고 그것을 랜더링하여 color와 density를 나타냅니다.

    • Accumulated opacity

      accumulated opacity를 rendering의 신뢰도를 나타내기 위해 pixel 마다 계산을 해줍니다.
      이것을 나중에 최적화 때 사용할 것입니다.

  • Motion Mask Generation

    각 keyframe에 대해 슬라이딩 윈도우 내에서 연관된 키프레임 집합 D를 선택합니다.
    동적 물체에 의한 왜곡을 줄이기 위해 motion mask를 생성합니다.
    같은 슬라이딩 윈도우에 키프레임을 넣을 때는 optical flow 거리가 가까운 것들을 넣게 됩니다.

    이제 motion mask를 계산하는 방식을 알려드리겠습니다.
    i번째 keyframe의 픽셀들을 j번째 keyframe에 projection합니다.

    pij=fwarp(ξji,pi,Di(pi))=KTji(K1Di(pi)pihomo)p_{i\rightarrow j} = f_{warp}(\xi_{ji},p_i,D_i(p_i)) = KT_{ji}(K^{-1}D_i(p_i)p^{homo}_i)

    이 수식을 통해 projection을 하고 residual을 구해 그것이 너무 큰 픽셀들은 동적 물체가 있는 픽셀로 간주하여 motion mask를 생성합니다.
    이러한 motion mask를 이용해 동적 물체가 있는 부분은 제외하고 최적화를 할 수 있습니다.

  • Coarse-to-fine camera tracking

Constant speed model로 initial pose를 잡는 것은 합리적인 추론 방법이 아닙니다.
그래서 이 논문에서는 DROID-SLAM의 visual odometry를 이용하여 initial pose를 추정합니다. 식은 다음과 같습니다.

E(G,d)=(i,j)ϵPijC(GijC1(pi,di)ij,Mj2E(G,d) = \sum_{(i,j)\in \epsilon} \parallel P_{ij}^* - \prod_C(G_{ij} \bullet\prod^{-1}_C(p_i,d_i)\parallel^2_{\sum_{ij},M_j}

뭐 그냥 color랑 density값 가지고 pose구한다고 생각하시면 됩니다. 대신에 motion mask를 고려한다는 것이 새로운 사실입니다.

이렇게 initial pose를 구한 후에 최적화를 통해 fine pose를 찾게 됩니다.
그 식은 다음과 같습니다.

이 식은 motion mask와 accumulated opacity를 활용하여 신뢰도 있는 pixel들을 위주로 pose를 optimization하는 식입니다.

이렇게 coarse fine camera tracking은 동적환경에서도 강건한 tracking이 가능하다고 말해주고 있습니다.

  • SLAM system

    • Map initialization

      map의 초기값을 어떻게 주는지에 대한 내용입니다. 특별한 내용은 없고 진짜 parameter를 처음에 어떻게 설정하였는지에 대한 내용이라 따로 적지 않겠습니다.

    • Map Optimization

      Loss 값들을 알려주는 부분입니다.
      rgb loss, depth loss와 두 이미지의 유사도를 나타내는 ssim loss까지 3가지 loss를 이용하여 최적화를 합니다. rgb, depth는 motion mask을 제외한 pixel에서 gt값과 rendering 값들을 뺀거구요 structural similarity loss는 논문에는 나와있지 않고 chat gpt한테 물어보니

      라고 합니다.

    • Adaptive Gaussian point adding strategy

      이 논문에서는 3d gaussian을 추가할 때 색상 gradient를 기준으로 삽입 반경을 결정합니다. 고유한 texture가 많은 영역에서는 포인트 밀도를 높게, 텍스쳐가 적은 영역에서는 포인트 추가를 최소화하여 효율적으로 메모리 사용을 관리합니다.

      이 과정도 2stage로 진행됩니다.

      1단계: 이전에 관찰되지 않은 새로운 view에 대해 이미지를 균일하게 샘플링하여 새로운 영역에 가우시안 포인트를 충분히 덮습니다.

      2단계: accumulated opacity가 낮을 경우 또는 랜더링된 픽셀과 실제 depth 값 사이의 차가 클 경우 그 부분에 대해 point를 추가로 삽입하도록 하여 더욱 정밀하게 표현하도록 합니다.

      그러고 새로운 가우시안들은 point density에 따라 초기화됩니다.

    • Map point Deleting strategy

      모든 가우시안들을 계속 갖고 있으면 메모리에 문제가 생길 수도 있습니다. 그렇기 때문에 우리는 시점에서 제거해도 될 gaussian들을 제거하도록 합니다.

opacity value가 일정값 이하일때( 유효하지 않은 포인트)
scale이 너무 클 때( 정교한 표현 불가)
ellipsoid가 너무 타원형일 때(ellipsoid가 지나치게 왜곡)


NeRF나 gaussian splatting 같은 기법들을 활용하여 SLAM을 하는 경우 동적 물체가 굉장히 큰 장애물입니다.
어떠한 시도를 통해 이것을 해결하려고 했는지 궁금해서 이 논문을 읽어보았습니다.
결국 projection을 통해 motion mask를 만들었다는게 가장 중요한 내용인 것 같습니다.

profile
student

0개의 댓글