ClaraVid Holistic scene reconstruction benchmark from aerial perspective ICCV 2025

KoalaGS: Complexity-Aware Continuous Level of Detail for Gaussian Splatting

NeurIPS 2026 · Spotlight

*Work done while visiting the Astra Vision team

Abstract

Deploying a trained 3D Gaussian Splatting scene under shrinking compute budgets requires one primitive set to remain effective when rendered at smaller prefixes. The key problem is deciding which Gaussians should retain capacity as the budget decreases. Existing continuous level of detail methods rank primitives through opacity or learned primitive scores, but treat each Gaussian in isolation and ignore the different value of capacity in simple and complex regions. We show that this value can be estimated before optimization. A pilot study shows that input view complexity predicts where reconstruction error concentrates in both image space and Gaussian space, while standard training allocates capacity in a form that truncation cannot preserve. We use this signal during training to bias relocation toward difficult regions and at inference to define an importance score that preserves large primitives in simple regions. A variance objective promotes uniform residuals between full and reduced budget renderings. Across fixed budget quality, spectrum quality, and transition smoothness, our method improves on continuous level of detail baselines, and has direct applications to progressive streaming.

Pilot Study

Image complexity is known to correlate with reconstruction error. Building on this, we ask three questions and use DL3DV benchmark (140 scenes).

How do we measure image complexity?

We score every 32-pixel patch of each input view with a no-reference operator: pixel entropy, Laplacian, or delentropy. Textured patches score high, flat ones low. The maps are computed once from the input images, before training (20–60 s per scene). Delentropy correlates best with error, so we use it.

Pipeline: complexity maps are computed from the input views; a trained 3DGS renders each view to give quality maps; both are projected onto the Gaussians to form 3D complexity and quality fields Pipeline: complexity maps are computed from the input views; a trained 3DGS renders each view to give quality maps; both are projected onto the Gaussians to form 3D complexity and quality fields
We compare the complexity map of each input view with the quality map of its rendering, then project both onto the Gaussians to obtain complexity and quality fields in 3D.

Q1 Does complexity also tell us where reconstruction fails?

Yes, before any training. Complex regions reconstruct worse, both in the images and on the 3D Gaussians.

  • In 2D. Within each image, the complex patches are the ones with the highest error.

    Quality†
    Image
    Complexity
    PSNR
    SSIM
    Outdoor
    Outdoor scene: input image Outdoor scene: complexity map Outdoor scene: PSNR quality map Outdoor scene: SSIM quality map
    Indoor
    Indoor scene: input image Indoor scene: complexity map Indoor scene: PSNR quality map Indoor scene: SSIM quality map

    †Inverted colormap, as quality correlates inversely with complexity.

  • In 3D. Projected onto the 3D Gaussian means, the complexity and quality fields line up across the scene. Drag any view to orbit all three.

    RGB
    Complexity
    PSNR†

    †Inverted colormap, as quality correlates inversely with complexity.

Q2 Does a trained 3DGS put its Gaussians where complexity says?

Only partly. Complex regions get exponentially more Gaussians, but even flat, uniform regions are split into many.

  • Box plots of the number of Gaussians per voxel for increasing complexity, log scale, with 50/75/90/99th percentiles marked Box plots of the number of Gaussians per voxel for increasing complexity, log scale, with 50/75/90/99th percentiles marked
    Gaussians per voxel by voxel complexity, across DL3DV scenes (log scale). The steady rise of the percentiles indicates exponential growth.

Q3 Does that capacity survive when we cut the budget?

No. Pruning by opacity down to 0.1% hurts simple regions almost as much as complex ones.

  • PSNR against complexity for budgets from 100% down to 0.1%, for 3DGS-MCMC pruned by opacity on an indoor scene PSNR against complexity for budgets from 100% down to 0.1%, for 3DGS-MCMC pruned by opacity on an indoor scene
    3DGS-MCMC on an indoor scene, pruned by opacity: average PSNR per complexity at each budget. Simple regions lose almost as much quality as complex ones.

Takeaway: complexity marks where reconstruction fails, and it is cheap: computed from the input images alone, before training. Can it decide where Gaussians go, and which to keep?

Method

We learn a single set of Gaussians \(\mathcal{G}\) that can be rendered under any primitive budget \(\tau \in (0, 1]\) by keeping its first \(\lceil \tau N \rceil\) primitives. Each budgeted prefix should stay spatially coherent and degrade gracefully as \(\tau\) decreases. Building on the pilot study, we bring the complexity signal into 3DGS-MCMC with two simple modifications: complexity steers where Gaussians are (re)allocated during training, and a content-aware importance score decides which Gaussians survive at inference, preserving large Gaussians in simple regions. A variance objective keeps errors uniform across budgets.

1

Per-Gaussian complexity

Every Gaussian carries a complexity value, a running average of the image complexity it projects onto.

\[ C_j \leftarrow (1 - \eta)\, C_j + \eta\, C^{\text{2D}}_i\big(\pi_i(\mu_j)\big) \]
Details

We augment each Gaussian \(g_j\) with a scalar complexity \(C_j\). After each full capacity training render of view \(i\), the means of the Gaussians inside the frustum are projected onto the precomputed complexity map, and their complexity is updated with an exponential moving average, \(\eta \in (0, 1]\). Over training, \(C_j\) converges to the multi view average used in the pilot study.

2

Complexity-aware densification

Relocation favours complex regions, where reconstruction error concentrates.

\[ p(\mu_j) = \alpha_j \cdot \exp\big(\tilde{C}_j\big) \]
Details

3DGS-MCMC relocates Gaussians with a probability proportional to opacity, \(p(g_j) = \alpha_j\), so regions the optimizer has not yet resolved stay under-served. Since complexity is a surrogate for reconstruction error, we bias this sampling towards complex regions, where \(\tilde{C}_j \in [0,1]\) is the min-max normalized complexity.

The exponential mirrors the growth of Gaussian count with complexity found in the pilot study, and the multiplicative form keeps opacity in the loop. To avoid collapsing onto a fixed set of complex regions, we apply complexity dropout, setting \(\tilde{C}_j = 0\) with probability \(\delta = 0.2\).

3

Complexity-aware level of detail

The importance score keeps large Gaussians in simple regions and falls back to opacity in complex ones.

\[ S(g_j) = \alpha_j + \lambda \cdot \frac{s(g_j)}{\exp\big(C_j\big)} \]
Details

Under a reduced budget only the Gaussians with the highest importance score survive. Ranking by opacity alone degrades simple regions disproportionately, because opacity captures learned contribution but not the spatial footprint a Gaussian covers. We combine opacity, scale, and complexity, where \(s(g_j)\) is the spatial norm of the Gaussian and \(\lambda = 2\).

In complex regions the scale term is attenuated and the score falls back to opacity, which is most reliable where optimization pressure concentrates. In simple regions the score restores weight to large Gaussians that cover broad areas efficiently.

4

Variance objective

Errors at a reduced budget stay spatially uniform, so quality degrades evenly.

\[ \min\ \mathrm{Var}_{u}\big(\Delta_i(u)\big),\quad \Delta_i = \mathcal{E}(I_i^{\text{full}}) - \mathcal{E}(I_i^{\tau}) \]
Details

During training we sample a budget \(\tau\) at each step. At full capacity the optimizer sees all Gaussians, while at \(\tau < 1\) it sees only the survivors and may pull them away from their full capacity solution. We therefore take the residual between the full and reduced budget reconstruction errors and minimize its spatial variance. The full objective is

\[ \mathcal{L} = \mathcal{L}_{\text{rec}}\big(\hat I_i^{\text{full}}, I_i\big) + \mathcal{L}_{\text{rec}}\big(\hat I_i^{\tau}, I_i\big) + \lambda_{\text{var}}\, \mathrm{Var}_{u}\big(\Delta_i(u)\big), \]

with \(\mathcal{L}_{\text{rec}}\) the standard 3DGS L1 + D-SSIM loss.

Results

Explore the budget

Our Gaussians are sorted by importance, so any budget is simply the first part of the file.

  • Try it. Drag the slider to keep fewer Gaussians.

  • Across the whole range. To capture quality performance over the whole LoD range, we report the area under each metric’s curve per decade, with ten budgets per decade sampled on a logarithmic scale. With typical scenes of 1–5M Gaussians, each decade matches a different use: [10%, 100%] desktop, [1%, 10%] mobile, and [0.1%, 1%] streaming initialization.

    MethodTotal [0.1%, 100%][0.1%, 1%] (×100)[1%, 10%] (×10)[10%, 100%]
    PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓
    FlexGS24.770.7920.293–––23.360.6980.32822.430.7220.260
    3DGS-MCMC26.580.8140.21311.690.3070.55916.390.4930.39524.830.7620.168
    LightGaussian26.780.8200.21814.750.4380.59219.030.5960.43024.930.7620.174
    MGS28.650.8580.19216.450.4450.50322.270.6360.33426.250.7900.153
    Ours29.090.8670.18417.550.4710.49623.200.6650.31126.590.7950.147

    Area under each metric’s curve, per interval, sampled at 30 intervals: 0.1%, 0.2%, …, 1%, 2%, …, 10%, 20%, …, 100%. The two lower intervals scaled by ×100 and ×10 to be comparable. Continuous-LoD methods only. Best in bold, second underlined.

Where does the capacity go?

We group the Gaussians of MipNeRF360 into five complexity bins and follow each bin as the budget shrinks. Our score keeps more of the simple regions and fewer of the complex ones than MGS. Yet quality is higher in every bin and at every budget, including the most complex one, where the gap grows to +2.25 dB at 0.1%: densification places the Gaussians that remain there better.

Survival rate per complexity bin, log scale, for Ours and MGS at budgets from 100% down to 0.1% Survival rate per complexity bin, log scale, for Ours and MGS at budgets from 100% down to 0.1%

Survival: share of each bin’s Gaussians still kept at a given budget (log scale).

Average PSNR per complexity bin for Ours and MGS at budgets from 100% down to 0.1% Average PSNR per complexity bin for Ours and MGS at budgets from 100% down to 0.1%

Quality: average PSNR of the Gaussians in each bin.

Qualitative comparison across budgets

All methods look alike at full capacity but diverge as the budget shrinks. Ours keeps the scene covered at low budgets and stays close to FlexGS, which cannot be rendered as a prefix.

  • Qualitatively. Bonsai at four budgets.

    Bonsai rendered by 3DGS-MCMC, LightGaussian, MGS, Ours and FlexGS at 100%, 10%, 1% and 0.1% of the Gaussians, with FPS and PSNR for each image Bonsai rendered by 3DGS-MCMC, LightGaussian, MGS, Ours and FlexGS at 100%, 10%, 1% and 0.1% of the Gaussians, with FPS and PSNR for each image
    Bonsai at 100%, 10%, 1% and 0.1% of the Gaussians; insets report FPS and PSNR. FlexGS is not prefix-renderable and cannot reach 0.1%. Click to enlarge.
  • Quantitatively. PSNR, SSIM and LPIPS at fixed budgets, per dataset.

    Method#GS [k]100%10%1%0.1%
    PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓PSNR ↑SSIM ↑LPIPS ↓
    Octree-GS2,99129.160.8760.174–––––––––
    FlexGS3,01229.060.8720.21727.580.8350.29323.390.6630.494–––
    3DGS-MCMC3,09229.800.8930.14620.580.6470.35214.140.3830.58611.060.2670.667
    LightGaussian3,09229.890.8970.14721.060.6690.35915.810.4750.55813.010.3770.636
    MGS3,09229.550.8900.15126.970.7970.28020.170.5440.52114.490.3930.620
    Ours3,09229.770.8930.15027.820.8220.25821.140.5660.51016.040.4590.611

    – marks a budget the method cannot reach. Best in bold, second underlined, among full-LoD methods.

Application: Progressive streaming

Because the file is sorted by importance, it can be drawn while it downloads: each slice that arrives adds the next most important Gaussians.

  • Try it. Pick a link speed and press play.

    Disclaimer

    This is a simulation of streaming: the file is fetched at your connection's real speed, and each slice is shown when it would have arrived over the chosen link. The scene is stored in the SPZ format with the higher-order spherical harmonics dropped (only first order is kept), and the importance-sorted Gaussians are split into consecutive chunks of 10k, each a standalone SPZ file that is drawn as soon as its bytes arrive.

  • Time to quality. In the paper’s setup, Bonsai streams over a simulated 50 Mbps link as raw fp32 attributes: 244 bytes per Gaussian (against ~17 in the demo above). Ours reaches 25 dB after 1.5 s, against 2.0 s for MGS and 9.8 s for 3DGS-MCMC. FlexGS resends the full set at every budget: 344 s instead of 49 s.

    PSNR against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours PSNR against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours
    SSIM against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours SSIM against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours
    LPIPS against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours LPIPS against streaming time on Bonsai over a 50 Mbps link, for 3DGS-MCMC, MGS, FlexGS and Ours
    Legend: 3DGS MCMC, MGS, FlexGS, Ours
    PSNR, SSIM and LPIPS against streaming time (log scale) on Bonsai: 50 Mbps, 244 bytes per Gaussian.

Rendering speed

Keeping large Gaussians in simple regions has a price at low budgets. A large Gaussian covers more of the screen and costs more to render, so as the budget shrinks our renders speed up less than those of the other methods. At full capacity we remain on par with the other prefix methods, but at 0.1% MGS renders about 1.8× faster indoors and 1.3× faster outdoors, at lower quality. In practice the impact is limited: our slowest setting still renders at over 450 FPS, far beyond real time, and we reach a given quality with fewer Gaussians than MGS. Bounding the screen footprint of large Gaussians at the lowest budgets is a natural next step.

MethodIndoorOutdoor
100%10%1%0.1%100%10%1%0.1%
FlexGS*339578833–3516091,021–
LightGaussian3003796971,1011894358551,364
3DGS-MCMC3005686887321898051,0931,177
MGS3025957318291937691,0501,151
Ours302450475463198649833874

Average frame rate on MipNeRF360 on one NVIDIA H100: indoor scenes (Bonsai, Counter, Kitchen, Room) at half resolution, outdoor scenes (Bicycle, Garden, Stump) at quarter resolution. *FlexGS uses a smaller primitive budget, hence its higher speed. Best in bold, second underlined, excluding FlexGS.

BibTeX

The BibTeX is not available yet and will be added soon.

Acknowledgements

This work was supported by the “Romanian Hub for Artificial Intelligence – HRIA”, Smart Growth, Digitization and Financial Instruments Program, MySMIS no. 351416, and by the Astra team, Inria. This work was granted access to the HPC resources of IDRIS under the allocation 2025-AD011017283 made by GENCI on the Jean Zay cluster.