3D Gaussian Splatting이란? 초고속 고품질 실시간 3D 렌더링 [논문 리뷰]
고품질 렌더링, 빠른 학습 속도, 획기적인 실시간 렌더링 속도(100FPS 이상)를 달성한 3D Gaussian Splatting 논문을 리뷰합니다.
1. NeRF의 한계를 뛰어넘은 3D Gaussian Splatting
NeRF의 등장과 한계점:
몇 년 전, Neural Radiance Fields (NeRF)라는 혁신적인 기술이 등장하며 3D 장면 표현 및 렌더링 분야에 큰 반향을 일으켰습니다. NeRF는 여러 각도에서 촬영한 이미지와 카메라 포즈 정보를 이용하여, 새로운 시점에서의 장면을 놀라울 정도로 사실적으로 렌더링해냈죠. 하지만 NeRF는 몇 가지 치명적인 단점을 가지고 있었습니다. 바로 느린 학습 및 렌더링 속도, 그리고 높은 컴퓨팅 자원 요구였습니다. 고품질의 3D 장면을 얻기 위해서는 엄청난 시간과 고성능 GPU가 필요했기에, NeRF를 실제 서비스에 적용하기에는 어려움이 있었습니다.
논문 소개 & 핵심 기여:
그런데, 이러한 NeRF의 한계를 극복할 놀라운 논문이 SIGGRAPH 2023에서 발표되었습니다! 바로 "3D Gaussian Splatting for Real-Time Radiance Field Rendering" (Bernhard Kerbl 외)입니다. 이 논문은 NeRF와 동일한 목표(다양한 시점에서의 3D 장면 렌더링)를 가지면서도, 고품질 렌더링, 빠른 학습 속도, 그리고 무엇보다 획기적인 실시간 렌더링 속도(100FPS 이상)를 달성했습니다.
기대 효과:
3D Gaussian Splatting 기술은 NeRF 기반 실시간 서비스의 가능성을 활짝 열었다고 볼 수 있습니다. 이제 고가의 GPU 없이도, 실시간으로 3D 장면을 자유롭게 둘러볼 수 있는 시대가 눈앞에 다가온 것이죠!
2. 3D Gaussian Splatting이란?
네이밍 의미 & 3D Gaussian 개념:
"Splatting"이라는 단어는 물기를 머금은 무언가가 표면에 부딪혀 흩뿌려지는 모습을 묘사하는 의성어입니다. 3D Gaussian Splatting은 이름처럼, 3D 공간 상에 수많은 3D Gaussian(정규분포)을 흩뿌려 장면을 표현하는 방식입니다. 각 3D Gaussian은 평균, 공분산, 투명도 등의 속성을 가지며, 이들이 모여 복잡한 3D 장면을 형성하게 됩니다.
결과 시각화:
아래 이미지는 최적화된 3D Gaussian들을 60% 축소하여 시각화한 것입니다. 왼쪽은 실제 렌더링된 이미지이고, 오른쪽은 3D Gaussian들의 형태를 나타냅니다. 3D Gaussian들이 길쭉하거나 얇은 형태로, 장면의 기하학적 구조에 맞춰 배치된 것을 볼 수 있습니다. 이를 통해 3D Gaussian Splatting이 장면을 얼마나 효율적으로 표현하는지 짐작할 수 있습니다.
![]() |
Original vs Shrunken Gaussians |
3. 왜 3D Gaussian인가?
기존 3D 모델 표현 방법 비교:
3D 모델을 표현하는 방법은 여러 가지가 있습니다.
- Mesh, Point: 가장 전통적인 방식으로, GPU/CUDA 기반의 rasterization (3D를 2D 이미지로 변환하는 과정)에 최적화되어 있습니다. 하지만 불연속적인 표현 방식이기에, 부드러운 표면이나 복잡한 디테일을 표현하기에는 한계가 있습니다.
- NeRF: 장면을 연속적인 함수(continuous function) 형태로 표현하여, 최적화(optimization)에 유리합니다. 하지만 렌더링 시에는 확률 기반 샘플링(stochastic sampling)을 사용하기 때문에, 연산량이 많고 노이즈가 발생할 수 있습니다.
3D Gaussian의 장점:
3D Gaussian Splatting은 위 두 가지 방법의 장점을 모두 취하고 있습니다.
- 미분 가능 (Differentiable volumetric representation): NeRF처럼 연속적인 표현이 가능하여, 최적화에 유리합니다.
- 명시적 표현 (Explicit representation): Mesh, Point처럼 3D Gaussian이라는 명확한 객체를 사용하므로, 렌더링 시 불필요한 계산을 줄일 수 있습니다. (Neural Network는 implicit representation)
- 효율적인 2D projection 및 α-blending: 3D Gaussian을 2D 이미지 평면에 투영하고, 투명도를 고려하여 픽셀 값을 합성하는 과정(α-blending)이 매우 효율적으로 수행됩니다. 이는 빠른 렌더링을 가능하게 하는 핵심 요인입니다.
렌더링 관점 비교:
![]() |
NeRF vs 3D Gaussian Splatting(source) |
NeRF: 각 픽셀마다 ray를 쏘아 여러 지점을 샘플링하고, 각 지점의 color와 density를 계산한 후, 이를 합산하여 최종 픽셀 값을 결정합니다. (Volumetric Ray Marching)
3D Gaussian Splatting: 이미지를 작은 타일로 나누고, 각 타일 내에서 3D Gaussian들을 깊이 순서대로 정렬한 후, 앞에서부터 뒤로 α-blending을 적용하여 픽셀 값을 계산합니다. (Tile-based Rasterization)
3D Gaussian Splatting은 타일 단위로 연산을 수행하고, 불필요한 샘플링을 줄이기 때문에 NeRF보다 훨씬 적은 연산량으로 렌더링이 가능합니다.
4. 3D Gaussian Splatting 알고리즘 개요
Initialization: COLMAP 등의 SfM(Structure from Motion) 알고리즘으로 얻은 point cloud를 사용하여 3D Gaussian들을 초기화합니다.
Projection: 3D Gaussian들을 카메라 평면에 투영하여 2D Gaussian 형태로 만듭니다.
Differentiable Tile Rasterizer: 2D Gaussian들을 타일 단위로 래스터화하여 이미지를 생성합니다. 이 과정은 미분 가능(differentiable)하게 설계되어, 학습 과정에서 gradient를 역전파할 수 있습니다.
Gradient Flow: 생성된 이미지와 ground truth 이미지 간의 Loss를 계산하고, 이를 바탕으로 gradient를 역전파하여 3D Gaussian의 속성(평균, 공분산, 투명도 등)을 업데이트합니다.
Adaptive Density Control: Gradient 정보를 활용하여 3D Gaussian의 밀도를 조절합니다. 즉, 장면의 복잡도에 따라 Gaussian을 추가하거나(Clone, Split), 제거(Remove)합니다.
수도코드 기반 설명 (간략화):
# 변수 초기화 (모델 설계)
M = SfM_point_cloud # 3D Gaussian 평균
S, C, A = Initialize_parameters() # 공분산, 색상, 투명도
# 학습 루프
while not converged:
# 이미지 및 카메라 포즈 로드
V, I_gt = Sample_training_view()
# 3D Gaussian -> 2D Gaussian -> 이미지 생성
I_predicted = Rasterize(M, S, C, A, V)
# Loss 계산 (L1 + D-SSIM)
Loss = Calculate_loss(I_predicted, I_gt)
# 파라미터 업데이트 (Adam Optimizer)
Update_parameters(M, S, C, A, Loss)
# 주기적으로 Gaussian 밀도 조절
if Is_refinement_iteration():
Adaptive_density_control(M, S, C, A)
5. 알고리즘 상세 (Initialization, Optimization, Adaptive Control)
Initialization
M
(Mean): SfM으로 얻은 point cloud의 각 점을 초기 3D Gaussian의 평균값으로 사용합니다.S
(Covariance Matrix):- Scale Matrix
S
와 Rotation MatrixR
로 구성됩니다. (논문의 Equation (6)) - Scaling vector
s
(x, y, z축 배율)와 quaternionq
(회전)로 분리하여 최적화합니다. - 3D Gaussian을 2D Gaussian으로 투영할 때 (논문의 Equation (5)) Covariance Matrix가 Positive Definite를 만족해야 하므로, 이러한 설계를 사용합니다. 3D gaussian을 나타내는 식은 Equation(4)와 같습니다.
C
(Color): Spherical Harmonics (SH) 함수를 사용하여 색상을 표현합니다.- dc (direct constant)와 rest (나머지 coefficient)로 구성됩니다.
A
(Opacity): 투명도를 나타내는 실수값입니다.
Optimization
- 학습 루프:
- 이미지 및 카메라 포즈 로드: 훈련 데이터에서 이미지와 해당 이미지의 카메라 포즈를 가져옵니다.
- Rasterize:
M
,S
,C
,A
,V
(카메라 포즈)를 입력으로 받아 2D Gaussian을 생성하고, 이를 타일 기반으로 래스터화하여 이미지를 생성합니다. (별도 글로 상세 설명 예정) - Loss 계산: 생성된 이미지와 ground truth 이미지 간의 차이를 L1 Loss와 D-SSIM Loss를 결합하여 계산합니다. (λ = 0.2)
- Adam Optimizer: 계산된 Loss를 바탕으로 Adam Optimizer를 사용하여
M
,S
,C
,A
를 업데이트합니다.
- Optimization 세부 사항:
- Warm-up: 초기에는 낮은 해상도에서 학습을 시작하고, 점진적으로 해상도를 높여갑니다. (4배 작은 이미지 -> 250, 500 iteration 후 2배씩 upsampling)
- SH coefficient optimization: 처음에는 SH의 L0 (direct constant)만 최적화하고, 이후 점진적으로 더 높은 차수의 coefficient를 최적화합니다. (1000 iteration마다 SH band 추가)
Adaptive Control of Gaussians
- 100 iteration마다 수행됩니다.
- Remove Gaussian: 투명도(α)가 특정 임계값(0.005)보다 낮은 Gaussian을 제거합니다.
- Densification:
- Under-reconstruction: view-space positional gradient가 큰 영역에 작은 Gaussian을 복제(Clone)하여 배치합니다.
- Over-reconstruction: view-space positional gradient가 큰 영역에 큰 Gaussian을 분할(Split)하여 작은 Gaussian으로 만듭니다.
- Alpha값 주기적 초기화: 3000 iteration마다 모든 Gaussian의 α값을 0으로 초기화하여, 불필요한 Gaussian이 쌓이는 것을 방지합니다.
6. 실험 결과
- 평가 지표: PSNR, SSIM, LPIPS (이미지 품질 평가 지표)
- 데이터셋: Mip-NeRF360, Tanks&Temples, Deep Blending, Synthetic Blender
- 비교 대상: Mip-NeRF360, InstantNGP, Plenoxels
- 결과:
- Quality: Mip-NeRF360과 동등하거나 약간 더 우수한 이미지 품질을 달성했습니다.
- Train 속도: InstantNGP와 비슷한 학습 속도를 보였으며, 추가 학습을 통해 SOTA quality를 달성했습니다.
- Rendering 속도: 100FPS 이상의 획기적인 실시간 렌더링 속도를 달성했습니다.
- Memory 사용량: 기존 NeRF 기반 방법들보다 메모리 사용량이 높습니다. (20GB 이상 GPU 권장)
- 시각적 비교: 논문 내 이미지, 공식 웹사이트의 WebGL 데모, 코드 빌드 후의 결과 등을 통해 직접 확인할 수 있습니다.
7. Ablation Study
- SfM Initialization: SfM point cloud 없이 초기화했을 때, 배경 영역에서 성능 저하가 발생했습니다.
- Densification: Clone과 Split을 각각 비활성화했을 때, 배경 reconstruction 및 수렴 속도에 영향을 미치는 것을 확인했습니다.
- Unlimited Depth Complexity: Gradient 계산을 skipping하는 실험을 통해, optimization 불안정성을 확인했습니다.
- Anisotropic Covariance: Anisotropy를 제거했을 때, surface alignment 및 렌더링 품질이 저하되는 것을 확인했습니다.
- Spherical Harmonics: SH 사용 여부에 따른 실험을 통해, view-dependent 효과를 보상하는 데 중요한 역할을 함을 확인했습니다.
8. 한계점
- 입력 이미지가 부족한 Sparse Scene에서 artifact가 발생할 수 있습니다.
- Anisotropic Gaussian으로 인해 길쭉한 artifacts 또는 얼룩이 발생할 수 있습니다.
- Guard band 및 visibility algorithm으로 인한 popping artifacts가 발생할 수 있습니다.
- 현재 구현에는 regularization이 적용되지 않았습니다.
- 매우 큰 Scene에서는 position learning rate를 조정해야 할 수 있습니다.
- 메모리 사용량이 높습니다. (향후 개선 가능성)
9. 결론
3D Gaussian Splatting은 실시간, 고품질 radiance field 렌더링을 가능하게 하는 혁신적인 기술입니다. 3D Gaussian이라는 독창적인 표현 방식을 통해 미분 가능성, 명시적 표현, 빠른 rasterization이라는 장점을 모두 확보했습니다.
향후 연구를 통해 메쉬 재구성, 압축 기술 적용 등 더 많은 발전이 이루어질 것으로 기대됩니다.