篇目 53 · 单篇论文精读

把「谁在动」的判据从颜色残差搬到文生图特征空间

SpotLessSplats · 3DGS 默认两件事:世界是静止的、光照是一致的。休闲拍摄两件都不满足 —— 走过的人、风里的物件、自动曝光与白平衡。前人把「谁在动」的判据放在 RGB 颜色残差上,于是撞上一个具体死角:干扰物与背景同色时,颜色残差里两者是同一件事。这篇把判据换了个空间:用预训练文生图扩散模型(Stable Diffusion)的特征图,在语义特征空间里找离群区域。两条检测路线分别是按空间块投票的 SLS-agg 与与 3DGS 交替优化的 SLS-mlp;把鲁棒掩膜搬进 3DGS 会坏在三处(掩膜扑向早期噪声、小批即整图导致分位数偏斜、致密化搅乱残差分布),对应三处修法:伯努利采样+阶梯退火的热启动、直方图追踪分位数、用「对屏幕坐标的梯度」定义的利用率剪枝(UBP)替掉 opacity reset。UBP 在含干扰数据上把高斯数减到 1/4–1/6、训练时间至少减半、推理快 3 倍;在干净的 MipNeRF360 上也能减 2–4.5×

Sara Sabour、Lily Goli(共同一作)、George Kopanas、Mark Matthews、Dmitry Lagun、Leonidas Guibas、Alec Jacobson、David J. Fleet、Andrea Tagliasacchi 项目页 spotlesssplats.github.io arXiv:2406.20055v2 · ACM TOG 44(2) · 12 页 · 612×792 pt(Letter)· 双栏 · 版心 x 10.9–561.7 原文编号式 (1)–(13) · 原文图 12 张 · 表 1 张 · 许可:CC BY 4.0
14 章一级章节(按拆解点切)
12 式原文正文编号式 (1)–(12) 重排
12 张配图(原文 12 / 自绘 0)
12 条边界与反例(独立成节)

图-段配对表 · 本稿 12 张

图角色档归属支撑的论断层次状态
图 1-1E§1teaser:多干扰物场景的掩膜、重建与细节对照①②原文 Fig. 1, p.0 · 原样引用
图 2-1E§3同色干扰物:颜色残差漏判、语义聚类不漏①②原文 Fig. 2, p.1 · 原样引用
图 3-1E§4同一条判据的两个失败方向:过度掩膜与掩膜不足①②原文 Fig. 3, p.2 · 原样引用
图 4-1E§6弱监督从哪两个标签来①②原文 Fig. 4, p.4 · 原样引用
图 5-1E§9主结果:四场景、三件指标,外加一条「干净模型」上界①②原文 Fig. 5, p.5 · 原样引用
图 6-1E§10高遮挡场景里的干扰物泄漏与细节抹平①②原文 Fig. 6, p.6 · 原样引用
图 7-1E§10干净数据上的压缩账,与「少被看到的部位」①②原文 Fig. 7, p.6 · 原样引用
图 8-1E§11路线递进:每一级各值多少分①②原文 Fig. 8, p.7 · 原样引用
图 9-1E§11三个旋钮:架构、正则权重、簇数①②原文 Fig. 9, p.7 · 原样引用
图 10-1E§11四处修法:拿掉以后各掉多少①②原文 Fig. 10, p.8 · 原样引用
图 11-1E§12同类近距离实例分不开(橙子)①②原文 Fig. 11, p.10 · 原样引用
图 12-1E§12三类边缘情形:透明、同色、阴影①②原文 Fig. 12, p.11 · 原样引用
角色档:本篇 12 张全部登记为 E 类(证据图)——它们承载可核对的读数(用于对照的画面,或作为某条论断的唯一证据),按 20 号票的裁决 E 类禁止自绘,故一律引用原图。自绘 0 张,S 类配额未动用。
取图口径:12 张按实测包围盒从原文 PDF 区域渲染(本篇 12 张的图域一律为位图;3.0× 栅格化约 216 dpi),未裁切拼接、未加标注、未施滤镜,逐图署名(图号 + 原文 Fig. 号 + 页码 + 未修改声明)。12 张图的图注一律在图之下(12/12 实测)。包围盒判据是「自图注上缘向上聚合图元簇、遇到正文文本行即停」;复核读数:12 个框内含正文行一律为 0(无过扩)。其中图 7-1/10-1/11-1 的上边缘贴到栏顶(像素剖面复核其第 0 行标准差 48.6–58.9,属图像内容而非被切线切断),图 12-1 为近整页竖构(1526×1722)走限高档。正文一律不逐格复述图内读数,只引原文写出的结论与图内已写的标签。
表:共 1 张编号表(原文 Table 1,p10,位于附录 C)——不以截图呈现,按原文文字层逐格取值后以 HTML 重排(12 个数值 token,机器校验零差异),数值未改位数、未做换算。原始裁图(tables/tab1.png)留作核对凭据。本篇体例:原文这张表的表注写在表体之下(实测),站内按分区统一体例排在表体之上,注文逐字照录。
「图内数据表」的口径(本篇特有,须单独写):原文只有 1 张编号表,其余量化证据集中在 图 3-1、图 5-1、图 6-1、图 8-1、图 9-1、图 10-1 这六张图里——它们的画面中嵌着数据表。这些表里的数字在 PDF 里是可选中的真实文本(不是像素),因此本站按与编号表同等的取值口径逐格核对后引用,并在第 12 章写出三处复算结论(图 8-1 的 Average 列有两处与表内写的差 0.01;图 3-1/5-1/6-1 与图 8-1 的同场景值逐格一致)。这不等于「照图估数」——前者的差异可机器复核为 0,后者只能目测。
许可(本篇与同分区此前多篇不同,须单独写):原文为 CC BY 4.0——依据是 arXiv 摘要页的 license 图标(by-4.0)与 Crossref 的 license 字段(content-version: vor,正式版)两处互证。须说明的是:本篇 PDF 文字层里没有任何许可声明(全文逐页检索 Copyright/Creative Commons/CC BY/License/licensed/permission/©/ACM ISBN/all rights reserved 等十个关键词,命中 0),许可依据来自上述两处外部实测。该许可允许在署名前提下自由使用、改编与商用;本站仍按更严的惯例原样零加工引用 + 逐图署名,并在文末给出站内托管的 paper.pdf 与 arXiv canonical 双链接。列表页卡片放 CC BY 4.0 chip。
原文摘要 Abstract, p.0(英文原样引用)

"3D Gaussian Splatting (3DGS) is a promising technique for 3D reconstruction, offering efficient training and rendering speeds, making it suitable for real-time applications. However, current methods require highly controlled environments—no moving people or wind-blown elements, and consistent lighting—to meet the inter-view consistency assumption of 3DGS. This makes reconstruction of real-world captures problematic. We present SpotLessSplats, an approach that leverages pre-trained and general-purpose features coupled with robust optimization to effectively ignore transient distractors. Our method achieves state-of-the-art reconstruction quality both visually and quantitatively, on casual captures. Additional results available at: https://spotlesssplats.github.io"

这一篇要讲清的 19 件事
  • 缺口的形状很具体:问题在于「判据放错了空间」,而不只是「鲁棒性不够」。颜色残差里,「气球」与「和它同色的背景」在数值上无法区分。原文图 2 把这件事画出来了:从 RobustNeRF 搬来的鲁棒掩膜(RobustMask)把与背景同色的气球像素判成了内点(§2, p1–p2)。而语义特征里,气球是一个连通、可聚类的区域。判据换空间,是这个方法唯一的支点,其余全是围绕它的工程。
  • 特征取自文生图扩散模型,不是 DINO。原文用 Stable Diffusion v2.1 的第 2 个上采样层、去噪时间步 261、空提示词,并把 20 阶位置编码拼到特征后送进 MLP(§5, p7 实现细节;特征来源依 [Tang et al. 2023])。这一层特征在训练开始前算一次,之后不再更新(§4.1, p3)。
  • 两条检测路线,差别在「有没有参数」:SLS-agg 是无参的(对特征图做凝聚聚类成 C = 100 个空间连通簇,用式 5-2 的掩膜算每簇的内点比例,阈值 0.5 后回传像素,式 6-1/6-2);SLS-mlp 是有参的(MLP H(F; θ),1×1 卷积实现,与 3DGS 交替优化,式 6-3)。原文的自述是:agg 快、不需要额外训练;mlp 精度更高、略慢(§6, p8)。
  • SLS-mlp 的监督是「只在不自信的地方闭眼」:L_sup 用两个铰链项(式 6-5),上界标签 U 取 τ = .5、下界标签 L 取 τ = .9(式 6-6/6-7);也就是说只对残差能明确判定的像素直接监督,其余交给特征相似度。再加一项 Lipschitz 正则(λ = 0.5)把相似特征映到相近概率,正则的实现照 [Liu et al. 2022, Eq. 13](§4.1.2, p4)。
  • 热启动是必要的,理由很直白:初始残差是随机的,MLP 早期也没收敛,直接用掩膜会迅速对早期错误过度承诺,把有价值的误差反传通道掐掉。修法是把掩膜当成伯努利采样(式 7-1),M* ~ B(α·1 + (1−α)·M),α 是阶梯指数调度(原文式 (13),在附录 B;按分区惯例附录式不落式块),从 1 退到 0(§4.2.1, p4)。
  • 分位数追踪这一处是「小批语义」被改掉的结果:RobustNeRF 的修剪估计器假设每个小批的干扰物比例大致相同,而 3DGS 的一个小批就是一整张图 ⇒ 比例在图像之间偏斜。修法是把残差量级离散到宽度为 10⁻³ 的直方图桶里,按「快中值滤波」的折扣更新方式维护桶人口,ρ 取 τ 分位(§4.2.2, p5)。
  • UBP 替掉的是 opacity reset,不是「顺手加的压缩」:opacity reset 会污染残差追踪(重置后若干迭代内残差被人为抬高),但直接关掉又不行(它要负责让梯度重新流到被遮挡的部分、并顺带控制高斯数)。UBP 改为追踪渲染颜色对「投影后」基元位置的梯度(式 7-2),在图像上平均、每 100 步算一次、跨最近 100 张图累积,u_g < κ = 10⁻⁸ 就剪掉。原文明确解释为什么用投影位置而不是三维位置:后者在 GPU 上更省显存,而度量效果接近(脚注 2, p5;度量参考 [Goli et al. 2024])。
  • UBP 同时解决了浮块问题:浮块天然只参与极少数视角的渲染 ⇒ 利用率低;而用被掩膜过的导数(式 7-2 里的 M)还能顺手剪掉在热启动阶段漏过掩膜的基元(§4.2.3, p5)。
  • 外观建模只让每视角隐向量动球谐的线性变换:ĉ = a ⊙ c + b,a, b = Q(z_n; θ_Q),z_n ∈ R⁶⁴(式 8-1)。原文特意说明这个「受限」形态的价值:更简单的 GLO 会让 z_n 把干扰物解释成逐图调整,而这种受限形式不会(§4.2.4, p5)。
  • 主结果一(RobustNeRF 数据集):SLS-mlp 在四个场景上都优于全部鲁棒 NeRF 基线,也显著优于原生 3DGS,并在 Yoda/Android 两景上贴近干净模型;定性上,原生 3DGS 会把干扰物建成杂散浮块(Yoda、Statue)或视角相关效应(Android)或两者混合(Crab),而 NeRF-HuGS 在四个场景里都出现削掉静态部件的过度掩膜,或在稀疏视角下漏进干扰物(§5.1, p7)。
  • 主结果二(NeRF On-the-go 数据集):在低遮挡场景上,COLMAP 点云的鲁棒初始化(RANSAC 剔外点)本身就够用。这是原文自己写出的、对基线有利的一条;但随着干扰物密度上升,3DGS 的画质明显下滑并漏出干扰物。NeRF On-the-go 则在早期训练阶段就漏掉部分干扰物(Patio、Corner、mountain、Spot),并把细节(Patio High)乃至大片结构(Fountain,水管被整根抹掉)过度掩膜(§5.1, p7)。
  • UBP 的账有两个口径,不能混引:在含干扰物的 RobustNeRF/NeRF On-the-go 上,高斯数减到 1/4–1/6,训练时间至少减半、推理快 3 倍;在干净的 MipNeRF360 上减 2–4.5× 而画质保持(§5.2, p7;图 7-1 的图注写「up to 4.5×」)。原文同时也承认:开 UBP 可能让 PSNR/LPIPS 略微变差,但画面更干净、浮块更少,并据此提出「PSNR 与 LPIPS 未必能像看渲染视频那样反映浮块」(§5.2, p7)。
  • 消融有三层,值得分开读:①路线递进(图 8-1)—— 原生 3DGS → 从 RobustNeRF 直接搬来的鲁棒滤波器 → SLS-agg → SLS-mlp(w/o UBP)→ SLS-mlp(w/ UBP),10 个场景的 PSNR 平均值依次是 22.60/24.85/26.08/26.11/25.77,且原文标注 SLS-agg 与 SLS-mlp 在全部任务上大多落在彼此的 2σ 内(σ 由各 5 次独立运行算出);②设计选择(图 9-1)—— 用 MLP 而不是同样约 30K 参数的 CNN 更好(对阴影这类细微瞬态尤其明显),正则权重 λ 取 0.1 还是 1「几乎没有影响」,簇数在 C ≥ 100 后收益趋于平坦(C = 10 明显更差);③四处修法逐个拿掉(图 10-1)—— 关掉 UBP 指标反而更高(29.27 对 28.72)但会漏出干扰物,换回 opacity reset 明显更差(27.64),关掉 GLO(28.43)、关掉热启动调度 α(28.41)、关掉伯努利采样 B(28.41)都变差。
  • 一处必须写清的口径:图 8-1 的 「Average」列是复算得到的,而其中两处与表内写的差 0.01 —— 3DGS 行按 10 个场景 PSNR 复算为 22.593(应写 22.59),表内写 22.60;RobustFilter 行复算为 24.856(应写 24.86),表内写 24.85(截断)。另外三行复算与表内一致(SLS-agg 26.081→26.08、SLS-mlp w/o UBP 26.106→26.11、SLS-mlp w/ UBP 25.768→25.77)。
  • 一处很有用的交叉核验:图 3-1(Fountain/Corner/Spot)、图 5-1(Statue/Android/Yoda)、图 6-1(Mountain/Patio/Patio High)里 SLS 的同场景读数,与图 8-1 的 SLS-mlp w/ UBP 行逐格一致(例如 Fountain 22.81/0.80/0.15、Yoda 33.60/0.96/0.10、Mountain 22.53/0.77/0.18)。也就是说这几处只能算同一批运行的不同呈现,不能算彼此独立的证据;引用时不应把它们当成互相印证的多次实验。
  • 作者的自我划界(照写):①同类且近距离的干扰物与非干扰物分不开(近处的橙子会被过度掩膜,远处的可以分开;附录 A + 图 11-1);②文生图特征分辨率低,会漏掉细结构(原文举例是气球的绳子),且把特征上采样到图像分辨率后边缘不精确;③UBP 的阈值取得过狠时,会削掉训练中少被看到的部位(原文举例是 fig. 7 里的 'vase deck')。
  • 一处原文侧的术语不齐(照录不改):Limitations 段把 UBP 描述为「基于逐基元的不确定性(epistemic uncertainty)计算」,而 §4.2.3 定义它的量是渲染颜色对投影位置的梯度(utilization)。同一个机制在两个名字下出现。原文在 §4.2.3 也把它的度量出处指向 [Goli et al. 2024](一篇讲不确定性的工作)。
  • 一处原文侧的交叉引用不齐(照录不改):Limitations 段写「会漏掉像 Figure 8 里的气球绳那样的细结构」,而气球出现在图 2(§2 明确写「see RobustMask in Figure 2」),图 8 是掩膜方法的消融图。
  • 三处体例层面的不齐(照录不改):附录字母序与版面序不一致(p10 左栏起是 A,右栏是 D,再回左栏 B、C);原文有两处拼写错误:附录 C 的 training datset(漏 a)与图 11-1 图注的 non-dsitractor(字母错位)。

1把「谁在动」的判据从颜色残差搬到文生图特征空间

3DGS 在受控拍摄上很好用,一放到随手拍的视频里就出问题。原因不复杂:它的整套优化默认了一个静止且光度一致的世界,而随手拍的世界里有人在走、有东西在风里晃、相机的自动曝光和白平衡一直在动。这些不满足假设的部分,原文沿用前人的叫法称作干扰物(distractor),也称作瞬态(transient)[§3.1, p2]。

处理它们的常规做法是找出来、掩掉:先判断每张训练图的哪些像素属于干扰物,得到一张内点/外点的掩膜,再只在掩膜内算重建损失。这条路线本身没问题,问题出在判据上:前人把判据放在颜色的重建残差上:某个像素的渲染颜色与真实颜色差得大,就怀疑它属于干扰物。

这个判据有一个具体的死角。颜色残差量的是「差多少」,而干扰物与背景同色时,两者在残差里的表现可以完全一样。原文用图 2-1 把这件事画了出来:气球是干扰物,它的一部分颜色与背后的天空很接近,从 RobustNeRF 搬过来的鲁棒掩膜(原文称 RobustMask)在处理这一片时把它判成了内点,于是气球被留下来、被当成场景的一部分建进三维模型[§2, p1–p2]。

本篇的做法是把判据换一个空间。不再问「这个像素的颜色差多少」,改问「这个像素的特征像不像场景里那些反复出现的语义区域」。特征取自预训练的文生图扩散模型(Stable Diffusion)。判据一换,气球就不再是「一组与背景同色的像素」,而是一个连通、可以被聚成一类的语义区域,于是它能被整体识别出来。

这一换不是免费的。特征空间里的相似度不是判据的终点,而是判据的起点:它只告诉你哪些像素像同一件东西,不告诉你这件东西是不是干扰物。所以还缺一步 —— 需要一个机制在这个空间里圈出「应当被掩掉」的那一片,并且这个机制必须和 3DGS 的训练过程咬合,不能各跑各的。本篇的其余部分基本都在做这一件事:给出两种圈法(第 6 章),把圈法和 3DGS 的既有机制接起来(第 7、8 章),然后算账(第 9 到第 11 章)。

顺带说清一件容易读糊的事:这篇的方法名是 SpotLessSplats(SLS),但它不是一个新的基元、也不是一个新的渲染器。基元还是三维高斯,渲染还是那套投影加 alpha 合成,改的只有「哪些像素参与损失」这一处。原文对此的定位很清楚:它建立的是一类掩膜策略,用的是语义特征,不需要任何显式监督[§6, p8]。这条定位也决定了它的适用边界:凡是「干扰物本身有语义、且与场景的语义区分得开」的场合它有用,反过来就未必(第 12 章逐条列出)。

SpotLessSplats 的效果总览:多干扰物的重建、干扰物掩膜、以及与其他方法对照的细节
图 1-1 E 类·证据 · 原文 Fig. 1, p.0 · 原样引用 怎么读 ①指认:图注写明四块的分工:下是本文的重建结果(避开伪影),中是含大量瞬态遮挡物的场景,上是它对全部瞬态物识别并掩掉的结果,左是一段含极多瞬态的拍摄。可点名的对象是「被掩掉的人与物」与「掩膜本身」。②读法(怎么读):按「掩膜 → 重建」两栏对着看:上栏掩掉的是哪些像素,下栏对应位置就应当没有伪影;中栏的原始画面上,人来人往的地方本应是最难建的一类区域。③对照:图内的对照对象是「不掩膜的常规做法会留下的痕迹」,正文里对应的读数是第 9 与第 10 章的图表。④落点:这是效果展示,不是精度凭据;它的作用是把整篇的主张压成一张图:先判对「谁在动」,才谈得上建得干净。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 1 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

23DGS 默认了两件事,休闲拍摄两件都不满足

要把这篇的动机读准,得先把「3DGS 假设了什么」写明白。原文的表述是两条:图像是同时拍摄的、位姿是准确的、且不含噪声[§1, p0]。前两条属于拍摄与标定,第三条才是这篇要动的地方,它的具体含义有两层。

第一层是世界的静止。3DGS 的优化靠多视角之间的一致性:同一个三维点从不同视角看过去,颜色应当对得上。有人走过、有东西在风里晃,一致性就在这些区域破掉;优化没有「这是临时闯入者」的常识,只能把它当成三维结构的一部分去拟合。原文对此的说法是:扰动来自移动的物体(人、宠物)、光照变化以及其它虚假的光度不一致,它们会拉低性能、限制这套方法在真实场景里的铺开[§1, p0]。

第二层是光度的一致。这一层常被忽略,但它在这篇里是被专门处理的:随手拍的相机默认开着自动曝光和白平衡,同一场景在不同时刻被拍下来,整体色温和亮度就会漂。3DGS 原本的球谐颜色是逐基元、与视角相关的,它没有「这一次拍摄整体偏亮」这样的自由度,于是这种漂移会被硬塞进几何或颜色参数里,表现为重建发灰或结构变形。本篇对这件事的处置放在第 8 章(每视角一个隐向量、只对球谐做线性变换)。

把两条放一起,就能理解为什么「掩膜」是正确的切口,而不是「更强的重建器」。干扰物造成的破坏全部集中在某些像素参与优化这件事上:把这些像素排除在外,剩下的像素依然是静止、光度一致的,3DGS 原本的能力就还在。所以这篇不需要改基元、不需要改渲染、也不需要加网络去「学会忽略」,只需要一个可靠的判据把不该参与的像素挑出去。

原文在这里还留了一句对前人的交代,值得照录:前人处理类似问题的思路是把位姿和干扰物分开治:靠运动掩膜把动态区域从重投影残差里剔掉。本篇的方向不同:它的出发点是语义,而不是位姿 —— 决定谁不该参与[§1, p0–p1]。这个选择带来一个直接的后果,也是第 12 章要写的边界之一:语义上分不开的东西,这套判据就分不开:判据的强度完全绑定在特征空间的判别力上。

这里还要补一句 3DGS 自身的麻烦,它决定了这篇的工程量。 前面说的两条假设是「拍摄」层面的,而 3DGS 还有一个「训练」层面的特性会让鲁棒掩膜变得难用:它的自适应致密化在训练过程中不断克隆与分裂基元,于是颜色残差本身会带上额外方差:同一片像素,在基元被克隆前后、在被剪掉前后,残差量级并不稳定。原文在引言里专门点出了这一条,并把它当作「直接把鲁棒 NeRF 的思路搬到 3DGS 上会失效」的原因之一[§1, p0]。这条观察解释了第 7 章为什么要把「掩膜」和「致密化」放在一起处理:它们共用一套统计量(残差分布),一个动、另一个必然受影响。

这也顺带说明了为什么这篇的工程量并不小。判据换空间只是「想清楚」,而要让它在真实训练里稳定运行,必须处理三件事:早期模型不可信(掩膜会扑向噪声)、小批语义与图像语义不一致(分位数被带偏)、以及致密化与 opacity reset 在背后改动同一批统计量。前两件是方法问题,第三件是工程问题 —— 而第三件恰恰是最容易被读者略过、又最容易让复现失败的一处。

3前人两条线:颜色残差派与语义特征派

在 3DGS 上做「抗干扰重建」的先行工作可以排成两条线,而本篇站在两条线的交叉处:一条线的判据是颜色残差,另一条线已经用上了语义特征但没用到底。把两条线各自的失手写清,本篇的位置就定了。

第一条线:颜色残差派。 代表是 NeRF-W 与 RobustNeRF。NeRF-W 建模一个三维不确定性场,渲染成二维外点掩膜,给高误差像素降权,并配一个正则项防止退化解;它同时还用可学的外观嵌入处理大范围的光照与大气变化[§2, p1]。RobustNeRF 从鲁棒估计的角度入手:用阈值化的渲染误差给出二值权重,再用一个模糊核来表达「属于干扰物的像素在空间上相关」这一假设,也就是把修剪估计器(trimmed estimator)扩展到「内点/外点在空间上成片出现」的情形(原文式 5-2 就是它的形式)[§2, p1;§3.1, p2]。

这条线的失手点,原文写得很直接:两者(以及它们的变体)只依赖 RGB 残差误差,因此经常会把与背景颜色相似的瞬态物误判成内点;而且为了避免这件事,它们需要仔细调超参:RobustNeRF 要调模糊核尺寸与阈值,NeRF-W 要调正则权重[§2, p1]。图 2-1 就是这一条的图像证据:气球是干扰物,它的颜色与背后的天很接近,从 RobustNeRF 搬来的掩膜把这一片当成了内点。对照组(本文的聚类特征)把气球整体覆盖住了。

第二条线:语义特征派。 代表是 NeRF On-the-go 与 NeRF-HuGS。NeRF On-the-go 已经用上了 DINOv2 的语义特征、并用一个小 MLP 预测外点掩膜,方向与本篇一致;但原文指出它同时依赖渲染结构误差的直接监督,因此会过度掩膜或掩膜不足[§2, p1–p2]。NeRF-HuGS 则把 COLMAP 鲁棒稀疏点云的启发式与现成的语义分割拼起来去掉干扰物,原文引用先前的评测说明:这套启发式在重度瞬态遮挡下会失效[§2, p2]。

本篇的位置就在这两条线的接缝上。 它承认第一条线的诊断(颜色残差不够),也承认第二条线的方向(用语义特征),但把第二条线「仍靠渲染误差直接监督」这一步拿掉:监督只保留在残差能确定内点身份的地方,其余交给特征相似度(第 6 章的式 6-5 到式 6-7)。这也是为什么本篇的定性对照里,过度掩膜与掩膜不足是同一张图上的两个失败方向,而不是两篇不同论文的两种毛病:它们是同一个「判据不纯」的症状。

用颜色残差得到的鲁棒掩膜漏掉同色气球,用语义特征聚类则整体覆盖
图 2-1 E 类·证据 · 原文 Fig. 2, p.1 · 原样引用 怎么读 ①指认:图注写明对照的两方:本文基于聚类语义特征的外点分类,与从 RobustNeRF 搬来的自适应鲁棒掩膜(RobustMask);可点名的对象是气球这一干扰物。②读法(怎么读):盯住气球边缘与气球内部这两处:语义聚类那一侧把气球整体覆盖进外点区域;鲁棒掩膜那一侧把与背景同色的一批像素判成了内点,于是气球在掩膜上被啃掉一块。③对照:这一张是「颜色残差为什么不够」的图形证据,与 §2 的文字判断一一对应;正文里 NeRF-W 与 RobustNeRF 都属于这一侧。④落点:这张图决定了整篇的支点:判据必须换空间。它只说明「换了空间更好」,不给出任何量化优势;量化的账在第 9 到第 11 章。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 2 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

4语义特征派自己也没解决的:过度掩膜与掩膜不足

上一章说 NeRF On-the-go 会「过度掩膜或掩膜不足」,这句话在图 3-1 上有具体的样子。这张图覆盖 NeRF On-the-go 数据集的三个场景,每个场景给出对照画面与三件指标的读数;原文用它说明两件事同时发生。

过度掩膜这一侧:Fountain 场景的管子被整根抹掉,Spot 场景的地毯被抹平[§2, p2]。这两个例子的共同点是「被掩掉的东西是真实存在的静态结构,只是它在某些视角下看起来像是干扰物」。也就是说,判据在这里的失效方向不是「漏判」,而是把内点误判成外点,代价是场景被削掉一块。

掩膜不足这一侧:Corner 与 Spot 场景漏进干扰物、出现雾状伪影[§2, p2]。这与前一节的失败方向相反:外点被误判成内点,干扰物被建进模型、在渲染时表现为漂浮的雾。

图 3-1 里还同时给出了 SLS 自己在同样三个场景上的读数与画面,配合图注的判词:本文的重建避开了瞬态的泄漏与重建不足这两个方向[图 3-1 图注]。把这张图与上一章的图 2-1 连起来看,本篇要解决的问题就有了一副完整的像:同一个判据,在两个方向上都不够准;而两个方向的误差都来自同一处 —— 判据只看颜色残差,不看语义。

这里要补一句方法论上的分寸。图 3-1 与第 9、10 章的主结果图共享同一批运行:图 3-1 里 SLS 在 Fountain/Corner/Spot 三景上的读数,与图 8-1 中 SLS-mlp w/ UBP 行的对应格逐格一致。因此这两张图不是彼此独立的证据,读的时候不应把它们当作「两次实验互相印证」;它们的关系是「同一批结果的不同呈现」,一张用于讲失败模式、一张用于讲总体账。第 12 章会把这条口径写成正式的一条边界。

NeRF On-the-go 数据集上三个场景的定性与定量对照:过度掩膜与掩膜不足
图 3-1 E 类·证据 · 原文 Fig. 3, p.2 · 原样引用 怎么读 ①指认:图内横排是三个场景(Fountain/Corner/Spot),每场景一组画面加一列三件指标的读数;行是可对照的方法(从早期的隐式方法到原生 3DGS 到本文的 SLS-mlp)。②读法(怎么读):先看画面找失败方向、再看读数对数量级:找两处:Fountain 里水管被整根抹掉(过度掩膜)、Corner 与 Spot 里干扰物泄漏成雾状伪影(掩膜不足)。③对照:与图 2-1 连起来读,两者是同一条判据的两个失效方向;与图 8-1 连起来读时注意,本图 SLS 行的读数与图 8-1 的 SLS-mlp w/ UBP 行逐格一致,属同批运行的不同呈现。④落点:这张图承载的是缺口的确证,不是本文的成绩;本文的账在第 9 到第 11 章。图内标签之外不逐格读值。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 3 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

5垫底:3DGS 的渲染链路与鲁棒掩膜的原始形式

方法之前先垫两块底:本篇要改的那一处损失长什么样,以及它沿用的掩膜来自哪里。两块底都不长,但后面每一处工程都挂在它们上面。

第一块底是掩膜损失的写法。 给定一组带位姿的图像,目标是学一个三维高斯集合,让渲染出来的图与输入图一致;鲁棒化的做法是给每个像素配一个内点/外点掩膜 M,只在掩膜内算重建误差。原文把优化目标写成:

(1) arg minG Σn=1N Mn ⊙ ‖In − În‖1 (掩膜 L1 损失:Mn 是第 n 张训练图的内点/外点掩膜,⊙ 逐像素相乘,残差沿颜色通道取 L1 后再逐像素累加。掩膜把不该参与优化的像素排除在外,式子的其余部分与标准 3DGS 一致 —— 本篇要改的正是 M 的来源)(原文式 1)

其中 M 与残差的乘积是逐像素的(⊙),残差用 L1 范数、沿通道逐像素取。这篇论文要改的正是 M 的来源 —— 式 5-1 本身从头到尾没变。

第二块底是掩膜的来源。 前人(RobustNeRF)的做法是:先算残差图 R(渲染图与输入图的 L1 差),用一个阈值 ρ 把它二值化,再用一个归一化的 3×3 盒滤波做一次形态学膨胀,把孤立的判断连成片;阈值 ρ 取残差分布的广义中位数,由超参 τ 控制截断分位。原文把这条写成了:

(2) Mn = 1{ Rn > ρ } ⊛ B,且 P( Rn > ρ ) = τ (鲁棒掩膜:Rn 是第 n 张图的残差图,1{·} 是指示函数,ρ 是由超参 τ 控制截断分位的广义中位数(τ = .5 时 ρ 即残差的中位数),B 是归一化的 3×3 盒滤波,用卷积 ⊛ 实现形态学膨胀。这一步把「属于干扰物的像素在空间上相关」这条假设写成了算子)(原文式 2)

这条式子是整篇的批判对象,因为它把判据锁死在残差上:ρ 是残差的统计量,膨胀假设的是「外点在空间上成片出现」,两者都只看颜色差多少。原文对它的解释是:它相当于把一个修剪估计器(trimmed estimator)扩展到「内点/外点在空间上相关」的假设上;而直接把它搬到 3DGS 上,即便在没有图 2-1 那种误导性残差的情形里,也去不掉外点[§3.1, p2]。这句话很重要 —— 它说明本篇文章的工程重点不只在「换判据」,还在「换判据之后,3DGS 的训练机制还需要动哪里」(第 7 章)。

第三件要交代的是渲染链路没动。 基元的投影与协方差、按深度排序、前到后 alpha 合成,这一套在本篇里一字未改(第 1 章已经说过)。原文只在背景章里按标准写法复述了一遍:三维协方差到二维屏幕的投影按 [Zwicker et al. 2001] 的一阶近似 Σ̃ = J W Σ Wᵀ Jᵀ,其中 J 是投影矩阵的雅可比;协方差为保证半正定,参数化成 Σ = R S Sᵀ Rᵀ,S = diag(s)、旋转 R 由单位四元数算出;屏幕空间算完之后按 alpha 合成,合成前需要对基元按视线方向排序[§3, p2]。这些都不是本篇的贡献,列在这里是为了说明改动面有多小:一个掩膜、一个调度、一个剪枝准则、一个外观变换,全部挂在既有链路的旁边。

还有一件容易读糊的事要说清:这一刀切在损失上,不切在数据上。 掩膜不删图像、不改像素、也不改变输入的视角集合;它只在每一次迭代里决定哪些像素参与反传。这个区分在实践上很重要:正因为干扰物只是「不参与损失」,它们在图像里依然会被渲染出来(渲染覆盖全部像素),所以干扰物泄漏时表现为画面上的漂浮残留,而不是数据缺失造成的空洞;也正因为图像一张不少,位姿与点云初始化这两步完全不受影响。原文把这条路线概括为「识别出输入图像里应当在优化过程中被掩掉的那部分」,并把问题化归为无监督地预测每张训练图的内点/外点掩膜[§3.1, p2]。

6两条检测路线:按簇投票的 SLS-agg 与学出来的 SLS-mlp

这一章是本篇的方法主体。前提是先有特征:给定输入图,用 Stable Diffusion 按 [Tang et al. 2023] 的方式预计算每张图的特征图 F,这一步在训练开始前做一次,之后不再更新[§4.1, p3]。有了特征图,接下来是「谁该被掩掉」这个问题。原文给了两条路线,差别可以一句话概括:一条没有参数、按空间块投票;另一条有参数、学一个逐像素的分类器。

路线一:SLS-agg —— 把特征图切成 100 块,按块投票

第一步是过分割。对特征图做凝聚聚类:每个像素与周围 8 个像素相连,初始时每个像素自成一簇,然后贪心地合并「合并前后簇间特征方差差最小」的那些簇,直到剩下 C = 100 簇[§4.1.1, p3]。原文把这一步类比为超像素技术,目的不是分割出物体,而是得到一批空间连通、特征相近的图像块。

第二步是按块投票。每个簇的内点概率,等于簇内「被判为内点的像素」的占比:

(3) P(c ∈ M) = Σp C[c, p] · M[p] ⁄ Σp C[c, p] (簇的内点概率:C[c, p] ∈ {0, 1} 是像素 p 到簇 c 的聚类归属,M[p] 是式 5-2 给出的逐像素掩膜;一个簇的内点概率就是它内部被判为内点的像素占比)(原文式 3)

第三步是把标签还回像素:簇的内点概率超过 0.5 就整块算内点,否则整块算外点:

(4) Magg(p) = Σc 1{ P(c ∈ M) > 0.5 } · C[c, p] (簇标签回传到像素:簇的内点概率过半就整块判为内点,否则整块判为外点。得到的 Magg 直接替进式 5-1 训练,这套配置称作 SLS-agg)(原文式 4)

得到的掩膜 M_agg 直接替进式 5-1 的损失里训练 3DGS;原文把这一套配置称作 SLS-agg[§4.1.1, p3]。

这条路线值得说清它的三个性质。一是无参:聚类用的是特征本身的方差结构,不需要训练、不需要额外监督,也不需要残差之外的任何信号。二是「块级的硬判决」:一个簇要么整块内点要么整块外点,这带来一个直接的好处(与背景同色的小片区域会跟着它所在的连通块一起被判掉)和一个直接的代价(判决的粒度就是簇的粒度,簇内混合时会误伤)。三是快:原文在结论里的说法是它「快、不需要进一步训练」[§6, p8]。

路线二:SLS-mlp —— 一个和 3DGS 交替优化的分类器

第二条路线把「谁该被掩掉」交给一个可学的分类器。用一个 MLP 从像素特征直接预测内点概率:

(5) Mmlp = H( F; θ ) (MLP 分类器:从像素特征 F 直接预测逐像素的内点概率。H 用 1×1 卷积实现,因此在像素之间独立同分布地作用、看不到邻域;参数 θ 与 3DGS 交替优化)(原文式 5)

H 用 1×1 卷积实现,因此它在像素之间是独立同分布地作用的。换句话说,这个分类器看不到邻域,只按单个像素的特征下判断。原文对这一点没有回避,而是用「和 3DGS 交替优化」来补:一个的参数固定时优化另一个,形似交替优化[§4.1.2, p4]。这一步的动机是让分类器跟着重建进度走:场景还没成形时,「哪些特征对应干扰物」这件事本身也在变。

关键在监督从哪来。 这是本篇与 NeRF On-the-go 的分界处:后者用渲染误差直接监督,本篇把这种监督只在能确定的地方打开。损失写成两项相加:

(6) L(θ) = Lsup(θ) + λ Lreg(θ),λ = 0.5 (MLP 损失:一项监督加一项正则。正则项 Lreg 通过最小化 H 的 Lipschitz 常数,把相似的特征映到相近的概率,实现照 [Liu et al. 2022, Eq. 13])(原文式 6)

其中监督项 L_sup 是两个铰链项:

(7) Lsup(θ) = max( U − H(F; θ), 0 ) + max( H(F; θ) − L, 0 ) (铰链监督:两个 max 项把预测概率夹在上下界之间;U 与 L 是由残差得到的自监督标签 —— 也就是说,只对残差能明确判定内点身份的像素直接监督,其余交给特征相似度)(原文式 7)

两个铰链里的 U 与 L 是自监督标签,来源就是式 5-2 那个基于残差的掩膜,但取不同的分位:

(8) U = M(式 5-2 取 τ = .5) (上置信标签:残差掩膜的较宽版本,覆盖范围大、误判内点的代价高,因此只用来给下界之外的像素作上界约束)(原文式 8)
(9) L = M(式 5-2 取 τ = .9) (下置信标签:残差掩膜的较严版本。两者合起来的效果是「只在不自信的地方闭眼」:残差说话有把握处采信残差,其余交给语义特征)(原文式 9)

原文对这一处的解释只有一句,但它把整个设计讲透了:只对「残差能明确判定内点身份」的像素直接监督分类器,其余一律靠特征空间里的语义相似度[§4.1.2, p4]。换个说法:残差在这套设计里降级成了一个弱标签,只在它说话有把握的地方才被采信;没把握的地方,判据回到语义特征。

另一个正则项 L_reg 的作用是把相似特征映到相近概率 —— 实现方式是最小化 H 的 Lipschitz 常数,原文注明按 [Liu et al. 2022, Eq. 13] 的做法[§4.1.2, p4]。权重 λ 取 0.5(式 6-4),而第 11 章的消融会说明:这个权重取 0.1 还是 1,「几乎没有影响」(图 9-1)。

两条路线到此都介绍完了。原文的一句话总结值得照录:两者都利用 Stable Diffusion 特征的语义偏置与鲁棒技术来达到当时最好的瞬态抑制;agg 快且不需要训练,mlp 精度更高、略慢(§6, p8)。第 11 章的消融会把这句话量化:在 10 个场景的平均 PSNR 上,两者大多落在彼此的 2σ 内(图 8-1 图注)。

上/下置信标签给分类器的监督是「弱监督」:只覆盖残差能确定的那部分像素
图 4-1 E 类·证据 · 原文 Fig. 4, p.4 · 原样引用 怎么读 ①指认:图注写明图内两组标注是残差误差的下界与上界标签,它们为训练「检测离群干扰物」的 MLP 分类器提供弱监督;可点名的对象是图中被标注出来的高/低残差区域,以及它们与干扰物位置的对应关系。②读法(怎么读):把「标签覆盖到哪里」和「干扰物在哪里」叠着看:图上标签只覆盖一部分区域,这正是「弱」的含义:能确定的地方直接监督,剩下的交给特征相似度(式 6-5 的两个铰链项,上界取 τ = .5、下界取 τ = .9)。③对照:这一张是第 6 章两条路线分界处的图形证据,与 NeRF On-the-go「全靠渲染误差监督」的做法对照。④落点:它支撑的是「监督只开一半」这条设计;λ、τ 这些量的实际影响在第 11 章的消融里。图内标签之外不逐格读值。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 4 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

7把鲁棒掩膜搬进 3DGS 会坏在哪三处,以及三处修法

原文把这一章的动机写得非常直接:把任何鲁棒掩膜技术直接用到 3DGS 上,都会出三种问题:掩膜对一个尚未成形的 3DGS 模型过拟合;内点估计被基于图像的训练方式带偏;以及被 3DGS 的致密化策略搅乱[§4.2, p4]。这一章逐个交代这三处,以及对应修法。

第一处:掩膜会扑向早期错误 —— 热启动 + 阶梯退火

初始的残差是随机的,所以早期得到的掩膜也基本是随机的;如果直接用,优化会迅速对早期的错误过度承诺,把那些区域的反传通道掐掉,而那些区域里恰恰可能有真实的结构需要学。原文把这一处说得更重一点:如果掩膜来自学出来的聚类,问题还会加倍,因为 MLP 早期根本没收敛[§4.2.1, p4]。

修法是把掩膜从「判决」改成采样:每个像素按一个伯努利分布决定是否参与本次优化,

(10) M* ~ B( α · 1 + (1 − α) · M ) (热启动的伯努利采样:α 是附录 B 给出的阶梯指数调度器,从 1 退到 0。α = 1 时括号项恒为 1(所有像素都参与),α = 0 时括号项退回掩膜本身 —— 判决权随训练推进逐步交给掩膜,而采样保留了随机性,使不自信的区域仍能稀疏地拿到梯度)(原文式 10)

式中的 α 是一个阶梯指数调度器,从 1 退到 0。它的具体形式在附录 B,是 α = exp( −β₁ (t + 1) / β₂ )(原文式 (13),按分区惯例附录式不落式块):t 是优化步数,β₁ 控制衰减速度、β₂ 决定阶梯的步长;全部实验取 β₁ = 3 × 10⁻⁴、β₂ = 1.5,只有 NeRF On-the-go 里遮挡率最高的三个场景改用 β₁ = 3 × 10⁻³ 以更快衰减[附录 B, p10]。

这处设计的含义可以用一句话讲清:α 从 1 到 0 的过程里,式 7-1 的括号项从「全 1」渐变到「掩膜本身」。起步阶段所有像素都参与,随着优化推进,掩膜才逐渐接管判决权;而伯努利采样保留了随机性,使那些还没被判定的区域仍能稀疏地拿到梯度。原文对此的评价是:这让「不自信的区域」仍能被稀疏采样到梯度,从而得到更好的外点分类[§4.2.1, p4]。

第二处:小批就是一整张图,分位数被带偏 —— 直方图追踪

RobustNeRF 的修剪估计器有一个隐含假设:每个小批里干扰物的比例大致相同。在 NeRF 的逐像素小批里这个假设还说得过去;但 3DGS 的一个小批就是一整张图,图像之间的干扰物比例差别很大 ⇒ 式 5-2 里的广义中位数 ρ 会被偏斜的分布带跑[§4.2.2, p5]。

修法的做法是把残差量级离散成直方图:桶宽取渲染误差的下界 10⁻³,每次迭代用「折扣更新」的方式更新各桶的人口(思路类比快速中值滤波 [Perreault and Hebert 2007]);这样得到一个常驻显存固定的残差分布移动估计,ρ 就取该直方图人口的 τ 分位。原文把实现细节留给了源码[§4.2.2, p5]。

这一处没有配公式,但它和下一处是绑在一起的 —— 因为任何让残差整体被抬高一次的操作,都会把这个直方图搅乱。

第三处:opacity reset 与残差追踪打架 —— 用 UBP 替掉它

3DGS 原版每 M 次迭代重置一次所有高斯的不透明度(opacity reset)。原文先给它记了两件功劳:一是让梯度重新流到被遮挡的部分(挑战性数据集上优化倾向于在相机附近堆积高斯,也就是文献里的「浮块」;浮块会迫使相机射线过早把透射率吃满,被遮挡的部分就拿不到梯度);二是充当高斯数量的控制机制(不透明度被压低后,恢复不上来的高斯会被自适应密度控制剪掉)[§4.2.3, p5]。

问题在于它和上一处的直方图追踪打架:重置之后的若干迭代里,残差会被人为抬高,于是 ρ 被污染。而直接关掉又不行,因为它承担着上面那两件事。原文的替代方案是基于利用率的剪枝(utilization-based pruning,UBP)。它追踪渲染出来的颜色对「投影后」基元位置的梯度:

(11) ug = Et ∈ NT[ Σh,w ( ∂Î(t)h,w ⁄ ∂xg(t) )2 ⁄ (W × H) ] (利用率:∂Î/∂xg 是渲染出来的颜色对第 g 个基元「投影后位置」的梯度(注意是渲染图、不是损失),在图像上按 W × H 取平均,再跨最近 |NT| = 100 张图(每 T = 100 步)累积;ug < κ = 10−8 的基元被剪掉)(原文式 11)

式中的关键细节有三个。第一,导数取自渲染图而不是损失 —— 原文专门加了一条脚注强调这一点(脚注 2, p5),因为这两者不是一回事。第二,对「投影后位置」求导而不是对三维位置求导:原文给的理由是在 GPU 上更省显存,同时能给出与 [Goli et al. 2024] 相近的度量[§4.2.3, p5]。第三,它在图像上取平均、每 T = 100 步计算一次、跨最近 |N_T| = 100 张图累积;剪枝准则是 u_g < κ,κ = 10⁻⁸[§4.2.3, p5]。

UBP 之所以能替掉 opacity reset,是因为它同时兑现了那两件功劳:梯度小的高斯被剪掉,等价于让射线重新通畅;而剪掉本身就在控制数量。原文还指出了一个额外的收益:浮块天然利用率低(它们只参与极少数视角的渲染);而式 7-2 里用的是被掩膜乘过的导数,因此那些在热启动阶段漏过掩膜的基元也会被顺手剪掉[§4.2.3, p5]。

三处的共同形状

把三处并排放,能看到一个共同形状:每一处都每一处都不属于「调参」,而属于「把某个机制从一种语义迁移到另一种语义」****。掩膜从判决变成采样,是为了适配「模型早期不可信」这个事实;分位数从单批统计变成跨批直方图,是为了适配「一批就是一整图」这个事实;opacity reset 换成基于梯度的剪枝,是为了适配「残差分布正在被追踪」这个事实。第 11 章的消融会把这三处逐个拿掉验证:关掉 UBP 时 PSNR 反而更高(29.27 对 28.72)但会漏出干扰物;换回 opacity reset 明显更差(27.64);关掉热启动的调度 α、关掉伯努利采样 B 都变差(各 28.41)[图 10-1]。

8外观建模与训练配方

三处修法之后还剩一处:光度一致性的假设。原版 3DGS 假设(除干扰物之外)图像是光度一致的,而休闲拍摄通常开着自动曝光与白平衡,这个假设不成立。本篇的处置沿用 [Rematas et al. 2022] 的方案,但嫁接到球谐表示上:为每个输入视角共优化一个潜向量 z_n ∈ R⁶⁴,用一个 MLP 把它映成一组作用在球谐系数上的线性变换:

(12) ĉi = a ⊙ ci + b,其中 a, b = Q( zn; θQ ),zn ∈ R64 (外观建模:为每个输入视角共优化一个 64 维隐向量 zn,由一个 MLP Q 映成作用在球谐系数 c 上的线性变换 —— b 建模亮度变化、a 提供白平衡的表达力。这个「受限」形态不给出逐图自由颜色,以免把干扰物解释成外观调整)(原文式 12)

其中 b 建模亮度变化、a(Hadamard 积的系数)提供白平衡的表达力;训练时 θ_Q 与 {z_n} 都是可学参数[§4.2.4, p5]。

这一处的价值全在「受限」两个字上。原文特意说明:如果换成更简单的 GLO 形式(每视角一组自由颜色参数),z_n 会有能力把干扰物解释成逐图的外观调整 —— 那么干扰物就不会被掩掉,而是被「解释掉」了;而这种受限的线性形式不会[§4.2.4, p5]。换句话说,这一处的设计目标不只是「让颜色对齐」,还包括不给干扰物留一条逃逸通道。第 11 章的消融给出了它是否奏效的读数:关掉 GLO 后 PSNR 从 28.72 掉到 28.43(图 10-1)。

训练配方(原文实测读数,照录):全部模型训练 30k 次迭代;关掉 opacity reset,只在第 8000 步把非漫反射的球谐系数重置为 0.001(原文给的理由是:确保 MLP 训练早期漏过的干扰物不会被建模成视角相关效果);UBP 每 100 步跑一次、从第 500 步到第 15000 步;MLP 用 Adam、学习率 0.001;特征取 Stable Diffusion v2.1 第 2 个上采样层、去噪时间步 261、空提示词(原文注明 [Tang et al. 2023] 发现这套配置在分割与关键点对应任务上最有效),并拼接 20 阶位置编码后送进 MLP[§5, p7]。

到这里,方法部分就完整了:一个判据换空间(第 6 章)+ 四处适配 3DGS 的工程(第 7、8 章)。后面三章算账。

配方里有两处数字值得单独点出,因为它们各自回答了一个「为什么」。

第一处是第 8000 步只重置非漫反射球谐。为什么不全部重置,而要留下漫反射项?原文给的理由是防逃逸:MLP 训练的早期会有干扰物漏过掩膜,如果放任不管,这些漏网的像素会被解释成视角相关效果(也就是被球谐吸收),从此再也不会被当成干扰物。只重置高阶层(非漫反射)而不动基色,等于把「随视角变化」这个逃逸出口关掉,同时保留颜色本身的学习进度[§5, p7]。这处细节与本章开头讲的 GLO「受限」是同一个思路的两个落点:凡是给模型额外自由度的位置,都要检查它会不会变成干扰物的出口。

第二处是UBP 只在前半程跑(第 500 到 15000 步,每 100 步一次)。它不跑到收尾,原因与式 7-3 的定义有关:利用率是跨最近 100 张图累积的统计量,它衡量的是一段时间内的平均贡献。训练后期基元的位置与分布已基本稳定,此时再按「最近 100 张图里贡献了多少」去剪,剪的就不再是「没被用到的基元」,而可能是正在被微调、暂时贡献偏低的基元。把它停在后半程之前,是让剪枝只作用于「结构尚未定型」的阶段[§5, p7]。

另有两处配置只说了取值、没给理由,照录备查:MLP 用 Adam 优化器、学习率 0.001;特征配置取 Stable Diffusion v2.1 的第 2 个上采样层 + 去噪时间步 261 + 空提示词,这三点原文注明是转引 [Tang et al. 2023] 的结论(该文发现这套配置在分割与关键点对应任务上最有效),并额外拼接了 20 阶位置编码[§5, p7]。也就是说,这一整套特征是「借来的」而不是为本任务调的 —— 这也解释了为什么它的分辨率会成为第一条边界(第 12 章)。

9主结果一:RobustNeRF 上把「干净模型」当上界

实验的第一套数据是 RobustNeRF 数据集的四个场景(Statue、Android、Yoda、Crab)。这套数据有一个别处少有的构造:每个场景同时提供「带干扰物」与「无干扰物」两份训练划分,因此可以拿一个在无干扰数据上训练的模型当作上界参照:原文把它称作「干净模型」(clean model)。评测统一在干净的测试集上进行[§5, p6–p7]。

这组实验的读法要先把三件事分清楚,否则很容易把结论读歪。

第一,对照的对象是谁。 原文明确说:由于抗干扰重建在 3DGS 上还没有被广泛处理,现有方法多聚焦于全局外观变化(比如亮度变化),并不针对这类随手拍的含干扰数据;因此基线选的是原生 3DGS 与鲁棒 NeRF 方法(NeRF On-the-go、NeRF-HuGS、RobustNeRF),另把 MipNeRF360 作为隐式方法的参照;并且给原生 3DGS 也加上 GLO,以便与开了 GLO 的 MipNeRF360 口径对齐[§5, p6–p7]。

第二,指标口径要写清。 三件指标是 PSNR、SSIM、LPIPS;LPIPS 一律用归一化的 VGG 特征。这里有一处必须照录的口径修正:NeRF-HuGS 原报的是 AlexNet 特征的 LPIPS,本篇为公平比较,在他们的公开渲染结果上重算并报告了 VGG 版。因此图 5-1 里 NeRF-HuGS 那一行的 LPIPS 带一个 † 标记[§5, p7;图 5-1 图注]。换句话说,这一行里只有 LPIPS 是派生值,不是原作者报的数。

第三,「干净模型」不是可部署的方法。 它需要同一场景的无干扰拍摄,这在真实使用中恰恰不成立。它在表里的作用是画一条上界线,让读者知道「判据换对之后,离理想情况还差多少」。

账面读数(图 5-1):本文的 SLS-mlp 在四个场景上全部优于全部鲁棒 NeRF 基线,也显著优于原生 3DGS;原文特别点出它在 Yoda 与 Android 两景上靠近干净模型[§5.1, p7]。定性部分的判词同样具体:原生 3DGS 会把干扰物建成杂散浮块(Yoda、Statue),或视角相关效应(Android),或两者的混合(Crab);而 NeRF-HuGS 这种用分割掩膜的做法,在四个场景里都出现削掉静态部件的过度掩膜,或在稀疏采样的视角上漏进瞬态物(Crab)[§5.1, p7]。这一段与第 4 章的判断对得上:同一张图的上下两个失败方向。

还有一张附属表要单独读。 原文另外提供了一张 Crab 数据集的结果表,它对应的是该数据集的第二个发布版本〔原文把它记作 Crab (2)〕。这一版的测试视角与训练视角不同(第一版是同视角),因此更接近 NeRF 数据集常见的口径。原文对它的说明是:本文方法在跨视角测试下仍与在干净数据上训练的模型很接近[表 9-1 表注;附录 C, p10]。这张表是本篇唯一一张编号表,也是唯一被逐格重排进站内表格的读数;其余量化证据都在六张「图内数据表」里(第 12 章会交代这处体例上的差别)。

RobustNeRF 数据集四个场景上的定性与定量对照,含与「干净模型」这一上界的比较
图 5-1 E 类·证据 · 原文 Fig. 5, p.5 · 原样引用 怎么读 ①指认:图注写明这是在 RobustNeRF 数据集上的定量与定性评测;行是各方法(早期隐式方法 → 鲁棒 NeRF 方法 → NeRF-HuGS → 原生 3DGS → 本文 SLS-mlp → 两行干净模型),列按场景分组,每组三件指标 PSNR↑/SSIM↑/LPIPS↓。②读法(怎么读):先看两条「clean」行,再往下看谁贴近它:这两行是上界参照,不是可比方法;SLS-mlp 行与它的距离就是「判据换对之后还剩多少差」。另外注意 NeRF-HuGS 行的 LPIPS 带 †:那是本文在他们的渲染结果上重算的 VGG 版(原文自报的是 AlexNet 版)。③对照:定性四联(Statue/Android/Yoda/Crab)里找两处:原生 3DGS 残留的杂散浮块,与 NeRF-HuGS 削掉的静态部件。④落点:这一张是本篇结果的主图;表 9-1 是它在 Crab (2) 这一版数据集上的补充读数。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 5 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

表 9-1 Crab (2) 数据集上的跨视角定量结果 (原文 Table 1, p.10 · 数值取原文文字层,逐格未改)

SLS-MLP3DGS3DGS Clean3DGS* Clean
PSNR ↑34.3526.3333.4335.58
SSIM ↑0.960.910.940.97
LPIPS ↓0.030.080.050.01

这张表的读法有三处要点。其一,四列不是「四个方法」而是「四种口径」:SLS-MLP 是本文方法,3DGS 是原生方法在含干扰数据上的结果,3DGS Clean 与 3DGS* Clean 是在无干扰数据上训练的两行,后者又比前者多开了 UBP。其二,上界本身也不是一个数:同样在干净数据上训练,开不开 UBP 差了 2.15 dB(33.43 对 35.58),这正好说明第 10 章要讲的那件事:UBP 的收益在压缩,代价在画质,两者都要写。其三,本文方法站在 34.35,落在原生方法的 26.33 与上界 35.58 之间:比原生高 8.02 dB,离上界还差 1.23 dB。原文对这一段的判词是「优于原生 3DGS、并接近在干净数据上训练的模型」[表 9-1 表注]——「接近」这个词要照录,不要读成「达到」。

10主结果二:NeRF On-the-go 的六场景,与 UBP 的压缩账

第二套数据是 NeRF On-the-go 数据集:六个场景,每个场景有低、中、高三档瞬态遮挡程度,并提供一个独立的干净测试集[§5, p7]。

这套数据上有一句对基线有利的话,原文自己写了出来:在低遮挡场景上,原生 3DGS 仅靠 COLMAP 点云的鲁棒初始化(具体说是 RANSAC 对离群点的剔除)就足以取得不错的重建质量;但随着干扰物密度上升,3DGS 的画质明显下滑,定性上出现干扰物的泄漏[§5.1, p7]。这句话在精读里的价值不在于「谁赢」,而在于它给出了问题的难度分档:判据换空间的价值不是常数,它随遮挡密度上升而变大。

失败模式在这一套上换了样子。 原文对 NeRF On-the-go 的判断是:它在训练的早期阶段就漏掉了一部分干扰物(Patio、Corner、mountain、Spot 四个场景),这是对渲染误差过拟合的进一步迹象;同时它又出现过度掩膜:细节(Patio High)乃至大片结构(Fountain,水管被整根抹掉)被直接删掉[§5.1, p7]。这与第 4 章从图 3-1 读出的是同一件事,只是场景不同。

UBP 的账要按两个口径分开记。 原文的读数分两处:

  • 在含干扰物的两套数据上:开 UBP 把高斯数减少到原来的 1/4 到 1/6,训练时间至少减半,推理快 3 倍[§5.2, p7]。
  • 在干净的 MipNeRF360 上:用 UBP 替代 opacity reset,把高斯数减少 2× 到 4.5×,同时保持渲染质量[§5.2, p7;图 7-1 图注写「up to 4.5×」]。

这两个口径不能混引:一个是含干扰数据集上的 4–6×,一个是干净数据集上的 2–4.5×。原文在引言里还写过第三个说法 —— 稀疏化「用两到四倍更少的基元取得相近的重建质量,即便在无干扰数据集上」[§1, p1],与 §5.2 的 2–4.5× 又略有出入。三处并列写、不合并。

UBP 也不是白拿的,原文自己写清了代价:开 UBP 可能让定量指标略微变差,但实际渲染更干净、浮块更少(原文指了图 10-1 的左下角作为例子);原文据此提出一个方法论判断 —— PSNR 与 LPIPS 这类指标未必能像看一段渲染视频那样,把浮块的存在反映清楚[§5.2, p7]。这句话与第 11 章的消融读数是配套的:关掉 UBP 时 PSNR 反而更高(29.27 对 28.72),而漏出的干扰物在指标上并没有被充分惩罚。

NeRF On-the-go 数据集上的重建细节,以及基线在高遮挡场景里的干扰物泄漏
图 6-1 E 类·证据 · 原文 Fig. 6, p.6 · 原样引用 怎么读 ①指认:图注写明这是 NeRF On-the-go 数据集上的重建结果;行是各方法(含 MipNerf360/RobustNerf/Nerf On-the-go/原生 3DGS/本文 SLS-mlp),列按场景分组(Mountain/Patio/Patio High),每组三件指标。②读法(怎么读):盯住两处:一是高遮挡下残留的干扰物被建模成什么(原文的说法是「有噪声的浮块」),二是细节区域有没有被抹平(Patio High 是原文点名的过度掩膜例子)。③对照:与图 3-1 的失败模式连起来读:同一套数据的另外三个场景在那一张里;与图 8-1 连起来读时注意本图 SLS 行的读数与图 8-1 的对应行同源。④落点:这一张承载的是「高遮挡下基线的泄漏」,是 UBP 与掩膜设计的动机。图内标签之外不逐格读值。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 6 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

上面这张图看的是「泄漏」,下面这张看的是「压缩」。两者的关系要接起来读:UBP 之所以值得单独成节,是因为它同时动了画质与规模两条线,而这两条线在指标上并不同向。

干净数据集(MipNeRF360)上用梯度剪枝替代 opacity reset,高斯数最多减到 1/4.5
图 7-1 E 类·证据 · 原文 Fig. 7, p.6 · 原样引用 怎么读 ①指认:图注写明这是 MipNeRF360 数据集上的定量与定性结果,主题是「基于梯度的剪枝能在画质只轻微退化的前提下把高斯数减少到最多 4.5×」;可点名的对象是图内基元数量与画质的对照曲线,以及左下角的局部画面。②读法(怎么读):沿「基元数」这一轴看画质怎么走:找两处,一是曲线在什么位置变平(说明继续加基元的边际收益),二是局部画面里浮块是否存在(原文在 §5.2 用它说明「画质指标不一定反映浮块」)。③对照:与图 10-1 连起来读:那一张是拿掉 UBP 的对照(指标更高但漏出干扰物);本图是在干净数据上开 UBP,两处回答的是不同问题。④落点:这一张支撑的是「UBP 可以当作一种通用压缩手段」这条主张,同时也藏着它的边界:阈值取得过狠会削掉训练中少被看到的部位(原文举例是 fig. 7 里的 'vase deck',第 12 章会写全)。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 7 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

11消融把功劳分清:三条路线、两类设计、四处修法

这一篇的消融分三层,organized 得比多数论文更清楚:第一层比较「路线」(原生 → 鲁棒滤波器 → 按簇投票 → 学出来的分类器);第二层比较「设计选择」(架构与超参);第三层逐个拿掉「修法」(UBP、GLO、热启动调度、伯努利采样)。三层分别对应三张图,读的时候不要把它们的结论互相搬。

第一层:路线递进 —— 每一步各值多少分

图 8-1 给出五个配置在 10 个场景上的 PSNR 平均值与逐场景值:原生 3DGS 22.60 → RobustFilter(从 RobustNeRF 直接搬来的式 5-2)24.85 → SLS-agg 26.08 → SLS-mlp(关掉 UBP)26.11 → SLS-mlp(开 UBP)25.77。同时它给出了每个配置的标准差(各由 5 次独立运行算出),并写明:SLS-agg 与 SLS-mlp 在全部任务上大多落在彼此的 2σ 内[图 8-1 图注]。

这几个数要分开读,因为它们回答的问题不同:

  • 从 22.60 到 24.85 是「把鲁棒掩膜搬过来」的收益 —— 也就是说,单纯照搬前人的判据已经能拿到 +2.25 dB。这一格很重要,它说明本篇的功劳不能从 22.60 起算。
  • 从 24.85 到 26.08/26.11 是「把判据换到语义特征空间」的收益 —— 大约 +1.2 dB,这才是本篇主张的那一步。
  • 两条路线之间(26.08 对 26.11)几乎没有差距,与「大多落在彼此 2σ 内」的图注一致。原文在结论里的分工说明(agg 快、不需训练;mlp 精度更高、略慢)在这一层上没有对应的量化支撑 —— 这一点值得注意:「精度更高」这句自述在图 8-1 的账面上并不成立。
  • 从 26.11 到 25.77 是 UBP 的代价 —— 平均 PSNR 掉 0.34 dB,换回来的是第 10 章那笔 4–6× 的压缩账。

第二层:架构与超参 —— 哪几个旋钮真的有用

图 9-1 在三件事上给了读数:用 MLP 还是同样约 30K 参数、两个非线性激活的小 CNN;正则权重 λ 取 0.1 还是 1;凝聚聚类的簇数 C 取多少。原文的结论是:MLP 比 CNN 更能适应阴影这类细微的瞬态(原文的原话是「可以更好地适应像阴影这样细微的瞬态」);λ 的取值影响很小;簇数越多通常越好,但在 100 之后收益递减[§5.3, p8]。这三个结论的形态不一样 —— 第一个是「有明确方向的设计选择」,第二个是「这个超参不重要」,第三个是「有一个可用的饱和点」。把三者放在一起读,能看出这一节的定位:它不负责加分,负责说明这套方法对超参不敏感。

第三层:四处修法逐个拿掉 —— 每一处都有代价

图 10-1 给出五个配置在同一口径(SLS-mlp、在 RobustNeRF 数据集上取平均)下的三件指标:完整配置 28.72/0.90/0.10;关掉 UBP 29.27/0.90/0.09;换回 opacity reset 27.64/0.89/0.11;关掉 GLO 28.43/0.89/0.11;关掉热启动调度 α 28.41/0.90/0.11;关掉伯努利采样 B 28.41/0.90/0.11[图 10-1]。

这五行的读法值得逐条交代,因为它们不是同一类证据:

  • 「关掉 UBP」那一行的指标是唯一一列「变好」的(29.27 对 28.72),但原文明确指出它会漏出干扰物(并指了图的左下角)[图 10-1 图注]。这一行是本篇最有价值的一处读数:它量化了「指标与观感分家」的幅度 —— 0.55 dB 的 PSNR 提升,对应的是画面里多出来的干扰物。
  • 「换回 opacity reset」是唯一一列明显变差的(27.64),且原文的判词是它「同样无效」。这一格说明 UBP 不是「可选的优化」,而是替掉了一个会拖后腿的机制。
  • GLO、α、B 三处各自拿掉都变差(28.43/28.41/28.41),幅度在 0.29–0.31 dB 之间。三处的量级接近,说明这四处修法没有哪一处是装饰项。

三层的合账

把三层合起来,这一章的结论可以收成一句:判据换空间是主要收益来源(约 +1.2 dB),但它是与四处工程绑在一起才成立的(拿掉任何一处都掉 0.29 dB 以上),而其中 UBP 那一处的账最特殊 —— 它在指标上倒扣 0.34–0.55 dB,换回来的是压缩与更干净的画面。这也是为什么第 12 章要单独写一条边界:读这篇的账时,必须先分清「哪个数在算什么」。

掩膜方法的路线递进消融:从原生 3DGS 到鲁棒滤波器、按簇投票、学出来的分类器
图 8-1 E 类·证据 · 原文 Fig. 8, p.7 · 原样引用 怎么读 ①指认:图注写明这是对不同鲁棒掩膜方法的消融,覆盖 RobustNeRF 与 NeRF On-the-go 两套数据;行是五个配置(原生 3DGS → RobustFilter(式 5-2 的搬用)→ SLS-agg → SLS-mlp w/o UBP → SLS-mlp w/ UBP),列是 10 个场景加一列 Average。②读法(怎么读):沿行往下看 Average 列:22.60 → 24.85 → 26.08 → 26.11 → 25.77;第一跳是「搬前人判据」的收益,第二跳才是「换判据空间」的收益,最后一跳是 UBP 的代价。另外注意图注写明 SLS-agg 与 SLS-mlp 大多落在彼此的 2σ 内(各 5 次独立运行)。③对照:本图与图 3-1/5-1/6-1 中 SLS 的同场景读数逐格一致,属同批运行的不同呈现,不是独立证据。④落点:这一张是本章第一层,回答「路线怎么递进」;架构与超参见图 9-1,修法逐个拿掉见图 10-1。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 8 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

上图是「换哪条路线」,下面这张换的是「同一条路线里的旋钮」。前者量的是判据的价值,后者量的是这套方法对超参的敏感度 —— 两张图的结论不能互相搬。

架构与超参的消融:MLP 对 CNN、正则权重、以及凝聚聚类的簇数
图 9-1 E 类·证据 · 原文 Fig. 9, p.7 · 原样引用 怎么读 ①指认:图注写明这是对 §4.1 变体的消融,三组分别是把 SLS-mlp 的 MLP 换成 CNN、改变正则系数 λ(取 0.1 或 1)、改变凝聚聚类的簇数;指标在 RobustNeRF 数据集上取平均。②读法(怎么读):三组各看一件事:MLP 换 CNN 掉多少(原文说 MLP 更能适应阴影这类细微瞬态)、λ 两档之间差多少(原文说影响很小)、簇数从少到多怎么变(原文说 100 之后趋于平坦)。③对照:与图 10-1 连起来读,那一张量的是 §4.2 的修法,两张合起来才是完整的消融;两组结论类型不同,不要混。④落点:这一张的定位是「说明方法对超参不敏感」,它不负责加分。图内标签之外不逐格读值。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 9 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

到这里,三层消融还差最后一层:把四处「适配 3DGS」的工程逐个拿掉。这一层的读数是本章最有意思的一段 —— 因为它出现的第一个「变好」的格子,恰恰是问题所在。

四处修法逐个拿掉的消融:UBP、opacity reset、GLO、热启动调度与伯努利采样
图 10-1 E 类·证据 · 原文 Fig. 10, p.8 · 原样引用 怎么读 ①指认:图注写明这是对 §4.2 各处适配的消融,配置依次是完整 SLS-mlp、关掉 UBP、换回 Opacity Reset、关掉 GLO、关掉调度 α、关掉伯努利采样 B;指标在 RobustNeRF 数据集上取平均,并配一张图说明浮块。②读法(怎么读):先找那个「指标反而更高」的格子:关掉 UBP 时 PSNR 从 28.72 升到 29.27,但图注明确指出它会漏出瞬态物(看图的左下角);再往下逐行看另外三处修法各掉多少(GLO 28.43、移除 α 28.41、移除 B 28.41)。③对照:与图 7-1 连起来读:那一张是在干净数据上开 UBP 的压缩账,本图是在含干扰数据上关掉 UBP 的画质账,两者回答的不是同一个问题。④落点:这一张承载本章第三层,也是「指标与观感可能分家」这条判断的读数依据(§5.2 的同一判断)。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 10 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

12边界与反例

这一章把三条作者自陈局限与九条口径边界一并交代清楚。

三条作者自陈局限(照写)

第一条:同类且近距离的干扰物与非干扰物,这套判据分不开。 原文的理由直接来自方法本身:判据建立在文生图模型的特征上,如果同一个语义类里既有干扰物又有非干扰物,模型在特征空间里就没有可用的区分信号[§6 Limitations, p8–p9]。附录 A 给了这一条的图像证据(图 11-1):当同类实例在图像空间上离得较远时,模型能把作为干扰物的橙子与不作为干扰物的橙子分开;但当它们挨得很近时,会出现对非干扰物那一侧的过度掩膜。原文对这一现象的猜测是:基础模型的特征不只编码语义,还编码外观与图像中的位置[附录 A, p10]。

第二条:文生图特征分辨率低,会漏细结构;上采样之后边缘不精确。 原文举的例子是气球的绳子这类细结构,另外指出在使用聚类时,把特征上采样到图像分辨率会带来不精确的边缘[§6 Limitations, p9]。

第三条:UBP 的阈值取得过狠,会削掉训练中少被看到的部位。 原文的措辞是它的剪枝基于「逐基元的不确定性计算」,在阈值过于激进时会删掉场景里很少被看见的部分,并举了 fig. 7 里的 vase deck 为例[§6 Limitations, p9]。

九条口径边界

  1. 「干净模型」是上界参照,不是可部署方法。 它需要同一场景的无干扰拍摄;本文与它的差距(如表 9-1 的 1.23 dB)应当读成「还有多少余量」,不能读成「方法之间的差距」。
  2. LPIPS 一律是 VGG 口径;NeRF-HuGS 那一行的 LPIPS 是本文重算的。 原文自报的是 AlexNet 特征;图 5-1 用 † 标出这一处。引用 NeRF-HuGS 的 LPIPS 时必须带这个说明,否则是把两套特征混着比。
  3. NeRF On-the-go 不评测 Crab,因此图 5-1 与图 8-1 里该行在 Crab 相关列上是 -。原文对此的解释是「因为前述的问题」(Crab 第一版的测试视角与训练相同)[§5, p7]。
  4. 图 8-1 的 Average 列是复算列,其中两处与表内写的差 0.01。 按 10 个场景的 PSNR 复算:3DGS 行是 22.593(四舍五入应写 22.59),表内写 22.60;RobustFilter 行是 24.856(应写 24.86),表内写 24.85(属截断)。其余三行复算与表内一致:SLS-agg 26.081→26.08、SLS-mlp w/o UBP 26.106→26.11、SLS-mlp w/ UBP 25.768→25.77。这条只影响读数的复核,不影响任何趋势判断。
  5. 图 3-1/5-1/6-1 与图 8-1 中 SLS 的同场景读数是同源的。 例如 Fountain 22.81/0.80/0.15、Yoda 33.60/0.96/0.10、Mountain 22.53/0.77/0.18 在两处逐格一致。因此不应把这些图当作互相印证的多次实验;它们是同一批运行的不同呈现(这一条也写进了第 4 章的读图说明)。
  6. 「UBP 减少 4–6×」与「2–4.5×」是两个数据集上的两个口径,不可混引。 前者是含干扰数据的 RobustNeRF/NeRF On-the-go,后者是干净的 MipNeRF360;此外 §1 还写过第三个说法「两到四倍更少的基元」,与 §5.2 的 2–4.5× 也不完全对齐。三处并列写、不合并。
  7. 原文侧术语不齐:UBP 有两个名字。 Limitations 段把它描述为「逐基元的不确定性(epistemic uncertainty)计算」,而 §4.2.3 定义它的量是渲染颜色对投影位置的梯度(utilization);并且 §4.2.3 把度量出处指向 [Goli et al. 2024](一篇讲不确定性的工作)。同一机制两个名字,照录不改。
  8. 原文侧交叉引用不齐:气球的绳子不在 Figure 8。 Limitations 段写「会漏掉像 Figure 8 里气球绳那样的细结构」,而气球出现在图 2(§2 明确写「see RobustMask in Figure 2」);图 8 是掩膜方法的消融图。照录不改。
  9. 三处体例层面的不齐:附录字母序与版面序不一致(p10 左栏从 A 起,右栏是 D,再回左栏 B、C);原文有两处拼写错误:附录 C 的 training datset(漏 a)与图 11-1 图注的 non-dsitractor(字母错位)。三处都照录不改。

一条额外的读法建议

如果把这篇当作「抗干扰重建」的入门件来读,第 11 章的三层消融比第 9、10 章的主结果更值得花时间。主结果回答的是「它赢不赢」,而消融回答的是「赢的那部分是哪一步挣来的、代价付在哪里」—— 尤其是图 10-1 里那个「指标反而更高」的格子,它把「PSNR 这类指标能在多大程度上代表观感」这个问题量化了一次。这个问题的答案(0.55 dB 的差距里可以藏着一片没被掩掉的干扰物)比任何单个分数都更有迁移价值。

同类近距离实例:离得远时能分开,挨得近时出现对非干扰物一侧的过度掩膜
图 11-1 E 类·证据 · 原文 Fig. 11, p.10 · 原样引用 怎么读 ①指认:图注写明 SLS-MLP 能在不作为干扰物的同类实例离得较远时正确区分相似外观的橙子,而当同类实例挨得很近时,掩膜任务变得困难;可点名的对象是画面中心那颗作为干扰物的橙子与周围同类的橙子。②读法(怎么读):看两件事的对比:远处同类实例有没有被误伤、近处同类实例有没有被误伤;图注的原话是「在很近的场景里能看到对非干扰物橙子的过度掩膜」。③对照:这一条是方法自身结构的直接后果:判据建立在语义特征上,而同一语义类内部没有可用的区分信号(附录 A, p10)。④落点:这张图支撑的是第一条作者自陈局限,它同时也是这条路线的适用边界:干扰物与场景必须语义可分。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 11 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

上面这张图量的是「语义分不开」,下面这张量的是另外三类边界:透明表面、同色干扰物、以及阴影。两组放在一起,就是这套判据的能力轮廓。

NeRF On-the-go 补充场景:透明表面、与背景同色的干扰物,以及干扰物的阴影
图 12-1 E 类·证据 · 原文 Fig. 12, p.11 · 原样引用 怎么读 ①指认:图注写明这是 NeRF On-the-go 数据集补充场景上的定性结果,并点名了三类:透明表面(Train Station、Arc de Triomphe 的玻璃挡风)、与背景同色的干扰物(Tree、Statue),以及干扰物的阴影(Drone、Train)。②读法(怎么读):按这三类各找一处:透明表面看干扰物有没有被连玻璃一起判掉、同色干扰物看有没有被漏掉、阴影看遮蔽是否完整;原文对阴影一类的说法是「一定程度上稳健」(Drone 里较硬的影子能被无缝去掉,Train 里较软的影子只被部分检测到)。③对照:这一张与图 2-1 是一组对照:颜色残差派在同色情形上失败,语义特征派在同色情形上成功,但在软阴影上仍有缺口。④落点:这一张支撑的是第二条与第三条之外的一处补充边界,也是「这条路线的能力轮廓」的收口。图内标签之外不逐格读值。 来源:SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)· 图 12 · 未修改引用(CC BY 4.0 · 原样引用,署名保留)

13贡献块

这一篇的贡献(精读视角)

原文在引言末尾列了三条贡献(§1, p1)。三条读下来是「一件主张 + 两处配套」,而不是三件并列的事:

第一条是核心主张:一个自适应的鲁棒损失,利用文生图扩散模型的特征,可靠地识别随手拍里的瞬态干扰物,从而消除「对光度误差过拟合」的问题[§1, p1]。这一条里最值得注意的词是「消除过拟合」:它把问题从「误差大小」重新定义成了「误差的解释」。颜色残差高,既可能是干扰物、也可能是没学好的静态结构;判据只有先分清这两种,才谈得上稳定。

第二条是压缩:一个与本篇鲁棒损失兼容的新稀疏化方法,显著减少高斯数量,省下算力与显存而不损失保真度[§1, p1]。这一条是独立的:原文在 §5.2 明确说它「可适用于杂乱数据集,也可适用于干净数据集」,并在干净的 MipNeRF360 上给出 2–4.5× 的读数。也就是说,这一条即便不配鲁棒掩膜也有价值;但如果配上,它还得顺带解决一个问题(残差分布追踪会被 opacity reset 污染),这才有了第 7 章那处工程。

第三条是评测:在标准基准上做完整评估,展示 SOTA 的鲁棒重建,并以明显幅度优于现有方法[§1, p1]。这一条的落点是「两套公开的随手拍数据集 + 两条方法线(鲁棒 NeRF 与显式泼溅)的横向对照」,以及一批消融(第 11 章三层)。

把它们合起来,这篇的贡献可以压成一句:它识别出「判据放错了空间」这一处具体的错位,换掉之后再把四处配套工程补上,使换判据这件事在真实的 3DGS 训练流程里能跑起来。 三条里最硬的一条是第一条 —— 因为它给出的是一个可迁移的判断,而不是更好的数值:当某个鲁棒机制反复需要手调阈值时,先问一句「它的判据是不是放在了一个分不开的空间里」。最容易被高估的一条是第二条 —— 它的读数最漂亮(4–6×),但原文自己写清了它的代价:指标会略微变差,判词必须带上「画质换压缩」这个条件。

14出处块

原文出处

原文出处:SpotLessSplats: Ignoring Distractors in 3D Gaussian Splatting,ACM Transactions on Graphics(TOG)第 44 卷第 2 期,pp. 1–11,2025-04-30 出版(online 2025-04-12),DOI 10.1145/3727143(Crossref 实测)。作者为 Sara Sabour、Lily Goli、George Kopanas、Mark Matthews、Dmitry Lagun、Leonidas Guibas、Alec Jacobson、David J. Fleet、Andrea Tagliasacchi;单位为 Google DeepMind、University of Toronto、Google AR、Stanford University、Simon Fraser University。原文地址 https://arxiv.org/abs/2406.20055(本页所据版本为 arXiv:2406.20055v2,2024-07-29),项目页 https://spotlesssplats.github.io/,代码 https://github.com/lilygoli/SpotLessSplats(项目页给出)。

两处与本页出处标注有关的说明(照录不改):①候选清单原标「SIGGRAPH 2025 · Journal→TOG 44(4)」,与 Crossref 实测的 TOG 44(2) 不一致;作者项目页只写「ACM Transactions on Graphics (TOG) 2025」,同样未提 SIGGRAPH。本页以 Crossref 实测为准并保留这处不一致。②arXiv 元数据的题名写作 SpotlessSplats(小写 l),而论文自身与 Crossref 都作 SpotLessSplats;本页以论文自身的拼法为准。

许可与本站处置:原文为 CC BY 4.0 —— 依据是 arXiv 摘要页的 license 图标(by-4.0)与 Crossref 的 license 字段(content-version: vor,正式版)两处互证。需要说明的是:本篇 PDF 的文字层里没有任何许可声明(全文逐页检索 Copyright、Creative Commons、CC BY、License、licensed、permission、©、ACM ISBN、all rights reserved 等十个关键词,命中 0):许可依据来自上述两处外部实测,而不是 PDF 内声明。该许可允许在署名前提下自由使用、改编与商用。

本站仍按更严的惯例处理:12 张原图与 1 张表原样、零加工引用(未裁切拼接、未加标注、未施滤镜;表体按文字层逐格重排不改数值),逐图署名并给出原文出处。文末给出站内托管的 paper.pdf 与 arXiv canonical 双链接,并声明未对原文作任何修改;列表页卡片放 CC BY 4.0 chip。

原文全文:站内托管 PDF(8.6 MB) · arXiv:2406.20055(canonical 版本)

图件署名(12 件,全部为 E 类证据图、原样引用、未修改)

  • 图 1-1=原文 Fig. 1(p.0)|SpotLessSplats(ACM TOG 44(2) · arXiv:2406.20055v2)
  • 图 2-1=原文 Fig. 2(p.1)|同上
  • 图 3-1=原文 Fig. 3(p.2)|同上
  • 图 4-1=原文 Fig. 4(p.4)|同上
  • 图 5-1=原文 Fig. 5(p.5)|同上
  • 图 6-1=原文 Fig. 6(p.6)|同上
  • 图 7-1=原文 Fig. 7(p.6)|同上
  • 图 8-1=原文 Fig. 8(p.7)|同上
  • 图 9-1=原文 Fig. 9(p.7)|同上
  • 图 10-1=原文 Fig. 10(p.8)|同上
  • 图 11-1=原文 Fig. 11(p.10)|同上
  • 图 12-1=原文 Fig. 12(p.11)|同上

图件为区域渲染取得(位图原生与矢量标签一起渲染、3.0× 栅格化、约 216 dpi),未做任何修改。其中 图 1-1、图 5-1、图 8-1、图 12-1 为通栏(双栏满幅),图 7-1、图 10-1、图 11-1 三件的上边缘贴到栏顶(经像素剖面复核,其第 0 行的标准差为 48.6–58.9,属图像内容而非被切线切断),图 12-1 为近整页竖构。

表格(1 张,数值按原文文字层逐格取值,未改位数、未做换算)

表 9-1=Table 1(p.10,原文位于附录 C)|列:(空)/SLS-MLP/3DGS/3DGS Clean/3DGS* Clean;行:PSNR↑/SSIM↑/LPIPS↓。共 12 个数值 token,机器校验与文字层差异 0。表体统一以 HTML 重排呈现,不使用截图(原始裁图 tables/tab1.png 留作核对凭据)。本篇体例:原文这张表的表注写在表体之下,站内按分区统一体例排在表体之上,注文逐字照录。

关于「图内数据表」的口径(本篇特有,须单独写):本篇原文只有 1 张编号表,其余量化证据集中在图 3-1、图 5-1、图 6-1、图 8-1、图 9-1、图 10-1 这六张图里:它们的画面中嵌着数据表。这些表里的数字在 PDF 里是可选中的真实文本(不是像素),因此本站按与编号表同等的取值口径逐格核对后引用(第 9 到第 11 章的读数即由此而来),并在第 12 章写出了三处复算核对结论(图 8-1 的 Average 列有两处与表内写的差 0.01;图 3-1/5-1/6-1 与图 8-1 的同场景值逐格一致)。这不等于「照图估数」 —— 两者的区别是:前者可机器复核、差异 0,后者只能目测。

附录索引(正文按页引用)

  • 附录 A Distinguishing between semantically similar instances(p10):同类且近距离实例分不开的边界与图 11-1。
  • 附录 D Additional Results on NeRF On-the-go dataset(p10):补充场景的定性结果(图 12-1),含透明表面、同色干扰物与阴影三类。
  • 附录 B Warm-up scheduler(p10):热启动调度的解析式(原文式 (13)),以及 β₁ = 3 × 10⁻⁴、β₂ = 1.5 的取值与高遮挡场景的例外。
  • 附录 C Additional results on the Crab dataset(p10):Crab (1) 与 Crab (2) 两版的区别,以及本篇唯一一张编号表(Table 1)。
  • 注:附录在版面里的出现顺序是 A → D → B → C(p10 左栏起 A,右栏是 D,再回左栏 B、C),字母序与版面序不一致,照录不改。

怎么读这篇:如果只读一章,读第 7 章 —— 它把「把鲁棒掩膜搬进 3DGS 会坏在哪三处」写得最清楚,也是这篇从「一个想法」变成「一套可用方法」的地方;如果要判断这条路值不值得跟,读第 11 章(三层消融把每一步各值多少分、代价付在哪里都算了出来,其中「关掉 UBP 指标反而更高」那一格特别值得看);如果关心与相邻工作的关系,注意第 3 章(两条前人线的分工)与第 12 章(三条自陈局限与九条口径边界)。

致谢照录:原文致谢 Abhijit Kundu、Kevin Murphy、Songyou Peng、Rob Fergus 与 Sam Clearwater 审阅手稿并给出宝贵意见。