每场景重训几十分钟 → 一次前向一两秒:可泛化 3DGS 拆掉的三道门槛
3D Gaussian Splatting(3DGS,三维高斯泼溅)把新视角渲染推到了实时,可“拿到一组照片、重建出能自由漫游的场景”这件事,至今仍按分钟甚至小时计费。2023 到 2026 年的可泛化重建研究,本质上是在连续拆除三道门槛:先把每个场景几十分钟的逐场景重训,换成跨场景共享权重的一次前向;再把相机位姿也从输入假设里删掉;最后让只吃稀疏几张视图的方法,去面对绕场上千帧的长轨迹。这篇顺着这条主线走一遍,到结尾你会拿到一套坐标,可以自己给任何一篇新方法定位。
3DGS 的账单:渲染按帧算、重建却按分钟算,瓶颈到底卡在哪一环
3DGS 原文把自己的工程承诺写在摘要里:对训练好的场景,在 1080p 分辨率下做高质量实时(≥30 fps)新视角合成。这个数字后面跟着一条常被忽略的前置条件,那就是“训练好”。训练好的过程是:先用 SfM 从照片里恢复相机位姿并顺带得到一簇稀疏点云,用它初始化一坨 3D 高斯,然后进入逐场景优化循环,一边渲染一边做密度控制,把每个场景的高斯参数从零调出来。Kerbl 等人的论文报告,这一轮优化大约要 5 分钟(7K 迭代档)到 25 到 60 分钟(30K 迭代档,视场景而定)。换句话说,浏览是实时的,重建账单是按场景重跑的。3DGS
把这条链画出来看,不对称就更清楚了:

图注:3DGS 的完整闭环。左端 SfM 稀疏点云初始化出 3D 高斯,中段的 Optimization & Density Control 是逐场景的优化闭环,右端才是 Tile-based Rasterizer 支撑的实时渲染(≥30 fps,1080p)。承诺在最右一格,账单在左端和中段,每来一个新场景这两段都要重跑一遍。3DGS
顺着图从左往右走一遍,你会意识到一个事实:这条流水线里只有最右端的渲染是实时的,左端的 SfM 和中段的逐场景优化都不具备任何复用性。可泛化重建的全部工作,就是把这张“每个新场景都要重付一遍”的账单,换成一次前向。所谓一次前向,就是让网络把输入照片整体过一遍、直接输出可渲染的场景表示,不再为这个场景做任何训练。
要把这笔账单讲清楚,先立一张全篇通用的地图。后面每个方法都可以用三个坐标来定位:
| 坐标 | 经典 3DGS 的账单 | 可泛化重建想改成 |
|---|---|---|
| 是否需逐场景优化 | 每场景 SfM + 重训约 5 到 60 分钟 | 跨场景共享一组权重,一次前向 |
| 输入是否标定 | 相机位姿是硬前提,常来自 SfM | 位姿由网络自己输出 |
| 序列规模 | 一小组局部视图 | 成百上千帧的整条轨迹 |
三行坐标,正好对应本文要拆的三道门槛。值得注意的是,这些工作并不是各写各的:它们共享同一个接口。图像与相机线索进入重建系统,显式高斯承载场景,新视角渲染与跨场景实验检验结果。后面每一篇新方法都只是在这个接口上松一个输入假设。
所以第一个问题来了:3DGS 已经把表示、渲染器和优化器都备齐了,能不能把“逐场景重训”整个换成一套跨场景共享的网络,让未见过的场景直接一次前向出结果?
门槛一:一次前向重建一个场景,像素对齐接口与它的几何锚点升级
2023 年底的 pixelSplat 第一个明确回答了这个问题。它给出的答案是一个像素对齐(pixel-aligned)接口:给定一对图像和它们已知的相机参数,网络不再为这个场景优化任何东西,而是为每个输入像素直接预测一个可渲染的 3D 高斯图元,预测位置、尺度、旋转、不透明度与颜色,跨场景共享同一组权重。两个视角各出一组高斯,取并集后泼溅渲染出新视角。pixelSplat
看它的架构图,接口的标准形状一目了然:
![]()
图注:pixelSplat 的接口形状。两张输入图经过 image encoder 与 epipolar 对齐得到逐像素特征,右侧由 MLP 为每个像素预测高斯参数(位置、偏移、协方差、球谐颜色),采样后泼溅渲染出新视角。整条链一次前向,没有任何逐场景优化闭环。pixelSplat
这个接口干净,但有边界。pixelSplat 只吃两视图,而且是在 RealEstate10K、ACID 这类自然场景上学出来的,一到 DTU 这种以单个物体为中心的评测上就明显退化。这正是 2024 年中 MVSGaussian 补上的那块短板:给这套接口装上多视角几何锚点。它的做法是先用多视角立体匹配构造 cost volume,经 3D CNN 正则化后估出每个像素可靠的深度,再把像素沿深度反投影成 3D 点,让高斯落在这个深度锚点上,而不是让网络完全盲学位置。渲染时它同时走高斯泼溅和单点深度感知体渲染两条路,取平均作为输出。MVSGaussian
升级是不是真的发生了,看数字。同一套 DTU 两视图协议下,MVSGaussian 拿到 PSNR 25.78,pixelSplat 只有 14.01;三视图下 MVSGaussian 到 28.21。另一个更贴近实用的证据在 Real Forward-facing 数据集上:MVSGaussian 前向结果再叠加 45 秒的逐场景微调,PSNR 达 26.98,而经典 3D-GS 用 30K 迭代、跑 10 分钟只有 23.92。注意 45 秒微调不是纯前向,它说明的是“前向已经给了极好的起点,微调只需几十秒”这个性质。MVSGaussian
跨场景泛化的质量还可以直接看渲染结果。下面的网格把 MVSGaussian 前向(Ours 列)与三个 NeRF 系前馈基线并排,覆盖建筑、室内植物、人形雕塑和火车头四类场景:

图注:4 行 × 5 列对比网格。每行一个场景,Ground Truth、MVSNeRF、ENeRF、MatchNeRF 与 Ours 各占一列,红框标出细节放大区域。Ours 列在锐度与纹理清晰度上最接近真值,尤其在火车头表面文字这类高频细节上优势明显。图上没有数值,这里只作视觉对照。MVSGaussian
同代还有一条平行升级值得一句话定位:DepthSplat 在 MVS 的 cost volume 分支旁并联一个预训练单目 ViT 分支,两条特征拼接后由共享 2D U-Net 回归深度,再用泼溅渲染损失端到端训练。它验证了“多视角几何 + 单目先验”是这一代已标定前馈的共同骨架,也把单次前向的规模推到 12 张 512×960 视图约 0.6 秒(A100)。DepthSplat
到 2024 年中,已标定这条线已经成熟:逐场景重训换成了跨场景学好的前馈网络,几何质量不够就给它装 MVS 锚点。但你注意到没有,以上所有方法都默默保留了一个输入假设:相机位姿是预先算好喂进来的。而位姿通常来自 SfM,SfM 本身又慢又不稳。第二道门槛就在这,连它一起省掉行不行?
门槛二:连相机位姿都不给,无标定前馈如何把 SfM 装进网络
无标定(pose-free,也叫 uncalibrated)问题的表述很直接:输入只剩一组裸图像,相机内参外参不再是输入假设,而是网络必须自己输出的量。整条流水线的目标从“图像 → 场景”变成“图像 → 场景 + 相机”。
问题抛出后,第一个里程碑不是某个重建网络,而是一个被反复借用的几何骨干:VGGT。VGGT 是一个前馈大 transformer,输入同一场景的一张、几张甚至几百张图,单次前向就同时输出相机内外参、深度图、point map 和 3D 点轨迹。速度上,它在 ETH3D 上单次前向约 0.2 秒,加上 bundle adjustment 后处理也只要约 2 秒;而传统视觉几何流程的全局对齐类后处理通常要跑 10 秒以上。VGGT
看它的架构就能读出 VGGT 的输入输出契约:

图注:VGGT 的整体结构。输入图像经 DINO patchify 成 token,并附加相机 token;中间是重复 L 次的 transformer 块,交替做跨帧的 global attention 与帧内 attention;末端分两路输出,Camera Head 给出相机内外参,DPT 头给出深度图、point map 与轨迹。一次前向,几何量全部到位。VGGT
VGGT 这类方法的价值,工程上有个现成的对应物:把经常要用的公共能力抽成库,下游 import 当依赖,不必自己重新造轮子。VGGT 就是几何估计界的这样一个公共库。下游方法不再需要自己训练一套从图像到相机与稠密几何的网络,直接拿它的输出当几何先验就行。StructSplat 把它当几何编码器,AnySplat 拿它的输出蒸馏伪标签,都是这种“依赖注入”的用法。
有了相机从哪来的答案,无标定前馈内部立刻分岔成两条路线。分歧点在于:要不要借大模型的 3D 先验。
AnySplat 代表“借先验”这一支。它用一个单流 transformer 编码器,三个解码头同时输出高斯参数、深度和相机位姿,把“几何 + 表征 + 相机”压进同一个前向;训练时用预训练 VGGT 的输出当伪标签监督自己。蒸馏不是可选优化,论文消融里一旦去掉蒸馏损失,PSNR 直接掉到 7.28,可见没有先验撑着时纯靠 RGB 损失根本学不动。AnySplat
SelfSplat 代表“不借”这一支。它不依赖任何预训练 3D 先验,把自监督深度与位姿估计和像素对齐高斯放进同一个网络联合训练,位姿网络加了跨视图注意力的 matching-aware 模块,深度则用估出的位姿做空间感知的 refinement。两条路各自成立,说明“相机从哪来”并没有唯一答案,借不借先验是一个独立的设计选择。SelfSplat
到这里第二道门槛拆了一半:相机位姿不再需要 SfM 预计算。但拆到一半时,一个更隐蔽的问题浮了出来。无标定前馈在训练时要给目标视角算损失,就必须把目标视图也送进网络;一旦如此,模型会不会在训练时看见目标、推理时却看不见,从而学会一条上线就失效的作弊路径?这是下一章的主角。
门槛二深处的陷阱:训练时让网络看见目标视角,测试时它就学会作弊
先看机制。StructSplat 论文把这个坑画得非常直白:训练时为了给目标视角计算损失,目标图像和源图像会一起送进几何特征提取器,而这个提取器内部有 cross-attention。注意力一跨帧,目标视图的内容就会渗进所谓的“源特征”,网络等于直接抄到了答案。推理时没有目标视图可抄,重建立刻崩掉。StructSplat
这套逻辑对任何做过监督学习的读者都不陌生,它就是教科书式的信息泄漏:训练时把测试答案混进了特征。差别在于这里的泄漏不是数据预处理失误,而是由损失函数的结构逼出来的,目标视图是训练时才存在的输入通道。反直觉的地方在于,这种捷径看起来训练得很好,因为训练损失确实在降,失效只会在部署时暴露。

图注:有、无相机对齐的两条渲染管线对比。上路径让目标与源视图一起过 cross-attention,标注 Feature Leakage,产出的是带忧愁表情的“Gaussians with Leakage”;下路径只用源视图,经 Camera Decoder 与 Align Target Camera 后由 Gaussian Decoder 产出带开心表情的“Clean Gaussians”。右侧两者都要对目标 GT 算损失,区别只在解码器吃了什么特征。
StructSplat 的拆法分两步。第一步是结构化表示:不再让一个编码器同时扛几何、语义、纹理三件事,而是让三个编码器各司其职。几何编码器基于 VGGT,负责把高斯放到正确的位置;语义编码器用 DINOv3 这类视觉基础模型,负责全局一致性,缓解局部歧义;纹理编码器是轻量 CNN,保留高分辨率 2D 细节,在解码末期才注入。这一步的实质是给每条信息流分配角色,而不是多堆 backbone。用工程语言说,就是把一团互相纠缠的逻辑重构成职责单一、可独立替换的模块,出了质量问题能定位是哪一路的锅。论文的动机实验说明单靠几何特征直接重建颜色,连训练视图上都是糊的,纹理细节必须由专门的通道来补。StructSplat
第二步是切断泄漏本身。StructSplat 让同一组图像跑两条相机解码路径:src+tar 一起过提取器,得到坐标系 A 下的相机;只让源视图过提取器,得到坐标系 B 下的相机。然后以源相机在两套坐标系下的位置为锚,把目标相机从 A 变换到 B。经过这一步对齐,高斯解码器从头到尾只接触纯源特征,目标信息再没有机会渗进去。StructSplat
完整框架看这一张:

图注:StructSplat 全流程。左侧目标图与源图送入中间黄色框的 Structured Representation,三路编码器分别产出 3D 几何特征、2D 语义特征与高分辨率纹理特征;Gaussian Decoder 用五个 head 输出深度、不透明度、颜色、尺度、旋转;右上 Camera Decoder 在坐标系 A(src+tar)与 B(src-only)下各估一组相机,Align Tar Camera 把目标相机对齐到 B,随后相机中心高斯经 Camera to World 变换成全局高斯并渲染出目标视角图像。
角色分工和相机对齐各自贡献了多少,两张消融表把账拆得很清楚:

图注:结构化表示的逐步消融。只保留几何特征时 PSNR 20.610;加入语义特征跳到 26.236;再加入纹理特征到 28.045,SSIM 与 LPIPS 同步单调改善,末行加粗为最佳。每一步都对应一类信息流在出力,而不是堆模型数量。

图注:相机对齐的单独贡献。去掉相机对齐(w/o CA)时 PSNR 27.338;加上对齐后到 28.045。对齐模块的价值不在估相机本身,而在让高斯解码器只吃纯源特征,从而关掉作弊的后门。
主表上的最终结果:DL3DV 上 StructSplat 拿 PSNR 28.045,同期最强无标定基线 AnySplat 是 22.377,高出 5.67 dB;跨数据集的 ACID 与 RealEstate10K 上也分别领先约 1.9 与 1.7 dB。这里必须补一句公平性边界:StructSplat 在 DL3DV、ACID、RealEstate10K 上统一把输入 resize 并 center-crop 到 256×256,AnySplat 等论文的数字多为原生分辨率下自报,两组绝对值不能直接硬比;28.045 对 22.377 是同一套评测协议内的相对差。StructSplat
所以无标定前馈真正难的不是把相机估出来,而是训练能看到目标、推理看不到,这个不对称逼模型学会的捷径。解法是给信息流分配角色、显式对齐相机,让解码器永远只碰纯源特征。稀疏、少视图这一侧的题,到这里答得差不多了。但如果场景不是十几张局部照片,而是一条绕场一圈、上千帧的轨迹呢?
门槛三:当视图从几张变成上千帧,问题为什么不是“更多输入”这么简单
先立一个直觉再拆掉它:更多视图应该揭示更多表面、降低不确定性,重建只会更容易。这句话在稀疏视图范围内成立,但推到长序列就错了。
想象一条绕场景一周的长轨迹。远处的帧之间几乎没有重叠,多视角几何在最需要的地方失效;位姿误差沿轨迹一路累积,越往后越对不上;相机可能隔很久才重回某个旧区域,回环约束缺失让全局一致性无处落地;同时 token 数、高斯数和显存随序列线性膨胀。三类失败模式叠加,结果就是远端视点悄悄崩塌。而传统稀疏基准考的是局部插值,短序列几乎不暴露累积漂移,平均 PSNR 又恰好会把远端视点的崩塌平均掉,指标依然好看。评测在这里失明,这正是“长序列不只是更大的稀疏输入”的含义。
LongNVS-Bench(2026-09 报告中提出的评测路线,公开文档尚待独立核验)把上述共识收拢成一套协议设计立场:序列长度应当成为评测里的一等自变量,而不是藏在超参数里的隐含变量;协议要按采集方式、场景类型、植被与光照分层设计,让远端失败、重访与资源增长有地方显形。无论这套协议最终以什么规模落地,它立起的规矩是清晰的:评测必须把“难度轴”编码进去,而不是交一个平均分当总结答案。
评测这边要立规矩,方法这边也得有东西能跑。Long-LRM 是这条路上第一个面向场景级宽覆盖的前馈代表。它一次吃 32 张 960×540 图像,patchify 后 token 序列约 25 万,比 Llama 3 的 12.8 万 context 还长一倍多。架构上它用三组“7 个 Mamba2 + 1 个 Transformer”的混合块来消化这段超长序列,思路是用 Mamba 的线性复杂度扫描换掉二次注意力的长序列负担,再配合 token merging 与高斯剪枝,这套 25 万 token 才真的跑得动。Long-LRM
看它的架构图,重点是“这么长的序列靠什么撑过去”:

图注:Long-LRM 的流程。上半段 32 张输入图连同 Plücker ray embedding 被 patchify 成 token 序列,连续经过三组 {7M1T} 混合块(每 7 个 Mamba2 块接 1 个 Transformer 块),再做 token merging、逐像素高斯解码与高斯剪枝;下半段是宽覆盖高斯重建与多视角渲染结果。token merging 与剪枝是把约 25 万 token 压到可算的关键。Long-LRM
质量上,Long-LRM 一次前向约 1 秒,在 DL3DV-140 的 32 视图设置下 PSNR 24.10,追平了逐场景优化 13 分钟的 3D-GS 的 23.60,加速约 800 倍。需要如实指出的是它的 LPIPS 仍略输优化式方法,高频细节这种活还是逐场景优化更擅长。但作为方向证据已经足够:前馈方法在这条坐标上追上了逐场景优化,而不是只能望其项背。Long-LRM
到这里,三道门槛都拆完了。但它们不是三个孤立的技巧,而是同一条主线的三个节点。怎么把它们串起来,还剩哪里没拆?
把三道门槛串回一条主线:三坐标怎么帮你读一篇新方法
回头看这条演进线,每一步都只翻了一个坐标,而每翻一个坐标,都会暴露下一个坐标的缺口。第一步把逐场景优化翻成一次前向,立刻暴露“还依赖 SfM 位姿”;第二步把相机从输入假设里删掉,又暴露训练推理不对称的泄漏捷径;第三步把稀疏几视图推向长序列,暴露的是漂移、回环与资源三类新失败模式。翻完坐标之后,显式高斯和泼溅渲染这两件 3DGS 的底子,从头到尾没动过。
用收口表把每个代表工作归位,演进就一目了然:
| 代表工作 | 重建方式 | 标定假设 | 序列规模 |
|---|---|---|---|
| 3DGS | 逐场景优化 | 要(SfM 初始化) | 一小组视图,成本随场景叠加 |
| pixelSplat / MVSGaussian / DepthSplat | 一次前向 | 要 | 稀疏(2 到 12 视图) |
| VGGT / AnySplat / SelfSplat / StructSplat | 一次前向 | 不要 | 稀疏 |
| Long-LRM | 一次前向 | 要 | 32 视图起步,面向更长序列 |
每个节点和它左邻右舍的差异,都可以用“翻了哪个坐标”一句话说清。这套坐标的真正用途是当自读工具:拿到任何一篇 2025 到 2026 年的新方法,先问三个问题。它翻了哪个坐标,把逐场景优化换成了前馈,还是把标定换成了无标定,或者把稀疏换成了长序列?它保留了哪个输入假设,是仍然要求相机参数,还是仍然只吃少量视图?它在哪类输入上会失效,是 object-centric 场景、无纹理表面,还是绕场长轨迹?LongSplat、LVSPM、AsySplat、SaLon3R 这些同向工作,用这三个问题各问一遍,位置立刻清楚。
主线之外,尚未拆除的边界同样值得记住。动态场景和时间维度整条线都没碰;极稀疏加严重遮挡仍无解;视角相关的外观在少数视图下先天信息不足;真正可扩展的长序列模型与工程资源控制也还是开放问题。可泛化 3DGS 的演进远未收工,但地图已经够用:它是一条每步只拆一个输入假设的主线,而不是一串并列的论文。
读完主干之后想往细节里走,可以顺着阅读顺序继续:《3DGS 与可泛化重建:先看懂表示、渲染和逐场景优化》讲表示与渲染的地基,《MVSGaussian:让多视角几何一次前向长成可渲染高斯》展开成本体与混合渲染,《StructSplat:结构化表示与双解码路径如何解决无标定重建中的相机对齐与信息泄漏》讲防泄漏对齐的完整机制,《当视图变成千帧:LongNVS-Bench 与长序列重建的压力测试》深入长序列评测的设计与压力测试。这几篇是主线上四个点的纵深,不是新的入口。
下次再遇到一个可泛化重建的新名字,你手里已经有三个坐标和三个问题。它会落在哪一格,又会在哪类输入上翻车,你自己就能判断了。
参考文献
本专题引用的核心资料如下,建议深入学习时阅读原文:
- 3D Gaussian Splatting for Real-Time Radiance Field Rendering(Kerbl et al., SIGGRAPH 2023) — arXiv:2308.04079
- pixelSplat: 3D Gaussian Splats from Image Pairs for Scalable Generalizable 3D Reconstruction(CVPR 2024) — arXiv:2312.12337
- MVSGaussian: Fast Generalizable Gaussian Splatting Reconstruction from Multi-View Stereo(ECCV 2024) — arXiv:2405.12218
- DepthSplat: Connecting Gaussian Splatting and Depth(CVPR 2025) — arXiv:2410.13862
- AnySplat: Feed-forward 3D Gaussian Splatting from Unconstrained Views(SIGGRAPH Asia 2025) — arXiv:2505.23716
- SelfSplat: Pose-Free and 3D Prior-Free Generalizable 3D Gaussian Splatting(CVPR 2025) — arXiv:2411.17190
- VGGT: Visual Geometry Grounded Transformer(CVPR 2025) — arXiv:2503.11651
- StructSplat: Generalizable 3D Gaussian Splatting from Uncalibrated Sparse Views(ECCV 2026 投稿) — arXiv:2606.28321
- Long-LRM: Long-sequence Large Reconstruction Model for Wide-coverage Gaussian Splats(ICCV 2025 Highlight) — arXiv:2410.12781
- LongNVS-Bench(评测协议立场,来自 2026-09 研究报告;具体规模数字与数据集的公开材料尚待独立核验,不提供引用 URL)