
Post-Training Semantic Lifting for 3D Gaussian Splatting: Separating Detector, Lifting and Representation Error
This arXiv paper introduces a post-training semantic lifting method for 3D Gaussian Splatting that assigns a single target class to Gaussians by accumulating target/non-target evidence across all views, weighted by per-view visibility, then filters with a dual-threshold (β and γβ) scheme that selects high-confidence seeds and extends them via connected components. The authors evaluate by transferring labels from Gaussians to mesh vertices and decompose error into three sources — the 2D detector, the lifting step, and the representation transfer — tuning thresholds on seven Replica scenes and testing on ten held-out ScanNet++ scenes, reaching mean mIoU of 0.93/0.65 (dataset masks/YOLO masks) on validation and 0.80/0.54 on test, a 0.24 mIoU improvement over prior per-view thresholding. The error analysis finds the 2D detector is the dominant remaining error source, informing where future gains in 3D semantic reconstruction should focus.
What it claims
A post-training, one-class-at-a-time label lifter for an already-optimised 3D Gaussian Splatting model. The only semantic input is 2D masks. Each Gaussian gets a target evidence fraction, E⁺/(E⁺+E⁻), accumulated over all views. One (β, γ) pair and one mesh-transfer operator, fixed on Replica, then serve every class and scene in both Replica and ScanNet++. Switching from per-view evidence thresholding to the fraction is what makes that single setting possible, and it adds 0.24 test mIoU.
How it works
- Masks and confidence. Each view supplies a label map and a per-pixel confidence. For detected pixels, confidence is the soft-mask value times the detection score, so it varies inside one object. Undetected background pixels get a fixed confidence q₀ = 0.25. Dataset annotation masks use the same format with confidence 1. Per-pixel soft confidence "slightly improved" results over a single confidence per detection.
- Projection. This is standard EWA covariance projection with a 0.3 px² low-pass term. Unlike the reference CUDA rasteriser, a Gaussian's centre must fall inside the frustum. The authors made this change because large off-frustum Gaussians were collecting spurious target evidence through tiles they touched.
- Visibility weighting. Each pixel's vote on Gaussian i is weighted by w = α·T, its alpha-compositing contribution to that pixel. Occluded Gaussians therefore get near-zero weight from that view, but they still count as "seen." Target and non-target evidence accumulate in the same pass.
- Support set. Gaussians with E⁺+E⁻ = 0 are never labelled. These are Gaussians behind the near plane or off-image in every view.
- Hysteresis on a Gaussian graph (Canny-style, one connectivity radius):
flowchart TD
F[Evidence fraction] --> A{≥ β?}
A -- yes --> S[Seed: label]
A -- no --> B{≥ γβ?}
B -- no --> N[Unlabelled]
B -- yes --> C{Connected to seed within radius?}
C -- yes --> S
C -- no --> NThe pipeline has six stages. Projection and visibility (stages 2–3) are class-independent, and changing β or γ re-runs only from stage 5, so threshold sweeps are cheap.
Evidence
Error decomposition. The method is run twice, once with YOLO masks and once with dataset-annotation masks.
- The gap between the two runs isolates the detector.
- Representation loss is measured by sending ground-truth annotations through the same Gaussian→mesh transfer operator.
- With that operator's own parameters, this gives an upper-bound-style reference.
Protocol.
- Development used Replica
office_0and ScanNet++7831862f02, and both are excluded from evaluation. - (β, γ) and the transfer operator were selected on 7 Replica scenes using validation mean and between-scene variation, with a 0.01 mIoU tolerance.
- Results were then reported on 10 held-out ScanNet++ scenes.
Results. These match the summary: 0.93/0.65 on validation and 0.80/0.54 on test (annotation masks/YOLO masks). The test drop between datasets with the same parameters is about 0.13 for annotation masks and 0.11 for YOLO.
Positioning. The closest prior work is CDSeg (August 2026), which also votes mask labels onto renderer-visible primitives. This paper differs in three ways:
- confidence-weighted votes
- target vs. non-target competition in a single pass
- explicit measurement of the mesh-transfer cost
How to use it
- The visibility computation is a tiled PyTorch reimplementation of the official 3DGS rasteriser, with 16×16 tiles. Differences from the CUDA code are stated to be documented.
- The method works on Gaussians trained with the original 3DGS procedure.
- A Docker/Apptainer container workflow and cached intermediate data are provided for reproduction.
- Code is on GitHub. The page text does not include the URL, and it gives no install commands or licence.
Limits
- The fetched text ends mid-Section 3.4. The chosen β and γ values, the transfer operator's settings, per-class results, the per-component error numbers and the authors' Limitations section are not visible here.
- The work is a bachelor's thesis preprint (v1).
- Only YOLO was tested as a detector.
- The method is one-vs-rest per class, so cost scales with the number of classes from stage 4 onward.
- Labels are evaluated only on mesh vertices that are both visible and annotated.
Organisations named here
- Iván Verdugo Guerra
- Replica
- ScanNet++
Technologies named here
- YOLO
Techniques named here
- Post-training semantic lifting for 3D Gaussian Splatting
- Threshold-based Gaussian filtering with connected components
- Label transfer from Gaussians to mesh vertices
Also named here
- 3D Gaussian Splatting
Related in research



