Gaussian Splatting: 3D Reconstruction and Novel View Synthesis, a Review
Author : ANURAG DALAL , (Graduate Student, IEEE), DANIEL HAGEN ROBBERSMYR , (Member, IEEE)
3D reconstruction 방법
- traditional algorithm : photogrammetry, MVS(Multi View Stereo)
- modern approach : NeRF(Neural Radiance Field), Gaussian Splatting
3D 데이터 representation
1. traditional approaches : point cloud, mesh, voxel
- mesh는 point cloud에 비해 extra geometric details과 encode topology를 제공할 수 있고, surface-normal information를 통합할 수 있다.
2. novel approaches : Neural network/MLP, Gaussian Splats
- NerFs : radiance field는 input이 3D positon이고 output이 normal vector와 color value이다. color는 주어진 위치의 surface의 색이고, normal vector는 표면의 방향을 가리킨다.
- Gaussian Splats : 각 splat을 parameter들의 collection으로 간단하게 표현한다. 비교적 적은 데이터로 많은 수의 splat을 표현할 수 있어 고해상도의 복잡한 scene을 렌더링 하는데 적절하다.
- position : splat의 중심의 3D 위치
- scale : splat의 size
- opacity : splat이 rendered image에 대해 가진 influence의 크기
- color : splat의 색
- material property : 반짝임, 반사, 굴절 등 추가적인 성질
Dataset for Gaussian Splatting
일반적으로 각 장면에 대해 모델링하고, 각 장면에 대해 다양한 포즈에서의 dense image가 필요하다. 카메라 포즈는 unknown이고 SFM을 이용해 계산한다.
Fundamentals of Gaussian Splatting
Gaussian Splatting은 2023년 등장했으며, NeRFs에 비해 fewer artifacts, failure cases, 빠른 학습 시간에서 강점을 가진다. real-time 3D rendering이 가능하다.
NeRFs와 같은 방법들보다 photorealism에서 한계가 있을 수 있다. 오버피팅, 연산 자원, 렌더링 품질의 한계를 고려해야 한다.
1. Original Algorithm
- SfM : COLMAP 라이브러리 사용하여 이미지에서 포인트 클라우드 생성
- Gaussian splat으로 변환 : 각 포인트를 Gaussian splat으로 변환하면 rasterization 이 가능하다. SfM 데이터는 각 splat들에 대해 위치, 크기, 색의 초기화만 가능하다.
- 학습
- 미분 가능한 Gaussian rasterization를 사용하여 이미지의 Gaussians을 rasterize
- raster 이미지와 실제 지형 이미지 간의 차이를 기반으로 loss을 계산
- 발생한 loss에 따라 Gaussian parameters를 수정
- 미분 가능한 Gaussian raterization
- 모든 2D Gaussian은 카메라의 viewpoint로부터 투영되고 depth에 따라 정렬된 다음, 모든 픽셀에 대해 forward와 backward로 반복되는 미분 가능한 Gaussian rasterization이 필요하다.
2. Mathematical Representation and Rendering Process
- mean $\mu \in \mathbb{R}^3$, covariance $\Sigma \in \mathbb{R}^{3 \times 3}$, color $c \in \mathbb{R}^3$, opacity(불투명도) $o \in \mathbb{R}$
Gaussians의 view를 렌더링하기 위해 먼저 투영된 2D 위치를 계산하고 camera plane으로 확장한다. visible 2D Gaussian을 depth에 따라 정렬하고, output 이미지를 구성하기 위해 앞에서 뒤로 합성한다.
1) 가우시안 Projection
- extrinsics $T_{cw}$ : 포인트를 world 좌표계에서 카메라 좌표계로 변환
- intrinsics : focal length $(f_x, f_y)$, camera plane의 principal point $(c_x,c_y)$
- projection mtx $P$ : 카메라 공간에서 normalized clip 공간으로 변환
- $(w,h)$ : output 이미지의 width, height
- $(n,f)$ : near, far clipping planes
$$ \begin{aligned}& T_{\mathrm{cw}}=\left[\begin{array}{cc}R_{\mathrm{cw}} & t_{\mathrm{cw}} \\0 & 1\end{array}\right] \in S E(3)\\& P=\left[\begin{array}{cccc}\frac{2 f_x}{w} & 0 & 0 & 0 \\0 & \frac{2 f_y}{h} & 0 & 0 \\0 & 0 & \frac{f+n}{f-n} & \frac{-2 f n}{f-n} \\0 & 0 & 1 & 0\end{array}\right]\end{aligned} $$
3D 평균 $\mu$를 표준 perspective projection을 통해 픽셀 공간으로 투영한다. 이를 위해 평균 $\mu$를 카메라 좌표계의 $t \in \mathbb{R}^4$, ND 좌표계의 $t^{\prime} \in \mathbb{R}^4$, 픽셀 좌표계의 $\mu^{\prime} \in \mathbb{R}^2$로 차례대로 변환한다.
$$ t=T_{\mathrm{cw}}\left[\begin{array}{l}\mu \\1\end{array}\right], \quad t^{\prime}=P t, \quad \mu^{\prime}=\left[\begin{array}{l}\frac{1}{2}\left(\frac{w t_x^{\prime}}{t_w^{\prime}}+1\right)+c_x \\\frac{1}{2}\left(\frac{h t_y^{\prime}}{t_w^{\prime}}+1\right)+c_y\end{array}\right] $$
3D 가우시안의 perspective projection의 결과는 2D 가우시안이 아니다. $\Sigma$를 픽셀 공간으로 투영하면 카메라 프레임에서 $t$의 1차 테일러 확장과 근사한다. affine tf $J \in \mathbb{R}^{2 \times 3}$를 계산할 수 있다.
$$ J=\left[\begin{array}{ccc}\frac{f_x}{t_z} & 0 & -\frac{f_x t_x}{t_z^2} \\0 & \frac{f_y}{t_z} & -\frac{f_y t_y}{t_z^2}\end{array}\right] $$
변환된 2D 공분산 행렬 $\Sigma^{\prime} \in \mathbb{R}^{2\times2}$은 다음과 같이 주어진다.
$$ \Sigma^{\prime}=J R_{\mathrm{cw}} \Sigma R_{\mathrm{cw}}^{\top} J^{\top} $$
최종적으로 scale $s\in \mathbb{R}^3$이고 회전 쿼터니언 $q\in\mathbb{R}^4$인 3D covariance $\Sigma$는 파라미터화되어 $\Sigma$로 전환된다. 그후 쿼터니언 $q=(x,y,z,w)$를 회전행렬로 바꾼다.
$$ R=\left[\begin{array}{ccc}1-2\left(y^2+z^2\right) & 2(x y-w z) & 2(x z+w y) \\2(x y+w z) & 1-2\left(x^2-z^2\right) & 2(y z-w x) \\2(x z-w y) & 2(y z+w x) & 1-2\left(x^2+y^2\right)\end{array}\right] $$
3D covariance $\Sigma$는 다음과 같이 주어진다. $S=\operatorname{diag}(s) \in \mathbb{R}^{3 \times 3}$ 이다.
$$ \Sigma=R S S^{\top} R^{\top} $$
2) Gaussians의 Depth Compositing
모든 가우시안에 대해, 각 2D 투영 공분산의 99% 신뢰 타원($3\sigma$)을 포함하는, 축과 정렬된 bounding box를 계산한다. bbox가 tile과 교차하면 가우시안을 해당 tile bin에 추가한다. 이후 각 tile의 depth에 기반해 정렬된 Gaussian list를 만든다. 이후 각 tile 내에서 정렬된 Gaussian을 래스터화한다.
픽셀 $i$에서 color $C_i$를 계산하기 위해 해당 픽셀이 관련된 $N$개의 가우시안을 $n$으로 인덱싱한다.
$$ C_i=\sum_{n \leq N} c_n \alpha_n T_n, \text { where } T_n=\prod_{m<n}\left(1-\alpha_m\right) $$
불투명도 $\alpha$를 2D 공분산 $\Sigma^{\prime} \in \mathbb{R}^{2 \times 2}$로 나타낸다.
$$ \alpha_n=o_n \exp \left(-\sigma_n\right), \quad \sigma_n=\frac{1}{2} \Delta_n^{\top} \Sigma^{\prime-1} \Delta_n $$
여기서 $\Delta \in \mathbb{R}^2$는 픽셀 중심과 2D 가우시안 중심 $\mu^{\prime} \in \mathbb{R}^2$ 사이의 오프셋이다. $T_n$은 가우시안을 앞에서 뒤로 통과하면서 온라인으로 계산한다.
3. Quality Assessment Matrices(품질 평가 지표)
시각적 품질 평가 지표를 사용하여 NVS를 벤치마킹 한다. 주로 PSNR, SSIM, SPIPS, LPIPS를 사용한다.
1) PSNR(peak signal-to-noise ratio, 최대 신호 대 잡음 비율)
PSNR은 no-reference 품질 평가 지표이다. $\operatorname{MAX}(I)$는 이미지에서 가능한 최대 픽셀 값(255)이고 $\operatorname{MSE}(I)$는 모든 컬러 채널에 대해 픽셀 단위의 MSE이다.
$$ \operatorname{PSNR}(I)=10 \cdot \log _{10}\left(\frac{\operatorname{MAX}(I)^2}{M S E(I)}\right) $$
2) SSIM(structural similarity index measure, 구조적 유사성 지수 측정)
SSIM은 full-reference 품질 평가 지표이다. 단일 패치에 대한 SSIM은 다음과 같다.
$$ \operatorname{SSIM}(x, y)=\frac{\left(2 \mu_x \mu_y+C_1\right)\left(2 \sigma_{x y}+C_2\right)}{\left(\mu_x^2+\mu_y^2+C_1\right)\left(\sigma_x^2+\sigma_y^2+C_2\right)} $$
$C_i=\left(K_i L\right)^2, \mathrm{~L}$은 픽셀의 동적 범위(255)이고, $K_1=0.01, K_2=0.03$은 하이퍼파라미터이다. local statistics $\mu,\sigma$는 $11 \times 11$ 원형 대칭 가우시안 가중 윈도우 내에서 계산되며 가중치 $w_i$는 표준 편차가 1.5이며 1로 정규화된다.
3) LPIPS(learned perceptual image patch similarity, 학습된 지각 이미지 패치 유사성)
LPIPS는 complete reference 품질 평가 지표이며 학습된 컨볼루션 특성을 사용한다. 여러 레이어에 걸쳐 feature map의 가중 픽셀 단위 MSE로 주어진다.
$$ \operatorname{LPIPS}(x, y)=\sum_l^L \frac{1}{H_l W_l} \sum_{h . w}^{H_l, W_l}\left\|w_l(\varsigma)\left(x_{h w}^l-y_{h w}^l\right)\right\|_2^2 $$
여기서 $x_{h w}^l, y_{h w}^l$는 픽셀 너비 $w$, 높이 $h$, 레이어 $l$에서 원본 및 생성된/액세스된 이미지 특성이다. $W_l, H_l$은 해당 레이어에서 feature map의 너비와 높이이다.
Functional Advancements(기능적 발전)
- 동적 및 변형 모델
- 모든 3D 공분산 행렬의 파라미터가 입력 이미지에만 의존하는 일반적인 Gaussian splats과 달리, splat의 동적 특성을 시간에 따라 포착하기 위해 일부 파라미터는 시간 또는 time step마다 달라진다.
- 모든 3D 공분산 행렬의 파라미터가 입력 이미지에만 의존하는 일반적인 Gaussian splats과 달리, splat의 동적 특성을 시간에 따라 포착하기 위해 일부 파라미터는 시간 또는 time step마다 달라진다.
- 확산 (Diffusion)
- text descriptions/prompts에서 3D 객체를 생성할 수 있다.
- 최적화와 속도
- Depth-Guided Optimization : 제한된 수의 이미지로 3D 장면 표현
- Compact 3D Gaussian Representation : 학습 가능한 마스크 전략 사용하여 성능을 저하시키지 않으면서 Gaussian 수를 크게 줄임
- Quantized Embedding : 효율적인 메모리 활용을 위해 양자화 임베딩을 도입
- CF-3DGS(COLMAP-Free 3D Gaussian Splatting) : 순차적인 이미지에서 카메라 포즈 추정과 NVS를 동시에 수행
- 렌더링과 Shading 방법
- Mip-Splatting : 샘플링 속도를 변경할 때 발생하는 artifact 문제 해결
- Relightable 3D Gaussian : 다중 시점 이미지로부터 재료 및 조명 분해가 가능
- GS-IR(역 렌더링을 위한 3D Gaussian Splatting) : 낮은 해상도나 멀리 위치한 카메라에서 렌더링 품질과 속도가 저하되는 문제를 해결하기 위해 다중 스케일 3D GS 알고리즘 제안
- GaussianShader : 단순화된 셰이딩 기능을 통합해 반사 장면의 시각적 품질 개선
- Scaffold-GS : 앵커 포인트를 활용해 local 3D Gaussian을 분포시키고 viewing 조건을 고려
- 압축
- LightGaussian : 네트워크 pruning과 유사한 방식으로, 중요도를 기반으로 Gaussian을 식별하고 제거한다.
- 양자화 기반 압축(Quantization-Based Compression) : K-measn 알고리즘 기반으로 Gaussian 매개변수를 양자화
응용 및 사례
- 아바타
- 인간의 디지털 표현 개발. 적은 수의 viewpoint에서 대상을 캡쳐하고 3D 모델 구축
- 관절 각도 또는 관절 기반 모델링, 애니메이션 기능 아바타, 머리 기반 모델링
- SLAM
- GS-SLAM
- Splat, Track & Map 3D Gaussian, SplaTAM
- Gaussian-SLAM
- Mesh 추출 및 Physics
- mesh 추출 및 시뮬레이션에 적용
- 편집 가능성(Editable)
- 3D 장면 또는 아바타를 편집
Discussion
현재 한계
- 정확도 : 높은 해상도와 복잡한 장면에서 일부 정확도 문제가 발생할 수 있다. 미세한 세부 사항을 필요로 하는 응용 분야에서 문제가 될 수 있다.
- 계산 비용 : 계산 비용이 높아 대규모 데이터셋이나 실시간 응용에서 효율성이 떨어질 수 있다.
- 일관성 유지 : 동적 장면이나 시간에 따른 변화가 있는 장면에서 일관성 유지가 어려울 수 있다.
가능성
- 다양한 응용 분야 : 가상 현실, 증강 현실, 자율 주행, 로봇 공학 등의 분야에서 광범위하게 적용될 수 있다.
- 고품질 3D 재구성 : 고품질 3D 재구성에 뛰어난 성능을 보인다. 3D 모델링, 애니메이션, 게임에 좋다.
- 효율적인 데이터 처리 : 대규모 3D 데이터의 효율적인 처리와 압축이 가능해 저장 공간과 계산 자원을 절약할 수 있다.
향후 연구 방향
- 최적화 기술 개발 : 실시간 응용과 대규모 데이터셋에 대해서도 효과적으로 사용할 수 있도록 계산 효율성을 높이기 위한 다양한 최적화 기술이 개발되어야 한다.
- 정확도 개선 : 미세한 세부 사항을 처리하고 동적 장면에서의 일관성을 유지하는 방법에 대한 연구가 중요하다.
- multi-modal 통합 : GS를 다른 기술과 통합하여 multi-modal 데이터를 처리하면 더 풍부하고 정확한 3D 재구성이 가능하다.