Matryoshka Gaussian Splatting: 단일 모델로 연속적인 Level of Detail 렌더링
Matryoshka Gaussian Splatting
TL;DR Highlight
3D 장면을 하나의 모델로 저사양~고사양 기기에서 품질 손실 없이 자유롭게 조절해 렌더링하는 기법.
Who Should Read
3DGS 기반 뷰어나 XR/모바일 앱을 개발하면서 기기별 렌더링 성능 최적화를 고민하는 그래픽스/엔진 개발자. 신경망 렌더링 파이프라인에 LoD(Level of Detail) 기능을 추가하려는 연구자나 개발자.
Core Mechanics
- 3DGS(3D Gaussian Splatting, 수백만 개의 3D 타원체로 장면을 표현하는 실시간 렌더링 기법)에 '마트료시카 인형'처럼 중요도 순으로 정렬된 Gaussian 집합을 학습시켜, 앞에서 k개만 잘라도 멀쩡한 장면이 나옴
- 핵심 아이디어는 Stochastic Budget Training: 매 학습 스텝마다 랜덤 비율(k개)로 자른 prefix와 전체 집합, 두 번만 렌더링해 동시에 최적화 → 아키텍처 변경 없이 기존 3DGS 파이프라인에 바로 붙일 수 있음
- Gaussian 정렬 기준으로 opacity(불투명도) 내림차순이 가장 효과적 — 가장 눈에 잘 보이는 primitives가 먼저 배치되어 적은 수로도 장면 구조가 살아있음
- 단일 모델로 1%~100% splat budget 사이 어디서든 연속적인 품질-속도 trade-off 가능, 별도 per-budget 재학습이나 추가 데이터 구조 불필요
- MipNeRF 360 기준 full quality PSNR 28.20dB로 기존 LoD 베이스라인(Octree-GS 27.62dB) 대비 +0.58dB 우위, LPIPS도 0.130으로 압도적으로 낮음
- stochastic budget objective가 일종의 regularizer 역할을 해, 일부 장면(Deep Blending, BungeeNeRF)에서 LoD 없이 학습한 3DGS-MCMC보다 오히려 full quality가 더 높게 나옴
Evidence
- MipNeRF 360에서 AUCfps 64.81 (2위 CLoD-3DGS 46.38 대비 +40%), AUCsplats 77.79 (2위 Octree-GS 68.43 대비 +14%)
- 10% splat budget에서 MGS는 22.2dB PSNR/493FPS 달성, 반면 CLoD-3DGS/CLoD-GS는 11~17dB로 품질 붕괴
- full budget 기준 PSNR: MGS 28.20dB vs. 3DGS-MCMC(LoD 없음) 28.40dB — LoD 지원하면서 단 0.20dB 차이
- 4개 벤치마크(MipNeRF 360, Tanks & Temples, Deep Blending, BungeeNeRF) × 6개 베이스라인 모두에서 AUCfps 1위 또는 2위 이내
How to Apply
- 기존 gsplat/3DGS-MCMC 학습 코드에 두 줄만 추가하면 됨: 매 iteration마다 random ratio r을 샘플링해 k=ceil(r*N)을 구하고, prefix G[0:k]와 전체 G[0:N] 두 번 렌더링해 loss를 합산 (loss = prefix_loss + gamma * full_loss)
- 학습 후 배포 시 기기/프레임 예산에 따라 splat 배열을 앞에서 k개만 잘라서 렌더링 — 모바일이면 10~20%, 고사양 PC면 100% 식으로 런타임에 동적 조절 가능
- importance score로 opacity 내림차순 정렬을 기본값으로 쓰면 되고, 매 iteration 후 reorder(argsort)만 해주면 됨 — 추가 네트워크나 auxiliary 구조 없음
Code Example
# MGS 핵심 학습 루프 (pseudo-code, gsplat 기반)
import torch
def mgs_train_step(gaussians, camera, image, r_min=0.05, gamma=1.0):
N = len(gaussians)
# 1. opacity 기준 내림차순 정렬
opacities = gaussians.get_opacity() # shape: (N,)
order = torch.argsort(opacities, descending=True)
gaussians_sorted = gaussians[order]
# 2. 랜덤 budget 샘플링
r = torch.empty(1).uniform_(r_min, 1.0).item()
k = max(1, int(r * N))
# 3. prefix 렌더링
prefix_gaussians = gaussians_sorted[:k]
prefix_render = render(prefix_gaussians, camera)
prefix_loss = reconstruction_loss(prefix_render, image)
# 4. 전체 렌더링
full_render = render(gaussians_sorted, camera)
full_loss = reconstruction_loss(full_render, image)
# 5. 합산 loss
loss = prefix_loss + gamma * full_loss
loss.backward()
# 6. 매 step 후 reorder (opacity가 업데이트되므로)
# 다음 step에서 자동으로 재정렬됨
return loss
# 배포 시: prefix ratio만 바꾸면 됨
def render_at_budget(gaussians, camera, ratio=0.5):
opacities = gaussians.get_opacity()
order = torch.argsort(opacities, descending=True)
k = int(ratio * len(gaussians))
return render(gaussians[order[:k]], camera)Terminology
Related Resources
Original Abstract (Expand)
The ability to render scenes at adjustable fidelity from a single model, known as level of detail (LoD), is crucial for practical deployment of 3D Gaussian Splatting (3DGS). Existing discrete LoD methods expose only a limited set of operating points, while concurrent continuous LoD approaches enable smoother scaling but often suffer noticeable quality degradation at full capacity, making LoD a costly design decision. We introduce Matryoshka Gaussian Splatting (MGS), a training framework that enables continuous LoD for standard 3DGS pipelines without sacrificing full-capacity rendering quality. MGS learns a single ordered set of Gaussians such that rendering any prefix, the first k splats, produces a coherent reconstruction whose fidelity improves smoothly with increasing budget. Our key idea is stochastic budget training: each iteration samples a random splat budget and optimises both the corresponding prefix and the full set. This strategy requires only two forward passes and introduces no architectural modifications. Experiments across four benchmarks and six baselines show that MGS matches the full-capacity performance of its backbone while enabling a continuous speed-quality trade-off from a single model. Extensive ablations on ordering strategies, training objectives, and model capacity further validate the designs.