---
title: 'VarSplat: Uncertainty-Aware 3D Gaussian SLAM'
url: https://www.emergentmind.com/topics/varsplat
type: topic
---

# VarSplat: Uncertainty-Aware 3D Gaussian SLAM

VarSplat is an uncertainty-aware 3D Gaussian Splatting system for online dense RGB-D SLAM. It augments each Gaussian with a learned per-splat appearance variance, renders a differentiable per-pixel uncertainty map by applying the law of total variance under alpha compositing, and uses that uncertainty to guide tracking, submap registration, and loop detection. The method is designed for failure regimes in which prior 3DGS-SLAM pipelines treat measurement reliability too implicitly, including low-texture regions, transparent surfaces, and scenes with complex reflectance, where local instability can accumulate into drift, ghosting, and unstable global alignment [2603.09673].

## 1. Problem setting and system scope

VarSplat targets online dense RGB-D SLAM built on 3D Gaussian Splatting. As in recent 3DGS-SLAM systems, it maintains a map of Gaussians and estimates camera poses by differentiably rendering color and depth from that map. Its central premise is that existing 3DGS-SLAM approaches optimize photometric and geometric residuals without explicitly modeling when rendered appearance is trustworthy, even though reliability varies sharply across the scene [2603.09673].

The motivating failure modes are concrete. In low-texture regions, photometric residuals become uninformative or noisy. At depth discontinuities and occlusion boundaries, small pose changes alter visibility and alpha weights, which destabilizes rendered color and depth. Transparent, specular, reflective, and glossy surfaces violate simple deterministic color assumptions. These local issues propagate into tracking drift, submap registration errors, ghosting, and loop-closure instability. Relative to earlier uncertainty-aware SLAM systems, VarSplat is distinguished by treating appearance uncertainty produced directly by the 3DGS rasterizer as a first-class quantity, rather than limiting uncertainty modeling to geometric variance or relying on pretrained uncertainty predictors [2603.09673].

The system is submap-based. Each submap \(P^s\) is a collection of Gaussians
\[
P^s = \{G_i^s(\mu_i,\Sigma_i,\alpha_i,s_i,c_i,\sigma_i^2)\vert i = 1, \ldots, N^s \},
\]
where \(\mu_i \in \mathbb{R}^3\) is the mean position, \(\Sigma_i \in \mathbb{R}^{3\times 3}\) is the covariance, \(s_i \in \mathbb{R}^3\) is the scale, \(\alpha_i \in \mathbb{R}\) is the opacity, \(c_i \in \mathbb{R}^3\) is the color derived from spherical harmonics, and \(\sigma_i^2 \in \mathbb{R}^3\) is the learned per-splat appearance variance. This variance is per-splat and per-channel, and it models uncertainty around mean color rather than spatial extent. The paper notes that the notation \(\sigma^2\) is chosen to enforce positivity and follow conventional Gaussian-form uncertainty, but it does not clearly specify an explicit positivity-enforcing reparameterization or the initialization of \(\sigma_i^2\) [2603.09673].

## 2. Uncertainty formulation and rendered variance

VarSplat inherits standard 3DGS alpha compositing. With front-to-back depth ordering, the transmittance and weights are
\[
w_i = T_i\alpha_i, \qquad T_i = \prod_j^{i-1}(1-\alpha_j).
\]
Rendered color and depth are
\[
C = \sum_i w_i c_i, \qquad D = \sum_i w_i z_i,
\]
where \(z_i\) is the camera-space depth of the projected Gaussian mean [2603.09673].

Its distinctive contribution is the uncertainty map derived from the law of total variance,
\[
\mathrm{Var}[X] = \mathbb{E}\big[\mathrm{Var}[X \vert Z]\big] + \mathrm{Var}\big(\mathbb{E}[X \vert Z]\big).
\]
In VarSplat, \(X\) is the pixel color and \(Z\) indexes contributing splats. Conditioned on splat \(i\),
\[
\mathbb{E}[X \vert Z=i] = c_i, \qquad \mathrm{Var}[X \vert Z=i] = \sigma_i^2.
\]
This yields the rendered per-pixel variance map
\[
V = \sum_i w_i(\sigma_i^2 + c_i^2) - \Big(\sum_i w_i c_i\Big)^2.
\]

The decomposition has two terms. The within-component term,
\[
\sum_i w_i \sigma_i^2,
\]
captures learned uncertainty of individual splats. The between-component term,
\[
\sum_i w_i c_i^2 - \Big(\sum_i w_i c_i\Big)^2,
\]
captures disagreement among overlapping splats. This makes the uncertainty map sensitive not only to intrinsically unreliable splats but also to ambiguous blending at occlusion boundaries, disocclusions, and reflective or transparent regions [2603.09673].

A practical property is that \(V\) is rendered in the same alpha-compositing pass as color and depth. The rasterizer accumulates \(\sum_i w_i c_i\), \(\sum_i w_i z_i\), \(\sum_i w_i \sigma_i^2\), and \(\sum_i w_i c_i^2\), then forms \(V\) by subtracting \((\sum_i w_i c_i)^2\). This preserves single-pass rasterization efficiency and differentiability, and avoids Monte Carlo sampling or a separate uncertainty network [2603.09673].

## 3. Use of uncertainty in tracking, registration, and loop detection

VarSplat converts variance into confidence weights by median-centered log scaling:
\[
\widetilde{V} = \underset{\Omega}{\mathrm{median}(\log(V))}, \qquad
\widetilde{w}_p = \exp[-(\log V - \widetilde{V}) / \tau],
\]
\[
\widetilde{\sigma^2} = \mathrm{median}(\log \sigma^2), \qquad
\widetilde{w}_s = \exp[-(\log \sigma^2 - \widetilde{\sigma^2}) / \tau].
\]
Here \(\widetilde{w}_p\) is per-pixel confidence derived from rendered \(V\), and \(\widetilde{w}_s\) is per-splat confidence derived from learned \(\sigma_i^2\). Larger-than-median variance yields smaller weight; smaller-than-median variance yields larger weight [2603.09673].

In tracking, the current pose is estimated relative to the active submap using rendered \(\hat I\), \(\hat D\), and \(V\). The intended tracking objective weights photometric residuals by \(\widetilde{w}_p\) while leaving depth residuals unweighted, with \(\lambda_c\) balancing color and depth. This design reflects the paper’s observation that RGB residuals are especially unstable under viewpoint change, low texture, and occlusion. Tracking further uses an inlier mask \(M_{\text{inlier}}\) that removes pixels whose depth error exceeds \(50\times\) the median depth error in the current frame and removes pixels with invalid depth. A soft alpha mask \(M_\text{alpha}=\alpha^3\) is also used. During tracking, variance is frozen and gradients are stopped through \(\widetilde{w}_p\), so pose optimization does not interfere with variance learning [2603.09673].

Registration after loop detection uses the same uncertainty principle: photometric residuals are weighted by \(\widetilde{w}_p\), depth residuals are left unweighted, and variance is fixed during registration. The paper attributes improved medium-range alignment and reduced ghosting between overlapping submaps to this weighting strategy [2603.09673].

Loop detection operates at submap level and uses per-splat variance rather than per-pixel variance. Following LoopSplat, keyframe descriptors provide candidate matches, and similarity is modulated by a reliability score
\[
r = \frac{\sum_j \widetilde{w}_s\alpha_j}{\sum_j \alpha_j}, \qquad
\text{sim} = \text{cross\_sim} \odot (r_q * r_{db}).
\]
Submaps supported mainly by high-variance splats receive smaller reliability factors, which reduces their influence in loop matching. The paper states that this reduces false closures on repeated structure and improves long-range consistency. Supplementary details specify NetVLAD with VGG16-NetVLAD-Pitts30K weights from HLoc, followed by overlap-ratio filtering from front-end poses [2603.09673].

## 4. Optimization, map management, and implementation

VarSplat jointly optimizes camera poses, Gaussian parameters, and \(\sigma_i^2\) during mapping. The intended mapping objective is
\[
\mathcal{L}_\text{map} =
\lambda_{\text{color}}\mathcal{L}_{\text{color}} +
\lambda_{\text{depth}}\mathcal{L}_{\text{depth}} +
\lambda_{\text{reg}}\mathcal{L}_{\text{reg}} +
\lambda_{\text{var}}\mathcal{L}_{\text{var}}.
\]
The color term is the standard 3DGS combination of \(L_1\) and SSIM,
\[
\mathcal{L}_{\text{color}} =
(1-\lambda_{\text{SSIM}})\|\hat I - I\|_1 +
\lambda_{\text{SSIM}}(1-\text{SSIM}(\hat I, I)),
\]
the depth term is
\[
\mathcal{L}_{\text{depth}} = \|\hat D - D\|_1,
\]
and \(\mathcal{L}_{\text{reg}}\) regularizes Gaussian scales, similar to GS-SLAM, although the precise variable definitions for that term are not fully clear from the paper text [2603.09673].

Variance learning uses a Gaussian negative-log-likelihood-style term,
\[
\mathcal{L}_{\text{var}} =
\frac{1}{2V}\Big(\|\hat I - I\|_2^2 + \|\hat D - D\|_2^2\Big) + \log(V).
\]
This is deliberately based on squared \(L_2\) residuals rather than \(L_1\), because the paper treats \(V\) as a Gaussian variance. The derivative with respect to rendered variance is
\[
\frac{\partial \mathcal{L}_{\text{var}}}{\partial V}
=
-\frac{\|\hat I - I\|_2^2 + \|\hat D - D\|_2^2}{2V^2} + \frac{1}{V},
\]
and by chain rule
\[
\frac{\partial \mathcal{L}_{\text{var}}}{\partial \sigma_i^2}
=
\frac{\partial \mathcal{L}_{\text{var}}}{\partial V}\,w_i.
\]
Thus each splat’s variance is updated in proportion to its compositing weight. Mapping learns poses, Gaussian geometry and appearance, and \(\sigma_i^2\) jointly; tracking and registration freeze variance; loop closure does not propagate gradients into variance because it occurs after submap construction [2603.09673].

The submap-based pipeline initializes Gaussians by backprojecting RGB-D points from the first keyframe, adds Gaussians in unobserved regions or merges overlaps, and starts a new submap when camera motion exceeds a spatial threshold from the current submap centroid or accumulated tracking uncertainty passes a preset limit. Supplementary settings specify \(d_\text{thre}=0.5\) m and \(\theta_\text{thre}=50^\circ\), with alternative fixed-frame heuristics for ScanNet and ScanNet++. New Gaussians are initialized with opacity \(0.5\) and scales from nearest neighbor. Pruning thresholds are \(0.1\) for Replica and \(0.5\) for the other datasets. On ScanNet++, if the tracking loss exceeds \(50\times\) the running average, the pose is reinitialized with ICP odometry [2603.09673].

The reported implementation uses Python 3.10, PyTorch 2.4.1, CUDA 12.6, and NVIDIA A100 80GB. The original 3DGS rasterizer and a depth-rendering extension are modified to propagate variance. Default mapping weights are \(\lambda_{\text{color}}=1\), \(\lambda_{\text{depth}}=1\), \(\lambda_{\text{reg}}=1\), and \(\lambda_{\text{var}}=0.0001\). Dataset-specific tracking hyperparameters include \(\lambda_c\), \(l_r\), \(l_t\), \(\text{iter}_t\), \(\text{iter}_m\), and \(\tau\), with, for example, \(\tau=10\) on Replica, \(50\) on TUM-RGBD, \(5\) on ScanNet, and \(10\) on ScanNet++ [2603.09673].

## 5. Experimental evaluation

VarSplat is evaluated on Replica, TUM-RGBD, ScanNet, and ScanNet++. Tracking is measured with ATE RMSE on keyframes; reconstruction with depth \(L_1\) and mesh \(F1\); rendering with PSNR, SSIM, and LPIPS; and ScanNet++ also reports novel-view synthesis PSNR. Baselines include SplaTAM, MonoGS, Gaussian-SLAM, LoopSplat, CG-SLAM, and Uni-SLAM [2603.09673].

The strongest tracking results appear on real-world datasets. On Replica, VarSplat reports the best average tracking accuracy among the compared methods with \(0.23\) cm, versus \(0.26\) for LoopSplat, \(0.27\) for CG-SLAM, and \(0.31\) for Gaussian-SLAM. On ScanNet++, it reports an average ATE RMSE of \(1.69\) cm, compared with \(2.05\) for LoopSplat and \(2.68\) for Gaussian-SLAM; the paper explicitly states that this is about \(18\%\) better than the second-best method and emphasizes robustness on large-motion real-world sequences. On TUM-RGBD, the average is \(3.20\), compared with \(3.33\) for LoopSplat, \(4.0\) for CG-SLAM, and \(4.02\) for MonoGS. On ScanNet, the average is \(6.5\), compared with \(7.0\) for Uni-SLAM, \(6.8\) for GO-SLAM, \(7.7\) for LoopSplat, and \(8.1\) for CG-SLAM [2603.09673].

Reconstruction and rendering remain competitive. On Replica, depth \(L_1\) is \(0.50\) versus \(0.51\) for LoopSplat, while mesh \(F1\) is \(90.2\) versus \(90.4\). The paper uses this to argue that uncertainty-aware weighting improves pose estimation without degrading mesh quality. Average input-view rendering scores are \(37.15\) PSNR / \(0.986\) SSIM / \(0.109\) LPIPS on Replica, \(23.14 / 0.883 / 0.248\) on TUM-RGBD, and \(24.92 / 0.848 / 0.422\) on ScanNet. On ScanNet++ novel view synthesis, VarSplat reports \(21.33\) PSNR, compared with \(21.30\) for LoopSplat and \(21.27\) for Gaussian-SLAM [2603.09673].

Ablation results indicate that uncertainty contributes across the full SLAM stack. On ScanNet, removing uncertainty entirely yields \(8.20\) ATE RMSE; using it only in tracking yields \(7.63\); tracking plus loop yields \(7.49\); loop plus registration yields \(7.51\); and the full system using uncertainty in tracking, loop detection, and registration yields \(6.53\). A second ablation reports that the best variant freezes variance during tracking, includes the depth residual in variance training, and uses squared \(L_2\) in the NLL term; removing any of these choices degrades performance. Runtime measurements on Replica/Room0 on A100 report mapping at \(1.9\) s/frame and \(50.3\) ms/iter, tracking at \(2.0\) s/frame and \(34.1\) ms/iter, and ATE \(0.20\), versus LoopSplat’s \(1.2\) s/frame mapping, \(1.8\) s/frame tracking, and ATE \(0.28\). The paper presents the method as online rather than as strictly real-time in the conventional sense [2603.09673].

## 6. Relation to the broader splat literature and limitations

VarSplat occupies a specific niche within the Gaussian-splatting literature: uncertainty-aware online RGB-D SLAM. It is neither a physics-based appearance model nor a VR-oriented renderer, nor an interpretability framework. AstroSplat, for example, replaces the usual spherical-harmonic appearance computation with planetary reflectance models for rendering and reconstruction of small celestial bodies [2603.11969]. VRSplat targets virtual reality by combining Mini-Splatting, StopThePop, and Optimal Projection, together with a single-pass foveated rasterizer [2505.10144]. XSPLAIN addresses ante-hoc interpretability for splat-based classification rather than SLAM, using prototype-based explanations over 3D Gaussian primitives [2602.10239]. Splat-LOAM is LiDAR-native and geometry-first, using 2D Gaussian surface splats and spherical rasterization for LiDAR odometry and mapping [2503.17491]. A plausible implication is that VarSplat should be read not as a generic reformulation of 3DGS, but as a renderer-level uncertainty extension specialized to RGB-D pose estimation and submap alignment.

The current limitations are explicit. The system still relies on depth-based Gaussian insertion, so performance is constrained when depth is sparse or missing. It models appearance uncertainty only, not a full joint appearance-and-geometry uncertainty. Learning and rendering variance adds computation and memory overhead. Experiments focus on mostly static scenes. Several implementation details remain underspecified in the paper text, notably the exact positivity parameterization for \(\sigma_i^2\), the initialization of variance, and the formulation of global refinement after submap merging [2603.09673].

These caveats delimit the method’s scope. The principal technical novelty is the learned per-splat appearance variance together with the rendered uncertainty map
\[
V = \sum_i w_i(\sigma_i^2 + c_i^2) - \Big(\sum_i w_i c_i\Big)^2,
\]
which is then used coherently in tracking, registration, and loop detection. Within that scope, VarSplat provides a concrete formulation of how uncertainty can be made native to the 3DGS rasterizer rather than appended as an external predictor or reduced to depth variance alone [2603.09673].

Source: https://www.emergentmind.com/topics/varsplat