十二篇论文,一条主线:三维场景怎样被表示、怎样被改动。
目标是把《基于高斯泼溅的辐射场变形方法研究》的每一项创新,都还原到它继承自哪里、真正新增了什么。
直接翻张波涛论文,会看到「球谐特征系数」「身份标识编码」「变形 MLP」「半径滤波」—— 每个词都认识,但连不起来。因为这些词不是他发明的,而是从过去五年十几篇论文里一层层搭上来的。不读前作,读不懂论文;但一篇篇硬啃,又看不到重点。
从一堆照片恢复出可渲染的三维场景。
关键词:表示、渲染、初始化、致密化
→ 对应 NeRF、3DGS、GaussianPro、Revising Densification
在已建好的场景里,认出某个物体、把它单独选中、删掉或改掉。
关键词:分割、身份编码、分组、空洞修补
→ 对应 SPIn-NeRF、Gaussian Grouping
让场景随时间运动,或按用户意图被拉伸、弯曲、移动。
关键词:规范空间、变形场、时间编码、控制点
→ 对应 D-NeRF、Nerfies、Deformable 3D Gaussians、4D-GS、SC-GS、GaussianMesh
改「从什么起点开始补点」。对照 GaussianPro、Revising Densification。
加「身份编码」把高斯分组,再删物体、补空洞。对照 Gaussian Grouping、SPIn-NeRF。
规范空间 + 变形 MLP 做动态重建。对照 Deformable 3D Gaussians、D-NeRF。
后面所有论文都在改这个问题的答案。NeRF 说「用神经网络的权重」,3DGS 说「用几百万个椭球」。 这一换,换来的是训练从两天变四十分钟、渲染从十秒一帧变一秒一百三十帧。
给网络一个空间坐标和一个观察方向,它告诉你那个点「有多实」(密度 σ)和「朝这个方向看是什么颜色」; 再沿相机视线把所有点积起来,就得到这张图的一个像素。因为整条链路可求导,只用一堆已知位姿的照片做梯度下降,就能把网络「训练成」这个场景。
它贡献了两个被后面所有工作继承的东西:
① 「辐射场」这个概念——场景 = 位置/方向 → 颜色/密度的函数;
② 体渲染公式——3DGS 的 alpha 合成正是它离散化后的样子。
NeRF 体渲染的 alpha 合成,和点泼溅的 alpha 混合,本质是同一条公式。既然公式一样,就没必要用「连续场 + 沿光线采样」这种昂贵实现,可以直接用 GPU 光栅化天生擅长的显式图元。
位置 μ、不透明度 α、球谐系数(颜色)、以及协方差 Σ = R S Sᵀ Rᵀ。
协方差拆成旋转 + 三个轴长分别优化,这样无论怎么更新都保证是合法椭球。
Mip-NeRF360 数据集上:
训练 41 分钟(对比 48 小时)
渲染 134 fps(对比 0.06 fps)
画质 SSIM / LPIPS 反超
| NeRF(2020) | 3DGS(2023) | 这差别意味着什么 | |
|---|---|---|---|
| 三维表示 | 一个 MLP 的权重 | 数百万个显式高斯椭球 | 高斯可以被单独抓住、增删、移动 |
| 渲染方式 | 沿每条光线采样、查询网络 192 次 | 投影成 2D 椭圆,排序后 alpha 混合 | 渲染快约 2000 倍 |
| 场景信息藏在哪 | 网络的隐式权重里 | 每个高斯的属性里 | NeRF 没法「挑出某一块来改」 |
| 初始化 | 不需要(从头训) | 强依赖 SfM 稀疏点云 | 点云烂 → 重建就差(随机初始化掉 5.6 dB)→ 张论文第 3 章的入口 |
| 语义/实例信息 | 无 | 无 | 不知道哪个高斯属于哪个物体 → 张论文第 4 章的入口 |
| 时间维度 | 假设场景静止 | 假设场景静止 | 动起来就糊 → 张论文第 5 章的入口 |
| 训练 / 渲染 | 1–2 天 / 0.06 fps | 41 分钟 / 134 fps | 显存代价:3DGS 峰值可超 20 GB |
3DGS 的起点是 SfM 给的稀疏点云。可 SfM 在白墙、路面、天空这类没纹理的地方基本找不到点, 3DGS 只能在别处「就地」克隆分裂,长出一堆位置和朝向都不对的高斯。 两篇论文从两个不同角度攻这个问题:一个管「往哪补」,一个管「何时补」。
SfM 在无纹理区产不出点,这些区域完全没被初始化。3DGS 的克隆/分裂只能从已有高斯就地产点,起点就错了, 结果整条街道的地面被几个巨大的错误高斯「糊」过去,换个视角就崩。
3D 高斯的「谁挨着谁」在三维里很难算;但投影到 2D 后,同一个局部平面上的高斯,投影必然落在相邻像素、且深度和法向接近。 那就借用多视图立体视觉(MVS)的成熟武器——局部平面补丁匹配 + 多视图光度一致性——在 2D 上传播几何,再反投影回 3D。
传播出来的法向图当伪标签,加一个平面约束损失去监督高斯的朝向——让老点也长得更像真实表面。
3DGS 用位置梯度决定要不要加点。但梯度只对「误差变不变化」敏感,对「误差本身有多大」是瞎的。
一片草地被几个大高斯糊住时,误差很大,可高斯在小范围里怎么挪都不改变误差 → 梯度≈0 → 永远不补点,一直糊着。
把判据从一阶梯度换成零阶误差:直接算每个像素的重建误差,按各高斯在该像素的混合权重把误差「分摊」下去, 谁背的误差大,就让谁优先分裂。判据从「误差的变化率」变成「误差本身」,量纲直观,阈值也好设。
α̂ = 1 − √(1−α),不改的话克隆品权重被系统性放大sh[:, :3, 0],再 rgb = C₀·f_dc + C₁论文逐一论证了直通/条件/体素/统计滤波都不适用,最终选半径滤波: 邻域半径取所有投影近似圆半径的最小值,邻域最少点数 K=3(与 3DGS 初始化时用的 K 一致)。
在 Mip-NeRF360 上:SSIM +0.034、PSNR +0.685、LPIPS −0.081;
Deep Blending:+0.002 / +0.072 / −0.019;
Tank&Temples:+0.014 / +0.382 / −0.012。
提升幅度在 Mip-NeRF360 上最明显,在另两个数据集上较小。
| GaussianPro(03) | Revising Densification(04) | 张论文第 3 章 | |
|---|---|---|---|
| 改的是哪一环 | 「往哪补」——新点的位置和朝向 | 「何时补」——加点判据 | 「从什么起点开始补」——初始点云质量 |
| 新高斯从哪来 | 2D 深度/法向图传播 + 反投影 | 不变(仍是 clone / split) | 第一次 3DGS 的派生点云本身 |
| 几何依据 | 有:多视图光度一致性 + 局部平面 | 无(不需要) | 无任何外部几何先验 |
| 去噪 / 控制 | 多视图一致性 + 阈值 + 天空 mask | 不透明度修正、增长上限、平滑衰减 | 半径滤波(纯几何,工程简单) |
| 要重训吗 | 不重训,点直接插进同一个优化 | 不重训 | 要,从零跑第二次 |
| 额外代价 | +25%~40% 训练时间 | 几乎为零 | ≈ +100% 训练时间 |
这是全篇最抽象、但收益最大的一段。核心问题:场景在动,NeRF 那条「同一个点从不同照片看颜色应该一样」的假设就崩了。
解法是把当前时刻的点先搬回一个统一的标准姿势,再在那个姿势下查颜色和密度。
这个「统一姿势」叫规范空间,负责搬动的那个网络叫变形场。后面 3DGS 上所有动态工作,用的都是这一招。
不给每个时刻单独学一个模型,而是学一张共享的静态场景(规范空间)加一个把当前时刻映射回去的位移场。 这样任意两帧之间就通过规范空间「串」起来了——某一帧某个视角看不到的地方,可以从别的帧补回来。
物体可以移动、可以变形,但不会凭空出现或消失。 所有帧说的是同一批点,只是位置不同——这就是「搬回去」这个动作能成立的物理依据。
D-NeRF 完全没有变形正则化项。它防「变形乱动」只靠三件事:规范时刻硬约束、端到端联合训练、课程学习。
所以它在大变形、视角稀疏时会退化。补上这个洞的是下一篇 Nerfies。
「联合优化 NeRF + 变形场」是一个欠约束问题。物体往后移动和物体缩小,在图像上看起来一样,中间还有无数个解。 不加先验,网络会给出扭曲、不合理的变形——看起来渲染对了,几何全是错的。
D-NeRF 用时间 t 当条件;Nerfies 改成每帧一个可学习的隐变量 ωᵢ。 好处是不要求帧有时序、也不要求时间均匀,适合手机随手拍。代价是失去了显式的时间含义。
用滑动窗控制位置编码的频带——训练早期只允许学平滑的大动作,之后逐步放开高频细节。 这样能避开变形场的局部极小值。
D-NeRF 用三行分别展示规范空间、t=0.5、t=1.0 三个状态。 同一个物理点在三个状态下颜色一致,说明位移场确实学对了——而不是靠颜色硬编码糊过去。
| D-NeRF / Nerfies | 换成 3DGS 后 | |
|---|---|---|
| 训练 | D-NeRF 单卡 2 天 Nerfies 全高清 8 卡 1 周 | 张论文第 5 章: 0.16 – 0.96 小时 |
| 渲染 | 沿光线采样 64 点跑 MLP | 投影 + alpha 混合,实时 |
| 高频细节 | Nerfies 要专门拿一张图 展示「能重建发丝」 | 3DGS 天然擅长 |
3DGS 建出来的是一堆离散、散乱、没有语义的高斯。想在场景里「把那只熊删掉」,
你没法告诉程序「哪些高斯是熊」——几百万个高斯,没有任何一个带标签。
这一阶段的全部工作,就是把「身份」这件事塞进每个高斯里。
不训 3D 修补器(数据量根本不够),而是把现成的、不懂 3D 的 2D 模型(交互式分割 + 视频分割 + LaMa 图像修补)的输出「蒸馏」进 3D。 并且用感知损失 LPIPS 而不是像素 MSE 来监督掩码区域——因为 LPIPS 允许细节上不完全一致,从而容纳多视角 2D 修补结果之间的矛盾。
3DGS 的每个高斯是离散、显式、可单独操作的。那就把「身份」也做成每个高斯的一个可学习属性, 和颜色完全平级处理,再用 SAM 的 2D 掩码去监督。训完之后,同一个物体上的高斯的身份码会自然聚在一起—— 于是「删掉某物体」就变成「把这一组高斯删掉」,不用重新训练。
只用 2D 损失会出现「透明熊问题」:熊内部那些在所有训练视角都被遮挡的高斯得不到监督,编码学不出来。 3D 正则要求空间上相邻的高斯编码接近,把这块补上。消融显示近邻数 K=5 时移除准确率从 41.2% 提到 76.6%。
基于代价的线性分配每次渲染迭代都要重算匹配:2K 次迭代要 1 小时、掩码噪声大、重建细节丢失; 换成 DEVA 零样本关联只要 1 分钟,提速 60 倍以上。而且当 DEVA 的 2D 掩码本身有错时,3D 高斯表示还能反向纠错。
LERF-Mask 上 mIoU 69.7 / 77.0 / 71.7(LERF 只有 33.5 / 28.3 / 49.7);全景分割速度约 140–150 FPS。
代价:加入身份编码后重建质量略微下降——PSNR 28.69 → 28.43,SSIM 0.870 → 0.863,FPS 约 200 → 170。
| Gaussian Grouping(08) | 张论文第 4 章 | |
|---|---|---|
| 身份属性 | 每高斯 16 维 Identity Encoding,可学习 | 每高斯 16 维身份标识编码,可微参数 |
| 2D 掩码来源 | SAM(everything)+ DEVA 关联 | SAM + DEVA 关联 |
| 特征视角相关 | 身份与视角无关 → SH degree = 0 | 未明确交代 SH degree |
| 渲染方式 | 改可微光栅化器,按深度 alpha 混合 | 改可微光栅化器,按深度 alpha 混合 |
| 2D 监督 | 16 维特征 → 线性层 → softmax → 交叉熵 | 16×H×W → Conv2d → 256×H×W → 交叉熵 |
| 线性层 | 16 → 256 通道 | 16 → 256 通道 |
| 类别数 K | 文中说是场景掩码总数,实现固定 256 | 按灰度图 0–255 论证为 256 类 |
| 3D 正则 | KL 散度,近邻 k=5,采样 m=1000 | KL 形式,近邻 k=3(对齐 3DGS 的 distCUDA) |
| 空洞定位 | 几何判据:渲染后无高斯覆盖的像素 | 语义判据:Grounding-DINO 检测模糊区域 + DEVA 关联 |
| 空洞填补 | LaMa 监督新增高斯微调 | 复制新高斯微调,掩码外 L1 + bbox 内 LPIPS,LaMa 监督 |
把第 03 阶段的「规范空间 + 变形场」那一招,搬到 3DGS 上。这一阶段能看到三条完全不同的技术路线, 张论文明确选了第一条——理解另外两条,才能说清这个选择意味着什么、放弃了什么。
那样做会让参数数量爆炸,而且违背可微光栅化器快速可微的初衷,还会丢失运动的时空连续性。 所以把运动与静态结构解耦:高斯学在规范空间里,用一个纯隐式 MLP 变形场把它映射到时刻 t。
(δx, δr, δs) = F_θ( γ(sg(x)), γ(t) )
只预测位置、旋转、缩放的偏移量;不透明度 σ 和球谐颜色不参与变形(外观只依赖规范空间和视角方向)。
训练早期往时间编码里注入随迭代线性衰减的高斯噪声,逼网络学平滑的时间泛化;后期噪声归零保住高频细节。 好处是不增加任何计算开销——比 D-NeRF 那种「额外加光滑损失」的做法更省。
D-NeRF 合成数据集上 PSNR 全部第一(如 Hell Warrior 41.54 vs D-NeRF 24.06); 真实数据 NeRF-DS 上 24.11。消融显示去掉 AST 后 PSNR 只掉 0.14,但 SSIM 掉 0.018、LPIPS 差 0.027—— 它改善的是结构与感知质量,不是像素级 PSNR。
强依赖视角多样性(视角稀疏会过拟合)与位姿精度;训练时间与高斯数量成正比; 只针对中等幅度运动。σ 和 SH 不参与变形,无法表达随时间变化的外观(如高光变化)。
用多分辨率时空平面(xy / xz / yz / xt / yt / zt)编码每个高斯的时空特征,再用一个极小的三头 MLP 分别解码出位置、旋转、缩放的增量。运动知识存在离散的平面特征里,而不是 MLP 权重里。
放约 512 个稀疏控制点(对比 10 万级的高斯),每个控制点学一套随时间变化的 6 自由度变换,附近高斯按距离加权「跟随」。再加 ARAP 局部刚性约束,防止控制点乱动导致局部塌陷或穿模。
| 09 Deformable 3D Gaussians | 10 4D-GS | 11 SC-GS | |
|---|---|---|---|
| 运动存在哪 | MLP 权重里(隐式、全局平滑) | 6 个时空平面特征(显式、离散、低秩) | 约 512 个控制点的 6DoF 变换(稀疏、紧凑) |
| 变形网络 | 单 MLP,8 层 × 256,单头输出 (δx, δr, δs) | 时空编码器 + 小 MLP + 三头解码器 | MLP 预测控制点变换 + RBF 加权 + LBS |
| 正则化 | AST 退火平滑(加噪) | L_tv(平面全变差) | L_arap(局部刚性) |
| 真独有能力 | 时序平滑,无需额外开销 | 最快 + 最省存储 | 用户可控运动编辑 |
| 主要软肋 | 依赖位姿与视角覆盖 | 低秩假设、有界体素 | 局部刚性假设、真实数据增益小 |
3DGS 由离散、无连接关系的高斯构成,本身没有拓扑,所以大变形一定会散架。但如果给每个高斯绑定一个显式三角网格面, 让网格充当「变形载体」,高斯相对网格面做小偏移来保留高频细节——那么网格的变形梯度(旋转 R + 剪切 S)就能干净地传递到高斯的旋转与缩放上。 因为仿射变换下高斯分布形式不变,这一步是闭式的、无需任何再优化,所以能实时。
单张 RTX 4090 上平均 65 FPS(训练约 20 分钟);NeRF-Synthetic 上 PSNR 33.84 为全场最优。 消融显示 Normal Guidance 贡献最大(去掉后 33.84 → 32.17)。
强依赖抽出的网格质量,抽不出网格就失效(如透明物体);只能改几何,外观和光照烘焙进高斯后不可改; 拓扑固定,做不了切开、打孔、断裂。
| Deformable 3D Gaussians(09) | 张论文第 5 章 | |
|---|---|---|
| 整体框架 | 规范空间高斯 + 纯隐式 MLP 变形场,解耦运动与结构 | 「在规范空间学习变形场」「与变形场解耦」 |
| 网络输入 | γ(sg(x)) 与 γ(t),位置停止梯度 | γ(x) 与 γ(t),时间「间接条件化」 |
| 时间编码阶数 | 合成集 L(x)=10、L(t)=6;真实集都用 10 | 位置与时间统一取 L=10 |
| 网络结构 | 单 MLP,D=8,W=256,单头输出 | 8 层 × 256,第 4 层加残差连接,最后 3 层无激活 |
| 输出量 | (δx, δr, δs);σ 与 SH 不变形 | (δx, δr, δs);σ 与 SH 不变形 |
| 预热 | 前 3k 迭代只训高斯 | 前 3k 迭代预热,不优化变形场 |
| 优化器 | 单个 Adam,各分量不同学习率 | Adam;对 δx, δr, δs 各设独立优化器 |
| 正则化 | AST 退火平滑训练(核心贡献之一) | 正文未见任何正则化/平滑机制 |
| 损失函数 | 渲染损失 L1 + D-SSIM,梯度回流变形场与高斯 | 正文只提「可微光栅化反向优化」,未给出具体表达式 |
| 数据集 | D-NeRF 合成 8 场景 + NeRF-DS + HyperNeRF | D-NeRF 数据集中的 4 个场景 |
| 基线 | 3D-GS、D-NeRF、TiNeuVox、Tensor4D、K-Planes | 只有 D-NeRF(2021 年的隐式方法) |
| 消融 | 有 AST 专项消融(图 4 / 表 2) | 未见针对新增点的单独消融 |
前面十二篇是「前史」,现在可以把每一项创新还原到它的来源,并逐项问: 哪一部分是继承的、哪一部分是真正新增的、新增的部分有没有被单独验证。
问题:3DGS 重建会产生大量带信息的点云,但没被利用;而这些点云本身不带颜色。
做法:把派生点云提取出颜色 → 半径滤波去噪 → 反馈回去跑第二次 3DGS。
对应前作:GaussianPro、Revising Densification
问题:几百万个离散高斯没有身份信息,没法把某个物体单独选中、删除。
做法:给每个高斯加「身份标识编码」→ 聚类分组成不同物体 → 移除 → 检测模糊区并复制新高斯修补。
对应前作:Gaussian Grouping、SPIn-NeRF
问题:3DGS 假设场景静止,不能重建随时间变形的动态场景。
做法:带时间标签的图像 → 时间与位置编码 → 变形网络输出偏移量 → 与规范空间高斯联合优化。
对应前作:Deformable 3D Gaussians、D-NeRF
| 章节 | 直接继承的模块 | 相对前作的差异 / 新增 | 新增部分是否被单独验证 |
|---|---|---|---|
| 第 3 章 改初始化 |
3DGS 的球谐系数机制(用 sh[:,:3,0] 取直流分量即颜色)、3DGS 的致密化与优化流程、半径滤波算法本身 |
「提取颜色 → 转成点云 → 半径滤波 → 反馈重训」这条两阶段流程;把它包装成一个统一的性能改进模型 | 未做逐项消融: 没有「只多训一轮」的对照,也没有「不滤波」的对照 |
| 第 4 章 静态编辑 |
Gaussian Grouping 的:16 维身份编码、改可微光栅化器做 alpha 混合渲染、2D 交叉熵间接监督、3D 近邻正则、共享 16→256 线性层;SAM 与 DEVA 的用法;LaMa 做修补监督 | 用 Grounding-DINO 检测删除后的模糊区域并用 DEVA 关联检测框(前作用的是「渲染后无高斯覆盖」这一几何判据);明确写出掩码外 L1 + bbox 内 LPIPS 的修补损失;把训练时间作为定量对比指标单列 | 未做逐项消融: 只有「变形前 vs 变形后」与「vs SPIn-NeRF」,身份编码 / 3D 正则 / Grounding-DINO 各自贡献多少没有分离 |
| 第 5 章 动态变形 |
D-NeRF 的「规范空间 + 以时间为条件的变形场」范式、时间标签图像集与公开数据集;Deformable 3D Gaussians 的:规范空间高斯、变形 MLP 预测 (δx, δr, δs)、前 3k 迭代 warm-up、σ 与 SH 不参与变形 | 变形网络第 4 层加残差连接;对 δx / δr / δs 各设独立优化器;时间编码阶数统一取 L=10;前置第 4 章的静态变形作为基础 | 未做逐项消融: 残差连接、独立优化器、L 的取值都没有对照实验 |
三章都是「沿用已有框架 + 替换或增补一个环节」的结构,这本身是合理的工程路线。 问题在于:三章都没有把「自己新增的那一环」单独拎出来做消融,因此目前的实验只能证明「整体比基线好」, 无法证明「好在我新增的那一环上」。
学位论文与会议论文的评价标准不同,工程整合本身也可以是贡献。 但汇报时老师大概率会问上面这几处。提前想清楚「怎么补实验 / 怎么解释现有证据」, 比被问到时临场应对要从容得多。
Σ = R S Sᵀ Rᵀ张波涛. 基于高斯泼溅的辐射场变形方法研究. 华北理工大学硕士学位论文, 2025.
核验等级 B:学位论文对自身实现和实验是一手材料,不等于顶会同行评审证据。
SAM(分割一切)· DEVA(零样本视频跟踪)· LaMa(图像修补)· Grounding-DINO(开放词表检测)
PDF 仅用于个人科研阅读。正式引用请回到出版页导出 BibTeX。 GaussianMesh 本地文件是 ORCA 存档的作者接受版,不是 ACM 最终排版版。
一句话总结这份报告:张论文的三章,分别对应 3DGS 这个表示留下的三个缺口——起点不可控、不可编辑、不可动。
每一章都沿用了一条成熟的技术路线,并替换或增补了一个环节。真正需要回答的问题是:
自己新增的那一环,能否被单独验证。