CleanGS: Pareto-Guided Post-Hoc Cleanup of 3D Gaussian Splatting Scenes
Organizations: School of Computer Sciences National Institute of Science Education and Research Bhubaneswar, India
Abstract
A pretrained 3D Gaussian Splatting (3DGS) reconstruction can reproduce its capture views well while retaining off-object structure that becomes visible under reframing. We present CleanGS, a post-hoc cleanup method that removes such structure without retraining the underlying representation. Given calibrated views and binary target masks, CleanGS scores candidate three-view subsets using mask reliability, camera baseline, viewing-direction diversity, and complementary sparse 3D support. Rather than collapsing these objectives a priori, it computes the exact Pareto front over subsets of the reduced candidate pool and selects a balanced on-dominated subset using weighted Chebyshev scalarization. The selected views then drive rasterization-aware two-of-three voting to retain a subset of the original Gaussians. We evaluate the exported asset directly and introduce a fixed-pose widened-field protocol that exposes structure outside the original framing. Across 18 scenes, CleanGS achieves 19.03 dB standard and 17.83 dB widened-field PSNR, compared with 16.44/16.29 dB for FlashSplat and 15.28/15.10 dB for GaussianCut with the same three masks. CleanGS leads five of six photometric metrics and remains within 0.32 dB of the uncleaned reconstruction in standard PSNR. Its filtering-and-export stage takes a median of 20 seconds and 1.9 GB peak memory, compared with 3.1 minutes and 41.6 GB for FlashSplat and 4.2 minutes and 34.9 GB for GaussianCut. Code is available at https://github.com/smlab-niser/clean-gs/.
Figures & tables
| Masks used | Standard view | Widened field of view | Leakage ( ) | Retained | |||||
|---|---|---|---|---|---|---|---|---|---|
| Method | for cleanup | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | ||
| Uncleaned 3DGS | 0 | 19.35 | 0.620 | 0.194 | 12.84 | 0.300 | 0.327 | 0.983 | 100.0% |
| FlashSplat ( Shen et al., 2024 ) | selected 3 | 16.44 | 0.557 | 0.257 | 16.29 | 0.411 | 0.205 | 0.141 | 14.9% |
| GaussianCut ( Jain et al., 2024 ) | selected 3 | 15.28 | 0.533 | 0.279 | 15.10 | 0.381 | 0.227 | 0.089 | 17.2% |
| GaussianCut † ( Jain et al., 2024 ) | all capture | 17.27 | 0.572 | 0.234 | 16.71 | 0.421 | 0.194 | 0.055 | 20.2% |
| CleanGS (ours) | selected 3 | 19.03 | 0.643 | 0.188 | 17.83 | 0.501 | 0.167 | 0.206 | 22.8% |
| Method | Time | Range | Peak memory |
|---|---|---|---|
| FlashSplat ( Shen et al., 2024 ) | 3.1 min | 0.7–6.2 min | 41.6 GB |
| GaussianCut ( Jain et al., 2024 ) | 4.2 min | 1.0–14.4 min | 34.9 GB |
| CleanGS (ours) | 20 s | 12–58 s | 1.9 GB |
Appendix figures & tables27 assets
Supplementary material from the paper’s appendix.
Appendix
| Measure | Selected | Random | |
|---|---|---|---|
| Pairwise , co-visible Gaussians (mean) | 0.61 | 0.51 | 0.32 |
| / independence prediction (mean) | 3.3 | 2.6 | 0.09 |
| Supported by exactly one view (fraction) | 0.27 | 0.45 | 0.001 |
| Scene | Cap 60 (main) | Cap 120 | Uncapped |
|---|---|---|---|
| century | 19.94 dB, 0.391 | 18.98 ( ), 0.351 | 18.57 ( ), 0.347 |
| red brick build | 16.34 dB, 0.196 | 16.82 ( ), 0.201 | 17.63 ( ), 0.207 |
| Stage | Median | Range |
|---|---|---|
| Selection, explicit front (main) | 21.0 s | 2.5–101.9 s |
| mask scoring, COLMAP, view data | 20 s | 2.4–50 s |
| explicit Pareto front | s | up to 51 s |
| Selection, direct argmin | 17.3 s | 2.5–50.3 s |
| Filtering and export | 18.7 s | 10.2–57.1 s |
| Total, explicit front | 41 s | 12.8–128 s |
| Membership, vote | Leak (std) | PSNR (std) | Leak ( ) | PSNR ( ) | Retained |
|---|---|---|---|---|---|
| Center, 2-of-3 (main) | 0.206 | 19.03 | 0.066 | 17.83 | 22.8% |
| , 2-of-3 | 0.194 | 19.03 | 0.064 | 17.85 | 22.9% |
| , 2-of-3 | 0.169 | 18.56 | 0.052 | 17.70 | 22.5% |
| , 2-of-3 | 0.148 | 17.96 | 0.044 | 17.32 | 22.1% |
| , 3-of-3 | 0.085 | 15.45 | 0.024 | 15.26 | 17.7% |
| , 3-of-4 | 0.109 | 16.15 | 0.026 | 15.72 | 19.3% |
| Dataset | Scene | Frames | Uncleaned | FlashSplat | GaussianCut † | CleanGS | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | |||
| DL3DV | car_set2 | 43 | 18.61 | 0.704 | 0.225 | 17.51 | 0.681 | 0.249 | 17.85 | 0.687 | 0.241 | 18.39 | 0.715 | 0.204 |
| courthouses | 52 | 19.37 | 0.665 | 0.239 | 18.90 | 0.648 | 0.252 | 18.97 | 0.650 | 0.249 | 22.89 | 0.703 | 0.202 | |
| fountain | 44 | 20.63 | 0.602 | 0.096 | 14.69 | 0.487 | 0.215 | 18.19 | 0.566 | 0.143 | 19.47 | 0.632 | 0.108 | |
| gardens | 44 | 18.79 | 0.551 | 0.153 | 15.84 | 0.505 | 0.208 | 17.45 | 0.537 | 0.170 | 18.64 | 0.579 | 0.143 | |
| red_brick_build | 39 | 20.05 | 0.566 | 0.237 | 16.45 | 0.514 | 0.293 | 17.13 | 0.529 | 0.277 | 16.34 | 0.541 | 0.278 | |
| Dataset | Scene | Frames | Uncleaned | FlashSplat | GaussianCut † | CleanGS | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | |||
| DL3DV | car_set2 | 43 | 15.31 | 0.445 | 0.313 | 17.50 | 0.508 | 0.211 | 17.78 | 0.508 | 0.196 | 18.45 | 0.577 | 0.169 |
| courthouses | 52 | 12.22 | 0.324 | 0.492 | 17.65 | 0.480 | 0.238 | 17.59 | 0.480 | 0.237 | 20.78 | 0.568 | 0.184 | |
| fountain | 44 | 12.64 | 0.192 | 0.214 | 16.01 | 0.430 | 0.091 | 18.60 | 0.489 | 0.061 | 20.14 | 0.604 | 0.048 | |
| gardens | 44 | 12.32 | 0.159 | 0.219 | 16.38 | 0.414 | 0.096 | 16.77 | 0.428 | 0.089 | 17.22 | 0.484 | 0.088 | |
| red_brick_build | 39 | 19.54 | 0.353 | 0.295 | 16.55 | 0.315 | 0.324 | 17.16 | 0.331 | 0.313 | 16.50 | 0.337 | 0.312 | |
| Leakage | Retained | ||||||
|---|---|---|---|---|---|---|---|
| Dataset | Scene | FS | GCut † | Ours | FS | GCut † | Ours |
| DL3DV | car_set2 | 0.023 | 0.012 | 0.037 | 25.8% | 32.9% | 32.6% |
| courthouses | 0.023 | 0.012 | 0.037 | 7.2% | 8.2% | 7.6% | |
| fountain | 0.046 | 0.000 | 0.047 | 1.1% | 1.5% | 1.8% | |
| gardens | 0.006 | 0.000 | 0.082 | 2.5% | 3.7% | 5.8% | |
| red_brick_build | 0.019 | 0.026 | 0.016 | 29.2% | 41.9% | 29.3% | |
| Mean | Median | |||
|---|---|---|---|---|
| Method | Std | Std | ||
| Uncleaned 3DGS | 19.35 | 12.84 | 19.43 | 12.71 |
| FlashSplat | 16.44 | 16.29 | 16.56 | 16.47 |
| GaussianCut | 15.28 | 15.10 | 16.40 | 16.02 |
| GaussianCut † | 17.27 | 16.71 | 17.71 | 17.30 |
| CleanGS | 19.03 | 17.83 | 19.31 | 18.33 |
| Method | ||||
|---|---|---|---|---|
| Uncleaned 3DGS | 19.35 | 18.72 | 14.72 | 12.84 |
| FlashSplat | 16.44 | 16.65 | 16.59 | 16.29 |
| GaussianCut † | 17.27 | 17.43 | 17.15 | 16.71 |
| CleanGS | 19.03 | 19.31 | 18.73 | 17.83 |
| Method | ||||
|---|---|---|---|---|
| Uncleaned 3DGS | 0.983 | 0.896 | 0.813 | 0.803 |
| FlashSplat | 0.141 | 0.085 | 0.049 | 0.042 |
| GaussianCut | 0.089 | 0.047 | 0.022 | 0.016 |
| GaussianCut † | 0.055 | 0.038 | 0.015 | 0.009 |
| CleanGS | 0.206 | 0.123 | 0.075 | 0.066 |
| Pareto | Random | Wins | |||
| PSNR | 19.52 | 17.96 | 15/17 | 0.0005 | |
| SSIM | 0.657 | 0.620 | 15/17 | 0.0004 | |
| LPIPS | 0.166 | 0.202 | 15/17 | 0.0011 | |
| PSNR (6 ) | 18.39 | 17.39 | 14/17 | 0.0150 | |
| SSIM (6 ) | 0.514 | 0.481 | 14/17 | 0.0038 | |
| LPIPS (6 ) | 0.141 | 0.170 | 13/17 | 0.0129 |
| Filter | Masks | PSNR (std) | PSNR ( ) | Leak | Retained | |
|---|---|---|---|---|---|---|
| GaussianCut | selected | 15.28 | 15.10 | 0.089 | 17.2% | 0.20 |
| random | 15.92 | 15.72 | 0.085 | 18.2% | ||
| FlashSplat | selected | 16.44 | 16.29 | 0.141 | 14.9% | 0.15 |
| random | 16.91 | 16.56 | 0.149 | 16.0% | ||
| CleanGS | selected | 19.52 | 18.39 | 0.197 | 21.7% | 0.017 |
| random | 18.72 | 18.02 | 0.158 | 19.3% |
| Selector | PSNR (std) | PSNR ( ) | Leak (std) | Leak ( ) | Retained |
|---|---|---|---|---|---|
| Pareto (main) | 19.03 | 17.83 | 0.206 | 0.066 | 22.8% |
| Weighted sum | 19.00 | 17.71 | 0.193 | 0.060 | 21.3% |
| Greedy | 18.96 | 17.72 | 0.194 | 0.060 | 21.5% |
| Top-3 reliability | 19.07 | 17.70 | 0.224 | 0.077 | 23.1% |
| Reliability + farthest point | 19.02 | 18.15 | 0.166 | 0.032 | 20.6% |
| Changed | PSNR (std) | PSNR ( ) | Leak (std) | Leak ( ) | |
|---|---|---|---|---|---|
| 0.05 | 5/18 | 19.14 | 17.76 | 0.206 | 0.073 |
| 0.10 | 1/18 | 19.05 | 17.84 | 0.207 | 0.066 |
| 0.15 (main) | – | 19.03 | 17.83 | 0.206 | 0.066 |
| 0.20 | 2/18 | 19.05 | 17.70 | 0.205 | 0.072 |
| 0.30 | 3/18 | 19.04 | 17.96 | 0.206 | 0.065 |
| Weight zeroed | PSNR | PSNR 6× | Median | Leakage |
|---|---|---|---|---|
| Main | – | – | – | 0.204 |
| without | -0.48 | -0.07 | +0.01 | 0.163 |
| without | +0.13 | +0.09 | +0.00 | 0.204 |
| without | -0.08 | -0.16 | -0.05 | 0.218 |
| without | -0.05 | -0.22 | -0.07 | 0.211 |
| Weights | PSNR | PSNR 6× | Med. | Leak | Wins | |
|---|---|---|---|---|---|---|
| Main | 17 | – | – | – | 0.204 | – |
| equal, each | 17 | 0.192 | 5/17 | |||
| heavy, | 17 | 0.188 | 9/17 | |||
| heavy, | 17 | 0.188 | 5/17 | |||
| heavy, | 17 | 0.191 | 7/17 | |||
| heavy, | 17 | 0.180 | 8/17 |
| Reliability score | PSNR | PSNR 6× | Med. | Leak | Wins | |
|---|---|---|---|---|---|---|
| Main | 17 | – | – | – | 0.204 | – |
| target | 17 | 0.164 | 5/17 | |||
| target | 17 | 0.215 | 4/17 | |||
| linear, target | 17 | 0.215 | 4/17 | |||
| linear decay | 17 | 0.183 | 7/17 | |||
| step decay | 17 | 0.155 | 9/17 |
| Configuration | PSNR | PSNR 6× | Med. | Leak | Wins | |
|---|---|---|---|---|---|---|
| Main | 17 | – | – | – | 0.204 | – |
| , 2-of-2 | 17 | 0.115 | 6/17 | |||
| , 2-of-4 | 15 | 0.220 | 10/15 | |||
| , 2-of-5 | 13 | 0.250 | 9/13 | |||
| , 3-of-4 | 17 | 0.144 | 8/17 | |||
| , 3-of-5 | 13 | 0.147 | 10/13 |
| Configuration | PSNR (std) | PSNR ( ) | Leak (std) | Leak ( ) | Retained |
|---|---|---|---|---|---|
| , 1-of-3 | 20.16 | 17.47 | 0.345 | 0.182 | 29.1% |
| , 2-of-3 (main) | 19.03 | 17.83 | 0.206 | 0.066 | 22.8% |
| , 3-of-3 | 16.44 | 15.88 | 0.120 | 0.035 | 18.6% |
| , 2-of-2 | 16.87 | 16.25 | 0.132 | 0.036 | 19.3% |
| , 3-of-4 | 16.96 | 16.19 | 0.155 | 0.040 | 20.1% |
| , 3-of-5 | 19.03 | 18.05 | 0.180 | 0.048 | 22.4% |
| Standard | Widened | Leak | |||||
|---|---|---|---|---|---|---|---|
| Endpoint | PSNR | SSIM | LPIPS | PSNR | SSIM | LPIPS | |
| Vote only | 19.86 | 0.658 | 0.170 | 18.25 | 0.516 | 0.158 | 0.221 |
| + clustering | 16.02 | 0.478 | 0.281 | 14.97 | 0.370 | 0.303 | 0.115 |
| Std PSNR | Leakage | Clustering | |||||
|---|---|---|---|---|---|---|---|
| Scene | vote | +cl. | vote | +cl. | Cl. | top | |
| table | 22.29 | 2.72 | -19.57 | 0.226 | 0.012 | 112 | 16% |
| tractor | 20.56 | 8.97 | -11.58 | 0.223 | 0.002 | 92 | 9% |
| redcar | 19.33 | 8.58 | -10.75 | 0.272 | 0.004 | 39 | 13% |
| Horse | 22.32 | 11.69 | -10.63 | 0.070 | 0.005 | 22 | 47% |
| car_set2 | 18.56 | 8.50 | -10.06 | 0.372 | 0.004 | 35 | 16% |
| Configuration | Std PSNR | Std LPIPS | Zoom PSNR | Leak | |
|---|---|---|---|---|---|
| A | no erosion, eval on eroded masks | 19.86 | 0.170 | 18.25 | 0.221 |
| B | no erosion, eval on full masks | 19.03 | 0.188 | 17.83 | 0.206 |
| C | 4 px erosion, eval on full masks | 18.37 | 0.201 | 17.63 | 0.196 |
3D Gaussian Splatting
3D Gaussian Splatting represents scenes as optimizable 3D Gaussian primitives for fast, photorealistic rendering from new viewpoints.
See all 1,019 papers