篇目 59 · 单篇论文精读

换掉高斯核:让网络自己学出泼溅的形状

3DGS 一系把画质与效率的账全都算在核的形状上,可这个形状一直是人写的:广义指数、Student’s t、可变形 Beta,表达式一改就换一种核,但表达力被式子封顶。想从数据里学,又撞上另一堵墙:通用 3D 基元沿视线的线积分没有闭式解,绕不过去就只能做「切片」近似,或者把基元限制成平面、限制成某类网络。本篇换了一个位置下手:不算线积分,直接学积分的结果,也就是把投影之后的 2D 核本身当成要学的东西。基元 = 一个包围椭球(管位置/朝向/尺度)+ 一个 5 维隐码 z3D(管形状);投影由一个全局 MLP Φproj 完成,它除了吃 z3D,还额外吃相机空间下的椭球中心 μcam3D、尺度 s、旋转 Rcam 三样;解码由另一个全局 MLP Φdec 完成,输入只有马氏距离的平方 r2 与投影后的隐码 z2D,输出一个不透明度,也就是一条隐式的 1D 剖面。输出被限定为径向对称,理由不是省事,而是一条拓扑结论:任意 3D 视角映到 2D 坐标架的映射存在不连续(hairy ball),作者试过平滑手法,结果动画里核会绕某些视线突转。渲染时把这条剖面在 k 个 r 采样点上预先求值、其余靠插值,把「基元内像素数」与「网络调用数」解耦。成套东西也直接搬到平面基元。账面:4 个基准 21 个场景,3D/2D 两侧全部画质指标最好或次好;约 100MB 预算里用最少的原语数拿到最高 PSNR,且内存不随 k 变。代价照写:帧率明显低于同代方法(同档 42 对 178 fps),作者的耗时分解是 Φproj : Φdec : 光栅化 ≈ 9 : 2 : 1;另有三处限定跟着写:没做抗锯齿、没用位置/频率编码、以及颜色视角相关与几何视角相关不等价。

Huakeng Ding、Zhanpeng Liu、Fan Pei、Kun Zhou、Hongzhi Wu(浙江大学 CAD&CG 国家重点实验室) 项目页 optkernel.github.io arXiv:2605.25426v1 · 10 页 · 612×792 pt(Letter)· 双栏 · 版心 x 51.4–561.7 原文编号式 (1)–(8) 共 8 条 · 原文图 8 张 · 原文表 5 张 · 许可:CC BY-NC-ND 4.0(依据 PDF 权利块 · 站内托管原文 PDF)
14 章一级章节(按拆解点切)
8 式原文编号式 (1)–(8) 全落块
8 张配图(原文 8 / 自绘 0)
12 条边界与反例(独立成节)
图-段配对表 8 张图 · 全部 E 类原样引用 · 自绘 0
图元角色档归属支撑的论断讲解层次状态
图 1-1E第 1 章学出来的核随视角变、且随场景自适应(teaser 六格)①②图注 +③④正文原样引用 · 未修改
图 2-1E第 2 章管线四段:椭球投影 → 神经投影 → 核解码 → 采样加速①②图注 +③④正文原样引用 · 未修改
图 3-1E第 9 章我们的核随视角变,前人的核不随视角变①②图注 +③④正文原样引用 · 未修改
图 4-1E第 8 章2D 图像表示上对 GabSplat 的对照①②图注 +③④正文原样引用 · 未修改
图 5-1E第 9 章核的 d₁ 统计量既随视角变、也随场景变①②图注 +③④正文原样引用 · 未修改
图 6-1E第 9 章植被与毛发两类的核分布各自成簇①②图注 +③④正文原样引用 · 未修改
图 7-1E第 8 章与 3DGS-MCMC/SSS/DBS 的定性对比①②图注 +③④正文原样引用 · 未修改
图 8-1E第 10 章不同原语内存预算下的定性对比(k=2/4/8)①②图注 +③④正文原样引用 · 未修改
表-段配对表 5 张表 · 与图分列(门禁的「行数 = 图数」只针对图)
表元角色档归属支撑的论断讲解层次状态
表 1-1E第 8 章4 基准 21 场景的 PSNR/SSIM/LPIPS 全表①②图注 +③复算原样引用 · 未修改
表 2-1E第 10 章三档内存预算下的画质/原语数/帧率①②图注 +③复算原样引用 · 未修改
表 3-1E第 11 章Φ_proj 输入组合的消融(末行=当前选择)①②图注 +③复算原样引用 · 未修改
表 4-1E第 11 章z 维度与网络宽度的消融(含内存列)①②图注 +③复算原样引用 · 未修改
表 5-1E第 11 章五种预训练目标剖面的对照①②图注 +③复算原样引用 · 未修改
角色档:本篇 13 件图元(8 图 + 5 表)全部登记为 E 类(证据图)—— 它们承载可核对的读数(结果对照、消融、效率账、结构与分布可视化)。按分区裁决 E 类禁止自绘,故一律引用原图,自绘 0 张,S 类配额未动用。
式:原文编号式 (1)–(8) 共 8 条,本篇全落块;篇内显示编号按行文顺序连续,每块尾注写「原文式 N」。
许可:本篇取 CC BY-NC-ND 4.0(依据所据 PDF 内的权利块 —— PDF 首页页脚印 This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.;arXiv 摘要页 License 为 nonexclusive-distrib/1.0,两处不一致)⇒ 站内托管原文 PDF,chip 不带 warn;因 ND 禁演绎,封面与图件一律等比缩放、不裁切、不加标注、不施滤镜,逐图署名。
原文摘要 Abstract, p.0(英文原样引用)

We present a differentiable framework to automatically learn view-dependent 2D kernels in a splatting-based pipeline to improve reconstruction quality and representation efficiency for novel 3D view synthesis. Our volumetric primitive is defined as a bounding ellipsoid and a 3D-kernel latent vector. We first learn a projection network to output a 2D-kernel latent, taking the attributes of the ellipsoid and the 3D-kernel latent as input. Next, the result is sent to a decoder to produce a radially symmetric 2D kernel in terms of Mahalanobis distance, bounded by the projected ellipsoid. The neural networks along with per-primitive attributes are jointly optimized. The effectiveness of our approach is demonstrated on standard benchmarks, comparing favorably against state-of-the-art techniques on both analytical and learned kernels. Finally, we extend the idea to learn general 2D kernels for 2D splatting as well as image representation.

这一篇要讲清的 14 件事
  • 为什么「换掉高斯核」要单独做一篇:核同时决定画质与表示效率,而前人两条路线各有死结。
  • 三个预备式子(EWA 投影、屏空间形状、2DGS 切平面参数化),以及本篇「不算线积分、直接学积分结果」的立场。
  • 原语的几何:为什么用一个包围椭球托住一个隐码,而不是让网络直接学形状。
  • Φ_proj:把 3D 核投到 2D 时,为什么还要多喂相机空间的位置、尺度与旋转三样东西。
  • Φ_dec:把 r² 变成一个不透明度,以及为什么这个网络可以窄到 4 个神经元。
  • 为什么输出必须是径向对称,一条拓扑结论(hairy ball)与动画里的一次失败尝试。
  • 拿 k 个采样点替掉逐像素调网:这一手怎么把渲染成本从「像素数」上摘下来。
  • 同一套办法搬到平面基元要改哪几处,以及它与最接近的前人工作是什么关系。
  • 预训练与两段式训练:为什么开头 2000 步要冻结两个网络,目标剖面为什么选余弦。
  • 主结果:4 个基准 21 个场景上它站在什么位置,以及「最好或次好」这句话的实测边界。
  • 学出来的核长什么样:剖面、d₁ 直方图,以及「核会不会随场景类型分化」。
  • 表示效率:同样的内存预算下它换回多少画质,代价又记在谁头上。
  • 四个旋钮的消融,与一个「k 该取多大要看预算」的结论。
  • 边界与反例:速度、抗锯齿、编码,以及作者自己划出的适用边界。

1换掉一个高斯核,为什么要单独做一篇

先把这枚「印」看清。 泼溅一系的渲染器里,每个基元最终都要在画面上落下一个形状,落墨多少由它决定,这个形状就是泼溅核(splatting kernel)。3DGS 用的那枚印是高斯:把核沿视线累积起来就是渲染。原文第一句就点明,核的形状直接决定重建质量与表示效率[§1, p0]。

它给的那个例子小到不能再小,但把整篇的动机说完了。 想象二维平面上要铺满一个长方形。如果你手里只有高斯,你得摆一堆互相重叠的椭圆去逼近直角边,边角总要含糊;如果你手里有正方形,几个就够了,边界干干净净。原文的判词是:用一组正方形来表示长方形,比用高斯高效得多[§1, p0]。落到泼溅上就是一句话:印的形状选错了,你花的基元数是白花的。

于是有两个问题浮出来,原文把它们并排写成全篇的出发点:

(1) 什么才是最优的泼溅核?(2) 怎么把它自动发现出来?[§1, p0]

1.1 前人第一条路:手写解析核,形状由式子定死

这一条路占了相关工作的多数。做法是把 3DGS 里的高斯换掉,换成另一种显式定义的体积基元,或者换成某种隐式定义但视角无关的 2D 核(投影之后)[§2.1.1, p1]。

显式那一支里,几个有名字的例子是:广义指数核[Hamdi et al. 2024]、Student's t 核[Zhu et al. 2025]、可变形 Beta 核[Liu et al. 2025b]。它们有一个共同的实惠:泼溅结果有解析公式,所以渲染性能很高[§2.1.1, p1]。

这条路的天花板写在一句话里。 原文说,这些方法的形状变化完全由手写的解析式子决定,因此没法完全以数据驱动的方式去适配输入场景[§2.1.1, p1]。画质与效率一直在涨,但涨的是「同一个式子的参数调得更好了」,不是「式子的形状变多了」。

平面基元那一侧是同样的故事。从 2DGS 起,后人把原来的 2D surfel 换成别的解析 2D 核,Hermite 多项式、Gabor、甚至三角形,结论也一模一样:形状变化由解析式定死,适配不了场景[§2.2.1, p1]。

1.2 前人第二条路:从数据里学,但线积分挡在中间

真正动手从数据里学形状的工作很少,原文点了两篇[§2.1.2, p1]。

第一篇(Held et al. 2025c,下文简称 3DCS)把一个凸形状的顶点当作基元去优化,然后把泼溅要用的线积分简化成一个常数,再在边界附近做软化[§2.1.2, p1]。也就是说,它没有把积分算准,绕过了积分的形状。

第二篇(Zhou et al. 2025,下文简称 SplatNet)直接把神经场当作基元去泼溅。技巧在于他们把基元限制成一种特定的浅层 MLP,这样沿视线的精确积分恰好能写成闭式[§2.1.2, p1]。代价是基元被绑在这一类网络上。

挡在中间的那块石头,原文说得非常直白:对一般的 3D 基元,计算线积分没有闭式方程,而这一步在泼溅里绕不开。所以只能采用「切片(slicing)」近似来躲开昂贵的数值积分[§1, p0]。另一条出路是把基元限制成平面形状,或者限制成某种网络,两条都会把表达力压住[§1, p0]。

原文对这一片现状的总结是一句很克制的话:如何系统性地、以数据驱动的方式去学一般的泼溅核,目前还不清楚[§1, p0–p1]。

1.3 本篇换了一个位置下手

既然坎在「算积分」,本篇的选择是换掉这个问题:既然我们要的是核在画面上的落墨形状,那就别去算积分,直接学积分的结果。原文的措辞是「我们显式地对积分结果建模」[§1, p1]。

具体地说,学的对象是投影之后的 2D 核,而不是 3D 密度分布。原文对这一步的辩护是:这样就避开了在一般 3D 密度场上做线积分这个难题,而且不绑死在任何一种特定类型的网络上[§2.1.2, p1]。

第二处改动是给核加上「视角相关」。 原文发现,前人那些核虽然基元形状是视角相关的(投影会随视角变),但核本身作为马氏距离的函数是视角无关的:拿高斯来说,对照式 (2) 就能看出来[§2.1, p1]。而本篇的核随视角变,这多出了额外的自由度[§2.1, p1],原文把这件事的可视化放在图 3 里。第 9 章会回到这张图。

收益先给一个总量:在 3D 与 2D 两侧泼溅上,全部基准的全部画质指标都是最好或次好;体积基元还表现出更好的表示效率,以及随基元数增长的可扩展性;同一套思路还搬到平面基元上去学 2D 图像的高效表示[§1, p1]。

图 1-1:判据可视化(E 类 · 证据)· 原文 Fig. 1, p0
图 1-1 判据可视化(E 类 · 证据)· 原文 Fig. 1, p0 怎么读 ①指认:整张图分 (a)–(f) 六格。(a) 是三组「1D 剖面对比」,把我们的核与已有核放在同一坐标里比形状;(b)–(f) 每一格都由 4 张图组成,其中顶上一张是某个场景的视图,底下左两张是两个学到的核的 1D 剖面,底下右一张是该视图下核参数 d₁ 的直方图,直方图上的红虚线标的是均值,横轴范围是 [0, 1]。②读法:看 (b)–(f) 时,竖着读一列,上面那张画面与下面两个剖面属于同一个视图;把不同格之间同一位置的剖面对着看,就是「同一枚印在不同视角下刻成了什么样」。 来源:Learning View-Dependent Splatting Kernels, Fig. 1, p0 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改 图内资产声明(原文致谢):Fig. 1 与 Fig. 6 使用了 khaloui 的素材(extended use license)与 MagicCGIStudios 的素材(standard license)[Acknowledgments, p7]。

这张图可以当成全篇的目录。 (a) 那一栏回答的是「核形状对不对」,第 9 章会用完整版本(图 3-1)讲透;(b)–(f) 里的直方图是本篇独有的证据,同一枚印的 d₁ 在不同视角下不是同一个值,这正是「学出来的视角相关」的可见形式。

2三个预备式子与一句「不碰线积分」的立场

这一章只做一件事:把后面所有式子要用的三个已知式摆好,并说清本篇在链条的哪一环切进去。 原文自己也把这一节定位成「简要描述 3D/2D 高斯泼溅里与我们的核定义最相关的关键项」[§3, p2]。

2.1 式 (1):从 3D 协方差到 2D 协方差

3DGS 里一个 3D 高斯基元的属性包括均值 μ₃D 与协方差 Σ₃D = R S Sᵀ Rᵀ,其中 S 是缩放矩阵、R 是旋转矩阵。把这个高斯投到图像平面上,用的是 EWA 泼溅的近似[Zwicker et al. 2001],得到的 2D 协方差矩阵是:

(1) Σ₂D = J W Σ₃D Wᵀ Jᵀ(原文式 1 · §3, p2)

其中 W 是视图变换(viewing transformation),J 是投影仿射近似的雅可比矩阵。投影后的均值记作 μ₂D[§3, p2]。

这三个符号各自管什么,先单独记一遍,因为后面第 3 章的 Φ_proj 就是「把式 (1) 这一步从解析公式换成网络」:

符号含义在本篇里的去向
Σ₃D = R S Sᵀ Rᵀ3D 协方差,由缩放与旋转合成由包围椭球的 s 与 q 承担(第 3 章)
W视图变换进 Φ_proj 的输入(以相机空间坐标 μ^cam_3D 与 R^cam 的形式)
J投影仿射近似的雅可比同上,属于「相机规格」的一部分
Σ₂D, μ₂D投到屏幕后的协方差与均值决定 2D 包围椭圆,进而决定 r²

2.2 式 (2):核只依赖一个标量 r²

投影后的基元在屏幕空间里的形状写成:

(2) G(x) = exp( −½ (x − μ₂D)ᵀ Σ₂D⁻¹ (x − μ₂D) ) = exp( −½ r² )(原文式 2 · §3, p2)

其中 x 是像素坐标,r² 是马氏距离的平方。原文随后补了一句关键解释:r² 可以看成「把一个各向异性的高斯分布变换成标准各向同性正态分布」的那次变换,而这次变换只依赖 r²[§3, p2]。

这句话就是本篇要抓的把手。 高斯核的形状只由一个标量 r² 决定,那么把 exp(−½ r²) 换成别的函数,核的形状就变了;而只要这个新函数仍然是只吃 r² 的函数,它就是径向对称的。第 4 章的 Φ_dec 正是这么用的,第 4 章会解释为什么本篇主动要求它径向对称。

2.3 式 (3):2DGS 的切平面参数化

平面基元那边,2DGS 的基元是一张有朝向的圆盘,投影后的屏空间形状写成:

(3) G′(x) = exp( −½ (u² + v²) )(原文式 3 · §3, p2)

这里的 (u, v) 是「对应像素 x 的相机射线」与基元在其切平面上的交点的局部 2D 坐标[§3, p2]。原文对这一处的评价是:2DGS 这种原生的 (u, v) 参数化,让「在基元上定义空间变化」变得很方便:比如一般 2D 核,或者 2D 纹理[§3, p2]。

这就解释了第 6 章为什么能那么省事。 平面侧不需要发明新的参数化,2DGS 早就把 (u, v) 递到手上了;本篇只需要把 G′ 那个解析式换成网络。

2.4 本篇的原语与管线:三样东西组成一个基元

到这里可以把这个原语说全了。原文的构成是:一个 3D 包围椭球(类似 vanilla 3DGS 里的截断高斯)+ 一个表示 3D 核的隐向量[§4, p2]。

每个基元走四步,原文的顺序是:

  1. 把椭球投到图像平面,得到一个 2D 包围椭圆;
  2. 把 3D 核投到 2D:用一个同时感知椭球属性的投影 MLP,把一个「表示 3D 核」的隐码变成「表示 2D 核」的隐码;
  3. 解码:用一个解码器输出一个径向对称的 2D 核,用马氏距离表述、被那个 2D 椭圆界定,这就是最终的泼溅形状;
  4. 交回标准泼溅管线,做后续处理(着色、alpha 混合)[§4, p2]。

第 1 步是解析的(就用式 (1)),第 2、3 步是学出来的(就是 Φ_proj 与 Φ_dec),第 4 步完全不动,本篇只换了中间那一环。

图 2-1:机制示意(E 类 · 证据)· 原文 Fig. 2, p3
图 2-1 机制示意(E 类 · 证据)· 原文 Fig. 2, p3 怎么读 ①指认:横着看是一串带标签的方块,左上是「Our Vol. Primitive」,写着 3D 包围椭球与四类几何属性(Center/Rotation/Scaling/Enc.);往右是「Projection」,分「Camera Space」(3D Bounding Ellipsoid、Cam. Spec.)与「Screen Space」(2D Bounding Ellipse);再往右是「Decoding」,标着 Neural Projection MLP、3D-Kernel Latent、2D-Kernel Latent;最右是「Further Processing」,标着 Splatting Samples / Shape / Kernel Decoder(Mahalanobis distance)/ Interpolate / Coloring / Alpha-Blending。②读法:沿箭头从左往右是一条完整链路,注意中间那两处深色方块(Neural Projection MLP 与 Kernel Decoder),它们是本篇唯一新增的可学习部件;其余白底方块都是既有管线里搬过来的。 来源:Learning View-Dependent Splatting Kernels, Fig. 2, p3 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

读这张图要盯住一个分工。 图把「训什么」和「怎么算」排成了一条链:左半是属性与投影,右半是解码与渲染。本篇全部可学的东西只有两块,Neural Projection MLP(第 3 章的 Φ_proj)与 Kernel Decoder(第 4 章的 Φ_dec);采样式插值(第 5 章)与着色/alpha 混合(沿用既有)都在这两块之外。

3椭球托住隐码,投影网把核送上屏幕

这一章回答一个设计问题:一个体积基元里,哪些东西交给几何、哪些东西交给网络;定义完之后,它又怎么被送到屏幕上。 原文对前半给的答案是「几何归椭球、形状归隐码」,对后半给的答案是「椭球走解析、核走网络」。两半合起来,就是一个 3D 基元从定义到进入渲染器之前的完整路径。

3.1 一个基元里装了什么

原文把体积基元的几何拆成两件:一个 3D 包围椭球,和一个 3D 核隐码。椭球的属性包括中心 μ₃D、一个 3 维的尺度向量 s(用来表示缩放矩阵 S)、以及一个 4 维四元数 q(用来表示旋转矩阵 R);隐码 z₃D 是一个向量(在多数实验里维度取 5),装着某个隐式 3D 核的参数[§5.1, p2]。

项符号含义归谁管
中心μ₃D椭球在 3D 里的位置椭球(几何)
尺度s(3 维)表示缩放矩阵 S椭球(几何)
旋转q(4 维四元数)表示旋转矩阵 R椭球(几何)
核隐码z₃D(默认 5 维)隐式 3D 核的参数隐码(形状)

外观那一侧照抄 3DGS。 原文写明:每个基元可学的外观「与 3DGS 里的定义方式相同」,包括一个总的不透明度以及一个颜色模型的参数[§5.1, p2]。所以本篇没有在颜色上做任何新设计(这处「没做什么」在第 11 章会变成一次消融)。

3.2 为什么用包围椭球:两条理由

原文给了两条,一条偏学习、一条偏工程[§5.1, p2]。

第一条:把变换从网络手里拿走,网络只学「归一化」的形状。 椭球本身就直接建模了缩放/旋转/平移这三种变换,于是那两个 MLP 可以专注去学「归一化之后」的形状,把仿射变换留到之后施加[§5.1, p2]。反过来说,如果不这么做会怎样,原文也交代了:一个更激进的做法,让网络直接学形状本身,很可能需要更大、因而更慢的 MLP 去处理多出来的复杂度[§5.1, p2]。原文对这条取舍的评价是「我们相信这是质量与性能之间的一个好平衡」[§5.1, p2]。

第二条:椭球是现成的几何代理。 它可以直接当作排序与剔除的高效几何代理;而且它和 vanilla 3DGS 里的截断高斯很像,这就允许大量复用那条既有管线[§5.1, p2]。第 2 章里「第 4 步完全不动」靠的就是这一条。

把两条合起来看,其实是一次「把难学的部分划出去」。 位置、朝向、大小这三样是 3DGS 二十年来已经知道怎么优化的量,没必要让网络去重新发现;网络只需要回答「在单位椭球里,这枚印该刻成什么形状」。第 3 章的 Φ_proj 之所以能只有 4 层 64 个神经元,根子在这里。

3.3 两个隐码的分工,与一处内存上的后果

本篇一路下来有两个隐码,它们的位置完全不同,值得在这里先分清:

隐码谁产生存在哪是否逐基元存储
z₃D(默认 5 维)训练中学出来每个基元自己带一份是
z₂D(默认 5 维)Φ_proj 在渲染时算出来不落盘,只活在当帧否

这个差别在画质上看不出来,但在内存上是硬的。 z₃D 是逐基元的参数,它的维度直接乘进基元存储里;z₂D 是投影网络的输出、网络的权重是所有基元共享的全局量,所以它既不在参数里,也不随基元数增长。第 11 章表 4-1 里那条规律,只有 dim(z₃D) 会动内存,dim(z₂D) 与两个网络的宽度几乎不动:根源就在这里。

换句话说,本篇的「形状自由度」被拆成了两半:一半是逐基元付内存的(z₃D),另一半是免费的(z₂D 与网络本身)。 这条设计在第 11 章会变成一句可操作的结论:想省内存就压 z₃D,想提画质就加宽网络。

3.4 外观那一侧:本篇什么都没改

说清「没做什么」同样重要。 原文写明每个基元可学的外观「与 3DGS 里的定义方式相同」,包括一个总的不透明度以及一个颜色模型的参数[§5.1, p2]。落到实验里就是表 1 里那两个变体,用球谐(SH)的与用球面 Beta(SB)的[§6.1.1, p4]。

这处「照抄」在第 11 章会有一次反向检验。 把 SH 换成每基元一个常数颜色(表 1 里的 Ours (3D,w/o SH) 行),PSNR 掉 0.20[表 1, p5]。掉得不算多,但作者据此下了一句判定:颜色的视角相关性与几何的视角相关性不等价[§6.2, p6]。也就是说,本篇的贡献集中在几何那一侧(核的形状),颜色那一侧只是把 3DGS 的现成做法搬过来用。

3.5 投影被拆成两半:椭球走解析,核走网络

椭球定义完,下一步是把它送到屏幕上。 这件事原文也说得很清楚:给定一份相机规格,把体积基元投到图像平面上[§5.2, p2]。这一段讲那两个全局网络里的第一个。

前半是解析的,不用学。 对 3D 包围椭球,直接用式 (1) 把它投出去,得到一个 2D 包围椭圆[§5.2, p2]。这一步沿用第 2 章的既有结论,没有任何新东西。

后半才是本篇的活。 原文的措辞是「类似式 (1) 把 3D 椭球投成 2D 椭圆的方式,我们学一个全局投影 MLP Φ_proj,把隐式 3D 核(也就是 z₃D)变换成一个隐码 z₂D(多数实验里维度取 5),它表示投影之后的 2D 核」[§5.2, p2]。写成式子:

(4) z₂D = Φ_proj( z₃D, μ^cam_3D, s, R^cam )(原文式 4 · §5.2, p2)

注意这个式子的形状:左边只有一个输出 z₂D,右边却有四个输入。 这正是本章要讲的那件事,为什么输入不止一个。

3.6 朴素的输入为什么不够

原文先替读者想到了那个最自然的方案:只把 3D 几何(在本篇里就是 z₃D)和一份相机规格当输入,就像多数相关工作那样[§5.2, p2]。

然后它用实验否掉了这个方案。 原文的原话是:我们通过实验(Tab. 3)发现,往 Φ_proj 的输入里加入其他因子,能在保持泛化能力的同时带来质量提升[§5.2, p2]。这句话的后半截是关键,「保持泛化能力」说明多喂信息没有把网络带向过拟合某个场景;这一点由第 11 章的表 3-1 兑现。

3.7 多喂的三样,各管一件事

输入原文给的理由(§5.2)一句话
μ^cam_3D:椭球中心在相机空间下的坐标给 MLP 提供空间感知(spatial awareness)网络得知道这枚印落在画面的哪个方位
s:缩放因子提供尺度感知(scale awareness)网络得知道这枚印在画面上有多大
R^cam:基元在相机空间下的旋转矩阵它是基元在相机空间里朝向的紧凑表示,高效地编码了 3D 视角信息网络得知道这枚印相对相机是正着还是斜着

三样东西合起来回答的是同一个问题的三个侧面:这一枚印,在当前这个视角下,处于什么位置、多大、什么朝向。 前两样好理解,第三样先停一下,原文特意说 R^cam 是「朝向的紧凑表示」,而且「高效地编码了 3D 视角信息」[§5.2, p2]。这句话的分量在于:视角信息不是靠给网络喂相机位姿喂进去的,而是靠基元自身在相机空间里的朝向间接表达的。这样网络看到的是「这个基元相对相机怎么摆」,而不是「相机在世界里怎么摆」:前者与基元一一对应,后者要让网络自己去做一次配对。

3.8 Φ_proj 长什么样

项取值出处
类型全局 MLP(所有基元共用一套权重)§5.2, p2
层数4 层§5.2, p2
隐层宽度每隐层 64 个神经元§5.2, p2
激活leaky-ReLU,除最后一层外逐层都有§5.2, p2
训练方式与核解码器联合训练,目标针对全部输入图像§5.2, p2

「全局」两个字要划下来。 原文说的是「全局投影 MLP」[§5.2, p2],也就是所有基元、所有场景共用同一个 Φ_proj。这与「每个基元挂一个自己的小网络」是两条完全不同的路线:全局网络逼着网络去学一套通用的「3D 核 → 2D 核」的投影规则,而每基元各自的隐码 z₃D 才承担个体差异。第 11 章表 3-1 里那条「末行对应我们当前的输入选择」,检验的正是这套规则在换场景后还成不成立。

为什么 4 层 64 个神经元够用,回到第 3 章那条取舍:仿射变换已经交给椭球了,网络只需在「归一化」的空间里学投影,输入里还额外补了三样位置/尺度/朝向信息。网络的活被划得很小,所以网络也可以很小。

4Φ_dec:一个网络,与一条必须遵守的对称性

这一章讲两个全局网络里的第二个,以及它唯一的一条硬约束。 前四节说这个网络是什么、为什么能这么窄;后四节说它为什么只能输出径向对称的核,那是全篇第一处由理论划出的边界。

第二个网络,也是全篇真正的「核」诞生的地方。 原文给了它一个小标题:定义[§5.3.1, p2]。

4.1 两步:先算 r²,再查(学出来的)剖面

第一步沿用式 (2),但换了来源。 对一个给定像素,先算它相对投影后的基元中心 μ₂D 的马氏距离平方 r²,计算时用的属性来自对应的那个 2D 包围椭圆[§5.3.1, p3]。这一步没有新东西,但要注意「属性来自 2D 包围椭圆」这句:r² 的尺度是由椭球投影决定的,网络不参与决定核的作用范围。

第二步才是替换。 原文说:我们把相关工作里的解析形状函数(例如高斯[Kerbl et al. 2023]或 Beta[Liu et al. 2025b])换成一个全局 MLP Φ_dec。它收 r² 与 z₂D 作输入,输出一个不透明度 d[§5.3.1, p3]:

(5) d = Φ_dec( r², z₂D )(原文式 5 · §5.3.1, p3)

这个式子只有两个输入,比式 (4) 干净得多。 原文接着解释它的语义:这个 MLP 本质上描述的是一条「径向对称的 2D 泼溅核」的 1D 剖面,作用在 r² 取值于 [0, 1] 的范围内[§5.3.1, p3]。

把两句话拼起来看,本篇的核心设计就在这一行里。 前人写的是 exp(−½ r²) 或某个 Beta 形式的具体函数;本篇写的是一个网络的输出。函数形式不再由人指定,而是由训练数据决定,这就是标题里「learning splatting kernels」的落点。

4.2 Φ_dec 长什么样,以及为什么可以这么窄

项取值出处
类型全局 MLP(所有基元共用)§5.3.1, p3
层数3 层§5.3.1, p3
隐层宽度每隐层 4 个神经元§5.3.1, p3
激活leaky-ReLU,除最后一层外逐层都有§5.3.1, p3
输出层sigmoid,用来把输出界定住§5.3.1, p3
输入r² 与 z₂D 两个量§5.3.1, p3

4 个神经元是一个很小的数,小到值得问一句凭什么。 三个理由叠在一起才成立:

第一,输入只有两维。 式 (5) 要学的映射是 (r², z₂D) → d。z₂D 只有 5 维,r² 是标量,整个输入空间一共 6 维,而且 r² 还被限定在 [0, 1] 上。

第二,被学的对象是一条「径向对称」的 1D 剖面。 原文明确说 Φ_dec 描述的是 1D 剖面[§5.3.1, p3]。也就是说不管基元在屏幕上铺多大,网络要回答的始终是「离中心多远(归一化到 [0,1])该落多少墨」,与方向无关。第 4 章会说明这个「与方向无关」不是偷懒,是被一条拓扑结论逼出来的。

第三,形状的复杂部分已经由 z₂D 承担。 网络本身不需要表达很多种函数,它在固定的一套「归一化形状」上作答,具体这一枚印刻成什么样,由 z₂D 这个隐码区分。

sigmoid 那一层也还要补一句。 它把输出界定在 (0, 1) 里[§5.3.1, p3]。对一个不透明度来说这个约束是自然的,但它同时意味着:核的峰值不可能超过 1,且永远不会真正归零(sigmoid 只在无穷远处到 0 或 1)。第 10 章算表示效率时,d 的这些性质会重新出现。

4.3 这一步把「线积分」换成了一次网络求值

回到第 1 章那块石头:一般 3D 基元的线积分没有闭式解。本篇的处理是在链条上换一个位置出题:不去积分 3D 密度,而是直接让网络回答「投影之后,离中心 r² 处的落墨率是多少」[§5.3.1, p3]。

这个换法的代价与收益要对齐着看。 收益是不再需要 3D 密度有闭式积分,也不再需要假设形状是凸的、或者限制成某类网络;代价是核不再是解析式,于是它没有了「参数一改就知道形状怎么变」的可解释性,也没有了直接算出解析渲染公式的可能,这两条在第 5 章(要靠采样来做加速)与第 12 章(作者提出用符号回归反过来找解析式)都会再出现。

4.4 两处限定:r² 的作用域,与 d 的去向

第一处限定:Φ_dec 只在椭圆内部有定义。 原文给 Φ_dec 划的作答范围是 r² 取值于 [0, 1][§5.3.1, p3],同时说最终的泼溅形状被那个 2D 椭圆界定[§4, p2]。两句合起来的意思是:核的作用范围由几何(椭球投影出的 2D 椭圆)决定,网络只负责在这个范围内分配墨量。椭圆之外的落墨不由这个核描述。这也解释了为什么第 3 章那条「几何归椭球、形状归隐码」的分工能成立,连「核铺到多大」都不归网络管。

第二处限定:d 不是一个孤立的数,它要进 alpha 混合。 原文说这个形状接下来交给标准泼溅管线做后续处理(着色、alpha 混合)[§4, p2]。所以 d 的角色就是混合时的那个不透明度权重。这解释了 sigmoid 那一步为什么是必要的,输出必须落在 (0, 1) 上,否则它没法当权重用[§5.3.1, p3]。

这两处限定连起来,划出了 Φ_dec 的职权边界:它决定「在一个已经被几何定好形状的范围内,从中心到边缘怎么衰减」,仅此而已。位置、朝向、大小、作用范围,全在它之外。

4.5 一般 2D 核需要一个 2D 坐标架,而那个坐标架造不出来

解码器定完了,接下来的问题是它为什么只能输出径向对称的核。 原文给这件事单开了一个小标题,径向对称的理由[§5.3.2, p3];它的答案不是「省事」,而是一条拓扑上的不可能性。这一节同时是全篇第一个「边界」:本篇是主动放弃一般 2D 核的。

原文先摆出问题:我们选择输出一个径向对称的 2D 核,而不是一般的核,原因在于「把任意 3D 视角条件映射到一个 2D 坐标架」这件事存在理论上的不连续性:而一般的 2D 核恰恰要定义在那个 2D 坐标架上[§5.3.2, p3]。

原文点名了这个数学结论:hairy ball 定理[Hatcher 2002][§5.3.2, p3]。这一定理说的正是「球面上不存在处处非零的连续切向量场」:换句话说,你没法在视角球面上连续地挑出一个方向来当「坐标架的 x 轴」。只要视角绕球面走一圈,这个选择必然要在某处跳变。

4.6 试过一次,代价是动画里的突转

原文交代了试点研究(pilot study)的结果:他们先试了一个平滑技巧来缓解这个不连续性,但结果是,在某些视角方向附近,2D 核会发生快速旋转,这在动画里看着很受干扰[§5.3.2, p3]。

这句话的价值在于它把「不连续」翻译成了可见的失败模式。 不连续性本身是抽象的;「核绕某些视线突然转了」是能看见的。而且它是统计意义上的偶发:只在某些方向附近出现,平时可能看不出来,一旦动画扫过那些方向就会跳一下,这类问题最难在静态图里发现。

4.7 绕开,而不是修补

本篇的处置是釜底抽薪。 原文写:通过把输出限定为径向对称的 2D 核,我们从一开始就避开了上述那个映射:因为那个 2D 坐标架不再需要了[§5.3.2, p3]。

这一步的逻辑要慢慢读。 常见做法是「先建坐标架,再在坐标架里做旋转不变化」;本篇是直接取消坐标架的存在必要。径向对称的核只需要一个标量(离中心多远)就能定义,方向根本不进入描述,所以不连续的那一步没有被解决,而是被移除了。

原文还补了一句旁证:这个挑战在既有的可学习核工作里也被提到过,指明是 [Huang et al. 2025] 的 §3.4[§5.3.2, p3]。这说明「一般 2D 核难做」不是本篇一家之见。

4.8 这一条同时解释了前人为什么都是径向对称的

把这一章放回第 2 章去看,会多出一层解释力。 原文在 §2.1 里写过一句:前人的那些核大多是径向对称的,而原因会在 §5.3.2 里展开[§2.1, p1]。现在答案揭晓了,那个「原因」不是历史惯性,而是同一条拓扑限制。所有人都撞上了同一面墙,只是它在本篇里被正面写了出来。

代价也要写清楚。 放弃一般 2D 核意味着放弃了「同一枚印在不同方向上刻得不一样」的自由。原文承认本篇的核只是视角相关(同一视角下换个基元、或者换个视角看同一个基元,剖面会变),但在给定视角与给定基元下,它仍是径向对称的[§5.3.2, p3;§6.1.2, p4]。而有意思的是:平面基元那一侧原文并没有做这个限制:第 6 章的平面基元学的是一般 2D 核、是不对称的[§2.2.2, p2;§5.4, p3]。为什么两边不一样,第 6 章会给出原文依据:平面侧根本不需要 3D→2D 的坐标架映射。

5拿 k 个采样点替掉逐像素调网

到第 4 章为止,核已经学出来了,但它还只是一次网络求值。 这一章讲原文怎么把它变成能跑的渲染,小标题是加速[§5.3.3, p3]。

5.1 问题:原语内每个像素都调一次网,太贵

原文的表述是:在我们的包围椭圆里对每个像素都直接执行 Φ_dec,算力上可能是很贵的[§5.3.3, p3]。贵在哪要算一下:一枚基元在屏幕上可能覆盖成千上万个像素,而每个像素都要跑一次 3 层 MLP。

5.2 做法:把 1D 剖面预先采出来,渲染时插值

原文的处置是预采样加插值。 具体做法是:对每个基元,我们在 r 的 [0, 1] 区间上放 k 个均匀采样,记作 {rᵢ}(1 ≤ i ≤ k);只在这些采样点上跑 Φ_dec,把结果存成 {dᵢ}[§5.3.3, p3]:

(6) dᵢ = Φ_dec( rᵢ², z₂D )(原文式 6 · §5.3.3, p3)

渲染时再用插值把中间的值补出来。 对光栅化过程中某个具体像素算出来的任意 r,先找到它夹在哪两个采样之间,即满足 rc ≤ r ≤ rc+1,然后用线性插值得到最终结果[§5.3.3, p3]:

(7) d = (1 − λ) d_c + λ d_{c+1},其中 λ = (r − r_c) / (r_{c+1} − r_c)(原文式 7 · §5.3.3, p3)

5.3 这一手真正买到的是什么

原文有一句精准的判词:这本质上是把「一枚基元里的像素数」与「Φ_dec 的调用次数」解耦了[§5.3.3, p3]。

这句话的分量在于,「解耦」之后渲染成本的结构变了。 在此之前,渲染一枚基元的代价里有一项与它覆盖的像素数成正比、而且是网络求值那种贵操作;在此之后,网络调用次数只由 k 决定,与它在屏幕上铺多大无关。一枚贴着镜头的巨大基元与一角硬币大小的基元,只要 k 相同,网络调用次数就相同。

量加速前加速后
Φ_dec 调用次数与基元覆盖的像素数成正比固定为 k 次(每基元)
每像素的剩余代价一次网络求值一次定长查表 + 一次线性插值
精度控制—由 k 控制

5.4 插值方式没有被写死

原文特意声明这一点不是本篇的约束:我们的做法不绑定任何一类插值;更精细的插值也能插进来,代价是更多算力、换来更高阶的光滑度[§5.3.3, p3]。

多数实验取 k = 2。 原文的理由是「据 §6.2 所述,它已经足以产出高质量的结果」[§5.3.3, p3]。k = 2 意味着每个基元的剖面只用两个采样点加线性插值:一条折线,原文在后面把它叫作「简单的锥形帽(conical-hat)形状的核」[§6.2, p6]。这听起来过于粗糙,但第 11 章会给出它在什么条件下就够用了。

顺带一个容易看漏的事实:k 只是运行期的采样密度,不是基元参数。所以增大 k 不会增大显存占用:表 2 的注文写的就是这一句:我们的内存占用不随 k 变化[表 2, p5]。第 10 章算表示效率时会用到它。

5.5 渲染内环的伪码

前提 1:每枚基元已经算好自己的 z₂D(来自 Φ_proj)与 2D 包围椭圆(来自式 (1))。
前提 2:k 是全局常量(多数实验 k = 2),与基元无关、与它覆盖多少像素无关。

#,离线(每帧、每基元一次,O(k)),
for rᵢ in {r₁ … r_k}: # r 在 [0, 1] 上均匀采样
 dᵢ ← Φ_dec(rᵢ², z₂D) # 式 (6):只在这里调网络

#,光栅化内环(每像素),
r ← 由该像素与 μ₂D、Σ₂D 算出的马氏距离 # 来自式 (2)
找 c 使得 r_c ≤ r ≤ r_{c+1}
λ ← (r − r_c) / (r_{c+1} − r_c) # 式 (7)
d ← (1 − λ)·d_c + λ·d_{c+1} # 插值,不再调网络

内环里没有网络求值,这是这段伪码唯一要记住的事。 网络调用全被推到上面那个 O(k) 的循环里去了。

5.6 把这一手的省法算一遍

「解耦」到底省了多少,可以数出来。 设一枚基元在屏幕上覆盖 N 个像素(对贴镜头的基元,N 很容易上万)。

量逐像素调网预采样 + 插值(本篇)
Φ_dec 调用次数(每基元每帧)Nk(多数实验 k = 2)
每像素剩下的活一次 3 层 MLP 前向一次查表 + 一次线性插值
该基元的网络调用与 N 的关系成正比无关

看最后一行的两个数:N 与 k。 N 由「基元铺多大」决定,是渲染期的几何量;k 是配置里写死的常量。把 N 换成 k,等于把一项随几何浮动的成本换成了一项固定成本:这就是「解耦」在数字上的样子。

这也解释了第 10 章那个看起来矛盾的现象。 第 10 章会说本篇「原语数最少、却比原语更多的对手更慢」。谜底正在这张表:本篇每枚基元每帧仍要付 k 次网络前向,而解析核的对手一次都不用付。 省下的原语数换不回这一步的开销,所以原语数量的优势被网络的固定成本吃掉了。真正的代价分解在第 12 章:Φ_proj : Φ_dec : 光栅化 ≈ 9 : 2 : 1[§7, p6],光栅化(也就是唯一与像素数相关的那一部分)只占一成。

6同一套办法搬到平面基元:改动清单

这一章讲原文两处最大的扩展之一(另一处是第 9 章的「学习视角相关」)。原文的定位是:除了体积基元,这个思路也能用在 2D 泼溅里的平面基元上,去学一般的 2D 核;为了少重复文字,下文只讲平面基元在定义与处理上与体积基元不同的地方[§5.4, p3]。

6.1 四处改动

项体积基元(第 4–5 章)平面基元(本章)出处
几何3D 包围椭球包围椭圆§5.4, p3
投影前隐码z₃D(5 维)z₂D^prior(10 维),表示投影前的一般 2D 核§5.4, p3
投影网络Φ_proj(4 层 64 神经元)同架构的投影 MLP,把 z₂D^prior 变成 10 维的 z₂D^after§5.4, p3
解码器Φ_dec(r², z₂D)Φ_dec^planar(u, v, z₂D^after),隐层神经元翻倍到 8§5.4, p3–p4

解码那一步写成式子:

(8) d = Φ_dec^planar( u, v, z₂D^after )(原文式 8 · §5.4, p3)

其中 (u, v) 是「该像素对应的相机射线」与平面基元在切平面上的交点的 2D 坐标[§5.4, p3]。这正是第 2 章式 (3) 里 2DGS 那套原生参数化,平面侧不需要发明新东西,直接把 (u, v) 接进网络。

6.2 输入从「两个」变成「三个」,性质也变了

最要紧的差别藏在输入里。 体积侧的 Φ_dec 只收 (r², z₂D),两个输入都是与方向无关的:r² 是距离,z₂D 是隐码,输出必然是径向对称的。平面侧收的是 (u, v, z₂D^after),其中 (u, v) 是带方向的坐标。方向一进输入,输出就可以不对称了。

原文明确认领了这一点:我们的平面基元是不对称的,而且可以看成 [Huang et al. 2025] 的推广版本,理由是,式 (8) 是一个 MLP(也就是说,我们没有像那篇那样假设核是参数曲线)[§2.2.2, p2]。

把第 4 章与这一节并排看,会浮出一个问题:为什么体积侧不许不对称、平面侧却可以? 答案在第 4 章已经给过,那条拓扑限制针对的是「把任意 3D 视角条件映射到一个 2D 坐标架」[§5.3.2, p3]。平面基元本身就活在切平面上,(u, v) 是现成的,不需要从 3D 视角去构造坐标架,那道坎根本不存在。所以两侧的差异出于同一个理由,不是疏忽。

6.3 编码器宽度的差别也是一条线索

原文对这一处差异只给了一句理由:Φ_dec^planar 的架构几乎与体积侧的 Φ_dec 相同,只是每个隐层的神经元数翻倍到 8,以应对一般 2D 核多出来的复杂度[§5.4, p3–p4]。

把两处的宽度放在一起看:体积侧 4 个神经元、平面侧 8 个。差别来自输出空间的自由度,径向对称只有「距离」一维要表达,一般 2D 核要表达「哪个方向给多少」。网络只宽了一倍,是因为大部分形状差异仍然由 z₂D^after 那 10 维隐码承担,这一点与第 4 章同构。

6.4 两处数字的来历,与一处原文没交代的地方

先说 (u, v) 的来历,它不需要本篇发明。 第 2 章式 (3) 里那套 2DGS 参数化已经给好了,(u, v) 是「该像素对应的相机射线」与基元在切平面上的交点的局部 2D 坐标[§3, p2]。平面基元本身就躺在这张切平面上,所以它天然有一对平面内坐标,方向信息直接可用。这跟体积侧要靠「相机空间下的朝向」间接表达视角,是两种完全不同的处境。

再说 10 维这个数。 原文只是给出这两个隐码都是 10 维[§5.4, p3],没有解释为什么取 10。能观察到的是它与另外两处改动同步翻倍:体积侧 z 默认 5 维 → 平面侧 10 维;解码器隐层 4 个神经元 → 8 个[§5.3.1, p3;§5.4, p3–p4]。两处都翻倍,方向是一致的:一般 2D 核的自由度比径向对称大。 但原文没有为平面侧做 z 维度的消融(表 4 只消融了体积侧的 z₃D/z₂D 与两个网络的宽度),所以「10 维够不够、9 维或 12 维会怎样」在原文里没有答案。

这处缺口要记下来,因为它与第 10 章那条「效率只在体积侧验证」是同一类问题:本篇的口径在体积侧很细,在平面侧较粗。

6.5 这一章小结:两侧共用的是什么、分开的是什么

共用分开
思路「不算线积分、直接学投影后的核」 + 「形状交给隐码、几何交给包围体」—
网络角色一个投影 MLP + 一个核解码器解码器的输入与宽度不同
对称性—体积侧必须径向对称;平面侧可以不对称
隐码都是「投影前 → 投影后」两段维度 5 vs 10

这张表里最值得记的是「对称性」那一行。 它是本篇内部唯一的、由理论而非工程决定的分歧点,第 4 章那条 hairy ball 的限制只对体积侧成立,因为只有体积侧才需要从 3D 视角去构造 2D 坐标架。

7预训练与两段式训练:为什么先冻 2000 步

这一章讲训练。 原文把它放在实现细节里,但里面有两条做法要单独拎出来,先预训练两个网络、再把训练分成两段。

7.1 先预训练:在动场景之前,先把两个网络训好

原文的顺序是:我们在 3D 重建之前,先给神经投影与核解码器做预训练[§5.5, p4]。

项做法出处
隐码初值z₃D 初始化为全零§5.5, p4
网络权重初值Φ_proj 与 Φ_dec 都用 He 初始化[He et al. 2015]§5.5, p4
优化对象联合优化 Φ_proj 与 Φ_dec§5.5, p4

训练数据是合成的。 原文的做法是:随机采样 μ^cam_3D、s 与 R^cam,然后随机采样 r,按式 (6) 得到目标剖面的样本[§5.5, p4]。也就是说,预训练阶段根本不需要场景、不需要图像,只要在「几何属性」与「剖面」之间造出一组合成对应关系就行。

目标剖面两边不一样,这一处很有说服力:

情形目标剖面出处
体积基元一条 1D 余弦函数:d = cos(π/2 · r²)§5.5, p4
平面基元2D 高斯 surfel§5.5, p4

为什么体积侧选余弦,原文给了结果但不给理由:它把这件事做成了消融:预训练比不预训练带来更高的重建质量,详见 Tab 5[§5.5, p4]。第 11 章会把那张表逐格算一遍(表 5-1),届时会看到余弦并不是唯一能用的目标,但它是实测最好的那个。

7.2 两段式训练:因为自由度比标准 3D/2DGS 高

原文明确给了分段的理由:我们采用两段式训练策略来提高稳定性,因为我们的基元相比标准 3D/2DGS 有更高的自由度[§5.5, p4]。这句话把因果说清了,分段的动机是先稳住。

段做法出处
第一段预训练之后,冻结神经投影与核解码器,冻结前 2000 次迭代(初始点云来自 SfM 与来自随机点,这两种情形分别适用)§5.5, p4
第二段全部参数联合优化,损失函数取自[Liu et al. 2025b]:图像损失 + 不透明度与尺度的正则项§5.5, p4

「前 2000 步冻结」这个设计要顺着自由度的思路才读得通。 标准 3DGS 里,每个基元的属性都是直接可学的量;本篇的基元多了一层,它的形状要先经过两个网络。训练刚开始时,位置与尺度还在剧烈变动(点云刚从 SfM 出来),此时若同时让网络跟着动,两个不稳定的东西互相追。先冻住网络 2000 步,等于先把几何安顿下来,再让网络去适配。

还有一处沿用要记下来。 原文写明:我们也采用了同一篇工作里那个「与核无关(kernel-agnostic)」的 MCMC 密度控制策略,因为它有效、而且不绑死在某类特定核上[§5.5, p4]。这条「不绑核」的性质对本篇是必需的,本篇的核是学出来的,任何假设核形状的密度控制策略都用不了。

7.3 超参一栏

项取值出处
Φ_proj / Φ_dec 学习率从 1.6 × 10⁻⁴ 指数衰减到 1.6 × 10⁻⁶§5.5, p4
其余参数学习率按[Kheradmand et al. 2024]设置§5.5, p4
优化器Adam§5.5, p4
迭代数每个实验 30K 次§5.5, p4
冻结步数第一段前 2000 次§5.5, p4
平均训练时长53 分钟(§6 口径)§6, p4

学习率衰减了两个数量级,这与第 4、5 章那两个网络「只负责一个被划得很小的子问题」是同一件事的两面:它们的搜索空间小,所以可以用更细的步长去收。

7.4 训练循环的伪码

前提 1:z₃D 全零初始化;Φ_proj / Φ_dec 用 He 初始化。
前提 2:预训练不依赖场景,只用合成的 (几何属性, 剖面) 对(§5.5)。

#,预训练(无场景),
repeat:
 随机采 μ^cam_3D, s, R^cam
 随机采 r,按目标剖面取样本
 体积:d_target = cos(π/2 · r²)
 平面:d_target = 2D 高斯 surfel 的值
 联合优化 Φ_proj 与 Φ_dec 去贴合 d_target

#,建场景(两段式),
初始化基元(点云来自 SfM 或随机点)
for iter in 1 … 2000: # 第一段:稳住几何
 冻结 Φ_proj 与 Φ_dec
 只优化基元属性

for iter in 2001 … 30000: # 第二段:全部联合
 优化全部参数(损失 = 图像损失 + 不透明度/尺度正则,取自 [Liu et al. 2025b])
 Φ_proj / Φ_dec 的学习率从 1.6e-4 指数衰减到 1.6e-6
 密度控制:沿用 [Liu et al. 2025b] 的 kernel-agnostic MCMC

这段伪码里有两次「先」:先训网络再建场景,先稳几何再动网络。两次都是同一类判断,把耦合的两件事错开,别让它们同时收敛。

8主结果:4 个基准 21 个场景上它站在哪

这一章是账面。 原文把评测信息压在三段里:机器、场景、指标。

8.1 先钉住口径

原文交代的评测条件是:

项取值出处
机器双 AMD EPYC 7763 CPU + 768GB 内存 + RTX 4090§6, p4
唯一例外平面基元在 Drjohnson 与 Treehill 两个场景上改用 RTX PRO 6000,原因是内存需求§6, p4
场景4 个基准共 21 个场景:Mip-NeRF 360 9 个、Tanks & Temples 2 个、Deep Blending 2 个、NeRF Synthetic 8 个§6, p4
数据性质除 NeRF Synthetic 外全部是实拍图像§6, p4
指标PSNR、SSIM、LPIPS,在全部测试图像上取平均§6, p4
平均训练时长53 分钟§6, p4

那条「唯一例外」必须跟着结果一起读。 平面基元在两个场景上要换一块更大的卡才跑得动[§6, p4],这说明本篇的显存账在平面侧并不轻松。第 10 章会看到:表示效率那张表(表 2)其实只算了体积侧。两条合起来,本篇在平面侧的显存成本是没有被量化的。

NeRF Synthetic 是合成场景这一条也要留意。 原文写明除它之外全是实拍[§6, p4]。表 1 里 NeRF Synthetic 那一列的数字普遍高出一大截(我们的 PSNR 在 34 以上),这个量级差首先来自数据本身。

8.2 对比对象分两类

原文把基线按来源分成两组[§6.1.1, p4]:

组3D 侧2D 侧
解析核3DGS[Kerbl et al. 2023]、3DGS-MCMC[Kheradmand et al. 2024]、SSS[Zhu et al. 2025]、DBS[Liu et al. 2025b]2DGS[Huang et al. 2024]
学出来的表示SplatNet[Zhou et al. 2025]、3DCS[Held et al. 2025c]BBSplat[Svitov et al. 2024]、DRK[Huang et al. 2025]

这个分组本身就是本篇的定位:它在两组里同时参赛,而且两组都有对手。第 1 章说的「两条前人路线各有死结」,在这里变成了一张表上的两排对手。

本篇自己有两个变体,区别只在颜色模型:用球谐(SH)的,和用球面 Beta(SB)的要[§6.1.1, p4]。原文的判词是:在 3D 与 2D 两种泼溅上,我们的方法在所有基准的所有画质指标上都是最好或次好[§6.1.1, p4]。逐场景的细分数据原文放进了补充材料[§6.1.1, p4]。

8.3 把表 1 自己算一遍

这句话不能只信结论,得数一遍。 表 1 是 4 个数据集 × 3 个指标 = 12 个小格;每个小格里,本篇的某个变体要么第一、要么第二,才叫「最好或次好」。挑几处验一下:

数据集指标我们最好的变体同格最强的对手出处
Mip-NeRF360PSNR↑28.82(Ours 3D+SB)DBS 28.60表 1, p5
Mip-NeRF360LPIPS↓0.185(Ours 3D+SH)DBS 0.182(对手更好)表 1, p5
Tanks & TemplesPSNR↑25.42(Ours 3D+SH)SSS 24.87表 1, p5
Deep BlendingPSNR↑30.54(Ours 3D+SB)DBS 30.10表 1, p5
NeRF SyntheticPSNR↑34.72(Ours 3D+SH)DBS 34.64表 1, p5

这样数下来,「最好或次好」是站得住的,但它有一个重要读法:并非每一格都是第一。 Mip-NeRF360 的 LPIPS 上 DBS 的 0.182 就比我们的 0.185 更小(LPIPS 越小越好);Mip-NeRF360 的 SSIM 上 DBS 的 0.844 也比我们最好的 0.842 略高[表 1, p5]。换句话说,在最主流的那个基准上,本篇的优势集中在 PSNR,而在 SSIM 与 LPIPS 上是紧咬、并非领先。 这一点原文没有单独强调,但它在表里明摆着。

另一个要看清的地方是「两个变体差多少」。 同一行里 Ours(3D+SH)与 Ours(3D+SB)的差距很小,比如 Mip-NeRF360 上是 28.73 对 28.82、NeRF Synthetic 上是 34.72 对 34.58[表 1, p5]。颜色模型换掉并不改变结论,这与第 11 章「关掉视角相关颜色会怎样」是两件不同的事,后者会掉得更多。

表里还有一行是给消融用的:Ours (3D,w/o SH) for ablation,28.53 / 0.835 / 0.192(Mip-NeRF360)[表 1, p5]。它不参与排名,第 11 章会展开。

8.4 2D 图像表示那一笔

平面侧的画质对比在表 1 里与 2DGS、BBSplat、DRK 同框[§6.1.1, p4;表 1, p5]。而 2D 图像表示上,原文另给了与 GabSplat[Wurster et al. 2024]的对照,条件是两者使用相近的原语内存占用[Fig. 4, p5]。

图 4-1:对照实验(E 类 · 证据)· 原文 Fig. 4, p5
图 4-1 对照实验(E 类 · 证据)· 原文 Fig. 4, p5 怎么读 ①指认:图里成对出现「Ground-Truth / Ours / GabSplat」三行画面,每对下方给出 PSNR|SSIM|LPIPS 三连数(例:30.63|0.914|0.289 与 29.18|0.907|0.303);画面里还叠了各方法的 2D 核样本可视化(核长什么样直接画出来),核样本旁边是局部放大视图。②读法:先看同一组里 Ours 与 GabSplat 的两个三连数,差值就是这一组上的胜负;再看核样本,GabSplat 的核是受限形状,我们的是一般 2D 核,这一栏说明的是「画质差从哪里来」。 来源:Learning View-Dependent Splatting Kernels, Fig. 4, p5 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

这张图的边界写在原文图注的最后一句里:与 3D 泼溅不同,这里学到的核是一般 2D 核,不限于径向对称[Fig. 4 图注, p5]。这正是第 6 章那条路径的兑现,图 4-1 是本篇唯一展示「不对称核」的证据图。

定性对比另外放在图 7 里,对手是 3DGS-MCMC、SSS 与 DBS 三条[§6.1.1, p4]。

图 7-1:定性对比(E 类 · 证据)· 原文 Fig. 7, p8
图 7-1 定性对比(E 类 · 证据)· 原文 Fig. 7, p8 怎么读 ①指认:多组「局部放大画面」并排,组内按方法分栏(我们与三条对手),每张相关画面底部都印着该方法的 PSNR/SSIM/LPIPS 三连数。②读法:不要只看画面,先看底部的三连数定位哪一栏胜出,再回头看画面,数字与观感不一致的地方(例如某条基线数字略低但边缘更干净)才是要记的地方。注意本图排在参考文献页之后(p8),是原文把宽图推迟到末两页的排法,不是附录。 来源:Learning View-Dependent Splatting Kernels, Fig. 7, p8 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

图 7-1 有一个容易被误读的排印事实。 它印在 p8,而参考文献从 p7 就开始了,这不是「附录里的补充结果」:原文把两张大宽图推迟(floated)到末两页。正文对它的引用在 §6.1.1[§6.1.1, p4],本章与第 10 章按引用位置归属,看页序会误判。

9学出来的核长什么样

第 1 章说「核是本篇要学的东西」,这一章看它到底学出了什么。 原文给了三张图,分别回答三个层次的问题:同一枚印在不同视角下变不变、统计上怎么变、会不会随场景类型分化。

9.1 图 3-1:剖面随视角变,前人的不变

原文的做法是把剖面并排画出来比。 原文说:我们先可视化不同方法里单个径向对称核的 1D 剖面,包括我们的几个 k 变体、vanilla 3DGS、SSS 与 DBS[§6.1.2, p4]。

它特意指出了一处差别:我们的核是「通过学习」而视角相关的,而前人那些核(在第 3 章描述的仿射变换之前)是视角无关的[§6.1.2, p4]。

图 3-1:剖面可视化(E 类 · 证据)· 原文 Fig. 3, p4
图 3-1 剖面可视化(E 类 · 证据)· 原文 Fig. 3, p4 怎么读 ①指认:图按行排开,从上到下依次是我们的核(k = 2、4、8)、Gaussian[Kerbl et al. 2023]、Student's t[Zhu et al. 2025]、Beta 核[Liu et al. 2025b],每一组下方配对应的视图;横轴是归一化后的距离(即正文里的 r),纵轴是落墨率。②读法:竖着看一列:同一列里的剖面属于同一个视图(最底下那张就是它);于是「同一行里剖面随列而变」= 该方法视角相关,「同一行里剖面基本不动」= 视角无关。这一列一列比过去,第 11.1 节那句话就是看出来的。 来源:Learning View-Dependent Splatting Kernels, Fig. 3, p4 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

这张图的读法决定能不能看懂它在说什么。 它不是「形状对比图」,而是「同一方法跨视角的稳定性对比图」。前面几行(我们的)跨列会变形,后面几行(前人的)跨列几乎重合:那个「会变形」就是本篇标题里 view-dependent 的可见形式,也是第 3 章 Φ_proj 多喂三样输入的产出。

9.2 图 5-1:一个标量统计量,随视角变也随场景变

原文的办法是挑一个标量来统计。 它说:在 Fig. 5 里我们可视化学到的核跨视角与跨场景的统计[§6.1.2, p4]。

这个标量选得很巧:d₁ = Φ_dec(0, z₂D),也就是核在中心处(r = 0)的落墨率,原文注明它按式 (6) 定义[§6.1.2, p4]。一条剖面被压成一个数:这个数就是「这枚印最中心有多浓」。

原文从这张图里读出两件事:这个直方图不只因为学出来的视角相关性而随视角变化,它还随不同场景变化,这展示了我们把核的几何适配到输入数据的能力[§6.1.2, p4]。

图 5-1:分布统计(E 类 · 证据)· 原文 Fig. 5, p6
图 5-1 分布统计(E 类 · 证据)· 原文 Fig. 5, p6 怎么读 ①指认:图按列组织,每一列是一个不同的视角;每列里上方是该视角下的画面,下方是对应的直方图:横轴是 d₁(也就是核中心的落墨率),范围 [0, 1],红虚线标的是均值。②读法:横向比同一行里不同列的直方图,看的是「换视角后统计量变了没有」;看同一个直方图里分布的宽窄与形状,看的是「同一幅画面里的基元彼此像不像」。 来源:Learning View-Dependent Splatting Kernels, Fig. 5, p6 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

「随场景变」这一句比「随视角变」更要留意。 随视角变是 Φ_proj 的输入里带了视角信息的直接后果;而随场景变意味着,同一个网络、同一套权重,在不同场景里长出了不同的核分布。这条性质正是 11.3 节那个「专用基元」结论的入口。

9.3 图 6-1:核会不会随场景类型分化

原文在这一节做了一次控制实验。 它挑了两类场景,毛发与植被:并说明数据是这么造的:对每个场景,我们生成 100 张训练图像,做法是在上半球上随机采一个朝向场景中心的视点,然后用 Blender 把对应的 3D 场景渲出来[§6.2, p6]。

结论有两句,第二句是重点。 第一句:图中显示基元分布与场景类型之间存在强相关[§6.2, p6]。第二句:对每一类场景,学到的基元的总体分布看起来相当相似[§6.2, p6]。

图 6-1:分布对照(E 类 · 证据)· 原文 Fig. 6, p7
图 6-1 分布对照(E 类 · 证据)· 原文 Fig. 6, p7 怎么读 ①指认:图按行排开,从上到下依次是植被与毛发两类场景;每一格里嵌着对应 d₁ 的分布小图(红虚线为均值,横轴仍是 [0, 1])。②读法:上下比,看两类场景的分布有没有分开,「同一类内部相似、两类之间不同」这个模式就是原文那两句判词的依据。 来源:Learning View-Dependent Splatting Kernels, Fig. 6, p7 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改 图内资产声明(原文致谢):Fig. 6 与 Fig. 1 使用了 khaloui 的素材(extended use license)与 MagicCGIStudios 的素材(standard license)[Acknowledgments, p7]。

原文从这个「相似」直接推出一句关于未来的话,值得原文照录:这提示了一项有意思的未来工作,进一步压缩这些相似的基元,以获得更高效的表示;换句话说,这个框架可以当工具用,去自动生成新的、面向特定场景类型的专用泼溅基元,而不再只用通用基元[§6.2, p6]。

把这句话放回全篇的动机里看,它的分量不小。 第 1 章那个「正方形比高斯省」的例子问的是「什么形状最优」;到这一章,答案变成了「形状没有唯一最优,它取决于场景类型」:而这正是把「核」从手工设计里拿出来的全部理由。

10表示效率:同样的内存预算换回多少画质

第 8 章比的是画质,这一章比的是「花多少内存换这些画质」。 原文的小标题是表示效率[§6.1.3, p4]。

10.1 口径:先关掉颜色,只看几何

这一节的做法有一处刻意的简化,必须跟着结果一起读。 原文说:具体来说,按照[Liu et al. 2025b]补充材料里的协议,我们关掉全部视角相关的颜色成分,以便把注意力集中在核的几何带来的影响上[§6.1.3, p4]。

换句话说,这张表量的是「核」的功劳,不是「颜色模型」的功劳。 表 1 是完整系统对完整系统,表 2 是把两边都削到只剩几何之后的对照,两张表的差别正是本篇「几何视角相关」与「颜色视角相关」的分工(第 11 章会回到这一条)。

比较的条件是:在 Tanks & Temples 数据集上,给每类方法三档不同的原语内存占用:约 25MB、约 50MB、约 100MB[§6.1.3, p4;表 2, p5]。指标三项:重建质量(PSNR)、原语数量(#Prim.)、渲染速度(FPS)[表 2 注文, p5]。

10.2 把表 2 自己算一遍

原始读数(表 2, p5)先摆全,下面所有结论都从这里算:

方法~25MB 档:PSNR / #Prim. / FPS~50MB 档~100MB 档
3DGS23.12 / 446K / 29523.36 / 893K / 23223.38 / 1.79M / 198
3DGS-MCMC22.83 / 446K / 30123.40 / 893K / 23523.68 / 1.79M / 165
SSS23.90 / 391K / 13024.20 / 781K / 10424.38 / 1.56M / 80
DBS23.57 / 417K / 31923.79 / 833K / 24924.24 / 1.67M / 178
Ours (k=2)22.80 / 328K / 12324.18 / 657K / 8025.22 / 1.32M / 42
Ours (k=4)24.08 / 328K / 10224.66 / 657K / 6725.15 / 1.32M / 36
Ours (k=8)24.19 / 328K / 9624.70 / 657K / 5525.04 / 1.32M / 28

第一笔账:在最小的那一档,本篇其实是全场最低。 25MB 档里,Ours(k=2) 的 22.80 低于 3DGS-MCMC 的 22.83、更低于 3DGS 23.12、DBS 23.57、SSS 23.90[表 2, p5]。把 k 调大能救回来(k=4 → 24.08、k=8 → 24.19,都超过 SSS),但那意味着「在极小预算下想用好它,得自己把 k 调上去」:这个前提原文没有明说,是表里读出来的。它的原语数在这一档是最少的(328K),与「PSNR 最低」并列,说明这一档不是它的主场。

第二笔账是这一节真正的论据:用一半的原语数,赢过对手的最大档。

对比我们(中档,657K)对手的最好档结果
Ours (k=8) vs SSS 最大档24.70 @ 657K24.38 @ 1.56M+0.32 PSNR,原语只用 42.1%
Ours (k=4) vs DBS 最大档24.66 @ 657K24.24 @ 1.67M+0.42 PSNR,原语只用 39.3%
Ours (k=8) vs 3DGS 最大档24.70 @ 657K23.38 @ 1.79M+1.32 PSNR,原语只用 36.7%

(三行的「对手最好档」都取自同一个数据集的 ~100MB 档;比例按 #Prim. 现算。)

第三笔账是最大档的绝对领先。 Ours(k=2) 在 ~100MB 档拿到 25.22,比第二好的 SSS(24.38)高 0.84,而它用的原语是 1.32M,比 SSS 的 1.56M 少 15.4%、比 DBS 的 1.67M 少 21.0%[表 2, p5]。注意这一档里 k=2 反而是最好的(25.22 > k=4 的 25.15 > k=8 的 25.04):这与 25MB 档里 k 越大越好的趋势正好相反,第 11 章会把这条单独讲。

10.3 代价记在帧率上

上面前三笔账都没有把 FPS 算进去。 一旦算进去,画面就变了:

档我们的 FPS对手的 FPS倍数
~25MB123(k=2)295(3DGS)/319(DBS)慢 2.4–2.6×
~50MB80(k=2)249(DBS)慢 3.1×
~100MB42(k=2)178(DBS)慢 4.2×

「原语更少」并没有带来「更快」。 这看起来与直觉相反,原因在第 5 章埋过伏笔:加速那一手把 Φ_dec 的调用次数降到了 k 次,但它没有把网络从渲染里拿掉:每枚基元每帧仍要跑 k 次网络,还有 Φ_proj。作者的量化在第 12 章:Φ_proj、Φ_dec 与光栅化的耗时比约为 9 : 2 : 1[§7, p6]。两个网络吃掉了九成以上的时间,原语数量的优势因此被掩盖。

还有一件容易被漏掉的事:内存不随 k 变。 表 2 的注文写得很明确,我们的内存占用不随 k 变化[表 2, p5]。三档里 k=2/4/8 的原语数完全一样(328K/657K/1.32M)就是这个意思。原因是第 5 章那条:k 只是运行期的采样密度,采样值是由 Φ_dec 现算的,不作为基元参数存下来。所以 k 是一个可以事后调、且不花内存的旋钮。

10.4 定性对照与两条口径限定

图 8 把「不同内存预算」下的定性对比画了出来,对手与图 7 相同(3DGS-MCMC、SSS、DBS),我们的三个 k 变体都出现[§6.1.1, p4;Fig. 8 图注, p9]。

图 8-1:定性对比(E 类 · 证据)· 原文 Fig. 8, p9
图 8-1 定性对比(E 类 · 证据)· 原文 Fig. 8, p9 怎么读 ①指认:与图 7-1 同构,多组局部放大画面并排、组内按方法与预算分栏,每张相关画面底部印着该方法的 PSNR/SSIM/LPIPS;我们的栏里按 k = 2、4、8 分。②读法:先横着比同一预算下我们与对手,再竖着比同一方法跨预算:后者才是「多花内存买到什么」的直观形式。本图同样排在参考文献页之后(p9),仍属末页宽图。 来源:Learning View-Dependent Splatting Kernels, Fig. 8, p9 · © 2026 the owner/author(s)(CC BY-NC-ND 4.0,逐图署名引用)· 原样引用,未修改

这一节有两条口径限定要跟着写出来,否则容易把结论放大:

  • 限定一:表 2 只算了体积侧。 表里七行全是体积基元(我们的三行是 k=2/4/8),平面基元的效率没有被量化。第 8 章那条「平面基元在两个场景上必须换用 RTX PRO 6000」暗示平面侧的显存成本不低,但原文没有给出数字[§6, p4]。
  • 限定二:只在 Tanks & Temples 一个数据集上做。 表 2 的注文写明比较是在该数据集上进行的[表 2 注文, p5]。效率结论没有跨数据集验证。

11四个旋钮,与一个「k 看预算」的结论

这一章把散在三张表里的消融并到一处。 原文一共转了四个旋钮:Φ_proj 吃什么(表 3)、隐码维度与网络宽度(表 4)、预训练的目标剖面(表 5)、以及颜色模型(表 1 里那一行)。外加 k 这个不花内存的旋钮。

11.1 旋钮一:Φ_proj 的输入(表 3)

这一张表兑现的是第 3 章那句「多喂因子能提质量又不伤泛化」。 对象是 Tanks & Temples 与 Deep Blending 两个数据集,末行是当前选择[表 3 注文, p6]:

Φ_proj 的输入Tanks & Temples PSNR↑Deep Blending PSNR↑
z₃D24.9229.96
z₃D, ωo24.9730.09
μ^cam_3D, s, R^cam(不含 z₃D)24.8230.49
z₃D, s, R^cam25.3730.06
z₃D, μ^cam_3D, R^cam25.4530.18
z₃D, μ^cam_3D, s24.5330.25
z₃D, μ^cam_3D, s, R^cam(当前选择)25.4230.52

算三处增量,能把这几个因子各自的份量分开:

  • 加上 R^cam 值多少:z₃D, μ^cam_3D, s → z₃D, μ^cam_3D, s, R^cam,T&T 上从 24.53 涨到 25.42(+0.89);DB 上从 30.25 涨到 30.52(+0.27)[表 3, p6]。这是单笔最大的一处提升,与第 3 章「R^cam 高效编码了 3D 视角信息」那句话对得上。
  • 加上 z₃D 值多少:s, R^cam → z₃D, s, R^cam,T&T 上从 24.82 涨到 25.37(+0.55)[表 3, p6]。核的隐码本身是有用的。
  • 去掉 z₃D 代价多大:z₃D, s, R^cam → s, R^cam,T&T 上从 25.37 掉到 24.82(−0.55):与上一条同源,方向一致。

但这里有一处两数据集不一致,值得点出来。 单看 T&T,最好的是 z₃D, μ^cam_3D, R^cam(25.45),比当前选择的 25.42 高 0.03;换成 Deep Blending,最好的却是当前选择(30.52),而前者只有 30.18。当前选择在 DB 上第一、在 T&T 上只差 0.03:这就是原文说它「在保持泛化能力的同时」的实测含义:默认组合不是每个单表上的最优,但它是唯一在两个表上都接近最优的。

11.2 旋钮二:隐码维度与网络宽度(表 4)

这张表把「两个隐码」与「两个网络」的规模摆在一起,还带一列内存[表 4, p6]:

变体T&T PSNR↑T&T Mem.(MB)↓DB PSNR↑DB Mem.(MB)↓
dim(z₃D)=125.10360.0430.19660.04
dim(z₃D)=1025.52414.0430.12759.04
dim(z₂D)=124.94384.0429.37704.04
dim(z₂D)=1025.46384.0429.97704.04
width(Φ_proj)=3225.14384.0130.13704.01
width(Φ_proj)=12825.50384.1530.33704.15
width(Φ_dec)=825.47384.0430.48704.04
width(Φ_dec)=224.75384.0430.41704.04
默认(5/5/64/4)25.42384.0430.47704.04

先看内存那一列,它的规律比画质那一列更干净。 九行里,只有 dim(z₃D) 那两行动了内存(360.04 / 414.04),其余七行全部停在 384.04 或只差 0.01–0.15 MB[表 4, p6]。原因不难推:z₃D 是逐基元存储的参数,维度直接乘进基元存储里(9 个维度差对应 54 MB,即约 6 MB/维);而 z₂D 是 Φ_proj 在渲染时现算出来的,网络宽度是全局共享的权重,两者都不逐基元占内存。所以「想省内存就压 z₃D,想提画质就加宽网络」:这两件事的代价完全不在一个量级上。

再看画质那一列,它给出的是一条「两端都好、中间有坑」的曲线:

  • dim(z₂D)=1 是最伤的一处:DB 上只有 29.37,是全表最低(比默认的 30.47 掉 1.10);T&T 上 24.94 也是全表第二低,只比最低的 width(Φ_dec)=2(24.75)好一点[表 4, p6]。投影后的隐码太窄,投影这一步就表达不出来,这与第 3 章「Φ_proj 的输出是 z₂D」的定位一致。
  • width(Φ_dec)=2 是另一处:T&T 24.75,比默认的 25.42 掉 0.67[表 4, p6]。解码器再小也有底线。
  • 两端加大都能换到一点:dim(z₃D)=10 在 T&T 上拿到全表最高的 25.52(+0.10,代价 +30 MB);width(Φ_proj)=128 拿到 25.50(+0.08,代价 +0.11 MB);width(Φ_dec)=8 在 DB 上拿到最高的 30.48(+0.01)[表 4, p6]。

这一处「两份数据集的赢家不同」又一次出现:dim(z₃D)=10 在 T&T 上第一,在 DB 上却是 30.12,低于默认的 30.47 不少。原文对默认组合的判词是「在质量与内存占用之间取得了良好的平衡」[§6.2, p6],上面这笔账正是它的依据。

11.3 旋钮三:预训练的目标剖面(表 5)

这是本篇最值得细看的一张消融,因为它把「预训练有没有用」与「用哪种目标」分开了。 对象是 Tanks & Temples,列为五种预训练方式 × 三档 k,单位是 PSNR[表 5, p6]:

预训练目标k = 2k = 4k = 8
不预训练23.1823.7218.54
Gaussian25.2425.0425.11
polynomial25.3725.3725.20
linear25.2225.2625.15
cosine(本篇选择)25.4225.3425.42

把两笔差分开算,结论会很清爽:

  • 「预训练 vs 不预训练」的差是 1.62–6.88 PSNR。k=2 时 25.42 − 23.18 = +2.24;k=4 时 25.34 − 23.72 = +1.62;k=8 时 25.42 − 18.54 = +6.88[表 5, p6]。这是数量级最大的一笔。 原文对这一处的限定是:在不预训练的实验中,学习率被乘了 10[§6.2, p6],也就是说这条对照已经给了「不预训练」一个更激进的步长,差距仍然这么大。
  • 「四种预训练目标之间」的差最多只有 0.20–0.33。k=2 时四值落在 25.22–25.42(跨度 0.20);k=4 时 25.04–25.37(跨度 0.33);k=8 时 25.11–25.42(跨度 0.31)[表 5, p6]。

两笔并起来读,才是这张表真正说的话:要紧的是「先预训练」这件事本身,至于拿什么形状当目标,并没有那么要紧:四条曲线彼此贴得很近。原文的口径是「我们选择余弦形状,因为它带来最好的结果」[§6.2, p6];按上表,余弦在 k=2 与 k=8 两列上是第一,在 k=4 那一列上输给 polynomial 0.03。这个选择是「同类里最好」,不是「唯一能用」。

k=8 那一列的 18.54 还要单独看一眼。 不预训练时 k=8 掉得比 k=4(23.72)和 k=2(23.18)都狠,说明没有预训练打底时,把剖面采样点加密不但没帮助,反而更容易训崩。这与 13.4 节那条「k 该取多大看预算」是同一条线索的两端。

11.4 旋钮四:k,以及它为什么会转向

k 的结论藏在表 2 的后三行里(第 10 章已经摆过原始读数)。原文的判词是:在原语内存占用较小时,增大 k 会带来更高的重建质量,因为学到的核的表达力提高了;而在内存占用较大时,这个趋势观察不到[§6.2, p6]。

把三档的 k 曲线拉出来,这条判词是能量化的:

档(#Prim.)k=2k=4k=8趋势
~25MB(328K)22.8024.0824.19递增,k=2→4 一次涨 +1.28
~50MB(657K)24.1824.6624.70递增,但涨幅缩到 +0.48 / +0.04
~100MB(1.32M)25.2225.1525.04反向递减,k=2 反而最好

原文给的理由是:随着原语数量(也就是内存占用)增加,每枚泼溅在屏幕空间里的平均尺寸变小了;于是简单的锥形帽形状的核(k = 2)已经足以产出令人满意的结果,同时还比用更大的 k 渲染更快[§6.2, p6]。

这句解释值得拆开来验证一遍。 原语越多 → 平均每枚铺得越小 → 剖面在屏幕上的「可见范围」越窄 → 用两个采样点加线性插值(一条折线,也就是锥形帽)就能把这条窄剖面描述够。反过来在 328K 那一档,每枚铺得大,折线不够,多给几个采样点确实能换到画质。原文还补了一句旁证:这个结果与[Celarek et al. 2025]的主要结论一致[§6.2, p6]。

FPS 那一列是这条结论的另一半:三档里 k 越大帧率越低(328K 档 123→96;657K 档 80→55;1.32M 档 42→28)[表 2, p5]。所以「大预算下 k=2 够用」同时意味着更快:这也是本篇在最大档取 k=2 的理由。

11.5 颜色模型那一条,与一句「不等价」

最后一项消融在表 1 里。原文说:在 Tab. 1 中,我们把基于视角相关 SH 的颜色模型换成一个每基元单一的常数颜色,记作 Ours (3D,w/o SH),结果质量更低[§6.2, p6]。

换掉颜色模型会掉多少,表 1 的 Mip-NeRF360 那一行给得很清楚:Ours (3D,w/o SH) 28.53 / 0.835 / 0.192,对照 Ours (3D+SH) 的 28.73 / 0.842 / 0.185[表 1, p5],PSNR 掉 0.20、SSIM 掉 0.007、LPIPS 升 0.007。这比 13.2 节里任何单个旋钮的影响都大,但比 13.3 节的预训练小得多。

原文紧接着给了一句判词,是这一节最该记下来的一句:颜色的视角相关性与几何的视角相关性不应被视为等价,因为它们在不同的通道上工作(也就是 RGB 与 alpha 通道)[§6.2, p6]。

这句话的用意是划定边界。 本篇标题里的「view-dependent」指的是几何(核的形状随视角变),而 SH/SB 带来的是颜色随视角变。两者都会让画质变好,但它们是两件可以独立开关的事,不能互相代替:「w/o SH」那一行正是这个说法的证据。

12边界与反例

这一章把原文自己承认的局限、与从数据里读出来的边界,放在一处。 前者以 §7 为主,后者散在第 10–13 章里。

12.1 作者自己列出的三条局限(§7)

第一条,也是最硬的一条:渲染速度低于同代方法。 原文的措辞是:如 Tab. 2 所示,我们的渲染速度低于 state-of-the-art 技术,即使在很多情况下我们能达到实时性能(> 50 fps)[§7, p6]。

原因原文给得很实:Φ_proj 与 Φ_dec 主要是为重建质量与表示效率设计的;当前在 Φ_proj、Φ_dec 与光栅化之间的耗时分解大约是 9 : 2 : 1[§7, p6]。

这个 9 : 2 : 1 是整篇最该记住的一个数。它说明本篇的瓶颈不在几何、不在光栅化,而在那两个 MLP:光栅化只占一成。第 10 章「原语更少却更慢」的谜底就在这里。

出路原文也列了两条:可以用各种加速手段把这两个 MLP 蒸馏成高性能版本(权值剪枝、切到 FP16 精度等),或者甚至用符号回归(symbolic regression)之类的方法反推出等价的解析方程[§7, p6]。第二条比第一条更要留意:它等于说:本篇学出来的核,有希望被重新写成一条手写式子,也就是回到第 1 章那条「解析核」的路上,但这次是由数据指定的式子。

第二条:没有考虑抗锯齿。 原文写:我们没有把抗锯齿纳入考虑;看起来有可能把我们的方法与相关技术(如[Yu et al. 2024a])结合起来[§7, p6]。

第三条:没有用高级编码。 原文写:Φ_proj 与 Φ_dec 的输入没有采用任何高级编码方法(比如位置编码、频率编码);我们有兴趣探索不同的编码来进一步改进性能,尤其是在 2D 泼溅上[§7, p6]。

这三条合起来读,有一个共同的形态:本篇把「核学出来」这件事先做通了,把工程上的三项常规优化(加速、抗锯齿、编码)全部留在了外面。 这不是遗漏,原文把它们逐条当作未来工作列了出来。

12.2 从数字里读出来的边界(原文没有单列)

下面这几条在原文里没有集中写,但表与正文里都摆着,读的时候要跟着结论一起带上:

#边界依据
B1「最好或次好」不等于「每格第一」。Mip-NeRF360 的 LPIPS 上 DBS 的 0.182 比我们的 0.185 更好,SSIM 上 DBS 的 0.844 也略高于我们最好的 0.842表 1, p5;第 10.3 节
B2最小内存档(~25MB)里,k=2 的 PSNR 是全场最低(22.80),需要把 k 调大才超过对手表 2, p5;第 12.2 节
B3表示效率只在体积侧、且只在 Tanks & Temples 一个数据集上验证表 2 注文, p5;第 12.4 节
B4平面基元的显存成本没有被量化,而它在 Drjohnson/Treehill 上必须换用 RTX PRO 6000 才跑得动§6, p4;第 10.1 节
B5默认组合不是任何单表上的最优:T&T 上 z₃D, μ^cam_3D, R^cam 的 25.45 高于默认的 25.42;dim(z₃D)=10 的 25.52 也更高表 3、表 4, p6;第 13.1–13.2 节
B6k 的收益方向会随预算翻转(小预算递增、大预算递减),所以「增大 k」不是一条无条件正确的建议表 2, p5;第 13.4 节
B7预训练目标的选择只影响 0.20–0.33 PSNR,而有/无预训练的差是 1.62–6.88:结论对目标形状并不敏感,但对预训练本身高度敏感表 5, p6;第 13.3 节
B8NeRF Synthetic 是合成场景,其余三个基准是实拍;该列数字(PSNR 34 以上)的量级差首先来自数据§6, p4;第 10.1 节
B9一般 2D 核在体积侧被主动放弃(径向对称是拓扑上的必需),因此体积侧的核在给定视角与给定基元下没有方向自由度;自由方向只出现在平面侧§5.3.2, p3;第 4 章

12.3 原文给未来工作的四句话

§7 后半段列了一串未来方向,其中四句照录,因为它们标出了本篇的位置[§7, p6]:

  • 自动设计图形表示:希望这项工作能激发更多关于「图形表示自动设计」的研究(例如为特定类型的场景开发高效、专用的表示),甚至包括处理管线本身[Zeng et al. 2025]。
  • 视角相关性到底学到了什么:分析视角相关性里究竟学到了什么,并把它与刚性的欧氏 3D 一致性作比较;学到的一致性也许能帮助其他任务,比如正则化生成式 3D 建模。
  • 时序指标:希望在时间域上计算量化指标,以系统性地分析动画里的重建质量[Liang et al. 2023]。
  • 与重光照结合:希望与重光照方向的 state-of-the-art 工作[Bi et al. 2024]结合,以支持新视角与新光照条件下的高效图像合成。

第一条与第二条合起来,是这篇论文最像「一个开头」的地方。 它没有声称找到了最优核,而是给了一个能学核的框架,并把「核应该按场景类型分工」与「视角相关性到底是什么」这两件事留在门口。

13这篇论文的六条贡献

  • 一个绕开线积分的可微框架:不算 3D 密度沿视线的线积分,而是直接学投影之后的 2D 核,从而不再需要闭式积分、也不绑死在某类网络上(§1、§5;第 1–2 章)。
  • 两个轻量全局网络:Φ_proj(4 层 64 神经元)负责 3D 核 → 2D 核的投影,Φ_dec(3 层 4 神经元)负责把 r² 解成不透明度;两者共用一套权重、与基元属性联合优化(§5.2、§5.3;第 4–5 章)。
  • 学出来的视角相关性:核随视角变化,而不是像前人那样只在「基元形状」上体现视角(§2.1、§6.1.2;第 9 章)。
  • 一套可落地的加速:把 1D 剖面在 k 个 r 采样点上预求值、渲染时插值,把「基元内像素数」与「网络调用数」解耦,且不占额外内存(§5.3.3;第 5 章)。
  • 径向对称的一处理论依据:用 hairy ball 定理说明「任意 3D 视角 → 2D 坐标架」的映射不连续,并给出在动画里会退化成核突转的实测后果(§5.3.2;第 4 章)。
  • 向平面基元的扩展:同一套办法学一般 2D 核(不对称、10 维隐码、解码器隐层翻倍),并把它与既有的可学习径向核工作区分开(§5.4;第 6 章)。
  • 实验与三条口径限定:4 个基准 21 个场景上画质达到最好或次好;三档内存预算下的表示效率;以及作者自己列出的速度、抗锯齿、编码三项局限(§6、§7;第 10–14 章)。

14出处、许可与怎么读这篇

项内容
标题Learning View-Dependent Splatting Kernels
作者Huakeng Ding\、Zhanpeng Liu\、Fan Pei、Kun Zhou†、Hongzhi Wu†(浙江大学 CAD&CG 国家重点实验室;Kun Zhou 另兼杭州全息与人工智能技术研究院)· \* 并列第一作者,† 通讯作者
发表ACM SIGGRAPH Conference Papers '26(Special Interest Group on Computer Graphics and Interactive Techniques Conference Conference Papers),2026-07-19–23,Los Angeles, CA, USA · 10 页
标识DOI 10.1145/3799902.3811064 | ISBN 979-8-4007-2554-8/2026/07 | arXiv 2605.25426v1 [cs.GR](2026-05-25)
项目页https://optkernel.github.io
授权CC BY-NC-ND 4.0(依据所据 PDF 内的权利块)。PDF 首页左栏页脚(7.0 pt,y 643–684)印 This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.,同处另有 © 2026 Copyright held by the owner/author(s). 与 ACM ISBN;而 arXiv 摘要页 License 字段为 http://arxiv.org/licenses/nonexclusive-distrib/1.0/(arXiv 非独占分发),两处不一致。实测 nonacm/Engage/enable CC/ACM Engage 四关键词全部 0 命中,故不套用篇目 56 的判法(那个判法的前提是「CC 行与模板警告并存」,本篇不存在该前提)。⇒ 可原样引用、可站内托管原文 PDF,落点三件(index.html + thumb.webp + paper.pdf),卡片 chip 不带 warn;因 ND 禁演绎,封面与图件一律等比缩放、不裁切、不加标注、不施滤镜,逐图给出「图号 + 页码 + 出处 + 未修改」四字段。反向证据照录留档:若改以 abs 页为准,本篇应判非 CC(落点两件、chip 带 warn、不托管 PDF),改动面为两处。
使用说明本篇正文只对原文作简短引用;摘要为英文原样引用并标页码;所有原图未裁切拼接、未加标注、未施滤镜,逐图给出「图号 + 页码 + 出处 + 未修改」四字段
本篇图元清单(13 件,均 E 类原样引用):图 1-1(p0)|图 2-1(p3)|图 3-1(p4)|图 4-1(p5)|图 5-1(p6)|图 6-1(p7)|图 7-1(p8)|图 8-1(p9)|表 1-1(p5)|表 2-1(p5)|表 3-1(p6)|表 4-1(p6)|表 5-1(p6)。 式(8 条全部逐步重推):(1)(2)(3) 第 2 章|(4) 第 3 章|(5) 第 4 章|(6)(7) 第 5 章|(8) 第 6 章。 自绘:0 张。