3D Gaussian Splatting (3DGS) has shown impressive results in real-time novel view synthesis. However, it often struggles under sparse-view settings, producing undesirable artifacts such as floaters, inaccurate geometry, and overfitting due to limited observations. We find that a key contributing factor is uncontrolled densification, where adding Gaussian primitives rapidly without guidance can harm geometry and cause artifacts. We propose AD-GS, a novel alternating densification framework that interleaves high and low densification phases. During high densification, the model densifies aggressively, followed by photometric loss based training to capture fine-grained scene details. Low densification then primarily involves aggressive opacity pruning of Gaussians followed by regularizing their geometry through pseudo-view consistency and edge-aware depth smoothness. This alternating approach helps reduce overfitting by carefully controlling model capacity growth while progressively refining the scene representation. Extensive experiments on challenging datasets demonstrate that AD-GS significantly improves rendering quality and geometric consistency compared to existing methods. The source code for our model can be found on our project page: https://gurutvapatle.github.io/publications/2025/ADGS.html.
- 稀疏输入下的三类伪影,以及原文把成因追到了哪个位置。
- 前人三条线:给 NeRF 补先验、给 3DGS 加约束、给致密化上闸:各自缺什么。
- 3DGS 的四个预备式子,以及致密化的克隆/分裂/剪枝各按什么判据触发。
- 致密化在稀疏输入下为什么会失控。
- 全篇做法一句话:Warm-Up 之后在高致密化与低致密化之间来回切。
- Warm-Up 段干什么,以及伪视角一致性为什么像「两个学徒互相批作业」。
- 低致密化段的两个阈值,以及为什么几何正则只在这一段加。
- 边缘感知深度平滑的两个项各管什么。
- 主结果(一):三个数据集、五个视角档的定量账。
- 主结果(二):画面上的差别,以及从稀疏到稠密的收敛。
- 消融:交替致密化与交替损失各值多少。
- 数据集、超参与两笔实操账(显存与训练时长)。
- 视频指标与逐场景定量读到了什么。
- 边界与反例。
1稀疏输入下,先坏的不是画质,是致密化
先摆事实:视角少的时候,3DGS 坏得很有规律。 原文列了三类伪影:漂浮物(floaters)、几何不准、以及过拟合:都源于观测太少[§1, p1]。这三件事里最刺眼的是第一类:画面上会凭空多出一些悬在空中的碎屑,它们不属于任何表面,却挡在视线中间。
喻体立桩(第 1 章):稀疏输入就像「几张照片拼一间屋子」。 你拍到的墙很实,没拍到的角落只能靠猜;而 3DGS 的优化器不会说「这里我不知道」:它会猜,并且把猜出来的东西画得很实。于是误差不会被标成问号,而是变成一块看着像真的几何。
1.1 原文把成因追到了「致密化」这一步
多数工作把稀疏输入的病根放在「先验不够」上,本篇放的位置不同。 原文的判词是:我们发现一个关键的成因是「无引导的致密化」:在没有引导的情况下快速加入高斯基元,会损害几何、并造成伪影[§1, p1]。
这条判词的分量在于它换了一个抓手。 「先验不够」指向的是损失函数该怎么补;「致密化无引导」指向的是模型容量该怎么长。后者在 3DGS 里恰好有一个现成的、可调的旋钮:致密化的阈值。
顺手分工一句。 本系列上一篇(篇目 60)也在讲训练中的致密化,但那是规模化那一端:问的是「层级能不能在训练中长大、切法还合法吗」;本篇问的是输入不理想这一端:问的是「视角这么少,致密化该不该放慢」。两篇的手段与判据完全不同,读的时候别混。
1.2 贡献三条
原文把贡献列成三条[§1, p1],后面每一章都会落到其中一条:
| # | 贡献 | 落在哪几章 |
|---|---|---|
| 1 | 交替致密化框架:高致密化段负责恢复细节,低致密化段用激进的剪枝压掉伪影 | 第 5、7 章 |
| 2 | 几何约束训练段:边缘感知深度平滑 + 伪视角一致性,用来纠正激进致密化引入的问题 | 第 6、7 章 |
| 3 | 稀疏输入下的显著提升:floaters 更少、场景细节更丰富 | 第 8–10 章 |
三条里第 1 条是骨架、第 2 条是补丁、第 3 条是账。 第 2 条那个措辞要盯一下:它是纠正(correct)激进致密化引入的问题,而不是避免(avoid):这一点在 1.4 节会回扣,也是第 12 章边界的种子。
1.3 图 1-1:两张对照,两种失败方式
图 1 的要点是「它在跟两种失败方式同时划清界限」。 图注列了两格:(a) 讲 3DGS 自己,(b) 讲 CoR-GS[Fig. 1 图注, p0]。
这张图里最有信息量的一句藏在子图说明里:(a) 明确写了本篇训得更多迭代[Fig. 1 子图说明, p0]。它把「干净」与「少训」这两件事先切开了:稀疏输入下常见的辩解是「别训太久,训久了就长伪影」,而这句说明让这个辩解不成立。
2前人三条线:补先验、加约束、给致密化上闸
这一章替读者把三条前人路线拆开看,目的是让第 5 章那套「交替」看起来不是凭空长出来的。三条线分别是给 NeRF 补先验、给 3DGS 加约束、以及给致密化上闸;前两条在稀疏输入端做得很热闹,第三条几乎只在稠密输入端做过[§2, p1–p2]。
2.1 第一条线:给 NeRF 补先验
这条线上的人在做一件事:把「外部知识」塞进训练。 原文列了几种先验的类型[§2.1, p1–p2]:
| 先验类型 | 代表工作 | 具体做法 |
|---|---|---|
| 深度平滑 / 稀疏深度 | RegNeRF、DSNeRF | 用深度平滑监督,或用 COLMAP 给出的稀疏深度估计做监督 |
| 深度网络先验 | DDP-NeRF | 用基于深度网络的估计器当先验 |
| 相对深度 | ViP-NeRF | 把先验加在相对深度上 |
| 低容量辅助模型 | SimpleNeRF | 训练一个容量更低的辅助模型,在选定位置给主模型提供可靠的深度监督 |
| 频率正则 | FreeNeRF | 随训练推进逐步放开模型捕捉高频细节的能力 |
| 语义一致性 | [Chen et al. 2022] | 用幻觉出来的语义结果与主模型求一致性,作为正则 |
这条线的共同短板,原文用一句话收掉了:这些方法都受 NeRF 自身的限制拖累:训练与渲染都慢[§2.1, p2]。后面还补了一句更要紧的话:许多给稀疏输入 NeRF 设计的先验并不能直接搬到 3DGS 上,需要专门为 3DGS 设计先验[§2.1, p2]。
为什么搬不过去,可以自己推一步:NeRF 的先验大多作用在连续的辐射场上(沿着一条射线积分),而 3DGS 的「场」是一堆离散的基元。深度平滑在连续场上是在约束一条函数,在离散基元上则变成了「约束哪些基元该被挪走」:后者天然要跟致密化/剪枝这套结构操作打交道,而前者不用。
2.2 第二条线:给 3DGS 加约束
这条线离本篇最近,原文按「显式先验」与「隐式约束」两类摆开[§2.2, p2]:
| 做法 | 代表工作 | 关键机制 | 代价(原文或表里读出的) |
|---|---|---|---|
| 显式深度初始化 | FSGS | 用预训练网络[Ranftl et al. 2021/2022]预测的深度图 | 深度先验不一定能泛化到多样场景 |
| 立体深度初始化 | InstantSplat | 用预训练网络的立体深度估计做初始化 | 依赖外部估计器的质量 |
| 单目深度初始化 | [Jiang et al. 2024] | 用单目深度估计做初始化 | 同上 |
| 伪视角一致性 | CoR-GS | 让两个独立训练的高斯场互相一致 | 会平滑掉结果(见下) |
| 相干实体 | Coherent-GS | 用分割掩码把高斯约束成相干实体 | 需要分割掩码作为输入 |
| 随机丢弃 + 边缘引导分裂 | DropGaussian | 训练中按递增速率随机丢高斯 | 会伤细粒度细节的重建 |
| 前馈一路 | PixelSplat、MVSplat、FLARE、NoPoseSplat | 在网络上学「从几张图预测高斯参数」,部分还免位姿 | 通常受低分辨率与泛化能力限制 |
这张表里有两行是第 5 章的直接前提,值得单独点出来。 一是 CoR-GS 的伪视角一致性:本篇沿用了它的机制(两个模型互相一致),但改了用法:原文认为这种一致性正则像半监督学习里「扰动观测的一致性」那样,会鼓励平滑输出[§3.3.1, p4],所以本篇只在低致密化段用它。二是 DropGaussian 的随机丢弃:它能压过拟合,但会伤细节[§2.2, p2]:这与本篇「高致密化段专门捞细节」的设计正好相反,也是本篇不做随机丢弃的理由。
2.3 第三条线:给致密化上闸:但闸只装在稠密输入端
这一节是原文里最容易被跳过、却最关键的一节。 原文写:致密化在 3DGS 里扮演着把稀疏点云变成像素级细节重建的关键角色;若干前人工作关注控制致密化,但主要集中在稠密输入场景,目的首先是降低内存与计算开销[§2.3, p2]。
这条现状陈述就是本篇的位置。 原文随后列了几种控致密化的判据:局部图像线索、占据图(occupancy map)、投影重叠[§2.3, p2];以及 HDA-GS 的分层密度自适应:把稀疏点云区域的高斯分裂成低体积、高不透明度的子高斯[§2.3, p2]。
原文紧接着给了对本篇最直接的一句评价:这些改进并不针对稀疏输入,也没有显式处理 floater 或过拟合这类伪影[§2.3, p2];而本篇要证明的恰恰是:控制致密化可以同时提升细节、并压住稀疏输入下的伪影[§2.3, p2]。
把三条线并排看,缺口就清楚了:第一条线补的是损失,第二条线补的是初始化与约束,第三条线管的是容量但只管稠密端。本篇选的是第三条线,但把闸装到了稀疏端:并且不是只装一个闸,而是两个闸轮换着开。
3四个预备式子:3DGS 怎么渲、怎么长
这一章把后面要用到的机制一次铺完,共四个式子。 前三个描述「一个高斯的形状怎么被投到屏幕上」,第四个描述「屏幕上的颜色怎么被合成」;铺完式子之后,再把致密化与剪枝的触发判据列成一张表:那张表是第 5 章设计交替节奏时的直接依据。
3.1 式 (1):一个高斯的形状
3DGS 用一个高斯基元表示一小块空间,它的形状由一个协方差矩阵决定。 原文的参数表是:中心位置 μ ∈ R³、尺度向量 s ∈ R³、旋转四元数 q ∈ R⁴、不透明度标量 o ∈ [0,1]、颜色特征 f ∈ R^K(通常用球谐表示)[§3.1, p2]。
尺度与旋转合成出协方差:
式中 R 是由四元数 q 导出的旋转矩阵,S = diag(sx, sy, sz) 是缩放矩阵[§3.1, p2]。这个写法把「形状」拆成两个可优化的量:旋转管朝向、缩放管三根轴的粗细:后面所有「分裂」操作动的是 s。
3.2 式 (2):空间里的密度
给定形状,一个高斯在任意位置 x 处的空间密度是[§3.1, p2]:
这是一条标准的马氏距离形式:指数里那个二次型量的是「x 偏离中心 μ 多少个「标准差」」,指数前的 −½ 让它退化成一维高斯的同一形状。它在本篇里不直接参与渲染(渲染走的是式 (3)(4)),但它解释了第 4 章那件事:分裂操作是从这个分布里采样新高斯的。
3.3 式 (3):投到屏幕上
要把高斯画出来,得先把 3D 协方差投成 2D 协方差[§3.1, p2–p3]:
式中 W 是相机矩阵,J 是局部仿射近似的雅可比矩阵[§3.1, p3]。这个式子是 3DGS 之所以快的来源:椭球投到像平面上还是椭圆,不用逐点采样,只需要算一次 2×2 的协方差。
这里有一处对第 4 章要紧的性质:投影会把「细长」放大。 一个在 3D 里很扁的高斯,如果它的长轴斜对着相机,投到屏幕上会变成一条细长的条带;如果它正对着相机,则缩成一小块。同一枚基元在不同视角下的屏幕足迹可以差很多倍:这正是「致密化按屏幕梯度触发」的物理依据。
3.4 式 (4):屏幕上的颜色
像素颜色按前后顺序做 alpha 合成[§3.1, p3]:
式中 N(p) 是像素 p 处可见的高斯数,cᵢ 与 αᵢ 是第 i 个高斯的有效颜色与不透明度,乘积项是它前面所有高斯留下的「穿透率」[§3.1, p3]。颜色 cᵢ 由球谐系数按视线方向算出,不透明度 αᵢ 由可学习的不透明度、形状与投影后的位置共同决定[§3.1, p3]。
这个式子决定了 floaters 为什么「抠不掉」。 floaters 是一批排序靠前、α 中等的高斯:它们在合成式里占了一个乘子位,把后面的真实几何「挡」掉一部分,同时自己贡献一个不正确但能压低图像损失的颜色。光损失只会去调 cᵢ,不会去动它们的位置:这条判断在第 4 章会被原文直接说出口。
3.5 致密化与剪枝:三条触发判据
式子铺完之后,把「高斯数量怎么变」的规则列出来。 原文的叙述是[§3.1, p3]:致密化按光度损失对 3D 位置的梯度触发,每隔固定迭代数执行一次,梯度大于阈值 τ_pos 的高斯会被分裂或克隆;克隆用于重建不足的区域:复制同一枚高斯;而「大高斯」会被分裂成两枚,做法是从父高斯的分布里采样、并缩小尺度参数;此外还有一种剪枝:按低不透明度或过大尺度移除高斯(例如第 i 枚高斯满足 αᵢ < ε_α)。
| 操作 | 触发判据 | 对「形状」做了什么 | 用在什么情形 |
|---|---|---|---|
| 克隆(clone) | 梯度 > τ_pos 且高斯偏小 | 复制一枚同参数的高斯 | 重建不足、需要加细节的区域 |
| 分裂(split) | 梯度 > τ_pos 且高斯偏大 | 从父高斯分布里采样两枚、并缩小尺度 | 一枚高斯盖住了本该更细的结构 |
| 剪枝(prune) | αᵢ < ε_α 或尺度过大 | 直接移除 | 半透明、无用或过大的基元 |
三行里最要命的是第二行:分裂的新位置是采样出来的,没有任何位置约束。原文在第 4 章正是抓住这一点来解释失控的:而第 5 章之所以要「两个模型互相批作业」,也是为了让这些采歪的位置有地方被告状。
顺带记两个符号的分工,它们在后面反复出现:τ_pos 是致密化的梯度阈值(越小越容易触发致密化,本篇在低致密化段把它收紧成 τL),ε_α 是不透明度的剪枝阈值(本篇在低致密化段把它抬高成 εL)。两个阈值分属两条通道:一个管「长不长」,一个管「留不留」。
4致密化在稀疏输入下为什么失控
这一章把第 1 章那句「无引导的致密化」拆成一条因果链。 原文的分析集中在 §3.2,一共四步,每一步都能在图上看到[§3.2, p3]。
4.1 第一步:初始点云本身就少
原文写:在稀疏视角的 3DGS 里,有限的输入图像严重限制了初始点云的点数,导致 3D 高斯的初始化很差[§3.2, p3]。
这一步的关窍不在「优化不好」,而在「起点就差」。 3DGS 的初始点云通常来自运动恢复结构(SfM):视角少 ⇒ 三角化的点少 ⇒ 一大片区域里根本没有基元。后面所有操作都建立在这个稀疏的起点上。
4.2 第二步:分裂是采样,而采样没有约束
原文写:当致密化由分裂触发时,新高斯是从父高斯的底层分布里采样出来的、没有任何约束,因此可能落在很差的位置上[§3.2, p3]。
喻体回扣(第 1 章「几张照片拼一间屋子」):这就像屋里没拍到的那面墙:你唯一能依据的是「旁边那面墙长什么样」,于是照着旁边抄一份立在那里。抄出来的东西有个很麻烦的性质:它长得挺像,所以不会被损失函数挑出来。
4.3 第三步:错位的高斯会招来更多错位的高斯
原文写:这些新放错位置的高斯可能引发它们周围的进一步克隆与致密化[§3.2, p3]。
这一步是「失控」二字的来源。 致密化按屏幕空间的光度梯度触发;一枚错位的基元如果恰好把某个像素的误差压低了,它周围的梯度就会升高,于是又触发一轮致密化: 在一个本来就没有观测的区域里,误差变成了「需要更多基元」的信号。原文也点了这项工作的现状:3DGS 的致密化步骤已经吸引了很多关注,也探索过不同的损失来控致密化,但主要目标一直是限制模型规模;它在稀疏输入下的角色几乎没有被探索过[§3.2, p3]。
喻体立桩(第 4 章):floater 是「悬空的碎屑」。 它最麻烦的地方不是难看,而是它挡光:在式 (4) 里它占了一个乘子位,后面的真实几何被它的穿透率削掉一截。
4.4 第四步:光损失不搬它,剪枝又太弱
原文写:由于它们的位置没有任何显式约束,优化并不会移除这些伪影,这些高斯可能一直留在错误的位置上;一旦形成,floaters 不会被光度损失移除:相反,floaters 的颜色会被改成匹配稀疏输入视角的样子,从而在新视角上造成失真[§3.2, p3]。
这句话是全篇最重要的一句判词。 它把「不能靠损失解决」的理由说透了:损失可以调颜色,但调不动位置;而调的后果恰好是让它在训练视角上更像真的。原文对剪枝的判断同样直接:按低不透明度或过大尺度做的剪枝(例如 αᵢ < ε_α)在稀疏场景下往往太弱[§3.2, p3]。
图 2 就是把这条因果链按时间摊开。
As training progresses, densification under sparse views leads to floating artifacts and inconsistent geometry.];本图是一张纵向排列的时间序列(不同训练步的画面),图体在右栏、只占约 240×157 pt。②读法:按列往下读,盯住「什么时候开始不对」:前几步画面还行,中段开始出现悬空的碎屑,后段碎屑与新视角下的失真同时出现。这张图要论证的是「变化是渐进的、可归因的」,并不在「最终有多差」:这正是「把闸装到致密化上」而不是「事后剪枝」的依据。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 2, p2 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
把四步连起来读,会看到一条「正反馈」而不是「一次失误」:起点稀疏 → 采样无约束 → 错位引发更多致密化 → 光损失只改颜色、剪枝拦不住。要断掉这条链,最省事的位置是在第二步与第三步之间的那个旋钮:致密化的阈值。 这正是第 5 章要做的事。
5全篇做法一句话:在高致密化与低致密化之间来回切
一句话概括本篇:不换损失、不换表示,改的是致密化的节奏。 原文写:为了应对上述挑战,我们提出 AD-GS,一个通过在高致密化与低致密化之间交替、逐步提升场景质量的训练框架[§3.3, p3];这种交替策略让模型规模的增长处于控制之下,同时不断改善几何与外观[§3.3, p3]。
5.1 三段式:先站稳,再一放一收
原文把训练过程分成三个主要阶段[§3.3, p3]:一个初始的 Warm-Up 段,随后是低致密化与高致密化交替的阶段[§3.3, p3]。把三个段的任务与旋钮摆在一起:
| 段 | 长度 | 致密化旋钮 | 损失项 | 这一段在干什么 |
|---|---|---|---|---|
| Warm-Up | NW = 1500 迭代 | 按常规 3DGS 的判据(ε_α、τ_pos) | 只吃光度损失(式 (5)) | 先站稳再走:把两个模型的几何初步对齐,不折腾结构 |
| 低致密化段 | NL = 100 迭代 | εL = 0.1(> ε_α)、τL = 0.0005(> τ_pos) | 光度 + 几何正则(式 (9),含式 (6)(8)) | 清淤:抬不透明度阈值激进剪枝、收紧梯度阈值降速致密化,同时把几何拉回正轨 |
| 高致密化段 | NH = 100 迭代 | 回到 ε_α = 0.005、τ_pos = 0.0002 | 只吃光度损失(去掉正则) | 放闸:猛涨高斯、只对齐像素,把高频细节捞回来 |
(取值全部来自原文表 5[表 5, p10];两个阈值的方向在 §3.3.2 与 §3.3.3 有直接表述。)
喻体立桩(第 5 章):「放闸与清淤」。 高致密化段负责长,低致密化段负责收;两个段各自只做一件事,且各自配一套损失:这就是原文说的「交替损失(alt-loss)」:所谓交替损失,指的是我们在不同阶段用不同的损失[§4.4, p8]。
5.2 一次训练循环怎么写(原文无伪码,本章依正文与表 5 整理)
先说清楚一件事:原文没有给出算法伪码(全篇没有 Algorithm 框)。下面的伪码是按 §3.3 的三段式叙述、配合表 5 的取值整理出来的,不是原文照搬;两处前提写在块首。
前提 1:两个 3DGS 模型 G1、G2 独立初始化、并行训练(伪视角一致性需要两个模型,见第 6 章)。
前提 2:全部超参跨数据集与场景固定,不做 per-scene 调参(原文表 5 的说明)。
# == Warm-Up:先站稳再走(N_W = 1500 迭代)==
用常规致密化判据(ε_α、τ_pos)跑 3DGS 的参数更新
损失 = L_ph(G1) 与 L_ph(G2) # 式 (5),只用光度损失
# == 交替段:一放一收,各 N_L / N_H = 100 迭代 ==
while 未达总迭代数 10000:
# == 低致密化段:清淤 ==
第 1 次迭代做致密化,阈值取 ε_L = 0.1、τ_L = 0.0005 # 抬剪枝阈值、收梯度阈值
其后每次迭代都带几何约束训练:
损失 = 1·L_ph(式 5) + 1·L_tds(式 8) + 1·L_pseudo(式 6) # 式 (9),λ1=λ2=λ3=1
# == 高致密化段:放闸 ==
第 1 次迭代做致密化,阈值回到 ε_α = 0.005、τ_pos = 0.0002
其后每次迭代只做参数更新:
损失 = L_ph(式 5) # 去掉全部正则项
这段伪码里有两处「不对称」,它们是全篇的设计核心:
- 致密化只在每段的第一次迭代发生一次(原文:低致密化段由 NL 次迭代组成,其中一次是致密化、其余全是带几何约束的训练;高致密化段同样由一次致密化加全程的参数更新组成)[§3.3.2, p4–p5]。这一点决定了「段长」就是「两次致密化之间的间隔」:第 10 章表 8 的阶段长度敏感性,量的正是这个间隔。
- 正则只在低致密化段出现(原文对伪视角一致性的表述:它在整个训练过程中使用会抑制细粒度细节的学习;而 AD-GS 只在低致密化段施加它,与边缘感知深度平滑一起)[§3.3.2, p4]。这条把「什么时候加约束」变成了一个与「致密化快慢」绑定的决定:而不是一个全局超参。
5.3 图 3-1:一张图看完高低交替
本章 5.1 节那张三段式表是文字版,图 3 是它的图形版。 先把三个要看的位置点出来,再去读图。
图里那条「高斯数上下起伏」的曲线是本章最该记住的一处:那条曲线不是噪声,它是设计意图的可视化:高段猛涨、低段剪掉一部分,最终净增长但受控。原文在图注里也点了这一句:该图展示了高斯数如何在高致密化中增加、又因「慢致密化」中的剪枝而减少[Fig. 3 图注, p3](图注里那句 slow densification 就是低致密化段)。
到这里,全篇的骨架就齐了:第 6 章讲 Warm-Up 段与伪视角一致性,第 7 章讲低致密化段的两个阈值与两套几何正则,第 8–10 章看账面。
6先让两个模型对上:Warm-Up 与伪视角一致性
这一章讲训练的前半截:先有一段什么都不折腾的 Warm-Up,然后是那件本篇最反直觉的设计: 用两个模型互相看住对方。
6.1 式 (5):光度损失,全篇唯一「有真值」的项
全篇所有损失都长在这条式子上。 设某个训练视角分别由两个 3DGS 模型 G1、G2 渲染成 v1、v2,对 Gk(k ∈ {1, 2}):
式中 v_gt 是真值视角,λ_ssim ∈ [0, 1] 是两项的权重[§3.3.1, p4]。这条式子的结构要记牢:第一项是逐像素的绝对差(L1),管「像不像」;第二项是 1 减结构相似度,管「结构对不对」;两项用一个 λ_ssim 配比。它后来被复用了两次:一次在伪视角一致性里(式 6)、一次在低致密化段的总损失里(式 9) 都是直接调它,不另立新式。
还要记一件事:这是全篇唯一一个「有真值参与」的损失。 后面两条正则(式 6、式 7)都不碰真值。
6.2 Warm-Up:一千五百步先站稳
原文把第一段的作用说得很省:Warm-Up 段占前 NW 次迭代,目的是建立一个稳定的初始化;两个 3DGS 模型在这一段各自独立训练,用的是与 3DGS 方法相同的损失[§3.3.1, p4]。附录里补了同一件事的另一种说法:Warm-Up 阶段沿用与 3DGS、FSGS、CoR-GS 相近的训练策略,用光度监督把初始场景几何立起来[附 B.3, p10]。
「与 3DGS 方法相同的损失」这句话,配上表 5 的 NW = 1500[表 5, p10],得到本章第一笔账:全篇一共 10000 次迭代[表 5, p10],前 1500 步(15%)走的是常规 3DGS 那条路。这 15% 不是热身,它是有任务的:第 5 章那张三段式表里「先站稳再走」那句,落地就是「先把两个模型的几何大致对齐」:因为后面那条伪视角一致性,要求两个模型的渲染至少在同一量级上,否则一对上就是互相拖着走。
喻体回扣(第 5 章「先站稳再走」):地基没打好之前不折腾结构。Warm-Up 段的作用正是不让结构在几何还乱的时候被致密化放大。
6.3 为什么要训两个模型,而且推理时只用其中一个
这一处是本章最该记住的行文安排。 原文在 §3.3 开头交代:为了在低致密化段把伪视角一致性当成一种正则项,我们同时训练两个分开的 3DGS 模型[§3.3, p3–p4];这两个模型独立初始化、全程并行优化[§3.3, p4]。紧接着一句是很多读者会漏掉的:评测时我们用两个训练好的模型中的一个(任选)作为最终测试时的模型[§3.3, p4]。
这两句合起来,把「两个模型」的账分成了两半:
| 侧 | 用几个模型 | 后果 |
|---|---|---|
| 训练 | 2 个,并行 | 显存与算力约翻倍(第 11 章表 6 里能看见:峰值显存 89%) |
| 推理 | 1 个(任选其一) | 运行时延与 3DGS 相当:没有在推理侧付任何代价 |
换句话说:两个模型不是「集成(ensemble)」,也不是「投票」。 第二个模型唯一的作用是训练时给第一个模型当参照物:它的输出不进最终结果。这条分工直接决定了第 12 章边界第 1 条(开销翻倍)与第 3 条(先错后纠):你花了两倍的钱,买到的是一段训练期的监督,不是一个更强的成品模型。
6.4 式 (6):伪视角一致性:一条没有真值的损失
机制的定义分两步:先从两个 3DGS 模型渲染一个不属于训练视角的伪视角,得到 u1 与 u2;这个伪视角是在某个训练视角上加一个小扰动选出来的[§3.3.2, p4]。然后要求两个模型在这张伪视角上互相一致:
式中的 L_ph 就是式 (5)[§3.3.2, p4]:把式 (5) 里的真值 v_gt 换成另一个模型的渲染 u2。这一步换得很干净,但换掉的东西很关键:真值没了。 这条损失不要求任何一个模型「对」,只要求两个模型「一样」。
原文自己把这条式子的性质说了出来:我们认为这种一致性正则会鼓励平滑的输出:就像半监督学习里,扰动观测的一致性会导致平滑输出那样(原文引 Miyato et al. 2018)[§3.3.2, p4]。这是一句很诚实的自我评价:作者承认这条损失的作用机制是抹平,不是纠错。
而且原文紧接着用证据把「不能全程用」钉住:在整段训练里都施加这条损失,会抑制细粒度细节的学习:这一点由图 1b 与表 4 可见[§3.3.2, p4]。所以本篇的用法是:L_pseudo 只在低致密化段施加,且与边缘感知深度平滑联合[§3.3.2, p4]。
喻体立桩(第 6 章):伪视角一致性像「两个学徒互相批作业」。 两个人对着同一道题各做一遍,再互相看对方的答案:如果一个错了、另一个对了,错的会被改过来;但如果两人在同一处犯了同样的错,这条机制一点用都没有:他们只会互相确认「你也这么算,那应该对」。前半句是它为什么有用,后半句就是第 12 章边界第 2 条。
6.5 这一章收回来的三件事
- 式 (5) 是全篇的损失基座,两个下游式子都从它派生;
- Warm-Up 段占了全篇 15% 的迭代,任务是把两个模型的几何对齐,为一致性铺路;
- L_pseudo 是一条无真值的、以平滑为机制的损失,因此只能间歇使用: 「间歇」这个决定,第 7 章会把它落到「低致密化段」这个具体的时间窗口上。
7低致密化段:抬阈值、收梯度,再加一套几何正则
这一章讲「收」的那一半。 低致密化段要做两件互不冲突的事:把不该留的高斯剪掉,把该留的高斯拉回正轨。前一件事靠两个阈值,后一件事靠两条正则。
7.1 两个阈值:一个抬上去,一个收下来
原文对低致密化段的定义是:这一段由 NL 次迭代组成,其中一次做致密化、其余每次迭代都做带几何约束的训练[§3.3.2, p4]。「做致密化」那一次用两个与常规不同的阈值[§3.3.2, p4]:
| 阈值 | 常规 3DGS 的取值 | 低致密化段的取值 | 方向 | 干什么 |
|---|---|---|---|---|
| 不透明度剪枝阈值 | ε_α | εL > ε_α | 抬上去 | 激进移除低不透明度高斯,限制过拟合 |
| 梯度范数阈值 | τ_pos | τL > τ_pos | 收下来 | 让致密化以更慢的速率推进 |
(取值:εL = 0.1、τL = 0.0005,对比高致密化段的 ε_α = 0.005、τ_pos = 0.0002[表 5, p10]。)
第一个阈值的原文判词值得逐字读:用抬高的不透明度阈值激进地移除低不透明度高斯、限制过拟合:这有助于移除半透明的 floaters[§3.3.2, p4]。「半透明的 floaters」这个措辞把第 4 章那条判词接上了:floaters 之所以抠不掉,是因为光损失只会改它们的颜色、不会挪它们的位置;那么唯一还动得了的就是不透明度这条通道:把 α 阈值抬高,它们自己就在剪枝里出局。这就是「剪枝太弱」那半句的解药。
第二个阈值管的是另一半:用更严格的梯度范数阈值 τL 让致密化变慢;两个策略合起来,限制这一步里克隆或分裂的高斯数量[§3.3.2, p4]。注意方向:τ 越大越难触发致密化,所以 τL > τ_pos 就是「这一段落闸」。
把两条通道并排,正好是第 3 章那张判据表的一次反演:
| 通道 | 高致密化段(=常规) | 低致密化段 | 倍数 | 一句话 |
|---|---|---|---|---|
| 长不长(τ) | τ_pos = 0.0002 | τL = 0.0005 | 2.5× | 更难触发 |
| 留不留(ε) | ε_α = 0.005 | εL = 0.1 | 20× | 更容易剪掉 |
两个倍数放在一起看:不透明度阈值抬了 20 倍,梯度阈值只紧了 2.5 倍。这说明「剪」比「限涨」更用力:与第 5 章那句「低致密化段负责收」的侧重一致。
7.2 式 (7) 的前半:深度从哪来
第二条正则作用在深度上,所以先要说清「深度从哪来」。 原文的做法是复用式 (4) 的 alpha 合成:若 zi 是第 i 枚高斯在某像素上的深度,则该像素的深度由与式 (4) 相同的 alpha 合成得到:只是把颜色 ci 换成 zi[§3.3.2, p5]。这是一处很省的写法:渲染管道一条都不用改,颜色换深度、同一个合成器再跑一遍,深度图就出来了。
深度到手后,这条损失长这样:
符号逐个对上[§3.3.2, p5]:d(x,y) 是渲染深度,v(x,y) 是图像强度,∇d(x,y) 是深度的空间梯度,∇v(x,y) 是图像的空间梯度(在 (x,y) 处对所有颜色通道求和);λr > 0 是正则权重;d_max 与 d_min 是这张渲染视图里的最大与最小深度。
两项分工,原文各给一句[§3.3.2, p5]:
| 项 | 原文判词 | 它在防什么 |
|---|---|---|
第一项 ‖∇d‖₁ · exp(−‖∇v‖₁) | 鼓励平滑 | 深度图的毛刺与孤立基元:梯度大就罚,但乘上图像梯度当指数,图像有边缘的地方罚得轻 |
第二项 − λ_r (d_max − d_min) | 保证深度值有好的动态范围 | 整张深度图塌成一堵墙:把 d_max − d_min 往大里推 |
第一项的那个指数是全式最精巧的地方。 原文的判词是:上式在平滑区域更多惩罚深度变化、在边缘周围更少,从而防止过度平滑[§3.3.2, p5]。换成人话:exp(−‖∇v‖₁) 是一个图像自己给的开关:图像在这里是平的(‖∇v‖ 小),开关开到接近 1,深度的梯度被狠罚;图像在这里是条边(‖∇v‖ 大),开关接近 0,深度的跳变被放行。
喻体立桩(第 7 章 A):顺着墙缝抹灰,别把墙棱抹圆。 抹灰就是「让深度平滑」,墙缝是「该有深度跳变的地方」。如果一律抹平,墙棱就没了(那正是第 2 章 CoR-GS 那条路的毛病);本式让抹刀自动在棱上抬起来。
喻体立桩(第 7 章 B):别让整张深度图塌成一堵墙。 第二项就是那个「顶住」的力:只要深度范围在缩,损失就在反向推。它防的是一种很典型的失败:模型为了把深度抹平,干脆让所有深度都收敛到同一个值:图上看着很平,实际上深度信息已经没了。
顺带记一条设计取向:原文明确说不依赖外部深度先验(不像 FSGS/InstantSplat/Coherent-GS 那样调预训练网络),而是靠「无纹理区域平滑、强度边缘处允许不连续」来正则渲染出的深度图[§3.3.2, p5]。这条把本篇与第 2 章第二条线里那半张表彻底分开了:那些方法要一张外部深度图当输入,本篇只要自己的渲染结果。
7.3 式 (8):深度平滑在两种视角上各算一次
深度平滑不止用在训练视角上,伪视角上也要算:
式中 ω₁ 与 ω₂ 是平衡两个平滑项的权重[§3.3.2, p5]。原文在式下留了一个小注:这个损失里采样了一个训练视角与一个伪视角[§3.3.2, p5]。
这条式子把第 6 章那个伪视角用到了第二处。 第 6 章里伪视角是用来做「两个模型互相一致」(式 6);这里伪视角是用来做「深度要平滑」(式 8) 同一张伪视角,喂两条不同的损失。这也解释了为什么伪视角必须存在:如果只在训练视角上做深度平滑,那模型只要在训练视角上平就够了;伪视角给的是训练时看不见的那一侧。
权重看表 5:ω₁ = 0.01、ω₂ = 0.05[表 5, p10]。ω₂ 是 ω₁ 的 5 倍: 伪视角项的权重是训练视角项的 5 倍。这个配比把上面那句话量化了:作者更在意「没看见的那一侧深度是否合理」。
7.4 式 (9):低致密化段的总损失
三条损失拼在一起,就是这一段每次迭代真正在算的东西:
式中 λ₁、λ₂、λ₃ 用来给不同损失加权[§3.3.2, p5]。表 5 给的取值是三项全 1[表 5, p10]。为什么全取 1,原文在附录里给了一句理由:损失权重是选来保证所有项的量级相当的[附 B.3, p10]。这算一条工程口径:λ 在这里只承担量纲对齐的职责,并没有当成需要调的敏感超参;换句话说,如果某一项在数值上比别的大一个量级,那该改的是这项自己的归一化,而不是 λ。
把式 (9) 与式 (5) 并排,能看到「交替损失」这个说法的准确含义。 原文在消融那一章的自我定义是:所谓交替损失,指的是我们在不同阶段使用不同的损失[§4.4, p8]。具体到式子层面:低致密化段用式 (9)(三项),高致密化段只用式 (5)(一项)。两条式子共享同一个 L_ph: 交替的不是损失函数的形式,是「要不要挂正则」。
7.5 高致密化段:把正则摘掉,放闸
低致密化段讲完了,它的对面很好交代。 原文写:为了让模型学到高频纹理与细粒度细节,我们切换到高致密化段:这一段由 NH 次迭代组成,同样是一次致密化步 + 这一段所有迭代上的常规 3DGS 参数更新[§3.3.2, p5];具体是用激进的致密化策略,把高斯分裂或克隆的范数阈值设在 τ_pos;两个模型都做这样的致密化;这一段只用光度损失,把正则项全部去掉;因此模型学会更好地拟合训练视角的光度线索、把细节捞回来[§3.3.2, p5]。
「把范数阈值设在 τ_pos」这句话里藏着一个对照:τ_pos = 0.0002 是常规 3DGS 的阈值(表 5 把它列在 High densification thresholds 那一行)。所以「激进」的含义是「回到 3DGS 的水平」,并不比 3DGS 更激进:相对于低致密化段的 τL = 0.0005 而言才是激进。这个分寸值得留意:本篇从头到尾没有一个比原版 3DGS 更激进的阈值;它只是在低段收敛、在高段放开。
两段并排,就是本章的全部:
| 低致密化段(NL = 100) | 高致密化段(NH = 100) | |
|---|---|---|
| 致密化 | τL = 0.0005(慢)、εL = 0.1(狠剪) | τ_pos = 0.0002(常规)、ε_α = 0.005 |
| 损失 | 式 (9):光度 + 深度平滑 + 伪视角一致 | 式 (5):只有光度 |
| 目标 | 清淤:剪掉半透明 floaters、把几何拉回正轨 | 放闸:猛涨高斯、拟合细节 |
7.6 七个参数逐项释义
这一段的参数全部集中在表 5[表 5, p10],其中与式 (7)–(9) 直接相关的是七个:
| 参数 | 取值 | 出现处 | 管什么 |
|---|---|---|---|
| εL | 0.1 | 第 3 章判据表的剪枝行 | 低段的不透明度剪枝阈值(判「留不留」,越大越狠) |
| τL | 0.0005 | 第 3 章判据表的致密化行 | 低段的梯度范数阈值(判「长不长」,越大越慢) |
| ε_α | 0.005 | 同上 | 高段(=常规)的不透明度剪枝阈值 |
| τ_pos | 0.0002 | 同上 | 高段(=常规)的梯度范数阈值 |
| λ₁ / λ₂ / λ₃ | 1 / 1 / 1 | 式 (9) | 三项损失的量级配平 |
| λr | 0.001 | 式 (7) 第二项 | 深度范围项的权重 |
| ω₁ / ω₂ | 0.01 / 0.05 | 式 (8) | 训练视角项与伪视角项的配比 |
这七个里,只有 λr 与两个 ω 打的是「权重」的名,其余五个打的都是「阈值与方向」的名。 这条分工本身就说明本篇的重心:它调的是一段训练过程的形状(什么时候紧、什么时候松),而不是一组损失的比例。
8主结果(一):三个数据集、五个视角档的定量账
从这一章开始看账。 本章三张表是可以逐格复算的读数(表 1-1、2-1、3-1),第 9 章看画面,第 10 章看消融。
8.1 口径先摆清
数据集与拆分[§4.1, p5–p6;附 B.1, p10]:
| 数据集 | 场景 | 原生分辨率 | 本站读数 | 训练视角档 |
|---|---|---|---|---|
| LLFF | 8 个前向无界场景 | 4032×3024 | 降采样 4× ⇒ 1008×756 | 3/6/9 |
| Mip-NeRF360 | 7 个 360° 无界场景 | 高分辨率 | 降采样 4×,最终分辨率随场景 | 12/24 |
| Tanks & Temples | 8 个复杂大尺度场景 | 960×540 | 原分辨率 | 3/6/9 |
拆分规则三套统一:每 8 帧取一帧做测试,训练视角从剩下的帧里均匀采样[附 B.1, p10]。指标三项:SSIM、PSNR、LPIPS,比较渲染图与真值图[§4.1, p6]。基线四个:3DGS、FSGS、CoR-GS、DropGaussian,全部用各自作者提供的代码与配置训练,超参跨数据集跨场景固定、不做 per-scene 调参[§4.2, p6]。
还有一条口径要照录:本篇假设相机内外参已知,并给出适用场景: 远程临场与虚拟探索这类可以另外部署传感器来获取相机参数的场合[§4.1, p6]。这条是边界,不是细节:它说明本篇解的是「视角少」这一件事,不含「连位姿都不知道」那一档(第 2 章表里 PixelSplat/NoPoseSplat 那条前馈路线管的正是后者)。
8.2 表 1-1:Tanks & Temples(3/6/9 视角)
表 1 是三个数据集里唯一「全部指标、全部档位都由本篇拿下」的一张,也是唯一表体用 9.0 pt 与正文同号的表[表 1, p4]。原文读数:
| 方法 | PSNR 3v | PSNR 6v | PSNR 9v | SSIM 3v | SSIM 6v | SSIM 9v | LPIPS 3v | LPIPS 6v | LPIPS 9v |
|---|---|---|---|---|---|---|---|---|---|
| 3DGS | 16.992 | 22.393 | 24.492 | 0.556 | 0.788 | 0.850 | 0.352 | 0.182 | 0.141 |
| FSGS | 19.644 | 26.436 | 28.488 | 0.637 | 0.847 | 0.888 | 0.312 | 0.168 | 0.139 |
| CoR-GS | 19.246 | 26.273 | 28.489 | 0.650 | 0.849 | 0.891 | 0.342 | 0.175 | 0.132 |
| DropGaussian | 19.475 | 26.452 | 28.488 | 0.652 | 0.852 | 0.891 | 0.320 | 0.173 | 0.138 |
| AD-GS (Ours) | 19.724 | 27.139 | 28.964 | 0.678 | 0.867 | 0.902 | 0.285 | 0.142 | 0.113 |
逐格算一遍「赢多少」(对照该列里最好的那个对手):
| 指标 | 档 | 对手最好值 | AD-GS | 差值 |
|---|---|---|---|---|
| PSNR | 3v | 19.644(FSGS) | 19.724 | +0.080 |
| PSNR | 6v | 26.452(DropGaussian) | 27.139 | +0.687 |
| PSNR | 9v | 28.489(CoR-GS) | 28.964 | +0.475 |
| SSIM | 3v | 0.652(DropGaussian) | 0.678 | +0.026 |
| SSIM | 6v | 0.852(DropGaussian) | 0.867 | +0.015 |
| SSIM | 9v | 0.891(CoR-GS/DropGaussian) | 0.902 | +0.011 |
| LPIPS ↓ | 3v | 0.312(FSGS) | 0.285 | −0.027 |
| LPIPS ↓ | 6v | 0.168(FSGS) | 0.142 | −0.026 |
| LPIPS ↓ | 9v | 0.132(CoR-GS) | 0.113 | −0.019 |
这张表自己告诉了三件事:① 3DGS 在稀疏端最差(3 视角 PSNR 16.992,比第二名低 2.25 dB),到 9 视角差距缩到 4.0(24.492 对 28.964);② 对手之间的排名不稳定: 3 视角的 PSNR 冠军是 FSGS,6/9 视角换成 DropGaussian/CoR-GS;③ 本篇是全部 9 格第一,且 PSNR 上的领先幅度(+0.080 至 +0.687)比 SSIM(+0.011 至 +0.026)与 LPIPS(−0.019 至 −0.027)都大。
8.3 表 2-1:LLFF(3/6/9 视角)
| 方法 | PSNR 3v | PSNR 6v | PSNR 9v | SSIM 3v | SSIM 6v | SSIM 9v | LPIPS 3v | LPIPS 6v | LPIPS 9v |
|---|---|---|---|---|---|---|---|---|---|
| 3DGS | 18.90 | 22.57 | 24.02 | 0.632 | 0.757 | 0.799 | 0.269 | 0.182 | 0.151 |
| FSGS | 19.50 | 23.25 | 24.56 | 0.655 | 0.776 | 0.815 | 0.269 | 0.185 | 0.151 |
| CoR-GS | 19.59 | 23.33 | 24.75 | 0.674 | 0.780 | 0.817 | 0.271 | 0.187 | 0.152 |
| DropGaussian | 19.72 | 23.52 | 24.89 | 0.674 | 0.786 | 0.824 | 0.266 | 0.182 | 0.148 |
| AD-GS (Ours) | 20.06 | 23.54 | 25.02 | 0.699 | 0.793 | 0.830 | 0.237 | 0.170 | 0.142 |
原文在这张表里挑了两个数出来讲:LLFF 3 视角上,AD-GS 把 SSIM 由 CoR-GS 的 0.674 提到 0.699;LPIPS 上取得对 DropGaussian 的显著增益,由 0.266 降到 0.237,说明感知质量更好[§4.3, p6]。
把这两句换算成幅度,再把 PSNR 那一列补上:
| 指标 | 档 | 对手最好值 | AD-GS | 差值 | 相对幅度 |
|---|---|---|---|---|---|
| LPIPS ↓ | 3v | 0.266(DropGaussian) | 0.237 | −0.029 | −10.9% |
| SSIM | 3v | 0.674(CoR-GS/DropGaussian) | 0.699 | +0.025 | +3.7% |
| PSNR | 3v | 19.72(DropGaussian) | 20.06 | +0.34 | — |
| SSIM | 6v | 0.786(DropGaussian) | 0.793 | +0.007 | +0.9% |
| PSNR | 6v | 23.52(DropGaussian) | 23.54 | +0.02 | — |
| SSIM | 9v | 0.824(DropGaussian) | 0.830 | +0.006 | +0.7% |
| PSNR | 9v | 24.89(DropGaussian) | 25.02 | +0.13 | — |
这张表里有一处应当圈出来:PSNR 的领先幅度随视角数增加急剧收窄: 3 视角领先 0.34 dB,6 视角只剩 0.02 dB,9 视角 0.13 dB。6 视角那一格 23.54 对 23.52,基本是打平。 而 SSIM 与 LPIPS 的领先要稳得多(SSIM 三档都在 +0.7% 以上,LPIPS 三档都是 AD-GS 最好)。这条不对称在第 12 章的边界里要收一笔。
还有一处只有把表读全才能看见的反常:FSGS 在 3 视角上的 LPIPS 是 0.269,与 3DGS 的 0.269 完全相同:也就是说在 LLFF 的 3 视角上,FSGS 那套深度先验在感知指标上没有带来任何增益;而 CoR-GS 的 0.271 反而比 3DGS 的 0.269 更差。这条与 8.4 节 Mip-NeRF360 上的同型现象是同一件事。
8.4 表 3-1:Mip-NeRF360(12/24 视角)
| 方法 | PSNR 12v | PSNR 24v | SSIM 12v | SSIM 24v | LPIPS 12v | LPIPS 24v |
|---|---|---|---|---|---|---|
| 3DGS | 17.36 | 22.06 | 0.496 | 0.701 | 0.403 | 0.253 |
| FSGS | 18.51 | 23.11 | 0.547 | 0.720 | 0.411 | 0.275 |
| CoR-GS | 19.42 | 23.20 | 0.579 | 0.728 | 0.410 | 0.272 |
| DropGaussian | 19.18 | 23.28 | 0.575 | 0.732 | 0.412 | 0.277 |
| AD-GS (Ours) | 19.66 | 23.68 | 0.593 | 0.750 | 0.386 | 0.249 |
这张表里最该圈出来的一处,是三个稀疏基线在 LPIPS 上输给了原版 3DGS:
| 档 | 3DGS | FSGS | CoR-GS | DropGaussian | AD-GS |
|---|---|---|---|---|---|
| LPIPS 12v ↓ | 0.403 | 0.411(差 0.008) | 0.410(差 0.007) | 0.412(差 0.009) | 0.386(好 0.017) |
| LPIPS 24v ↓ | 0.253 | 0.275(差 0.022) | 0.272(差 0.019) | 0.277(差 0.024) | 0.249(好 0.004) |
FSGS、CoR-GS、DropGaussian 三家的 LPIPS 在 12 与 24 视角两档上都高于 3DGS,也就是「加了稀疏输入的先验/约束之后,感知指标反而退步」。本篇是唯一一个在 LPIPS 上优于 3DGS 的方法,但要注意幅度:12 视角好 0.017;24 视角只 好 0.004(0.249 对 0.253) 几乎贴平。这条与 8.3 节 PSNR 贴平是同一类现象:越往稠密端走,本篇的领先越薄。
SSIM 这一列相反,领先幅度在稠密端反而更大:12 视角 0.593 对 0.579(CoR-GS)= +0.014;24 视角 0.750 对 0.732(DropGaussian)= +0.018。这不矛盾:SSIM 量的是结构,PSNR 与 LPIPS 量的是像素与感知: 三张表合起来说明本篇的优势集中在「结构对了」这件事上,而不是「像素更亮」。
还有一处可复算的落差:3DGS 在 12 视角的 SSIM 只有 0.496,AD-GS 是 0.593:差 0.097,这是三张表里最大的单格 SSIM 落差(表 1 最大 +0.026、表 2 最大 +0.025)。它落在 Mip-NeRF360 这个 360° 无界数据集、12 视角这一档上。
8.5 三张表并排:为什么「视角越少提升越大」
原文的总判词是:AD-GS 在所有数据集、所有指标、所有输入视角数上一致取得更好表现;并且当输入视角数更少时,AD-GS 给出的提升更大[§4.3, p6]。前一句三张表逐格核过(24 格全胜),后一句可以换算成一张对照表:
| 数据集 | 档 | 最强对手 | SSIM 差 | LPIPS 差 |
|---|---|---|---|---|
| Tanks & Temples | 3v | DropGaussian | +0.026 | −0.035 |
| Tanks & Temples | 9v | CoR-GS/DropGaussian | +0.011 | −0.019 |
| LLFF | 3v | CoR-GS/DropGaussian | +0.025 | −0.029 |
| LLFF | 9v | DropGaussian | +0.006 | −0.006 |
| Mip-NeRF360 | 12v | CoR-GS | +0.014 | −0.024 |
| Mip-NeRF360 | 24v | DropGaussian | +0.018 | −0.004 |
「视角越少提升越大」在 Tanks & Temples 与 LLFF 上成立得很干净(SSIM 差从 6/9 视角的 +0.006~+0.015 涨到 3 视角的 +0.025~+0.026,约 1.7–4 倍)。但在 Mip-NeRF360 上不成立:24 视角的 SSIM 差(+0.018)反而大于 12 视角(+0.014);而 LPIPS 差是 12 视角(−0.024)远大于 24 视角(−0.004)。两个指标在 Mip-NeRF360 上给出了相反的方向。
这条偏差值得写进来,因为它不是笔误:Mip-NeRF360 的 24 视角是这三个数据集里「最不稀疏」的一档(第 9 章图 12-1 会说明它离稠密端最近)。在那个位置上,对手也变强了: DropGaussian 在 24 视角的 PSNR 23.28 距 AD-GS 的 23.68 只差 0.40。「越少越赢」是一条趋势,不是一条定律:在离稠密端最近的两格里,它会被摊薄。
收一句:三个数据集、五个视角档、三个指标,一共 24 格,AD-GS 全部拿下;但领先的厚度分布不均:结构指标(SSIM)与感知指标(LPIPS)在稀疏端厚、在稠密端薄,PSNR 在 LLFF 的 6 视角上几乎归零。下一章看这些数字在画面上长什么样。
9主结果(二):画面上的差别与从稀疏到稠密的收敛
这一章看十张图。 前八张是逐个场景的定性对照,后两张是随视角数变化的趋势。原文对这十张的统称引用是:图 4 到图 11 展示了三个数据集上各场景的定性结果;图 12 说明随输入视角数增加,AD-GS 一致优于 3DGS、并更快收敛到稠密视角 3DGS 的水平;图 13 展示 AD-GS 在稀疏与稠密视角下的更优重建[§4.3, p6–p8]。
原文还给了一段总结性的判词,可以作为这一章的总纲:AD-GS 能恢复其他方法倾向于过度平滑或整个漏掉的细尺度纹理与细节结构;它保持更锐利的物体边界与更好的几何保真度,在边缘与不连续丰富的场景里尤其明显;此外 AD-GS 更有效地压住 floaters 与噪声伪影,重建出更好、更平滑也更真实的结果[§4.3, p7]。
十张图按数据集分四节,每节末尾给一句「本节这三张合起来说明什么」。
9.1 两处开场对照:24 视角的细节与 3 视角的背景(图 4-1、图 5-1)
这两张是定性部分的门面:一张是视角最多的场景(Mip-NeRF360/Garden/24 视角),一张是视角最少的场景(LLFF/T-Rex/3 视角)。
Qualitative examples on the Mip-NeRF360 dataset (Garden scene) with 24 input views. AD-GS reconstructs the videocamera and the texture in the background better than the other models.]。②读法:先找「摄像机」这个物体:它是一个有清晰几何边界的目标,用来验「结构对不对」;再看它后面的背景纹理:那是一块高频区域,用来验「细节有没有被抹平」。这张图的定位是「稠密端也不退化」:24 视角已经是本篇最不占优势的一档(第 8 章表 3-1 里领先最薄),如果这一档画面上仍能看出差别,「不退化」那句话才算有证据。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 4, p5 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
另一处对照在稀疏端。 同一批定性材料里,视角最少的那个场景更能显出差距。
…In particular, the 3DGS reconstruction is noisy, while CoR-GS suffers from excessive smoothing.]。②读法:这张图是把第 2 章那张对照表的两条下场摆在一起看: 3DGS 那一格要看噪点(无约束的代价),CoR-GS 那一格要看细节被抹掉(过度平滑的代价),本篇那一格要看两者是否都没有。一句话读法:它是「既不噪声也不糊」这个主张唯一的一张正面证据。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 5, p5 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
这两张并排,把本篇的定位讲全了:图 4-1 证明在它最不吃香的档位上画面仍不输,图 5-1 证明在它最吃香的档位上两种典型失败都被避开。这也是第 1 章图 1-1 那两格的放大版:图 1-1 是 teaser,这两张是分别在稠密端与稀疏端把同一件事又做了一遍。
9.2 三张跨数据集的对照:结构、细部、与「橙色伪影」(图 6-1、图 7-1、图 8-1)
这一节三张各自盯一个目标:结构、边缘、伪影。 顺序也是从大到小:先看整座建筑,再看一条窗框,最后看一块颜色不对的地方。
AD-GS reconstructs the structure with finer details and surfaces better than the other models.]。②读法:这张图上下两格是两个不同场景,不是同一场景的两个视角:上半 Barn 是户外建筑(看屋顶桁架这类重复细结构),下半 Church 是室内大空间(看墙面与地面的表面平整度)。读法是「一格验一类」:Barn 看细节密度够不够,Church 看表面有没有起噪。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 6, p6 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
上一张看的是整座建筑,这一张看的是窗。 场景换到 LLFF 的 Horns,视角仍是 3 个。
The AD-GS better reconstructs the window and the details of the fixture behind it.]。②读法:盯「窗框」这条边缘与本篇那条深度正则的关系:第 7 章式 (7) 的第一项正是在图像边缘处放行深度跳变,窗框恰好是一条强边缘。这张图可以当作式 (7) 那个 exp(−‖∇v‖₁) 开关的画面证据:窗框该锐利就必须锐利,窗后的装置该有深度层次就必须有层次。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 7, p6 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
第三张回到 Mip-NeRF360,这一处要看的是颜色而不是形状。
The orange colored artifacts in other models can be seen as floater artifacts in other models.]。②读法:这张图的看点不在「谁更清晰」,而在「哪里出现了不属于这个场景的颜色」:图注明写「橙色伪影=floater」,也就是说这张图是把第 4 章那条抽象机制(floaters)着色出来的。读法是先扫橙色,再比对同类区域。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 8, p6 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
这一节三张的分工很清楚:图 6-1 给结构,图 7-1 给边缘,图 8-1 给伪影。三张合起来,正好覆盖第 1 章列的三类毛病(几何不准、细节丢失、floaters)里的两类与一手证据。
9.3 三张细部对照:鬼影、长凳与灯罩(图 9-1、图 10-1、图 11-1)
这一节三张都对着一个具体物件,看点比上一节小得多。
…the other models suffer from ghosting artifacts.]。②读法:这张图的对手失败模式与前面几张不同:不是噪声、不是过度平滑,而是鬼影(同一物体出现重影)。鬼影的成因与 floaters 不同:它更像是深度排序或几何错位: 所以这张图可以用来把「本篇压住了不止一种伪影」这层意思分开来说。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 9, p7 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
上一张里对手输在鬼影,这一张看的是长凳的腿。
AD-GS replicates the geometry of the bench accurately.]。②读法:盯「长凳」的平面与它的腿:这是一处同时含大平面与小支杆的目标:大平面考验深度图会不会塌(式 (7) 第二项管的),小支杆考验细节会不会被抹掉(第一项管的一体两面)。一张目标同时压住两条约束,这是本图的可看点。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 10, p7 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
这一节最后一张回到 Horns,但视角从 3 个加到 6 个。
AD-GS reconstructs the shape of the light fixture better than the other models.]。②读法:这张图与图 7-1 是同一场景的两个视角档(Horns,3 视角 vs 6 视角) 并排读能看出「同一场景多给三个视角之后,对手是否追上来」。这张图本身不看形状好不好,看的是「6 视角这个中间档上本篇还有没有优势」,这一点与第 8 章表 2-1 里 6 视角 PSNR 只领先 0.02 dB 那条读数正好配成一对。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 11, p7 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
这一节三张都是「细部」:鬼影(图 9-1)、长凳(图 10-1)、灯罩(图 11-1)。与 9.2 节那三张相比,这一节的看点更小、更局部:原文用它们来支撑的也正是「细尺度纹理与细节结构」那句判词。
9.4 趋势:从稀疏端爬向稠密端(图 12-1、图 13-1)
前八张是「点」,这两张是「线」。
Note that different scenes have different numbers of dense input views.]。②读法:横轴是输入视角数,纵轴是 SSIM,两条线分别属于 AD-GS 与 3DGS:要看三件事:① 两条线是否始终不交叉(若交叉,说明在某个档位上本篇会输);② 两条线的间距随横轴怎么变(间距收窄=优势被摊薄,这正是第 8 章那几处「贴平」的图形版);③ 两条线在右端是否汇到一起(图注原话「收敛到稠密 3DGS 的表现」)。最后那句注意事项也很关键:不同场景的稠密视角数不同 ⇒ 横轴右端不是同一个数,读图时不能把右端点当作同一个条件。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 12, p7 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
原文对这张图的判词分四句[§4.3, p7]:① 随输入视角数增加,AD-GS 一致优于 3DGS,并且更快收敛到稠密视角 3DGS 的表现水平;② 在稠密设置下,AD-GS 相对于 3DGS 没有退化;③ 这说明 AD-GS 具备从稀疏到稠密视角场景的平顺性能收敛;④ 另外原文补了一句图 13 的用途:图 13 展示了 AD-GS 在稀疏与稠密视角场景下都重建得更好。
第 ② 句是这张图最要紧的一句,也是第 1 章图 1-1 那个伏笔的收口。 回顾第 1 章:图 1-1 的子图说明里写了本篇训得更多迭代:那句话先把「干净=少训」这个辩解切开了;而这里第 ② 句补上另一半:「干净」也不是靠「在稠密端让位」换来的。两句合起来才是完整的定位:既不靠少训,也不靠退化。
…as seen in the green boxes.]。②读法:先找绿框(图注点明了它是 3 视角下 3DGS 的显著伪影),然后横向看同一场景在更多视角下这些位置的变化:本篇那一行应当从第一格起就干净,而 3DGS 那一行要等到视角数多起来才追平。这张图是图 12-1 那条曲线的「画面对应物」:图 12-1 给曲线,本图给同一场景在几个视角档上的实际画面。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 13, p8 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
把两张趋势图并起来看,本章的结论是一句话:本篇在稀疏端拿到的优势是「提前到达」,而不是「换个更高的上限」。 图 12-1 说两条线最终汇合,图 13-1 说同一场景的最终质量一致: 这两张图共同给出了本篇的一条隐含边界:它不提高上限,它缩短路程。 这条判断在第 12 章的边界里还要用(尤其配合表 12-1/13-1 里那两行 ADGS (10k) 与 ADGS (30k))。
9.5 这一章收回来的三件事
- 八张定性图覆盖了四种失败模式:噪声(图 5-1 的 3DGS)、过度平滑(图 5-1 的 CoR-GS)、floater(图 8-1 的橙色伪影)、鬼影(图 9-1);
- 本篇的定性主张可以拆成两句:稀疏端「既不噪声也不糊」(图 5-1),稠密端「不退化」(图 4-1、图 8-1);
- 两张趋势图给出的落点是「更快」,不是「更高」:收敛到同一条线上,只是到得更早。这条判断把本章与第 8 章那几处「贴平」连成了一个解释。
10消融:交替本身值多少
这一章回答一个问题:把「交替」拆掉之后,掉多少? 原文的做法很干净:禁用框架里的某一个组件,其余不动。原文先交代了被拆的到底是哪两件事:我们的 AD-GS 管道同时使用「交替致密化(Alt-Dfn)」与「交替损失(Alt-Loss)」;所谓交替损失,指的是我们在不同阶段用不同的损失[§4.4, p8]。
10.1 主消融:四行(表 4-1)
表 4 只报 SSIM,三个列是 LLFF 的 3 视角、9 视角与 Mip-NeRF360 的 12 视角[表 4, p8]:
| 模型 / SSIM ↑ | LLFF 3 views | LLFF 9 views | Mip-NeRF360 12 views |
|---|---|---|---|
| Ours (AD-GS) | 0.699 | 0.830 | 0.593 |
| No Alt Dfn.(A) | 0.688 | 0.803 | 0.568 |
| No Alt Loss(B) | 0.644 | 0.796 | 0.542 |
| No Alt Dfn. + Comb. Loss(C) | 0.671 | 0.799 | 0.566 |
三行变体的定义要照着原文的意思拆[§4.4, p8]:A 是「禁用交替致密化」;B 是「保留交替致密化、但去掉交替损失」;C 是「全程只用一个组合损失、不做交替致密化」。原文对 C 的补充说明最具体:我们只用组合损失 L_ds 贯穿整个训练、不做交替致密化[§4.4, p8](这里的 L_ds 是原文行文里对那套组合损失的指代)。
把三行各自相对 Ours 的落差算出来:
| 变体 | LLFF 3v 落差 | LLFF 9v 落差 | M360 12v 落差 |
|---|---|---|---|
| A(去交替致密化) | −0.011 | −0.027 | −0.025 |
| B(去交替损失) | −0.055 | −0.034 | −0.051 |
| C(去交替 + 全程组合损失) | −0.028 | −0.031 | −0.027 |
这张落差表给出了本章第一个结论,而且它与直觉相反:在三个列上落差最大的都是 B:去掉「交替损失」比去掉「交替致密化」掉得更多(LLFF 3v:0.055 对 0.011,是 5 倍;M360 12v:0.051 对 0.025,是 2 倍)。换句话说:那两条几何正则(第 7 章)在账面比那套节奏(第 5 章)更值钱。 原文对 B 的判词是:保留交替致密化但去掉交替损失,SSIM 更弱:确认了正则在稀疏视角学习里稳定几何的作用[§4.4, p8]。
A 那一行有一处值得圈出来:它在 LLFF 3 视角上落差最小(−0.011),到了 9 视角却变成 −0.027(与 E 并列最重)。3 视角上「不交替致密化」几乎不掉分,9 视角上掉得很明显:这条与「视角越少提升越大」(第 8 章)方向一致:交替致密化管的是视角变多之后的那部分收益;视角太少时,谁都还没长出多少高斯,这段节奏也就没那么关键。
C 与 B 的对比也很干净:C(0.671)在 LLFF 3 视角上好于 B(0.644)但低于 Ours(0.699)。两者都掉了分,但掉的机制不同:B 是根本没有正则,C 是正则一直在。原文对 C 的判词是:这导致过度的正则,妨碍了模型恢复细节的能力,凸显了相位特定损失调度的必要性[§4.4, p8]。这句判词把「间歇」这个设计的必要性说全了:正则太多会糊,正则没有会噪,只有挂在对的时候才对。
10.2 扩展消融:把两项正则各自再拆开(表 7-1)
表 7 是表 4 的延长版:前三行(Ours/A/B/C)与表 4 的数值逐格相同,后面再加三行,把第 7 章那两项正则逐项拆掉[表 7, p11]:
| 模型 / SSIM ↑ | LLFF 3 views | LLFF 9 views | Mip-NeRF360 12 views |
|---|---|---|---|
| Ours (AD-GS) | 0.699 | 0.830 | 0.593 |
| No Alt Dfn.(A) | 0.688 | 0.803 | 0.568 |
| No Alt Loss(B) | 0.644 | 0.796 | 0.542 |
| No Alt Dfn. + Comb. Loss(C) | 0.671 | 0.799 | 0.566 |
| w/o Pseudo-View Consistency Loss(D) | 0.658 | 0.799 | 0.549 |
| w/o Edge-Aware Depth Smoothness Loss(E) | 0.678 | 0.803 | 0.567 |
| w/o Edge-Aware Depth Smoothness Loss + w/o Depth Range Loss(F) | 0.672 | 0.800 | 0.560 |
三行新变体的定义[附 C.1, p11]:D 从式 (9) 里去掉伪视角一致性损失;E 从式 (7) 里去掉边缘感知深度平滑损失、但保留范围项(range loss);F 在式 (7) 里把范围项与边缘感知深度平滑项一起去掉。
同样算落差:
| 变体 | LLFF 3v | LLFF 9v | M360 12v | 三项里的名次(按 LLFF 3v) |
|---|---|---|---|---|
| D(去伪视角一致性) | −0.041 | −0.031 | −0.044 | 第 2 重 |
| E(去深度平滑、留范围项) | −0.021 | −0.027 | −0.026 | 最轻 |
| F(深度平滑与范围项一起去) | −0.027 | −0.030 | −0.033 | 中 |
这张表解决了三件事:
第一,伪视角一致性是三项正则里最值钱的一项(D:−0.041),而且它比整条边缘感知深度平滑还值钱(E:−0.021,几乎只有 D 的一半)。这条与第 6 章的叙述对得上:原文对 L_pseudo 的评价是「以平滑为机制」:它听起来像一条弱的正则,账面上却是最重的。它也是唯一一项「用到第二个模型」的损失:所以它同时解释了第 11 章那笔翻倍的显存账:贵的那一项,也是最有用的那一项。
第二,范围项确实在干活(E −0.021 → F −0.027):把范围项也拿掉之后,落差从 0.021 涨到 0.027(LLFF 3v),三个列上都是同一个方向。原文对 F 的判词是:把范围项与边缘感知深度平滑项一起去掉之后,由于深度不稳定,性能更差[附 C.1, p11]。但幅度要看清楚:两项一起去(F,−0.027)并不等于两项单独落差之和(0.021+ 若干):说明两者在防的是同一类失败(深度不稳)的两个侧面,去掉任一侧都会触发,去掉两侧并不会叠两次。
第三,有一处巧合要记下:E 在 LLFF 9 视角上的读数(0.803)与 A 完全相同。两个完全不同的改动(去深度平滑 / 去交替致密化)落在同一个数上: 这提醒读者别把单列读数当成唯一的排序依据;消融看的是三个列合起来的模式,不是某一格的大小。
10.3 阶段长度敏感性:把节奏拉长会怎样(表 8-1)
这一节直接回答第 5 章那个「段长就是两次致密化之间的间隔」的悬念。 原文的实验设计是:评估改变每个交替相位的长度会怎样影响表现[附 C.2, p11]。读数只有一列(LLFF 3 视角的 SSIM):
| 相位长度(迭代) | SSIM ↑(LLFF 3-view) | 相对 100 的落差 |
|---|---|---|
| 100(本篇取值) | 0.699 | — |
| 300 | 0.691 | −0.008 |
| 500 | 0.689 | −0.010 |
| 1000 | 0.688 | −0.011 |
原文的判词是:结果表明更长的相位会因不受控的高斯增长而轻微降低质量[附 C.2, p11]。这条判词把机制说清了:相位越长 ⇒ 高致密化段持续得越久 ⇒ 那一段里没有任何几何约束在管,高斯就越多、越失控:这正是第 4 章那条因果链在「时间尺度」上的版本。
这条数据里有一处值得单独算一笔的对照:把相位从 100 拉到 1000(10 倍)造成的落差是 0.011,而把交替致密化整个去掉(表 4 的 A 行)在 LLFF 3 视角上的落差也是 0.011。 两者数值相同,但含义不同:前者是「节奏变慢」,后者是「节奏取消」:合起来说明在这条曲线上,1000 已经接近「等于没交替」的位置了。这条也是 10.1 节那个「A 在 3 视角上几乎不掉分」的另一面:节奏的关键不在于切得多细,而在于切得足够勤。
还有一处要照录的饱和现象:500 → 1000 只差 0.001,也就是从 500 起曲线就平了。所以「越短越好」这句话在本篇数据上只在 100–300 这一段成立得很明显(−0.008),再往下拉收益就没了。表 5 取 NL = NH = 100 是这条曲线的左端点,而不是一个凹点。
10.4 消融的定性证据(图 14-1、图 15-1)
表 4 与表 7 是数字,这两张图是它们对应的画面。
Qualitative comparisons under different ablation settings.],真正的信息在两格的子图说明里:(a)「消融 A:AD-GS 去掉交替致密化后挣扎于学习更细的细节,反而预测出一个更平滑的表示」;(b)「消融 B:AD-GS 去掉交替损失后导致深度图噪声大、物体结构差」[Fig. 14 子图说明, p9]。②读法:这张图的价值在于它对上了表 4 的两行落差,而且两格的失败模式不同: (a) 对应 A 行,看得出变糊(去掉交替致密化 ⇒ 细节学不出来);(b) 对应 B 行,看得出起噪(去掉正则 ⇒ 深度图噪声大)。一句话读法:把这一张的两格与表 4 的 A、B 两行对上,就能把「糊」与「噪」这两种失败分别归因。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 14, p9 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
这两格与第 9 章图 5-1 构成一组三方的对照:图 5-1 里「3DGS 噪声」与「CoR-GS 过度平滑」是两个对手的失败;图 14-1 里「A 变糊」与「B 起噪」是本篇自己拆掉组件之后的失败。两边的失败模式正好一一对应:这条对应关系本身就是本篇设计意图的反证:它把对手犯的两种错,分别装进了自己框架的两个组件里。
Ablation C: AD-GS with full combined loss but no alternating densification is unable to learn fine details and predicts a smooth output.]。②读法:这张图要单独看,因为它与 (a) 格的现象相似(都是变平滑)但成因不同:(a) 格是根本没有正则的 A,本图是正则一直在的 C。两者都变平滑,说明「平滑」既可以由「没有约束」造成、也可以由「约束太多」造成:这正是 10.1 节 C 行那句判词(过度正则)的画面版。读法是:与 (a) 格并排比较,看它能保住多少细节。
来源:AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting, Fig. 15, p9 · © 2025 the owner/author(s)(非 CC,逐图署名引用)· 原样引用,未修改
图 15-1 是消融部分最要紧的一张,因为它把「平滑」这个症状从「约束不足」里解绑了。 第 6 章说伪视角一致性「以平滑为机制」,第 7 章说边缘感知深度平滑是「抹灰」:两条约束都指向「变平滑」这个方向。那么这就会引出一个自然的疑问:约束太多会不会把画面抹平? 图 15-1(配合表 4 的 C 行)给出的答案是会:全程施加组合损失、不做交替 ⇒ 学不到细节、输出平滑[Fig. 15 图注, p9;§4.4, p8]。「交替」这个设计的另一半含义正在这里:它不只是让正则「什么时候上」,也是让正则「什么时候下」。
10.5 消融这一章的三条结论
- 交替损失(两条正则)比交替致密化更值钱:B 行的落差(−0.055/−0.034/−0.051)三个列上都大于 A 行(−0.011/−0.027/−0.025);
- 三项正则的排序是「伪视角一致性 > 范围项 > 深度平滑项」:D(−0.041)> F 与 E 的差(−0.006)> E(−0.021);贵的那个也最有用;
- 相位长度越长越差,但收益在 300 之前就用完(100→300 掉 0.008,500→1000 只掉 0.001) 100 是曲线的左端,不是最优点。
11数据集、超参与两笔实操账
这一章把附录里「读者要照着复现」的那部分集中过来:全部超参(表 5-1)、两笔实操账(表 6-1)、以及本篇特有的两套补充指标口径(Depth SROCC 与视频指标)。
11.1 表 5-1:全部超参,一张表装完
原文对这张表的说明写得比表本身还重要:全部取值跨数据集与场景固定[表 5, p10];附录里再补一句:超参在所有数据集与场景上保持不变,不做 per-scene 调参[附 B.3, p10]。这意味着这张表可以直接照抄:不存在「某场景需要另一组参数」的附录或脚注。
| 组件 | 取值 / 说明 | 译注 |
|---|---|---|
| Warm-up phase | 1500 iterations | 第 6 章的 NW |
| Total training iterations | 10,000 | 全篇总迭代数 |
| Alternation phase lengths | NL = 100, NH = 100 | 低/高致密化段各 100 迭代(第 10.3 节的敏感性曲线左端) |
| Low densification thresholds | εL = 0.1, τL = 0.0005 | 低段:剪枝阈值(抬 20×)、梯度阈值(紧 2.5×) |
| High densification thresholds | ε_α = 0.005, τ_pos = 0.0002 | 高段:即常规 3DGS 的那两个阈值 |
| Combined loss weights | λ₁ = 1, λ₂ = 1, λ₃ = 1 | 式 (9) 三项等权(量级配平) |
| Edge-aware smoothness loss | λr = 0.001, ω₁ = 0.01, ω₂ = 0.05 | 式 (7) 范围项权重;式 (8) 两个平滑项的配比 |
| GPU used | NVIDIA RTX 3090 (24GB) | 全篇实验的单一硬件 |
| Baselines | Official codebases and configs | 四个基线一律用官方代码与配置 |
这张表里有两处「值」值得单独记:
第一,GPU 是单一型号(RTX 3090/24GB)。这条把表 6 的显存读数锁死在一台机器上: 89% 这个数是「24 GB 里的 89%」(约 21.4 GB),第 10 章末尾那句「BFS 需要超过 24 GB」的同类口径在篇目 60 里出现过,本篇用的是同一种表达方式:报的是占比,不是绝对值。
第二,Baselines 那一行写的是「官方代码与配置」。 这一行看着像套话,但它是留出空间不自我加分的证据:四个基线没有被重新调参,本篇也没有(no tuning is performed per scene)[附 B.3, p10]。换句话说,表 1–3 的对照是「同一套调参纪律下的对照」。
11.2 表 6-1:显存与训练时长,以及一笔推理侧的账
| 方法(LLFF 3-view) | 峰值显存占用 | 训练时长(分钟) |
|---|---|---|
| AD-GS (Ours) | 89% | ∼15 |
| 3DGS | 72% | ∼10 |
| FSGS | 78% | ∼12 |
| CoR-GS | 88% | ∼15 |
| DropGaussian | 75% | ∼10 |
这张表最好看的一处是「AD-GS 与 CoR-GS 几乎贴着」:显存 89% 对 88%,时长都是 ∼15 分钟。这不是巧合:第 6 章说过,两个模型并行训练这件事是从 CoR-GS 借来的(原文在 §3.3 那个括号里标了 [Zhang et al. 2024b],即 CoR-GS)[§3.3, p4]。所以这笔开销不是本篇新加的,它是「伪视角一致性」这条路线的入场费。
换成两种口径把账算清:
| 对照 | 显存(百分点) | 训练时长 |
|---|---|---|
| AD-GS vs 3DGS | +17 pp(89 − 72) | ×1.5(15 对 10) |
| AD-GS vs CoR-GS | +1 pp(89 − 88) | ×1.0(同为 ∼15) |
| AD-GS vs FSGS | +11 pp | ×1.25(15 对 12) |
关键在于第三行这件事:本篇相对 3DGS 多付 17 个百分点的显存与 50% 的时长,但相对同样训两个模型的 CoR-GS 几乎不额外花钱。 原文的判词也是这个意思:训练时长的开销是适中的,由质量的提升来证明其合理性;AD-GS 每场景约 15 分钟,与 CoR-GS 相近,略长于 3DGS 与 FSGS[附 B.4, p10]。
然后是本章最有分量的一句话,它把上面那笔开销的性质彻底说清了:在 AD-GS 的推理阶段只使用单个模型,因此运行时延与 3DGS 相似[附 B.4, p10]。这句话与第 6 章那句「评测时任选一个模型」是同一件事的两种说法,合起来得到本条账的结论:
11.3 两套补充指标的口径:Depth SROCC 与视频指标
表 9–18 里有一半的列是主表里没有的,所以口径要在这里一次说清。原文在附录 B.2 里给了两段定义[附 B.2, p10]:
| 指标 | 怎么算 | 伪真值从哪来 | 它在量什么 |
|---|---|---|---|
| Depth SROCC | 渲染深度与伪真值深度之间的 Spearman 秩相关系数:原文的等价说法是:它计算两个深度秩之间的 Pearson 线性相关系数(PLCC) | 由于没有真值深度,我们训练一个稠密输入视角的 vanilla 3DGS 模型,把它在测试视角上渲染出的深度当作伪真值 | 场景中物体的相对排序(不看绝对值,只看谁在前谁在后) |
| 视频指标(Video SSIM/PSNR/LPIPS) | 逐帧算渲染视频对伪真值视频的三个指标 | 同样的稠密 3DGS 模型渲染出的伪真值视频 | 整体视觉一致性与保真度 |
轨迹也是规定好的:LLFF 的每个场景渲染螺旋(spiral)轨迹、Mip-NeRF360 的每个场景渲染椭圆(ellipse)轨迹,都从给定的 COLMAP 位姿出发[附 B.2, p10;另见附 A, p10]。
这两套口径各有一个「要留神的地方」,都值得写在正文里:
第一,Depth SROCC 是「排序指标」,不是「精度指标」。 原文的定义里那句「评估场景中物体的相对排序」是关键[附 B.2, p10]:一个把整张深度图整体缩放过的模型,SROCC 可以照样很高。 这一点与第 7 章式 (7) 第二项(深度范围项)的取向恰好形成一对:范围项管的正是「深度图别塌成一堵墙」,它保的是动态范围,而 SROCC 衡量的则更进一步:连「谁前谁后」也一起保。 两个指标在表 12–13 里同向变好,不是偶然。
第二,伪真值来自「同门的另一个模型」。 伪真值深度与伪真值视频都出自一个用稠密输入视角训好的 vanilla 3DGS[附 B.2, p10]。这条对读数的影响必须点明:当被测方法本身就是一个稀疏输入的 3DGS 变体时,这个对照是「稀疏 3DGS 对稠密 3DGS」;但当被测方法已经赢了 3DGS 时,这个尺子的上限就是「稠密 3DGS 的水平」。 它解释了第 9 章图 12-1 那句话的读数含义: 「收敛到稠密 3DGS 的水平」既是目标,也是这把尺子的天花板。
11.4 这一章收回来的两件事
- 超参是一张可以照抄的表(表 5-1),而且全部跨数据集跨场景固定、不做 per-scene 调参:这条口径同时也是第 12 章边界第 10 条的一半(个别场景上可能不是最优);
- 两笔实操账的方向是反的:训练侧贵(显存 +17 pp/时长 ×1.5),推理侧与 3DGS 相同(只用单个模型) 贵的那一项正则(伪视角一致性,表 7 里的 D 行)也是最有用的那一项(第 10.2 节)。
12补充定量、边界与反例
这一章把附录 D、E 的十张表并进来,末尾独立成节给出边界。 这些表是同构的补充定量,主文与附录都没有逐表引用(原文只用统称),所以它们的读法要自己给:表 9–13 是「按数据集 × 视角数」的视频指标与深度指标表,表 14–18 是「逐场景」的全指标表。
12.1 视频指标与深度 SROCC(表 9-1~13-1)
这五张表的列完全一致:Method / Video SSIM / Video PSNR / Video LPIPS / SROCC / Model Size (MB)[表 9–13, p12]。把最要紧的几列抽出来排成一张对照:
| 表 | 数据集/档 | 指标 | 3DGS | FSGS | CoR-GS | DropGaussian | ADGS |
|---|---|---|---|---|---|---|---|
| 表 9 | LLFF 3v | Video SSIM | 0.650 | 0.675 | 0.701 | 0.699 | 0.728 |
| 表 9 | LLFF 3v | SROCC | 0.745 | 0.796 | 0.807 | 0.780 | 0.812 |
| 表 9 | LLFF 3v | Model Size | 62.75 | 49.32 | 22.18 | 22.89 | 42.01 |
| 表 10 | LLFF 6v | Video SSIM | 0.810 | 0.830 | 0.838 | 0.843 | 0.852 |
| 表 10 | LLFF 6v | SROCC | 0.880 | 0.837 | 0.888 | 0.878 | 0.889 |
| 表 10 | LLFF 6v | Model Size | 114.44 | 62.71 | 50.54 | 51.07 | 59.16 |
| 表 11 | LLFF 9v | Video SSIM | 0.858 | 0.875 | 0.878 | 0.884 | 0.891 |
| 表 11 | LLFF 9v | SROCC | 0.892 | 0.847 | 0.906 | 0.905 | 0.916 |
| 表 11 | LLFF 9v | Model Size | 185.58 | 109.02 | 108.49 | 107.35 | 89.98 |
| 表 12 | M360 12v | Video SSIM | 0.528 | 0.585 | 0.631 | 0.625 | 0.646(10k) |
| 表 12 | M360 12v | SROCC | 0.537 | 0.788 | 0.692 | 0.641 | 0.806(30k) |
| 表 12 | M360 12v | Model Size | 326.12 | 101.49 | 101.84 | 101.13 | 109.62(10k) |
| 表 13 | M360 24v | Video SSIM | 0.741 | 0.769 | 0.788 | 0.794 | 0.814(10k) |
| 表 13 | M360 24v | SROCC | 0.800 | 0.893 | 0.814 | 0.825 | 0.907(30k) |
| 表 13 | M360 24v | Model Size | 595.29 | 316.54 | 332.38 | 325.96 | 206.05(30k) |
第一笔账:Depth SROCC 是这五张表里差距最大的一列,而且差距出现在 3DGS 那一格。 3DGS 在 Mip-NeRF360 12 视角上的 SROCC 只有 0.537,而 ADGS 是 0.794(10k)/0.806(30k) 差 0.27。同一张表上 3DGS 的 Video SSIM 是 0.528、ADGS 是 0.646(差 0.118)。两个差距的比值说明一件事:3DGS 在稀疏输入下的深度排序问题,比它的画质问题更严重。 原文对这一列的判词是:我们的模型在 Depth SROCC 上一致优于所有基线,说明它在多样场景上与伪真值的深度排序相关性更好;这可能归因于我们的交替致密化策略[附 D, p11]。
第二笔账:模型体积这一列,本篇只在稠密端才是最小的。 逐档看:
| 档 | ADGS 体积 | 最小的方法 | 本篇排名 |
|---|---|---|---|
| LLFF 3v | 42.01 MB | CoR-GS 22.18 | 第 4(大于三家对手) |
| LLFF 6v | 59.16 MB | CoR-GS 50.54 | 第 3(大于 CoR-GS 与 DropGaussian) |
| LLFF 9v | 89.98 MB | ADGS | 第 1 |
| M360 12v | 109.62 MB | FSGS 101.49 | 第 3 |
| M360 24v | 206.05 MB(30k) | ADGS (30k) | 第 1 |
原文对这个现象的判词有两半,正好把上面这张表说全:像 CoR-GS 这样倾向于强平滑、以及 DropGaussian 这样在训练中随机移除高斯的方法,会得到更小的模型体积,尤其在输入视角数有限时(例如 LLFF 的 3 或 6 视角);这也限制了它们捕捉更精细细节的能力,这在 Video SSIM 的比较里很明显;然而当视角数增加(例如 LLFF 的 9 视角或 Mip-NeRF360 的 24 视角),我们的方法 AD-GS 取得所有方法里最小的模型体积,同时以视频指标衡量仍提供好的重建质量:这说明 AD-GS 随监督增加扩展得更有效[附 D, p11]。
这段话里藏着一个值得自己推一步的对照:在 3 视角上,AD-GS 用了 42.01 MB 换来最高的 Video SSIM(0.728),而 CoR-GS 只用 22.18 MB 但只有 0.701。 用接近两倍的体积换 0.027 的 Video SSIM:这条换算把「稀疏端贵」这件事说成了「稀疏端不得不多用一点容量」。原文的解释就是「它们体积小是因为在压细节」[附 D, p11]:体积小在这里不是优点,它是过度平滑的副作用。
第三笔账,也是本章最值得圈出的一处:Mip-NeRF360 上训得更久的那个版本反而更差。 表 12 与表 13 各有两行 ADGS,分别是 10k(10000 迭代)与 30k(30000 迭代):
| 表 | 指标 | ADGS (10k) | ADGS (30k) | 谁更好 |
|---|---|---|---|---|
| 12(M360 12v) | Video SSIM | 0.646 | 0.632 | 10k |
| 12(M360 12v) | Video PSNR | 20.75 | 20.38 | 10k |
| 12(M360 12v) | Video LPIPS ↓ | 0.343 | 0.344 | 10k |
| 12(M360 12v) | SROCC | 0.794 | 0.806 | 30k |
| 12(M360 12v) | Model Size | 109.62 | 111.75 | 10k(更小) |
| 13(M360 24v) | Video SSIM | 0.814 | 0.807 | 10k |
| 13(M360 24v) | Video PSNR | 25.93 | 25.69 | 10k |
| 13(M360 24v) | Video LPIPS ↓ | 0.198 | 0.196 | 30k |
| 13(M360 24v) | SROCC | 0.906 | 0.907 | 几乎持平 |
| 13(M360 24v) | Model Size | 231.44 | 206.05 | 30k(更小) |
十格里 10k 更好五格、30k 更好三格、持平两格;三个视频指标里前两个(SSIM、PSNR)在两个视角档上都由 10k 拿下。 而表 12 里 ADGS (30k) 的 Video PSNR 20.38 甚至低于 CoR-GS 的 20.48: 这是本篇所有表里唯一一处「ADGS 的某一格输给基线」的记录(主表表 1–3 里没有出现过)。
这处读数与第 10.3 节那张相位长度表是同一件事的两种尺度:相位拉长 10 倍 ⇒ 掉 0.011;总迭代加 3 倍 ⇒ Video SSIM 掉 0.014(0.646 → 0.632)。 原文自己给的机制(不受控的高斯增长[附 C.2, p11])在两个尺度上都成立。表 5 那个「Total training iterations = 10,000」因此不是随手的取值,它是被这条曲线支持的一个选择。
12.2 逐场景定量(表 14-1~18-1)
这五张表是逐场景的全指标展开:表 14–16 各 41 行 × 11 列(LLFF 的 3/6/9 视角,8 个场景 + 平均);表 17–18 各 49 行 × 10 列(Mip-NeRF360 的 12/24 视角,7 个场景 + 平均)[表 14–18, p13–p17]。每张表内按场景分段。它们的用法只有一个:看平均值的胜出是不是靠个别场景撑起来的。
先看平均与逐场景的一致性(表 14 的 LLFF 3 视角,SSIM):
| 场景 | fern | flower | fortress | horns | leaves | orchids | room | trex | 平均 |
|---|---|---|---|---|---|---|---|---|---|
| 3DGS | 0.652 | 0.589 | 0.647 | 0.599 | 0.514 | 0.421 | 0.847 | 0.791 | 0.632 |
| 最强对手 | 0.693(CoR) | 0.646(Drop) | 0.729(CoR) | 0.671(CoR) | 0.547(Drop) | 0.462(Drop) | 0.867(CoR) | 0.819(Drop) | 0.674 |
| ADGS | 0.705 | 0.648 | 0.772 | 0.714 | 0.578 | 0.474 | 0.879 | 0.823 | 0.699 |
SSIM 在 8 个场景上全胜。但换一个指标结果就不同了:同一张表 14 的 PSNR:
| 场景 | 最强对手(PSNR) | ADGS(PSNR) | 结果 |
|---|---|---|---|
| fern | 20.74(CoR-GS) | 20.82 | 胜 |
| flower | 20.28(DropGaussian) | 19.86 | 输 0.42 |
| fortress | 23.03(CoR-GS) | 23.87 | 胜 |
| horns | 19.79(DropGaussian) | 19.79 | 平(同值) |
| leaves | 16.53(FSGS) | 16.64 | 胜 |
| orchids | 15.63(DropGaussian) | 15.45 | 输 0.18(排第 3) |
| room | 21.76(DropGaussian) | 22.39 | 胜 |
| trex | 21.95(DropGaussian) | 21.68 | 输 0.27 |
LLFF 3 视角的 PSNR 上,本篇在 flower/orchids/trex 三个场景上输掉,其中 orchids 掉到第三名。 而平均仍是最高(20.06 对 19.72): 这条对照正是逐场景表的用处:平均值的第一名并不要求每一格都是第一。
同一张表的 LPIPS 则 8 个场景全胜(0.243/0.288/0.207/0.274/0.251/0.304/0.155/0.178,逐格低于所有对手)。所以 LLFF 3 视角这一列上,本篇的「全胜」在 SSIM 与 LPIPS 上成立、在 PSNR 上不成立。
再看 Mip-NeRF360 12 视角(表 17),这里的反例更集中:
| 指标 | 场景 | 最强对手 | ADGS | 结果 |
|---|---|---|---|---|
| SSIM | room | 0.771(CoR-GS) | 0.770 | 输 0.001 |
| SSIM | stump | 0.342(DropGaussian) | 0.318 | 输 0.024 |
| PSNR | bicycle | 19.08(DropGaussian) | 19.04 | 输 0.04 |
| PSNR | room | 21.43(CoR-GS) | 21.42 | 输 0.01 |
| PSNR | stump | 18.51(DropGaussian) | 17.52 | 输 0.99 |
| SROCC | bonsai | 0.801(FSGS) | 0.762 | 输 0.039 |
| SROCC | garden | 0.924(FSGS) | 0.885 | 输 0.039 |
| SROCC | room | 0.822(FSGS) | 0.764 | 输 0.058 |
7 个场景里,ADGS 在 Mip-NeRF360 12 视角上:SSIM 输两格、PSNR 输三格、SROCC 输三格。 其中 stump 的 PSNR 输 0.99 dB 是全部五张表里最大的一处单格落后。而它在 24 视角(表 18)上几乎全胜(SSIM 六胜一平、PSNR 六胜一负、SROCC 七战全胜)。这组对照把「视角越少越吃香」这条趋势又反证了一次:12 视角那一档恰恰是 Mip-NeRF360 上最吃力的位置。
逐场景表还有一个「平均是怎么来的」的用处。 以表 14 的 ADGS 行为例:SSIM 从 leaves 的 0.578 到 room 的 0.879,跨度 0.301;PSNR 从 orchids 的 15.45 到 fortress 的 23.87,跨度 8.42 dB。 这两个跨度都远大于本篇与对手之间的任何差值(SSIM 差 0.025、PSNR 差 0.34)。 原文在附录 E 开头给这张表的定位正是这一点:我们提供 LLFF 与 Mip-NeRF360 两个数据集上所有场景的完整逐场景定量结果[附 E, p11]: 它的作用是让读者看清「场景难度本身的差异远大于方法之间的差异」。
12.3 边界与反例(11 条)
这一节按惯例独立成节。 前三条是作者自陈(原文 §4.5 Limitations),后八条是从各表的读数里读出来的(每一条都给出处)。另有一条口径边界写在这里作为前提:本篇假设相机内外参已知、且全部超参跨数据集固定不做 per-scene 调参[§4.1, p6;附 B.3, p10]:也就是说,它解的是「视角少」,不含「连位姿都不知道」,也不承诺在某个特定场景上调到最好。
作者自陈的三条[§4.5, p8]:
- 要为伪视角一致性同时训练两个 3DGS 模型,这增加了训练期的显存与算力开销。 账面读数是表 6:峰值显存 89%(3DGS 为 72%),训练时长 ∼15 分钟(3DGS 为 ∼10)[表 6, p11]。缓解项:推理只用单个模型,运行时延与 3DGS 相近[附 B.4, p10]: 开销落在训练侧,不落在使用侧。
- 当两个模型遭受相似的伪影时,伪视角一致性损失可能失效。 这是第 6 章那个喻体的下半句:两个学徒在同一处犯同一个错,互相批作业一点用都没有。这条没有数值能测:它是一条机制上的失效条件,也正好解释了为什么本篇需要第二项正则(边缘感知深度平滑,它不依赖第二个模型)来兜底:表 7 里 D 行(去伪视角一致性)的落差(−0.041)之所以最大,说明这项正则平时在做实事;而它一旦失效,能顶上来的只有深度平滑那一项。
- 本篇倾向于在误差已经被错误致密化引入之后再纠正它们。 原文的措辞是「tends to correct for the errors after they have been introduced by incorrect densification」[§4.5, p8]。这条是三条里最要紧的一条,因为它把自己的位置说低了:它不是「预先避免」,而是「出错后纠正」:与第 1 章贡献 2 那个
correct的措辞完全一致。原文给的未来方向也在这条下面:研究几何一致的致密化、或探索先验/学习模型来做自适应致密化[§4.5, p8]。
从各表读数里读出来的八条:
- 它不提高上限,只缩短路程。 第 9 章图 12-1 的原话是「随输入视角数增加,本模型收敛到稠密输入 3DGS 的表现」,图 13-1 的原话是「最终收敛到稠密视角 3DGS 模型的表现」[Fig. 12/13 图注, p7–p8];再叠加表 12/13 里 ADGS (30k) 相对 (10k) 并没有变好(12.1 节那十格)[表 12/13, p12]: 训得更久、给更多视角,最终都汇到同一个水平上。它买的是「更早到」,不是「更高」。
- 稠密端的领先被摊薄到几乎可忽略。 LLFF 6 视角 PSNR 只领先 0.02 dB(23.54 对 23.52)[表 2, p4];Mip-NeRF360 24 视角 LPIPS 只领先 0.004(0.249 对 0.253)[表 3, p5]。并列的两处贴平。
- 「加约束」不等于「感知更好」:三个对手在 Mip-NeRF360 上输给原版 3DGS。 FSGS/CoR-GS/DropGaussian 的 LPIPS 在 12 与 24 视角上分别是 0.411/0.410/0.412 与 0.275/0.272/0.277,全部高于 3DGS 的 0.403/0.253[表 3, p5]。本篇是唯一例外(0.386/0.249),但领先幅度只有 0.017/0.004。 这条与 LLFF 3 视角上 FSGS 的 LPIPS 与 3DGS 完全相同(都是 0.269)[表 2, p4]是同一类现象。
- 逐场景远非全胜。 LLFF 3 视角的 PSNR 在 flower/orchids/trex 三个场景输(orchids 掉到第 3)[表 14, p13];Mip-NeRF360 12 视角的 SSIM 输 room(0.001)与 stump(0.024)、PSNR 输 bicycle/room/stump(stump 输 0.99 dB)、SROCC 输 bonsai/garden/room[表 17, p16];Mip-NeRF360 24 视角的 PSNR 输 bicycle(21.16 对 21.46)[表 18, p17]。平均第一与逐格第一是两件事。
- 模型体积只在稠密端最小。 LLFF 3/6 视角上本篇分别是 42.01/59.16 MB,大于 CoR-GS 的 22.18/50.54 MB[表 9/10, p12];只有 LLFF 9 视角(89.98 MB)与 Mip-NeRF360 24 视角(206.05 MB) 是本篇最小[表 11/13, p12]。原文的解释是:对手体积小是因为在压细节[附 D, p11]:所以这一条这一条并不说明「本篇不够省」,它说明「省与细节在本篇里是同一个旋钮」。
- 训得更久可能更差,而且出现了一处输给基线的记录。 Mip-NeRF360 上 ADGS (10k) 的 Video SSIM 0.646 与 Video PSNR 20.75 都高于 (30k) 的 0.632/20.38[表 12, p12];其中 ADGS (30k) 的 20.38 低于 CoR-GS 的 20.48: 这是本篇全部表格里唯一一处某一格输给基线的读数。 只有 SROCC(0.806 对 0.794)与模型体积(111.75 对 109.62)这两项是 30k 更好。
- 相位长度单调变差,且 10 倍长度的落差与「取消交替致密化」同量级。 100→300→500→1000 的 SSIM 是 0.699→0.691→0.689→0.688[表 8, p11];100 拉到 1000 的落差 0.011,与表 4 里 A 行(去掉交替致密化)在 LLFF 3 视角上的落差 0.011 相同[表 4, p8]。500→1000 只差 0.001 ⇒ 曲线在 500 之后饱和。
- 深度排序这项指标上,本篇在 Mip-NeRF360 12 视角输给 FSGS 三个场景。 bonsai 0.762 对 0.801、garden 0.885 对 0.924、room 0.764 对 0.822[表 17, p16]:虽然平均 SROCC(0.794)仍是最高,且 24 视角(表 18)上七战全胜[表 18, p17]。这条与第 4 条合起来读最有意思:在稀疏端深度排序也会被对手抢走几格,说明「交替致密化利于深度排序」这句话(附 D 的判词)是一条平均意义上的结论,不是逐场景的保证[附 D, p11]。
把 11 条收成一句话:本篇是一套「在训练过程里做节奏控制」的方法:它的强项在稀疏端、在结构指标、在深度排序;它的账单在训练侧(显存与时长)、在稀疏端的模型体积;它买到的是「更早到」,不是「更高」;而它自己承认,做的是「出错后纠正」而不是「预先避免」。
12.4 这张清单与第 1 章那句判词的关系
回到第 1 章那句话:我们发现一个关键的成因是无引导的致密化[§1, p1];以及贡献 2 里那个措辞:纠正(correct)激进致密化引入的伪影[§1, p1]。
这一章 11 条边界里,有 5 条直接落在这个措辞上:第 3 条(先错后纠)、第 4 条(不提高上限)、第 9 条(训得更久不一定更好)、第 10 条(相位拉长会变差)、第 2 条(一致性在两模型同错时失效)。它们合起来说的是同一件事:本篇的做法不改变致密化会出错这个事实,它改变的是「出错之后还有没有人管」。 而第 5–8 条那四条与机制无关,它们是「任何单一方法都会有边界」这一类:稠密端优势归零、逐场景有短板、体积在稀疏端不占优、对手在个别指标上反超。
这两类边界要分开读:前一类是「这套设计的代价」,后一类是「这篇论文的适用范围」。 前者是读者判断要不要用它的依据,后者是读者判断能不能用它的依据。
13这篇论文的三条贡献
- 交替致密化框架(Alternating Densification):用一个高致密化段来恢复细粒度细节,用一个低致密化段做激进的高斯剪枝以压住伪影[§1, p1]。落地形态:Warm-Up(NW = 1500)之后,NL = 100 与 NH = 100 两个相位来回切,全篇 10000 迭代;低段把不透明度阈值抬高 20 倍、梯度阈值收紧 2.5 倍(第 5、7 章;表 5-1)。这是三条里唯一的骨架,也是「把闸装在稀疏端」那句主张的实体:第 2 章说过,控致密化这条前人路线几乎只在稠密输入端做过[§2.3, p2]。
- 几何约束训练段:用边缘感知深度平滑与伪视角一致性,去纠正激进致密化引入的伪影[§1, p1]。落地形态:式 (7) 的深度平滑(含范围项)+ 式 (6) 的伪视角一致性,只在低致密化段施加,合成式 (9);两项的权重按「量级相当」定,全取 1(第 6、7 章;表 5-1)。它的措辞要记住:原文用
correct而不是avoid: 这条贡献是补丁,不是预防(第 12.4 节)。 - 稀疏输入下的显著提升:更少的 floaters 与更丰富的场景细节重建[§1, p1]。落地形态:三个数据集、五个视角档、三个指标共 24 格全胜(表 1–3);外加视频指标与深度 SROCC 的补充定量(表 9–18);输入视角越少提升越大,且随视角数增加收敛到稠密 3DGS 的水平而不退化(第 8、9、12 章)。
三条里,第 1 条是「改什么」,第 2 条是「补什么」,第 3 条是「赢多少」。 有一处要单独拎出来:第 2 条那条贡献在原文里是被列在贡献列表里的,而它的定语是「纠正(correct)」:这个措辞本身就是作者对自己方法位置的一次定位:他们不主张把致密化做成不会出错,只主张让已经出的错有个去处。 第 12.4 节那 5 条边界,全部长在这个措辞上。
另有一条不属于贡献、但属于本篇地基的判断:致密化在 3DGS 里的角色是「把稀疏点云变成像素级细节重建」,这一点在本篇里没有被改动[§2.3, p2]。本篇改的是它的节奏:什么时候放开、什么时候收紧、收紧的时候挂哪些约束。这条界定了它与其他两条前人路线的分界:补先验那条线改的是损失(第 2.1 节),加约束那条线改的是初始化与几何(第 2.2 节),本篇改的是时间轴上的先后。**
14出处、许可与怎么读这篇
| 项 | 内容 |
|---|---|
| 标题 | AD-GS: Alternating Densification for Sparse-Input 3D Gaussian Splatting |
| 作者 | Gurutva Patle、Nilay Girgaonkar、Nagabhushan Somraj、Rajiv Soundararajan(Indian Institute of Science, Bengaluru;Nilay Girgaonkar 另属 Birla Institute of Technology and Science, Pilani, Hyderabad) |
| 发表 | SIGGRAPH Asia 2025(arXiv 摘要页 Comments 字段印 SIGGRAPH Asia 2025;页眉印 SA Conference Papers '25, December 15–18, 2025, Hong Kong, Hong Kong)· 原文载 ACM Reference Format:ACM Trans. Graph. 1, 1 (September 2025), 19 pages(卷期页是未定稿的占位写法,照录不改)· 19 页(主文 p0–p8,附录与表 9–18 在 p10–p17,参考文献与附录交错排) |
| 标识 | DOI 10.1145/3757377.3763993(另见 arXiv DOI 10.48550/arXiv.2509.11003)· arXiv:2509.11003v2 [cs.GR](2025-09-22 修订;v1 为 2025-09-13) |
| 关键词 | Rendering、novel view synthesis、sparse input 3D Gaussian splatting(原文 Keywords)· CCS:Rendering、Computer vision、Volumetric models |
| 文字层规模 | 68,069 字符 | 编号式 (1)–(9) | 图 15 张 | 表 18 张 | 无算法伪码(第 5 章那则训练循环是本站依 §3.3 与表 5 自拟) |
| 授权 | 非 CC(arXiv 摘要页 License 字段为 nonexclusive-distrib/1.0;PDF 首页另印 © 2025 Copyright held by the owner/author(s). Publication rights licensed to ACM. 与 This is the author's version of the work. … Not for redistribution.)⇒ 可原样引用,不站内托管原文 PDF。落点两件(index.html + thumb.webp),卡片 chip 带 warn,图件原样零加工引用 + 逐图署名 + 残留风险标注 |
| 使用说明 | 正文只对原文作简短引用;摘要为英文原样引用并标页码;33 件图元全部原样零加工引用(未裁切拼接、未加标注、未施滤镜),逐图给出「图号 + 页码 + 出处 + 未修改」四字段署名 · 项目页:https://gurutvapatle.github.io/publications/2025/ADGS.html |