Post

[논문] 3D Gaussian Splatting

[논문] 3D Gaussian Splatting

3D Gaussian Splatting for Real-Time Radiance Field Rendering
Université Côte d’Azur, Max-Planck-Institut für Informatik
SIGGRAPH 2023
[Project Page]

1. Purpose

  • Novel Veiw Synthesis
    • 어떤 Scene을 바라보는 여러 View의 이미지를 이용해 새로운(Novel) View에서 바라본 이미지를 합성(Synthesis)

2.1 Traditional Scene Reconstruction & Rendering

  • SfM: 2D 사진들로 NVS 수행
    • Camera Calibration 과정에서 sparse point cloud를 추정함
  • 기존 point-based solution은 Multi-veiw Stereo(MVS) 데이터를 필요로 하지만 OURS는 SfM으로 추정된 point cloud만으로 가능하다.

2.2 Nerual Rendering and Radiance Field

  • 딥러닝을 이용해 NVS를 수행하는 연구들이 계속됨
  • Volumetric Representation
    • Volumetric Ray-Marching → 볼륨을 샘플링하는 데 필요한 연산량이 많아 costly
  • NeRF (2020)
    • importance sampling과 positional encoding으로 품질 향상
    • MLP 사용으로 속도 저하
    • 후속: 주로 정규화 기법을 도입해 품질 개선. 당시 SOTA: Mip-NeRF260

3. Overview

4. Method

4.1 3D Gaussian

1) 3D Gaussian

\[G(x)=e^{-\frac{1}{2}x^T\Sigma^{-1}x} \tag{4}\]
  • 3D Gaussian은 타원체 모양의 primitive.
    • 3D Gaussian의 크기와 모양은 covariance matrix \(\Sigma\)에 의해 결정된다.

2) 3D → 2D Projection

\[\Sigma^{'}=JW\Sigma W^TJ^T \tag{5}\]
  • covariance matrix를 카메라 좌표계로 변환 하기 위해 \(W\)와 \(J\)를 적용함.
    • \(W\): 3D 공간에서 카메라 공간으로 변환하는 행렬
    • \(J\): projective transformation의 affine approximation의 jacobian

3) 3D Gaussian Optimization

\[\Sigma=RSS^TR^T \tag{6}\]
  • \(\Sigma\)를 직접 최적화할 경우
    • \(\Sigma\)는 positive semi-definite일 때만 물리적으로 의미를 가짐
    • Gradient Descent로 직접 최적화하면 invalid한 값을 가질 수 있음 → matrix를 Scaling matrixRotation matrix로 decomposition해서 사용한다.
  • Decompostiton (수식 6)
    • \(S\): scaling matrix. 타원의 크기를 조절함
    • \(R\): rotation matrix. 타원의 방향을 조절함
    • \(S\)는 크기이므로 0보다 작아질 수 없고, $$R&&은 크기를 건드리지 않음 → 결과적으로 positive semi-definite 만족
    • \(S\)는 3D vector로, \(R\)은 quaternion으로 저장해 독립적으로 최적화를 진행함.
  • 3D Gaussian의 learnable parameter
    • Position
    • Scaling
    • Rotation
    • Color
    • Opacity

4.2 Optimization with Adaptive Density Control

1) Optimization

  • 최적화
    • SGD 사용, CUDA 커널 직접 추가
    • opacity를 [0, 1] 범위로 제한하기 위해 시그모이드 사용
    • Loss:
      • \[\mathcal{L}=(1-\lambda)\mathcal{L}_1+\lambda\mathcal{L}_{D-SSIM} \tag{7}\]
      • 논문에서는 \(\lambda=0.2\)로 설정했다고 함
  • Adaptive Density Control: Gaussian의 개수 및 밀도를 adaptive하게 조절함
    • SfM의 sparse point cloud에서 시작하며 covariance matrix는 isotropic gaussian으로 초기화
    • 100 iteration마다 gaussian을 densify하고, 투명한 gaussian 제거

2) Densification

  • Gaussian의 배치 문제 → Densification
    • under-reconstruction과 over-reconstruction 문제가 있으며 두 케이스 모두 view-space에서 positional gradient가 크게 나타남
    • positional gradient가 \(\mathcal{T}_{pos}=0.0002\) 이상인 gaussian을 densify함
  1. Under-reconstruction
    • geometry feature가 부족한 상황 → gaussian을 추가 배치해야 함
    • gaussian을 clone한 뒤 clone한 gaussian을 postioinal gradient 방향으로 이동시킴
  2. Over-reconstruction
    • 단일 gaussian이 너무 넓은 영역을 cover하는 상황 → gaussian을 쪼개야 함
    • gaussian을 split함 (논문: \(\phi=1.6\)으로 sclae을 나눈다)

3) Removing

  • Culling Approach
    • 렌더링할 필요가 없는 객체를 제거해 성능을 최적화
    • 필요한 gaussian의 opacity를 증가시키고 \(\alpha\)가 \(\epsilon_\alpha\)보다 작은 gaussian은 제거함

4.3 Differentiable Tile Rasterization

5. Evaluation


실험

This post is licensed under CC BY 4.0 by the author.