SCOUP: Sparse Code Uplifting for Efficient 3D Language Gaussian Splatting
作者:Lovre Antonio Budimir, Yushi Guan, Steve Ryhner, Sven Lončarić, Nandita Vijaykumar
单位:Faculty of Electrical Engineering and Computing, University of Zagreb; Department of Computer Science, University of Toronto; Vector Institute
会议:2026 Arxiv
链接:https://arxiv.org/abs/2605.13600
研究动机

3D Language Gaussian Splatting 的目标是在 3DGS 场景上挂载语言对齐的视觉特征,让三维场景可以被文本查询,例如在重建好的房间里直接问 "red cup"、"knife"、"bag of cookies",系统能够在 3D 空间和渲染视角中给出对应区域。
这件事的难点不在于 3DGS 本身,而在于语言特征太重。典型流程会先用 SAM 把每张图切成区域,再用 CLIP / OpenCLIP 给每个区域提取 512 维语义特征。如果把这种高维特征直接存到几百万个 Gaussian 上,存储、聚合和渲染都会变慢;如果用 scene-specific autoencoder 或 codebook 在 3D 里优化,又会引入反复 feature rasterization,导致每个场景都要很长的语义重建时间。
已有方法大致卡在三个目标之间:
直接 feature uplifting 快,但每个 Gaussian 存高维特征,内存和渲染代价高。
autoencoder 压缩能省存储,但渲染时要解码,速度和语义保真都会受影响。
LangSplatV2 这类 codebook 方法让渲染更快,但 codebook 和 Gaussian coefficient 需要通过 3D rasterization 联合优化,训练慢且显存占用高。
SCOUP 的核心问题就是:能不能同时做到快速 2D 到 3D 语义重建、低存储开销、快速语言特征渲染,并且不牺牲 open-vocabulary 查询精度?
核心方法
SCOUP 的关键选择是把语言表征学习从 3DGS 优化里拆出来:先在 2D 图像区域上学习稀疏 codebook 表示,再把稀疏系数 uplift 到 3D Gaussian。也就是说,昂贵的语义压缩不再发生在 millions of Gaussians 上,而是在 SAM mask 对应的 2D region 上完成。
1. 2D Sparse Coding:先在 CLIP 原生空间里压缩
论文首先沿用 LangSplat 系列的语义特征提取方式:对每个输入视角,用 SAM ViT-H 在三个层级生成 segmentation masks,再用 OpenCLIP ViT-B/16 为每个 mask 编码 512 维 CLIP 特征。由于同一个 SAM region 内的像素共享同一个 CLIP embedding,SCOUP 不为每个像素单独学系数,而是为 region 学一个稀疏 coefficient vector。
给定 scene-aware codebook $C \in \mathbb{R}^{L \times D}$,每个像素/区域的 CLIP 特征 $F_v(p)$ 被近似为:
约束是 $W_v(p)$ 最多只有 $K$ 个非零元素,且系数非负、和为 1。论文实现上用 normalized soft top-K softmax 来约束 region-wise logits,并用 cosine reconstruction loss 联合优化 codebook 与 region coefficient。
这个设计有两个细节值得记:
codebook 学习发生在 2D CLIP feature 空间,而不是 3D Gaussian 空间,因此监督域与文本查询最终比较的语义空间一致。
region 数量远少于 Gaussian 数量,小物体和大物体也更容易在 codebook 学习中保持相对均衡;如果先把 dense feature uplift 到 3D 再压缩,大物体对应的 Gaussian 数量会压倒小物体。
2. Sparse Coefficient Uplifting:只把非零系数投到 3D
完成 2D sparse coding 后,SCOUP 不再 uplift 完整 512 维 CLIP feature,而是只 uplift 每个 region 的 $K$ 个非零 codebook 系数。对于第 $i$ 个 Gaussian,论文用 Gaussian-to-pixel association 在多视角中聚合 coefficient:
这里 $S_i$ 是第 $i$ 个 Gaussian 在各视角中关联到的像素集合,$e_i(v,p)$ 表示该 Gaussian 对像素的渲染贡献权重。因为 $W_v(p)$ 是稀疏的,聚合复杂度从 dense feature uplifting 的 $O(|S_i|D)$ 降为 $O(|S_i|K)$。论文实验里使用 $D=512, K=4$,所以这是数量级上的差异。
3. Top-K Filtering:把多视角聚合当成语义投票
多视角聚合后的 $w_i$ 可能不再严格只有 $K$ 个非零项,因为不同视角会激活不同 codebook atoms。SCOUP 把这个现象解释为一个投票过程:如果某个 codebook atom 在多个视角中反复出现,它的累计权重大,说明这是跨视角一致的语义;反之,小权重项更可能是遮挡、分割误差或视角噪声。
因此论文对每个 Gaussian 的聚合向量再做一次 Top-K:
这样每个 Gaussian 最终只存 $K$ 个 coefficient value 和对应 index。这个步骤同时带来三件事:压低存储、加速渲染、过滤多视角不一致的语义噪声。
4. Sparse Coefficient Rendering:渲染稀疏系数,再乘 codebook
推理时,3DGS 渲染的不是 512 维 dense feature,而是每个 Gaussian 上的稀疏 coefficient。渲染到 2D 后得到稀疏 coefficient map:
最后用一个矩阵乘法恢复 CLIP feature:
相比 autoencoder 解码,这一步没有神经网络 decoder;相比 dense feature rasterization,它只访问非零系数。论文还沿用 LangSplatV2 的设置,三个 SAM semantic levels 独立处理,并在渲染时同时输出三个层级的 sparse coefficient maps。
数据集
论文评估的是 open-vocabulary 3D scene understanding,主要使用三个数据集:
LERF-OVS:包含 4 个用 iPhone/Polycam 采集的 in-the-wild 场景,并带有文本查询对应的 segmentation masks 和 localization points。论文报告 open-vocabulary localization 的 mAcc,以及 segmentation 的 IoU。
Mip-NeRF360:使用 GAGS 提供的标注,在 4 个室内/室外场景上报告 IoU。
3D-OVS:在 bed、bench、room、sofa、lawn 这 5 个长尾物体场景上报告 segmentation IoU。
算力
论文明确说明所有实验都在 NVIDIA RTX A6000 GPU 上进行。
训练和实现设置如下:
输入是只用 RGB 图像训练 30,000 iterations 得到的 3DGS scene。
SAM ViT-H 生成三个层级的 masks,OpenCLIP ViT-B/16 编码每个 mask,得到 512 维语义特征。
每个 semantic level 的 2D sparse coding 训练 4,000 epochs,Adam 优化器,学习率 0.0007。
默认 codebook size $L=64$,每个区域和 Gaussian 保留 $K=4$ 个非零系数。
codebook 用 CLIP-encoded masked regions 做 k-means 初始化。
实验结果
1. LERF-OVS 上的主结果


在 LERF-OVS 上,SCOUP 的整体 localization mAcc 达到 86.9,高于 LangSplatV2 的 84.1 和 VALA 的 83.9。分场景看,它在 Figurines 上提升最明显,达到 85.7;Kitchen 上也达到 95.5。
segmentation mIoU 的整体结果是 64.4,高于 LangSplatV2 的 59.9 和 VALA 的 61.7。提升主要来自 Ramen 和 Teatime 两个场景,说明 sparse coding + Top-K filtering 对跨视角语义一致性确实有帮助。
从可视化结果看,SCOUP 的热力图边界更集中,尤其是 "wavy noodles"、"red cup" 这类小目标或局部目标上,LangSplatV2 的响应更容易扩散到背景或相邻物体。
2. Mip-NeRF360 与 3D-OVS


Mip-NeRF360 上,SCOUP 的 overall mIoU 为 69.5,略高于 LangSplatV2 的 69.4,显著高于 LangSplat 的 57.3 和 GOI 的 58.5。具体场景里,Room 为 66.5,Counter 为 82.3,Garden 为 57.4,Bonsai 为 71.7。
3D-OVS 上,SCOUP 的 overall mIoU 为 92.6,低于 Occam’s LGS 的 95.0 和 LangSplatV2 的 94.6。论文指出主要问题来自 Bed 场景里的单个查询 "black leather shoe":SAM 在预处理阶段会把 shoe 和周围 white sheet 区域混在一起,导致该 query 明显拖低平均值;如果排除这个 query,Bed 场景 mIoU 会升到 96.4。
这组结果说明 SCOUP 不是在所有场景上绝对领先,而是在保持极高效率的同时基本维持或接近 SOTA 语义精度。它的短板也很清晰:上游 SAM mask 一旦错分,后续稀疏系数再干净也很难恢复对象边界。
3. 速度、显存与渲染

Table 3 是这篇论文最关键的结果之一。相比 LangSplatV2:
Mip-NeRF360 上,2D 到 3D 语义重建时间从 684 分钟降到 1.4 分钟。
3D-OVS 上,重建时间从 570 分钟降到 0.5 分钟。
GPU memory 从 37.7GB / 28.5GB 降到 10.4GB / 4.4GB。
3D 到 2D rendering speed 保持相同,都是 15 FPS。
换句话说,SCOUP 主要赢在 per-scene semantic reconstruction 的部署门槛:以前是小时级,现在是分钟甚至一分钟内。
4. Ablation:Top-K 不是只为省存储

消融实验比较了三种路线:
dense feature uplifting:mIoU 60.5,mAcc 82.0,2D→3D 需要 21.3 分钟,3D→2D 只有 0.5 FPS,存储 7.8GB。
sparse uplifting 不加 Top-K:mIoU 60.0,mAcc 81.2,2D→3D 降到 0.7 分钟,3D→2D 提升到 22.0 FPS,存储 1.0GB。
sparse uplifting + Top-K:mIoU 64.4,mAcc 86.9,2D→3D 仍为 0.7 分钟,3D→2D 进一步到 29.3 FPS,存储降到 0.1GB。
这说明 Top-K filtering 不只是压缩技巧。它把多视角中低共识的 coefficient 去掉以后,语义质量反而提升,mIoU 从 60.0 提高到 64.4,mAcc 从 81.2 提高到 86.9。
5. 附加分析与失败案例


Figure 4 进一步拆解了效率来源:2D sparse coding 的编码时间明显低于 LangSplat 的 MLP autoencoder;右图显示 sparse coefficient uplifting 相比 full-dimensional feature uplifting 在维度增加时几乎保持平坦,而 dense uplifting 随 feature dimension 快速增长。
Figure 5 对比了多视角一致性。SCOUP 的 sparse coding 特征在 cosine similarity 分布上更接近 ground-truth CLIP embeddings,而 MLP autoencoder 解码特征的一致性更分散。这支持了论文的主张:在 CLIP 原生空间里做 scene-aware sparse coding,比学一个解码器再还原 CLIP feature 更保真。

Figure 6 展示了 direct feature uplifting 的局限:透明或半透明物体,例如 glass,容易因为 3DGS opacity 较低而得到不稳定语义响应。这不是 SCOUP 独有的问题,而是依赖 3DGS visibility / Gaussian-to-pixel association 的方法都会继承的风险。

附加 qualitative results 也显示,在 "plate"、"sake cup"、"pumpkin"、"ketchup" 等查询上,SCOUP 的响应通常比 LangSplat 和 LangSplatV2 更聚焦,尤其是在目标较小、遮挡复杂或背景纹理干扰较多时。
优势与不足
优势
把语义压缩从 3D Gaussian 空间挪到 2D CLIP/SAM region 空间,避开了 per-scene 反复 feature rasterization,是这篇论文最本质的效率来源。
稀疏系数 uplift 的复杂度由 $D$ 变成 $K$,默认 $D=512, K=4$,所以在语言特征维度很高时优势明显。
Top-K filtering 同时承担压缩和 denoising 的作用,把多视角聚合自然解释成 semantic voting,设计简单但很有解释力。
在 LERF-OVS 上达到更高 overall mAcc 和 mIoU,同时把 LangSplatV2 的小时级重建时间压到分钟级,实用价值很强。
不足
整条链路仍然依赖 SAM 和 CLIP/OpenCLIP 的质量。SAM mask 错分、透明物体 opacity 不稳定、CLIP 对细粒度类别区分不足,都会传递到 3D 语义场。
SCOUP 需要已有 3DGS scene 和 Gaussian-to-pixel association,因此它解决的是 3DGS 之后的语义挂载问题,不是端到端重建几何与语义。
3D-OVS 上并非全面最优,Bed 场景表现受单个 query 明显影响,说明在长尾查询和局部分割失败时仍不够鲁棒。
论文主要评估 object localization / segmentation,对语言驱动导航、机器人交互、动态场景编辑等下游任务还没有直接验证。
记忆点
不要在 millions of Gaussians 上学习 codebook,先在 2D SAM region 上把 CLIP feature 稀疏化。
Sparse coefficient uplifting 的关键收益来自 $O(|S_i|D)$ 到 $O(|S_i|K)$,默认 $512 \rightarrow 4$。
Top-K filtering 可以看作跨视角语义投票:高权重是共识,低权重是噪声。
这篇论文真正解决的是 3DLGS 的工程瓶颈:把 open-vocabulary 3D semantic reconstruction 从小时级拉到分钟级,同时保持接近或优于主流方法的查询精度。
方法的上限仍被 SAM/CLIP 和 3DGS visibility 约束,透明物体、小物体错分、长尾 query 是后续值得继续看的方向。











