OVERVIEW
기존 NeRF 기반 방법들은 장면을 continuous volumetric density field로 표현하고 MLP를 통해 density와 color(radiance)를 예측한다. 이 방식은 높은 품질을 얻을 수 있지만, 렌더링 과정에서 많은 샘플을 ray marching으로 계산해야 하므로 학습과 렌더링 속도가 매우 느리다는 문제가 있다. 이 논문은 이러한 문제를 해결하기 위해 장면을 신경망이 아니라 명시적인 3차원 Gaussian들의 집합으로 표현하는 방법을 제안한다.
3DGS의 입력은 하나의 정적인 장면을 다양한 시점에서 촬영한 여러 장의 이미지와, Structure-from-Motion(SfM)을 통해 추정된 카메라 파라미터이다. SfM 과정에서는 카메라 포즈뿐 아니라 sparse point cloud도 함께 생성되는데 논문에서는 이 sparse point들을 초기 장면 표현으로 사용한다. 이후 학습 과정에서는 이 Gaussian들의 위치, 크기, 투명도, 색 표현을 점진적으로 최적화하여 실제 장면을 정확히 표현하는 radiance field를 만든다.

전체 흐름은 논문 Figure 2에서 나타난다. 먼저 SfM point cloud로부터 초기 Gaussian들을 생성하고, 이후 Gaussian의 파라미터를 반복적으로 최적화하면서 Gaussian의 밀도를 조절하는 과정을 거친다. 마지막으로 tile 기반의 빠른 rasterizer를 이용해 Gaussian splatting을 수행하여 이미지를 렌더링한다. 이 과정은 미분 가능하도록 설계되어 있어 렌더링 결과와 실제 이미지 사이의 차이를 이용해 Gaussian 파라미터를 학습할 수 있다.
장면 표현에서 각 Gaussian은 여러 가지 속성을 가진다. 먼저 공간적인 위치를 나타내는 mean 값이 있고, Gaussian의 모양과 크기를 결정하는 covariance matrix가 있다. 또한 해당 Gaussian의 opacity α 값이 있으며, 색 정보는 view-dependent color를 표현하기 위해 spherical harmonics 계수로 저장된다.
DIFFERENTIABLE 3D GAUSSIAN SPLATTING
하나의 Gaussian은 중심 μ와 공분산 행렬 Σ를 가지는 확률 밀도 함수 형태로 정의된다. 논문에서는 Gaussian을 다음과 같은 형태로 표현한다.

이 식은 공간의 한 점 x에서 해당 Gaussian의 값을 계산하는 식이다. 여기서 μ는 Gaussian의 중심 위치이고 Σ는 Gaussian의 모양을 결정하는 공분산 행렬이다. 렌더링 과정에서는 이 Gaussian 값에 opacity α를 곱해 색을 합성하는 데 사용된다. 하지만 실제로 이미지를 생성하기 위해서는 이 3차원 Gaussian을 카메라 이미지 평면으로 투영해야 한다. 논문에서는 기존의 EWA splatting 연구에서 사용된 방법을 활용하여 3D Gaussian을 2D Gaussian으로 변환한다. 카메라 좌표계로 변환된 공분산 행렬은 다음과 같이 계산된다.

여기서 W는 월드 좌표에서 카메라 좌표로 변환하는 행렬이고, J는 투영 변환의 Jacobian이다. 이 변환을 통해 3D Gaussian이 이미지 평면에서 어떤 타원 형태의 footprint(타원이 차지하는 픽셀 영역을 말함)를 가지는지 계산할 수 있다. 이후 Σ′ 행렬에서 깊이 방향을 제거하면 2×2 공분산 행렬이 남게 되는데, 이것이 이미지 평면에서의 2D Gaussian splat을 정의한다. 결과적으로 하나의 3D Gaussian은 화면 위에서 타원 형태의 splat으로 렌더링된다.
또 하나 중요한 문제는 공분산 행렬을 직접 학습하는 것이 쉽지 않다는 점이다. 공분산 행렬은 반드시 positive semi-definite여야 하는데, 일반적인 gradient descent로 직접 Σ를 업데이트하면 이러한 조건이 쉽게 깨질 수 있다. 이를 해결하기 위해 논문에서는 공분산 행렬을 직접 학습하지 않고 회전과 스케일의 조합으로 표현한다. 공분산 행렬은 다음과 같이 분해된다.

여기서 R은 회전 행렬이고 S는 스케일 행렬이다. 실제 구현에서는 회전을 quaternion으로 표현하고, 스케일은 3차원 벡터로 저장한다. 이렇게 하면 학습 과정에서도 항상 유효한 공분산 행렬이 유지되며, Gaussian의 모양을 자유롭게 조정할 수 있다. 이러한 방식의 또 다른 장점은 Gaussian이 모든 방향으로 동일한 크기를 가지는 것이 아니라 특정 방향으로 길게 늘어난 타원체 형태가 될 수 있는 anisotropic한 형태를 가질 수 있다는 것이다. 이를 통해 평면이나 얇은 구조 같은 복잡한 기하 구조를 적은 수의 Gaussian으로 효율적으로 표현할 수 있다.

Figure 3은 optimization 이후 학습된 3D Gaussian들의 형태를 시각화한 그림이다. 왼쪽은 Gaussian splatting으로 렌더링된 실제 이미지이며, 오른쪽은 Gaussian의 크기를 약 60% 줄여 시각화한 결과이다. Gaussian을 축소하여 표시하면 각 Gaussian이 단순한 구형이 아니라 방향성을 가진 타원체 형태임을 확인할 수 있다. 이러한 anisotropic Gaussian들은 장면의 기하 구조에 맞게 늘어나거나 납작하게 변형되며 배치되고, 그 결과 복잡한 장면 구조를 비교적 적은 수의 Gaussian으로 compact하게 표현할 수 있음을 보여준다.
OPTIMIZATION WITH ADAPTIVE DENSITY CONTROL OF 3D GAUSSIANS
해당 섹션은 3D Gaussian Splatting에서 장면을 실제 이미지에 맞게 학습하기 위한 optimization과 Gaussian 밀도 조절 방법을 설명한다. 목표는 free-view synthesis를 위해 장면을 정확하게 표현하는 dense 3D Gaussian 집합을 만드는 것이다. 이를 위해 각 Gaussian의 위치 (p), opacity (α), 공분산 (Σ), 그리고 view-dependent 색을 표현하는 spherical harmonics 계수 (c)를 최적화한다. 이러한 파라미터 최적화 과정은 Gaussian의 수와 밀도를 조절하는 단계와 번갈아 수행되며, 초기의 sparse Gaussian 집합을 점차 dense한 장면 표현으로 발전시킨다.
Section 5.1에서는 렌더링 결과와 실제 학습 이미지를 반복적으로 비교하며 gradient descent로 Gaussian 파라미터를 업데이트하는 optimization 과정을 설명한다. 3D 장면을 2D 이미지로 투영할 때 깊이를 정확히 알기 어려워 geometry가 잘못 배치될 수 있으므로, 최적화 과정에서는 geometry를 이동, 제거, 생성한다. 공분산 파라미터는 Gaussian의 크기와 방향을 결정하며, 학습이 진행되면 Gaussian이 anisotropic 형태로 변해 넓은 영역을 더 적은 수의 Gaussian으로 표현할 수 있다. 초기에는 isotropic Gaussian으로 시작하며, 초기 scale은 SfM point cloud에서 각 포인트의 최근접 이웃 세 점까지의 거리 평균으로 설정한다. 학습은 렌더링 이미지와 실제 이미지의 차이를 줄이도록 진행되며, 손실 함수는 L1 loss와 D-SSIM loss를 결합한 식 (7)을 사용하고 실험에서는 λ = 0.2로 설정한다.

Section 5.2에서는 Gaussian의 수와 공간적 밀도를 조절하는 adaptive density control을 설명한다. 초기 Gaussian은 SfM에서 얻은 sparse point cloud로부터 생성되기 때문에 장면을 충분히 표현하기 어렵다. 따라서 warm-up 이후 100 iteration마다 densification로 밀도를 높이고, opacity (α)가 임계값 (ε_α)보다 작은 Gaussian은 제거한다. Gaussian 추가가 필요한 영역은 geometry가 부족한 under-reconstruction 영역과 하나의 Gaussian이 너무 넓은 영역을 덮는 over-reconstruction 영역이며, 이 두 경우 모두 view-space position gradient가 크게 나타난다. 따라서 gradient 평균 크기가 임계값 τ_{pos}보다 큰 Gaussian을 densification 대상으로 선택하며, 실험에서는 τ_{pos}를 0.0002로 사용한다.

densification은 두 가지 방식으로 수행된다. 작은 Gaussian이 geometry가 부족한 영역에 있을 경우 Gaussian을 복제하여 gradient 방향으로 이동시키는 cloning을 수행하고, 큰 Gaussian이 복잡한 영역을 덮고 있는 경우 두 개의 Gaussian으로 나누는 splitting을 수행한다. splitting 시 scale은 φ = 1.6으로 나누며 새로운 Gaussian의 위치는 기존 Gaussian을 확률 분포로 사용해 샘플링하여 초기화한다. 또한 floaters는 실제 물체 표면이 아닌 공간 중간에 잘못 생성된 Gaussian 또는 geometry로, depth ambiguity로 인해 발생하는 재구성 오류이다. 이를 완화하기 위해 논문에서는 3000 iteration마다 Gaussian의 opacity를 거의 0으로 초기화하고, 이후 학습 과정에서 필요 없는 Gaussian을 제거한다. 추가로 world space에서 지나치게 크거나 view space에서 footprint가 큰 Gaussian도 주기적으로 제거하여 전체 Gaussian 수를 안정적으로 유지한다.
FAST DIFFERENTIABLE RASTERIZER FOR GAUSSIANS
differentiable rasterizer의 목표는 빠른 렌더링 속도와 효율적인 α-blending을 동시에 달성하는 것이다. 이를 위해 최근 software rasterization 방법을 참고하여 tile 기반 rasterizer를 설계하였다. 기존 방법들은 픽셀 단위로 정렬을 수행해야 했기 때문에 연산 비용이 컸지만 이 방법은 이미지 전체에 대해 primitive를 미리 정렬하여 계산 효율을 높인다.
rasterization(렌더링) 과정에서는 먼저 화면을 16×16 크기의 tile로 분할한다. 그 다음 각 Gaussian이 view frustum(카메라가 실제 볼 수 있는 피라미드 형태의 영역)과 각 tile에 영향을 미치는지 판단하여 필요 없는 Gaussian을 제거한다. Gaussian은 하나의 점이 아니라 공간에 퍼진 분포이기 때문에 중심 위치만으로 판단하지 않고, Gaussian 분포의 약 99%가 포함되는 영역을 기준으로 검사한다. 이때 해당 영역이 view frustum과 교차하는 Gaussian만 유지하고, 화면에 영향을 주지 않는 Gaussian은 제거하여 렌더링 계산량을 줄인다. 이후 각 Gaussian은 자신이 영향을 미치는 tile 개수만큼 복제되고, 각 인스턴스에는 view space depth와 tile ID를 결합한 key가 부여된다. 이 key를 기준으로 GPU의 Radix sort를 사용해 카메라와의 거리 순서로 빠르게 Gaussian을 정렬한다. 픽셀 단위 정렬은 계산 비용이 매우 크기 때문에 수행하지 않고 대략적인 깊이 정렬인 초기 정렬 결과만을 사용하여 α-blending을 수행한다. 이 때문에 일부 상황에서는 blending이 완전히 정확하지 않을 수 있지만 footprint 크기가 픽셀 크기에 가까워질수록 이러한 오차는 거의 무시할 수 있게 된다.
정렬이 완료되면 각 tile에 대해 영향을 미치는 Gaussian 목록이 생성된다. rasterization(렌더링) 단계에서는 tile마다 하나의 GPU thread block이 실행되며, Gaussian 데이터를 shared memory로 로드한 뒤 front-to-back 순서로 순회하면서 각 픽셀의 색과 opacity를 누적한다. 픽셀의 누적 opacity가 1에 가까워지면 해당 픽셀에 대한 계산을 중단한다. 또한 tile의 모든 픽셀이 충분한 opacity에 도달하면 tile 전체의 계산도 종료해 불필요한 계산을 줄인다.
** 픽셀의 누적 opacity가 1에 가까워지면 왜 계산을 중단하는지 이해가 안되었는데, 카메라에 가까운 Gaussian부터 front-to-back 순서대로 처리하기 때문에 누적 opacity가 1에 가까워진 상태면 픽셀이 완전히 가려진 상태이다. 따라서 뒤에 있는 Gaussian들이 더 추가되더라도 픽셀 색에 영향을 주지 못하니까 픽셀 계산을 중단시키는거다.
backward pass에서는 gradient 계산을 위해 forward pass에서 사용된 Gaussian 순서를 다시 역순으로 순회한다. 이때 각 Gaussian은 forward pass에서 계산된 최종 누적 opacity 값을 저장하고 있으며, 이를 이용해 중간 opacity 값을 복원하여 gradient를 계산한다. 이러한 방식은 픽셀마다 긴 리스트를 저장할 필요 없이 효율적인 메모리 사용으로 gradient 계산을 가능하게 한다.
IMPLEMENTATION, RESULTS AND EVALUATION
Section 7.1에서는 구현 세부 사항을 설명한다. 학습 안정성을 위해 초기에는 낮은 해상도에서 optimization을 시작하고, 250과 500 iteration 이후 두 차례에 걸쳐 해상도를 점차 높이는 warm-up 전략을 사용한다.

Section 7.2에서는 실제 장면과 합성 장면에서의 실험 결과를 제시한다. 실제 장면 실험에서는 Mip-NeRF360(9), Tanks & Temples(2), Deep Blending(2) 데이터셋에서 총 13개의 장면(각 장면을 여러 방향에서 찍은 사진들로 데이터셋이 구성된다)을 사용하였으며, 합성 장면 실험에는 Blender 데이터셋을 사용하였다. 평가 지표로는 PSNR, LPIPS, SSIM을 사용하고, 학습 시간, 렌더링 속도, 그리고 메모리 사용량도 함께 비교하였다.
실험 결과 3DGS는 M-NeRF360과 유사하거나 일부 장면에서는 더 높은 화질을 보이면서도 학습 속도는 크게 향상되었다. M-NeRF360이 약 48시간의 학습 시간이 필요한 반면, 3DGS는 30K 기준 약 41분 만에 수렴한다. 또한 7K 설정에서는 약 6분 학습만으로 InstantNGP와 Plenoxels와 유사한 품질을 달성하며, 추가 학습을 통해 더 높은 품질을 얻을 수 있다.



synthetic Blender dataset 실험에서는 다양한 시점의 이미지와 정확한 카메라 파라미터가 제공되기 때문에, 이러한 환경에서는 SfM 초기화 없이 SOTA 성능을 달성할 수 있다. 장면 영역에 100K개의 Gaussian을 무작위로 배치해 학습을 시작하며, optimization 과정에서 불필요한 Gaussian이 제거되어 약 6K~10K개만 남는다. 이후 densification을 통해 최종적으로 200K~500K개의 Gaussian으로 장면을 표현한다. PSNR 결과는 Table 2에 제시된다.
또한 제안한 방법이 얼마나 compact한 표현을 제공하는지도 평가하였다. anisotropic Gaussian을 사용하면 복잡한 기하 구조를 더 적은 수의 파라미터로 표현할 수 있다. 이를 확인하기 위해 Zhang 등의 point-based 모델과 비교하였으며, 동일한 PSNR 성능에 도달할 때 제안한 방법은 기존 방법보다 약 4분의 1 수준의 포인트만 사용하였다. 그 결과 평균 모델 크기는 약 3.8MB로 기존 방법의 9MB보다 작았다.
ablation 실험에서는 먼저 SfM 초기화의 중요성을 평가하기 위해 SfM 포인트 대신 카메라 bounding box보다 세 배 큰 공간에서 무작위 Gaussian을 생성하여 학습을 수행(Random Init과 Full 비교)하였다. 이 경우는 아래와 같으며, 전체적으로는 동작하지만 배경 영역에서 성능이 저하되고 floaters가 더 많이 발생하는 것을 확인하였다.


다음으로 densification 전략의 효과를 분석하였다. Section 5에서 제안한 clone과 split 전략을 각각 제거한 실험을 수행(No-Split, No-Clone, Full 비교)하였다. 실험 결과는 Fig. 8에서 나타나며, 큰 Gaussian을 분할하는 splitting 전략은 배경 재구성 품질에 중요한 반면, 작은 Gaussian을 복제하는 cloning 전략은 얇은 구조가 있는 장면에서 더 빠른 수렴과 좋은 재구성 품질을 제공한다.


gradient를 받는 splat 수를 제한하는 방법도 실험(Limited-BW)하였다. Pulsar 방식처럼 앞쪽 N개의 Gaussian만 gradient를 받도록 설정하여 N=10으로 실험한 결과, 학습이 불안정해지고 PSNR이 크게 감소하였다. 예를 들어 표3의 Truck-30K 장면에서는 PSNR이 약 11dB 감소하였으며, Garden의 결과는 Fig. 9에 나타난다.


anisotropic covariance의 효과도 분석(Isotropic과 Full 비교)하였다. 이 실험에서는 Gaussian의 공분산을 전체 행렬 대신 하나의 스칼라 값으로 제한하여 isotropic Gaussian만 사용하도록 하였다. 결과적으로 Gaussian이 표면 방향에 맞게 정렬되지 못해 재구성 품질이 크게 감소하였다. 이러한 차이는 Fig. 10에서 확인할 수 있다.

마지막으로 spherical harmonics의 사용 효과도 평가(No-SH와 Full 비교)하였다. SH를 사용하면 시점에 따라 변하는 반사 효과를 표현할 수 있어 전체 PSNR 성능이 향상되는 것을 확인하였다(Table 3).

Section 7.4에서는 방법의 한계점을 설명한다. 다른 방법들과 비슷하게 입력 이미지에서 충분히 관측되지 않은 영역에서는 원래 장면에는 없는 인공적인 시각적 오류(artifact)가 발생할 수 있다. 또한 anisotropic Gaussian을 사용할 때 길게 늘어난 Gaussian이나 얼룩처럼 보이는(splotchy) artifact가 나타날 수 있으며 이러한 사례는 Fig. 12에서 확인할 수 있다. 일부 장면에서는 큰 Gaussian이 생성되면서 시점이 바뀔 때 갑작스러운 시각적 변화(popping)가 발생하기도 한다. 이러한 문제는 rasterizer의 culling 방식과 단순한 가시성 처리에서 일부 발생하는 것으로, 향후 개선될 수 있다고 언급한다.

또한 현재 방법은 optimization 과정에서 별도의 regularization을 사용하지 않기 때문에 관측되지 않은 영역에서 artifact가 발생할 수 있다. 매우 큰 장면에서는 위치 learning rate를 낮춰야 안정적으로 학습이 가능하다.
마지막으로 메모리 사용량도 한계로 언급된다. point-based 방법보다는 compact하지만 NeRF 기반 방법보다 메모리 사용량이 많으며, 큰 장면 학습 시 GPU 메모리가 20GB 이상 필요할 수 있다. 학습이 끝난 모델도 수백 MB 정도의 메모리를 필요로 하며, 추가로 rasterizer에 30~500MB 정도가 필요하다. 그러나 point cloud 압축 기법을 적용하면 이러한 메모리 사용량을 줄일 수 있는 가능성이 있다고 제안한다.
DISCUSSION AND CONCLUSIONS
본 논문은 다양한 장면에서 실시간으로 고품질 radiance field 렌더링을 수행할 수 있는 3D Gaussian Splatting 방법을 제안한다. 장면을 3D Gaussian primitive로 표현하고 splat 기반 rasterization을 사용함으로써, 기존 NeRF 기반 방보다 훨씬 빠른 학습과 렌더링을 달성하면서도 높은 화질을 유지한다. 이는 radiance field 학습에 연속적인(continuous) 표현이 반드시 필요하지 않음을 보여준다. 또한 GPU 기반 rasterization 구조가 성능 향상의 핵심이며, 향후 CUDA 기반 최적화를 통해 추가적인 속도 향상이 가능하다고 언급했다. 결과적으로 제안한 방법은 기존 최고 품질 방법과 유사한 렌더링 품질을 유지하면서 실시간 렌더링과 빠른 학습을 동시에 달성한 최초의 radiance field 방법임을 강조한다.
'ML&DL > 논문리뷰' 카테고리의 다른 글
| V-JEPA: Revisiting Feature Prediction for Learning VisualRepresentations from Video (0) | 2026.03.20 |
|---|---|
| NeRF: Representing Scenes asNeural Radiance Fields for View Synthesis (0) | 2026.03.11 |
| I-JEPA: Self-Supervised Learning from Images with aJoint-Embedding Predictive Architecture (0) | 2026.03.10 |
| MAE: Masked Autoencoders Are Scalable Vision Learners (0) | 2026.03.09 |
| SAM: Segment Anything (0) | 2026.03.09 |