小样本GS重建

@TOCarrow-up-right


GSD: View-Guided Gaussian Splatting Diffusion for 3D Reconstruction (ECCV 2024)

  • 输入 (Input):

    • 一张任意物体的 单视角2D图像 (Single RGB image)

    • 该图像对应的 相机位姿 (Camera pose)

  • 输出 (Output):

    • 一个完整的、高质量的 3D高斯溅射 (Gaussian Splatting) 模型

  • 解决的任务 (Task):

    • 单视图三维重建 (Single-View 3D Reconstruction)。这是一个极具挑战性的任务,因为需要从有限的2D信息中推断出完整的三维几何形状和纹理。

    • GSD 训练一个扩散模型来学习三维物体(以GS形式表示)的通用“长相”先验。在重建时,它以输入的单张图像作为“向导”,通过一种新颖的可微分渲染引导机制,将一个随机的3D高斯噪声“雕刻”成与输入视图完全匹配的特定3D模型。

Overview

这篇文章提出了一种名为 GSD (Gaussian Splatting Diffusion) 的新方法,用于从单张二维图像重建高质量的三维物体。其核心思想是巧妙地将两种前沿技术结合起来:

  • 高斯溅射 (Gaussian Splatting, GS): 一种新兴、高效且高质量的显式三维表示方法,能够非常逼真地渲染物体。

  • 扩散模型 (Diffusion Model): 一种强大的深度生成模型,擅长学习复杂的数据分布并生成高质量的样本。

GSD 的主要贡献在于,它是首个直接在原始 GS 表示上构建扩散模型的工作。该模型首先在无条件的情况下学习大量三维物体的“通用长相”(即生成先验),然后在重建时,利用输入图像作为“向导”,通过一种新颖的“视图引导采样”策略,将这个通用的三维模型“雕刻”成与输入图像完全一致的特定三维物体。

Motivation

从单张图片重建三维物体是一个极具挑战性的“不适定问题”(ill-posed problem),因为一张二维图片丢失了深度信息,理论上可以对应无数种三维形状。为了解决这个问题,模型需要具备强大的“想象能力”,即拥有关于三维物体应有样貌的先验知识。现有方法主要有以下几类,但都存在明显缺陷:

  • 2D novel view synthesis (新视角合成) 方法: 这类方法本质上是 2D 图像生成模型,虽然能生成不同角度的逼真图像,但由于缺乏真正的 3D 几何约束,生成的多个视角组合在一起时往往会出现三维不一致的问题(比如物体局部结构扭曲、漂移)。

  • 基于显式 3D 表示的方法: 例如使用体素 (Voxel)、点云 (Point Cloud) 或网格 (Mesh) 的方法。这些方法能保证三维几何的一致性,但通常受限于分辨率或拓扑结构的复杂性,导致重建的几何形状较为粗糙,渲染出的图像质量也欠佳。

  • 基于隐式 3D 表示的方法 (如 NeRF): 这类方法将三维场景表示为一个神经网络,能够实现非常逼真的渲染效果。但它们的缺点是几何提取过程(如通过 Marching Cubes)非常繁琐和耗时,并且渲染速度较慢,难以实现实时交互。

GSD 的切入点: 作者们认为,问题的关键在于找到一个“完美”的三维表示方法。高斯溅射 (GS) 恰好弥补了上述方法的不足:

  1. 显式几何: 它由一组三维高斯椭球体构成,几何结构是明确的。

  2. 高质量渲染: 它的渲染管线是可微分的,并且可以实时渲染出照片级的图像。

  3. 灵活性: 相比网格,它没有固定的拓扑约束,更容易由神经网络生成。

因此,本文的动机就是:能否构建一个强大的生成模型,直接学习高斯溅射表示的分布,从而同时拥有强大的三维几何先验和高质量的渲染能力? 扩散模型正是实现这一目标的最佳选择。

Method

GSD 的方法论可以分为三个核心部分:学习 GS 的生成先验视图引导的采样重建,以及渲染质量的抛光与复用

1. 学习高斯溅射的生成先验 (Modeling GS Generative Prior)

这一阶段的目标是训练一个无条件的扩散模型,让它学会生成“看起来合理”的三维物体(以 GS 的形式)。

1. 三维表示 (3D Representation): 首先,需要一个用于训练的数据集。作者将现有的三维物体数据集(如 CO3D)中的每个物体都用官方的 GS 方法预先重建,并进行处理,得到一个 GS 表示的数据集。 为了方便模型学习,每个物体的 GS 表示被规范化为 固定数量 (N=1024) 的高斯椭球体。每一个椭球体由一个 16 维的向量来描述,包含以下信息:

  • 位置 (Position): 3D 空间坐标 (x, y, z),3个维度。

  • 协方差 (Covariance): 决定了椭球体的形状和朝向。它由一个缩放向量 (scale, 3维) 和一个旋转四元数 (rotation, 4维) 共同定义。在模型中,为了稳定,可能直接使用能够表达旋转和缩放的6个独立参数。

  • 颜色 (Color): RGB 颜色值,3个维度。

  • 不透明度 (Opacity): 一个标量,控制该椭球体的透明度,1个维度。

所以,一个三维物体就被表示成一个形状为 (1024, 16) 的张量。

2. 扩散模型 (Diffusion Model): 模型采用标准的 Denoising Diffusion Probabilistic Models (DDPM) 框架。

  • 前向过程 (Forward Process): 在训练时,从数据集中取出一个干净的 GS 物体 x₀,然后通过 T 个步骤逐渐向其添加高斯噪声,得到一系列越来越模糊的噪声版本 x₁, x₂, ..., xᴛ

  • 逆向过程 (Reverse Process): 训练一个神经网络 ,其任务是在任意一个噪声步 t,给定加噪后的样本 xᴛ,预测出原始的干净样本 x₀(或等价地,预测出所添加的噪声)。其训练目标函数如下:

LDDPM=Ex0,t[x0pθ(xt,t)2]L_{DDPM} = E_{x_0, t} [||x_0 - p_\theta(x_t, t)||^2]

这个公式的含义是,模型 的预测值要尽可能地接近真实的、未加噪的 x₀

3. 骨干网络:Diffusion Transformer (DiT) (Backbone Network): 预测噪声的神经网络 选择了 Transformer 架构。这是一个关键的技术选择。因为 GS 物体本质上是一组无序的“点”(每个点带有16个特征),Transformer 的自注意力机制非常擅长捕捉这种集合中元素之间的复杂关系。相比于专门为点云设计的网络(如 PVCNN),作者认为 GS 的16个特征维度之间存在很强的内部关联(例如,位置和协方差就紧密相关),Transformer 能够更好地学习这些复杂的特征依赖,从而更好地掌握 GS 数据的分布。 此外,由于 GS 表示本身已经包含了显式的 3D 位置信息,所以这个 Transformer 模型不需要额外的位置编码

通过以上训练,模型 就成了一个强大的“三维物体生成器”,只要给它一堆随机高斯噪声,它就能通过 T 步的迭代去噪,生成一个全新的、合理的三维 GS 物体。

2. 视图引导的采样与重建 (View-Guided Sampling)

这是整个方法最核心和巧妙的部分。在训练完成后,我们有了一个能生成随机物体的无条件模型。现在的问题是,如何让它生成一个特定的、与我们提供的输入图像 y₀ 相匹配的物体?

GSD 不采用 在训练时就将图像作为条件的常规做法,而是在推理采样阶段对去噪过程进行“引导”。这个过程在每一个去噪步骤 t 都会执行:

  1. 无条件预测: 在第 t 步,我们有一个加噪的 GS 样本 xᴛ。首先,让已经训练好的无条件扩散模型 进行一次标准的预测,得到一个对最终干净物体 x₀ 的初步估计,记为 x̂₀

  2. 可微分渲染: 将这个预测出的 x̂₀,通过高斯溅射的可微分渲染函数 fsplat,从输入图像 y₀ 对应的相机视角进行渲染,得到一张渲染图像 ŷ₀

  3. 计算引导梯度: 比较渲染图像 ŷ₀ 和真实的输入图像 y₀ 之间的差异。这个差异通常用一个损失函数来衡量,例如 L1 或 L2 损失,记为 Limg

    Limg=y0y^0=y0fsplat(pθ(xt,t))L_{img} = ||y_0 - \hat{y}_0|| = ||y_0 - f_{splat}(p_\theta(x_t, t))||

    因为整个渲染过程是可微分的,我们可以计算这个损失 Limg 相对于当前噪声样本 xᴛ 的梯度 ∇xᴛ(Limg)。这个梯度就是一个“修正信号”,它指明了 xᴛ 应该朝哪个方向微调,才能让它最终生成的物体的渲染结果更接近输入图像 y₀

  4. 执行引导: 将这个计算出的梯度,以一定的权重 λgd(guidance scale),“注入”到当前的去噪步骤中,从而对采样过程进行修正。简单来说,就是用这个梯度来“推”一下当前的 xᴛ,让它走向一个更好的方向。修正后的去噪公式大致如下:

    x~t1StandardDenoiseStep(xt)λgdxt(Limg)\tilde{x}_{t-1} \leftarrow \text{StandardDenoiseStep}(x_t) - \lambda_{gd} \cdot \nabla_{x_t}(L_{img})

    这里的 StandardDenoiseStep 表示标准的 DDPM/DDIM 采样步骤。

通过在每一步都重复这个“预测-渲染-求梯度-引导”的循环,随机初始化的噪声就会被逐步引导,最终收敛成一个与输入视图高度一致的三维 GS 物体。

3. 抛光与复用:提升渲染质量 (Polishing and Re-using)

作者发现,仅通过上述流程重建的 GS,其渲染图有时会出现一些微小的、针状的视觉瑕疵。这是因为从单一视图重建时,模型对于纹理的推断可能不完美。为了解决这个问题,他们引入了一个辅助的 2D 扩散模型,并设计了一个迭代优化的流程。

  1. 初步重建: 使用 GSD 重建出一个初步的 3D GS 物体 x₀

  2. 渲染与抛光:x₀ 渲染成图像 ŷ₀。这张图可能带有瑕疵。然后,将 ŷ₀ 输入到一个预训练好的 2D 图像到图像的扩散模型(一个“图像美化”模型)中,生成一张更干净、更逼真的“抛光后”的图像 yaux

  3. 复用与再引导: 接下来是关键一步。将这张抛光后的高清图像 yaux 作为新的、更优质的引导目标,再运行一次或几次 GSD 的视图引导采样过程。

  4. 迭代优化: 这个“3D重建 → 2D渲染 → 2D抛光 → 3D再引导”的过程可以迭代进行数次。每一次迭代,2D 模型都能提供一个更逼真的渲染目标,从而帮助 3D 模型优化 GS 的几何和纹理细节,反过来,更优的 3D 模型又能渲染出更好的初始图像送给 2D 模型。

这个迭代过程形成了一个强大的正反馈循环,最终可以同时提升三维模型的几何精度和渲染视图的真实感。

总结

总的来说,GSD 论文的贡献可以归纳为以下几点:

  • 新颖的表示与模型组合: 首次将强大的扩散生成模型直接应用于原始的高斯溅射表示,为单视图三维重建问题提供了一个全新的、高效的解决方案。

  • 高效灵活的视图引导机制: 提出了一种在推理阶段通过可微分渲染进行梯度引导的策略。这种方法非常灵活,因为它解耦了生成先验的学习和视图条件的施加,并且理论上可以轻松扩展到多视图重建。

  • 创新的迭代优化流程: 设计了一个 3D 和 2D 扩散模型协同工作的“抛光与复用”机制,有效地解决了 GS 渲染中可能出现的瑕疵问题,显著提升了最终的视觉质量。

通过这些技术创新,GSD 在标准的 CO3D 数据集上取得了超越当时最先进方法的性能,无论是在渲染图像的质量指标(PSNR, LPIPS)上,还是在三维几何的准确性指标(F-score, Chamfer Distance)上,都展现出了强大的竞争力。


pixelSplat: 3D Gaussian Splats from Image Pairs for Scalable Generalizable 3D Reconstruction (2024)

  • 输入 (Input):

    • 一对RGB图像 (Image Pair):包含视差重叠的两个视角图像(通常记为参考视图 I 和目标视图 Ĩ)。

    • 相机位姿 (Camera Poses):这对图像对应的绝对相机外参和内参。

  • 输出 (Output):

    • 一个参数化的 3D高斯溅射 (3DGS) 场景表示:网络直接预测出场景中所有3D高斯原语的参数(位置、协方差矩阵、球谐系数颜色、不透明度)。

    • 从任意用户指定的 新视角 (Novel View) 实时渲染出的2D图像。

  • 解决的任务 (Task):

    • 广义化少样本3D重建 (Generalizable Few-shot 3D Reconstruction)

    • 解决现有3DGS方法需要针对每个场景单独进行漫长优化的问题。PixelSplat 通过训练一个前向神经网络,实现了仅凭两张图像就能“瞬间”重建出具备显式几何结构的3D场景,同时解决了稀疏视角下的 尺度模糊 (Scale Ambiguity) 和高斯参数优化的 局部极小值 问题。

Motivation

该研究主要为了解决现有新视角合成技术中的几个痛点:

  1. 现有方法的局限性:

    • NeRF及其变体:虽然渲染质量高,但训练和渲染速度极慢(需要沿射线采样数百个点)。

    • Light Field Transformers (如GPNR):虽然比NeRF快,但仍然达不到实时渲染,且无法重建可编辑、可导出的显式3D场景。

    • 3D Gaussian Splatting (3D-GS):实现了实时渲染,但它是“过拟合”单个场景的,需要针对每个场景进行漫长的优化。

  2. 广义化 3D-GS 的挑战: 作者希望结合 广义化模型(一次训练,泛化到新场景)和 3D-GS(实时渲染、显式表达)的优势。但在实现“从图像直接预测高斯参数”这一目标时,面临两个核心困难:

    • 尺度模糊性 (Scale Ambiguity):现实世界的数据集(如RealEstate10k)通常使用 SfM (Structure-from-Motion) 获取相机位姿。SfM重建的场景尺度是任意的(up to scale)。单张图像无法推断出符合特定SfM重建尺度的绝对深度。

    • 高斯参数优化的局部极小值 (Local Minima):3D高斯是局部支撑的(只在中心附近有值)。如果神经网络预测的高斯位置与真实表面相差太远,梯度会消失(因为该位置的渲染贡献为0),导致网络无法收敛。原版 3D-GS 靠“克隆/分裂”等启发式策略解决此问题,但这些操作不可微,无法用于端到端的前馈网络训练。

Method

PixelSplat 的核心思想是训练一个神经网络,输入两张图像,直接输出场景中所有像素对应的 3D 高斯参数(位置、协方差、颜色、不透明度)。

解决尺度模糊:Epipolar Encoder (极线编码器)

为了解决 SfM 带来的尺度不确定性,模型必须利用**双目几何(Stereo Geometry)**线索来推断场景的相对尺度。作者设计了一个基于极线几何的 Transformer 编码器。

工作流程:

  1. 特征提取:首先使用图像编码器(ResNet-50 + ViT)分别提取两个参考视图 I 的特征图 F

  2. 极线采样

    • 对于视图 I 中的每一个像素坐标 u,根据相对相机位姿,在视图 上确定其对应的极线(Epipolar Line)。

    • 沿着这条极线在视图 上采样一系列点 l

  3. 深度编码与三角化

    • 对于极线上的每一个采样点 l,通过视图 I 的光心和像素 u 的射线,以及视图 的光心和像素 l 的射线,进行三角化(Triangulation),计算出在视图 I 坐标系下的深度 dũl

    • 这一步至关重要,因为这个深度是由相机位姿直接决定的,因此它包含了场景的 尺度信息 (Scale)

  4. Epipolar Cross-Attention (极线交叉注意力): 模型使用 Transformer 机制来寻找对应关系。

    • Query (q):来自视图 I 的当前像素特征 F[u]。

    • Keys (k) & Values (v):来自视图 极线上采样点的特征 [l],并拼接了位置编码后的三角化深度 γ(dũl)。

    式子如下:

    s=F~[u~l]γ(du~l)q=QF[u],kl=Ks,vl=VsF[u]F[u]+Attention(q,{kl},{vl})\mathbf{s} = \tilde{\mathbf{F}}[\tilde{\mathbf{u}}_l] \oplus \gamma(d_{\tilde{\mathbf{u}}_l}) \\ \mathbf{q} = \mathbf{Q} \cdot \mathbf{F}[\mathbf{u}], \quad \mathbf{k}_l = \mathbf{K} \cdot \mathbf{s}, \quad \mathbf{v}_l = \mathbf{V} \cdot \mathbf{s} \\ \mathbf{F}[\mathbf{u}] \leftarrow \mathbf{F}[\mathbf{u}] + \text{Attention}(\mathbf{q}, \{\mathbf{k}_l\}, \{\mathbf{v}_l\})

    作用:通过注意力机制,网络可以找到另一张图中匹配的特征。由于Key中包含了三角化深度,匹配成功意味着网络“感知”到了该像素在当前SfM尺度下的正确深度。

概率式高斯预测 (Probabilistic Gaussian Prediction)

这是该论文最核心的创新点,用于解决直接回归高斯位置导致的局部极小值问题。

传统回归的弊端: 如果直接让网络回归深度 d,公式为:μ = o + d · du。当预测的 d 偏差很大时,高斯球在这个位置渲染出的图像与GT不重叠,梯度为0,网络无法学习如何将高斯球移回正确位置。

PixelSplat 的方案: 作者不直接预测深度标量,而是预测深度的 概率分布 (Probability Distribution)

  1. 深度离散化 (Discretization): 将深度范围 [dnear, dfar] 在视差空间(Disparity Space)上划分为 Z 个桶(Buckets)。 第 z 个桶的中心深度记为 bz

  2. 预测概率分布: 对于每个像素,网络预测一个长度为 Z 的向量 φ,经过 Softmax 归一化后,φz 表示表面存在于第 z 个深度桶的概率。

  3. 预测桶内偏移 (Fine-tuning): 为了获得连续的深度,网络还预测一个偏移量 δ ∈ [0, 1]Z,用于在桶内微调深度。 最终的深度计算不再是确定的,而是采样得到的。

可微采样与重参数化技巧 (Differentiable Sampling via Reparameterization)

为了让整个过程可训练,必须将采样操作纳入计算图并能够反向传播。作者受到 VAE 重参数化的启发,设计了一个巧妙的机制。

前向传播 (Forward Pass):

  1. 对于像素 u,根据预测的概率分布 pφ(z) 采样一个深度桶索引 z ~ pφ(z)。

  2. 计算该采样得到的高斯均值(位置):

    μ=o+(bz+δz)du\boldsymbol{\mu} = \mathbf{o} + (\mathbf{b}_z + \boldsymbol{\delta}_z) \cdot \mathbf{d}_{\mathbf{u}}

    其中 o 是相机原点,du 是射线方向。

  3. 关键步骤:设置不透明度 (Opacity)。 作者将高斯的不透明度 α 设置为等于该采样桶的概率 φz

    α=ϕz\alpha = \phi_z

反向传播 (Backward Pass) 的直觉:

  • 如果采样位置正确:渲染出的颜色与 GT 接近,Loss 变小。为了进一步减小 Loss,梯度下降会试图增加该高斯的贡献(即增加不透明度 α)。

  • 机制生效:因为 α = φz,增加 α 等同于增加 φz。这意味着网络被鼓励在下一次前向传播中,以更高的概率再次采样到这个正确的深度桶。

  • 如果采样位置错误:渲染结果不好,梯度下降会试图减小该高斯的不透明度 α(即减小 φz),从而降低下次采样到该错误位置的概率。

通过这种方式,对高斯不透明度的梯度直接转化为对深度概率分布的梯度,从而优雅地解决了不可微采样和局部极小值的问题。

预测其他参数

除了位置 μ 和不透明度 α,网络还需要预测:

  • 协方差 (Covariance) Σ:直接由网络回归。

  • 颜色 (Spherical Harmonics) S:直接由网络回归 SH 系数。

这些预测都是基于像素对齐的特征 F[u]。因此,最终场景是由两张输入图像中每个像素生成的 3D 高斯集合组成的并集。

Architecture

  • 图像编码器 (Image Encoder)

    • 结合了 ResNet-50ViT-B/8

    • 两者都使用了 DINO 的预训练权重(因为DINO特征具有很好的几何对应特性)。

    • 将 ResNet 和 ViT 的特征在像素层面上进行拼接。

  • Epipolar Transformer

    • 包含两层 Epipolar Cross-Attention(用于视图间交互)。

    • 包含层内的 Self-Attention(用于视图内信息传播,填补遮挡区域或无纹理区域的信息)。

  • 输出头 (Output Heads)

    • 简单的全连接层,将特征映射到高斯参数:概率 logits φ、偏移 δ、协方差参数(缩放和旋转)、SH系数。

实验与结果

  • 数据集

    • RealEstate10k:室内场景,相机运动较大。

    • ACID:室外自然风景,航拍视角。

  • 基线对比

    • 对比了 pixelNeRF, GPNR, 以及 Du et al. 的方法。

  • 性能表现

    • 渲染速度:PixelSplat 渲染速度极快,比 GPNR 快 2.5 个数量级(Orders of Magnitude),达到了实时帧率。

    • 质量:在 PSNR, SSIM, LPIPS指标上均超越了 SOTA 方法。

    • 显存占用:训练和推理时的显存占用远低于 Light Field Transformers。

  • 消融实验 (Ablation Study)

    • 证明了 Epipolar Encoder 对于解决尺度模糊是必须的(去掉后性能大幅下降)。

    • 证明了 概率式预测 (Probabilistic Prediction) 对于避免局部极小值是必须的(如果直接回归深度,PSNR 下降约 1.5dB)。

总结

PixelSplat 是一篇非常扎实的工作,它成功地将 3D Gaussian Splatting 的高效性引入到了广义化新视角合成任务中。其最大的技术贡献在于:

  1. 利用 Epipolar Transformer 巧妙地解决了单目/稀疏视角下的尺度模糊问题。

  2. 提出了 概率式深度采样 + 不透明度重参数化 的策略,解决了训练高斯生成网络时的梯度消失和局部极小值问题。

这种方法不仅生成了高质量的新视角图像,还输出了一个显式的、可编辑的 3D 场景表示,这是以往基于 Light Field Transformer 的方法做不到的。


DiffusionGS: Baking Gaussian Splatting into Diffusion Denoiser (ICCV 2025)

  • 输入 (Input):

    • 一张单视角的 RGB参考图像 (Condition View)。

    • 参考图像对应的 相机位姿

    • (推理过程中) 从标准正态分布采样的 高斯噪声

  • 输出 (Output):

    • 直接预测出的一组 3D高斯溅射 (3DGS) 原语 (包含每个像素对应的位置、旋转、缩放、不透明度和颜色)。

    • 利用预测出的3D高斯模型渲染得到的 多视角图像

  • 解决的任务 (Task):

    • 单张图像到3D的生成与重建 (Single-view Image-to-3D Generation and Reconstruction)

    • 解决现有两阶段方法速度慢、多视角不一致以及过度依赖深度估计器的问题。DiffusionGS 提出了一种单阶段框架,将3D高斯表示直接“烘焙”进扩散模型中,能在约6秒内快速生成具有几何一致性的高质量3D物体或复杂场景。

Motivation

现有的从单张图像生成3D模型(Image-to-3D)的方法主要面临以下挑战:

  1. 两阶段方法的局限性: 许多主流方法采用“两阶段”策略:先使用2D多视角扩散模型生成多张视角的图像,再通过稀疏重建算法(如NeRF或3DGS)重建3D模型。这导致了误差累积,且无法保证生成的多视角图像在3D几何上是严格一致的。

  2. 3D一致性与生成能力的权衡:

    • 直接在3D数据上训练的扩散模型(3D Diffusion)能保证一致性,但通常依赖于NeRF的三平面(Triplane)表示,体积渲染速度慢,且受限于分辨率,难以扩展到大场景。

    • 基于SDS(Score Distillation Sampling)的方法优化时间过长(每个资产需数十分钟)。

  3. 场景级生成的困难: 现有的单图重建方法大多针对“以物体为中心”(Object-centric)的数据集。对于复杂的、非中心化的“场景级”(Scene-level)数据(如室内房间、室外风景),现有方法往往依赖单目深度估计器,在严重遮挡或大视角变化下容易坍缩。

  4. 数据稀缺与域差异: 3D场景数据稀缺,而3D物体数据多为合成。直接混合训练会导致不收敛,因为两者的相机分布和几何特征差异巨大。

论文的目标: 提出一种 单阶段(Single-stage) 的3D扩散模型,直接在去噪过程中预测3D高斯分布(3D Gaussian Splatting),无需深度估计器,同时能够处理物体和复杂场景,并实现极快的推理速度(约6秒)。

Method

这是论文最核心的部分。DiffusionGS 并没有像传统扩散模型那样预测噪声 ε,而是预测“干净的3D高斯原语”(x0-prediction)。

Pipeline

DiffusionGS 基于去噪扩散概率模型(DDPM)。

  • 输入:

    1. 条件图 (xcon): 给定的单张参考图像。

    2. 噪声图 (Xt): N 个视角的噪声图像。

    3. 相机参数: 包含条件视角和噪声视角的相机姿态。

  • 输出: 直接输出像素对齐的3D高斯参数(位置、协方差、不透明度、颜色)。

  • 训练监督: 利用可微光栅化(Rasterization)将预测的3D高斯渲染成2D图像,与真实图像(Ground Truth)计算损失。

像素对齐的3D高斯参数化

模型不是输出无序的点云,而是为输入噪声图特征图上的每一个像素预测对应的3D高斯参数。

假设特征图大小为 H x W,共有 N 个噪声视角。模型为每个视角预测 H x W 个高斯点。第 k 个高斯点的参数定义如下:

  1. 中心位置: 为了利用2D卷积网络的局部性,高斯点的中心被定义在从相机光心发出的射线上。公式如下:

    μt(k)=o(k)+ut(k)d(k)\mu_t^{(k)} = o^{(k)} + u_t^{(k)} d^{(k)}

    其中,o 是射线原点,d 是射线方向。u 是沿射线的深度距离。

    深度 u 进一步被参数化为近平面和远平面的加权:

    ut(k)=wt(k)unear+(1wt(k))ufaru_t^{(k)} = w_t^{(k)} u_{near} + (1 - w_t^{(k)}) u_{far}

    模型实际上预测的是权重 ω,从而将深度约束在合理范围内。

  2. 协方差: 由旋转矩阵 R 和缩放矩阵 S 组成。

  3. 其他属性: 不透明度 α 和 颜色 c。

所有这些参数(w, R, S, α, c)都是通过解码器的输出通道直接获得的。

去噪器架构

模型采用基于 Transformer 的架构(类似于 DiT 或 ViT):

  1. Patchify & Embedding:

    • 输入的噪声图像和条件图像被切片(Patchify)。

    • 关键点: 图像Patch与 相机条件(Viewpoint Conditions) 进行拼接(Concatenate),然后通过线性层投影。

    • 加入位置编码(Positional Embedding)。

  2. Transformer Backbone:

    • 由 L 层 Transformer Block 组成。

    • 包含多头自注意力(Self-Attention)、MLP 和 Layer Norm。

    • 时间步注入: 扩散的时间步 t 通过 自适应层归一化(Adaptive Layer Normalization, AdaLN) 注入到每个Block中,调节特征分布。

  3. 双高斯解码器 (Dual Gaussian Decoder):

    • 这是为了解决物体和场景深度范围不一致的问题。

    • 解码器将 Transformer 的输出Token 还原为 H x W 的特征图。

    • 双路设计: 论文使用了两个不同的 MLP作为解码头,分别用于解码“物体”数据和“场景”数据。

      • 物体解码器: 深度范围 [unear, ufar] 设置较小(如 [0.1, 4.2]),中心位置会被截断在 [-1, 1]3 空间内。

      • 场景解码器: 深度范围设置非常大(如 [0, 500]),以覆盖大场景。

    • 在微调(Finetuning)阶段,根据任务只保留其中一个解码器。

渲染与监督

由于没有3D高斯的真值(Ground Truth),模型通过渲染损失进行自监督。

  1. 可微渲染: 使用 Gaussian Splatting 的光栅化器 Fr,将预测出的高斯集合投影到目标视角,生成渲染图:

    x^(0,t)(i)=Fr(Mext(i),Mint(i),Gθ(Xtxcon,...))\hat{x}_{(0,t)}^{(i)} = F_r(M_{ext}^{(i)}, M_{int}^{(i)}, G_\theta(X_t | x_{con}, ...))
  2. 损失函数: 总损失包含三个部分:

    • 去噪损失 (Lde): 在噪声视角上的重建损失(L2 + VGG感知损失)。

    • 新视角损失 (Lnv): 模型同时也会预测 M 个额外的“新视角”(Novel Views)进行监督,以增强几何一致性。

    • 点分布损失 (Lpd): 为了防止生成的点云过于发散,特别是对于物体生成,论文设计了一个正则化项,鼓励高斯点的分布集中在目标标准差 σ0 附近:

      Lpd=Ek[lt(k)E[lt(k)]Var(tt(k))σ0+E[o(k)]]其中lt(k)是点到原点的距离。这有助于去除背景噪声并集中物体。\mathcal{L}_{pd} = \mathbb{E}_k \left[ \frac{l_t^{(k)} - \mathbb{E}[l_t^{(k)}]}{\sqrt{Var(t_t^{(k)})}} \sigma_0 + \mathbb{E}[|o^{(k)}|] \right] \\ 其中 l_t^{(k)} 是点到原点的距离。这有助于去除背景噪声并集中物体。

关键技术细节

为了让模型能同时处理物体和场景,并提高几何感知能力,论文引入了两个关键技术。

参考点普吕克坐标

这是论文对相机条件编码的重要改进。

  • 问题: 传统的普吕克坐标(Plücker Coordinates)用两个向量表示一条射线:方向向量 d 和 力矩向量 m = o x d。力矩向量虽然在数学上定义了射线,但对于神经网络来说,它对深度相对几何的感知并不直观,特别是当射线远离原点时。

  • 改进 (RPPC): 论文提出使用参考点(Reference Point)来替代力矩向量。参考点定义为射线上距离世界坐标原点最近的点

    参考点 r 的计算公式为:

    r=(o(od)d,d)r = (o - (o \cdot d)d, d)

    注意这里 r 是由计算出的最近点位置和方向向量 d 拼接而成的。

  • 优势: 这种表示方法具有平移不变性(类似于4D光场),并且明确地提供了射线的位置信息,帮助扩散模型更好地理解场景的绝对和相对深度。实验证明这对场景重建尤为关键。

场景-物体混合训练策略

为了解决数据规模问题和域适应问题,论文混合了 Objaverse (物体) 和 RealEstate10K (场景) 等数据集进行训练。

  • 挑战:

    • 物体数据: 物体在中心,背景为空,相机围着转(球形轨迹)。

    • 场景数据: 相机在场景内部,轨迹通常是推拉(Dolly)或平移,且深度范围巨大。

    • 直接混合训练会导致模型混淆,无法收敛。

  • 解决方案:视角选择约束 (Viewpoint Selecting) 论文在训练时,通过严格限制噪声视角(Noisy Views)和新视角(Novel Views)相对于条件视角(Condition View)的角度,来确保训练的稳定性。

    定义了两个角度约束:

    1. 位置角度约束 (θ): 限制相机位置向量之间的夹角。

      θcd(i)θ1,θdn(i,j)θ2\theta_{cd}^{(i)} \le \theta_1, \quad \theta_{dn}^{(i,j)} \le \theta_2

      这意味着噪声视角的相机位置不能离条件视角太远。

    2. 朝向角度约束 (φ): 限制相机光轴方向向量 z 之间的夹角(重叠度)。

      zconznoise(i)zconznoise(i)cos(ϕ1)\frac{\vec{z}_{con} \cdot \vec{z}_{noise}^{(i)}}{|\vec{z}_{con}| \cdot |\vec{z}_{noise}^{(i)}|} \ge \cos(\phi_1)

      这确保了不同视角之间有足够的视野重叠(Overlap),使模型能够学到几何对应关系,而不是仅仅依靠幻觉生成。

实验结果与总结

  • 速度: 在 A100 GPU 上生成仅需 6秒,比基于 SDS 的方法快数百倍,比之前的单阶段方法也快 5-10 倍。

  • 质量:

    • 物体生成: 在 ABO 和 GSO 数据集上,PSNR 和 FID 均优于 SOTA 方法(如 LGM, DMV3D)。

    • 场景重建: 在 RealEstate10K 上,不仅指标领先,而且由于没有使用单目深度估计器,能够更好地处理遮挡区域和复杂几何,避免了基于深度图方法的扭曲和伪影。

  • 通用性: 模型可以结合 Stable Diffusion 或 Sora 等文生图/文生视频模型,实现高质量的 Text-to-3D 生成。

DiffusionGS 的核心创新在于将显式的 3DGS 表示直接嵌入到扩散模型的输出空间中,结合 RPPC 坐标编码和混合训练策略,成功打通了从单图到高质量 3D 物体及场景生成的快速通道。它是一个“去噪即重建”的端到端框架。


DepthSplat: Connecting Gaussian Splatting and Depth (2025)

  • 输入 (Input):

    • 一组稀疏的 参考图像 (Reference images) (即多视图RGB图像,如2张或更多)。

    • 对应的 相机内参和外参 (Camera intrinsics & extrinsics)

    • (隐式输入) 一个预训练的 单目深度网络 (如 Depth Anything V2) 用于提取特征。

  • 输出 (Output):

    • 每张输入图像对应的 高精度深度图 (Depth maps)

    • 预测出的 3D高斯参数 (位置 μ、不透明度 α、协方差 Σ、颜色 c),构成完整的场景3D表示。

    • 从任意给定视角渲染出的 新视角图像 (Novel view images)

  • 解决的任务 (Task):

    • 鲁棒的前馈式3D高斯重建与新视角合成。它解决了现有的前馈式3DGS方法(如MVSplat)在弱纹理区域、反光表面等困难场景下因特征匹配失败而导致的几何坍塌问题。

    • 通过将 多视图几何一致性 与强大的 单目深度先验 结合,DepthSplat 能够从稀疏视角快速(0.6秒内处理12张图)推断出高质量的场景几何和外观,同时证明了3DGS的渲染损失可以用作无监督信号来预训练深度模型。

Motivation

在计算机视觉中,新视角合成(Novel View Synthesis)深度预测(Depth Prediction) 是两个核心任务。近期,这两者虽然都取得了巨大进展,但通常是独立研究的,存在互补性:

  1. 现有前馈式 3DGS 的局限性(如 MVSplat):

    • 现有的前馈式(Feed-forward)3DGS 方法(即输入几张图,直接输出 3D 场景表示,无需逐场景优化)通常依赖于 多视图立体视觉(MVS) 的代价体(Cost Volume)来构建几何。

    • 缺点: 纯 MVS 方法严重依赖特征匹配。在 弱纹理区域(如白墙)、反光表面(如镜子、玻璃)或遮挡区域,特征匹配容易失效,导致几何坍塌,进而生成的 3D 高斯位置错误,渲染质量下降。

  2. 单目深度估计的局限性:

    • 现代单目深度模型(如 Depth Anything)在“野外”图像上表现出惊人的鲁棒性。

    • 缺点: 它们缺乏 多视图一致性 且存在 尺度模糊(Scale Ambiguity),难以直接用于精确的 3D 重建。

DepthSplat 的核心思想: 将两者结合。利用预训练的单目深度特征(强鲁棒性)来增强多视图代价体(强一致性),从而得到高质量的深度图。然后,将这些深度图直接反投影为 3D 高斯的中心,从而实现高质量的新视角合成。反过来,3DGS 的渲染损失也可以作为无监督信号,帮助训练深度网络。

Architecture

DepthSplat 的整体是一个端到端的可微框架,主要由两个并行分支组成,并在后续融合:

  1. 多视图分支 (Multi-View Branch): 基于平面扫描(Plane-Sweep)立体视觉,构建代价体,负责捕捉多视图几何一致性。

  2. 单目分支 (Monocular Branch): 使用预训练的强力单目深度网络(Depth Anything V2)提取特征,负责提供语义和结构先验,处理弱纹理区域。

  3. 融合与深度回归 (Fusion & Regression): 将上述两者的特征拼接,通过 2D U-Net 预测深度。

  4. 高斯参数预测 (Gaussian Parameter Prediction): 将预测的深度图反投影为 3D 点(作为高斯中心),并预测其他高斯属性(颜色、协方差等),最后通过 splatting 渲染。

Method

这是本文最核心的部分。我们将按照数据流向详细拆解。

多视图特征匹配

此分支的目的是利用多视图几何约束(极线几何)来构建匹配代价体。

  • 特征提取 (Feature Extraction):

    • 给定 N 张输入图像 Ii

    • 首先使用一个轻量级的 权重共享 ResNet 进行降采样,提取基础特征。

    • 为了在不同视图间交换信息,使用 多视图 Swin Transformer。它包含 6 层堆叠的自注意力(Self-Attention)和交叉注意力(Cross-Attention)层。

    • 稀疏注意力机制: 为了处理任意数量的输入视图并保持计算高效,对于每张参考图,模型只与其 Top-2 最近邻视图 进行 Cross-Attention(根据相机中心距离选择)。

    • 最终得到下采样倍率为 s 的特征图 Fi,尺寸为 (H/s) × (W/s) × C。

  • 代价体构建 (Cost Volume Construction):

    • 采用 平面扫描立体视觉 (Plane-Sweep Stereo) 方法。

    • 深度假设: 在场景的深度范围内均匀采样 D 个深度假设值 dm

    • 特征变换 (Warping): 对于参考视角 i,利用相机投影矩阵和深度假设 dm,将源视角 j 的特征 Fj 变换(Warp)到视角 i 的视点下,得到 Fj→idm

    • 相关性计算: 计算参考特征 Fi 与变换后特征 Fj→idm 的点积(Dot-product),衡量相似度。

    • 将所有 D 个深度假设的相关性堆叠起来,形成代价体 Ci。其维度为 (H/s) × (W/s) × D。

    • 如果输入超过两张图,策略与 Attention 类似,仅计算参考图与 Top-2 最近邻图的相关性并取平均,以保持高效。

单目深度特征提取

为了解决 MVS 在弱纹理区域的匹配困难,引入单目先验。

  • 骨干网络: 使用预训练的 Depth Anything V2 (基于 ViT 架构)。这是一个在海量数据上训练过的强力模型。

  • 特征获取:

    • 输入图像 Ii 进入单目网络。

    • 提取其中间层特征。由于 ViT 输出通常是 1/14 分辨率,作者使用双线性插值将其调整为与多视图代价体相同的空间分辨率 (H/s) × (W/s)。

    • 得到单目特征 Fimono,维度为 (H/s) × (W/s) × Cmono

  • 关键点: 这里使用的是“冻结”或“微调”的特征(取决于训练阶段),直接利用其强大的语义理解能力。

特征融合与深度回归

这是 DepthSplat 将两种范式结合的关键步骤。

  • 拼接 (Concatenation):

    • 直接将多视图代价体 Ci 和单目特征 Fimono 在通道维度进行拼接。

    • 输入张量维度变为:(H/s) × (W/s) × (D + Cmono)。

    • 这种简单的拼接被证明比复杂的注意力融合(Attention-based fusion)更有效,因为它保留了原始的几何约束和语义特征,让后续网络自己学习如何加权。

  • 深度回归网络 (2D U-Net):

    • 使用一个 2D U-Net 处理拼接后的特征。

    • 输出一个尺寸为 (H/s) × (W/s) × D 的张量,代表每个像素在 D 个深度假设上的概率分布。

    • 使用 Softmax 沿深度维度归一化。

    • Soft Argmin: 对 D 个深度假设值进行加权平均(即 sum(probability * depth_value)),得到粗糙深度图 (Coarse Depth)。

  • 分层细化 (Hierarchical Refinement):

    • 为了提高精度并节省显存,采用了由粗到细(Coarse-to-Fine)的策略(类似于 MVSNet)。

    • 先在低分辨率(1/8 或 1/4)预测粗糙深度。

    • 上采样到 2 倍分辨率。

    • 以粗糙深度为中心,在一个更窄的深度范围内重新构建局部的代价体,并再次融合单目特征进行细化。

    • 最后使用一个 DPT (Dense Prediction Transformer) 头上采样到全分辨率 H × W。

高斯参数预测 (Gaussian Parameter Prediction)

深度图只是 3DGS 的几何基础,还需要预测其他高斯属性。

  • 高斯中心 (Positions, µ):

    • 这是显式的。对于图像上的每个像素 u,利用预测的深度 Du 和相机内参 K、外参 T,直接反投影到 3D 空间: μ=T1(DuK1u)\mu = T^{-1} \cdot (D_u \cdot K^{-1} \cdot u)

    • 这保证了高斯点云的几何结构与预测的深度图完全一致。

  • 其他属性 (Opacity, Covariance, Color):

    • 使用一个额外的轻量级预测头(基于 DPT)。

    • 输入: 拼接的图像特征、深度特征和原始图像。

    • 输出:

      • 不透明度 (Opacity, α): 每个高斯的透明度。

      • 协方差 (Covariance, Σ): 预测缩放(Scaling)和旋转(Rotation)参数(通常使用四元数),以此构建 3D 协方差矩阵。

      • 颜色 (Color, c): 使用球谐函数(SH)系数或直接预测 RGB(视具体实现而定,论文中通常指高斯的颜色属性)。

  • 渲染 (Splatting):

    • 利用所有预测出的 3D 高斯 {µj, αj, Σj, cj},使用标准的高斯泼溅光栅化器(Gaussian Splatting Rasterizer)渲染出新视角的图像 Irender

训练目标

模型支持两种任务的训练,且损失函数不同:

  1. 深度估计任务 (Depth Estimation Task):

    • 有真值深度(Ground Truth Depth)监督。

    • 损失函数: L1 损失 + 梯度损失(Gradient Loss)。

    Ldepth=αDpredDgt+β(xDpredxDgt+yDpredyDgt)L_{depth} = \alpha \cdot |D_{pred} - D_{gt}| + \beta \cdot (|\partial_x D_{pred} - \partial_x D_{gt}| + |\partial_y D_{pred} - \partial_y D_{gt}|)
    • 其中 α 和 β 是权重系数。

  2. 新视角合成任务 (View Synthesis Task):

    • 这是无监督深度的关键。仅使用渲染图像与真值图像之间的光度误差。

    • 损失函数: MSE 损失 + LPIPS 感知损失。

    Lgs=m=1M(MSE(Irenderm,Igtm)+λLPIPS(Irenderm,Igtm))L_{gs} = \sum_{m=1}^{M} (\text{MSE}(I^m_{render}, I^m_{gt}) + \lambda \cdot \text{LPIPS}(I^m_{render}, I^m_{gt}))
    • 这里 M 是用于监督的目标视角数量。

交叉任务的互惠关系 (Mutual Benefits)

论文的一个重要贡献是验证了两个任务的协同效应:

  1. 更好的深度 -> 更好的 3DGS:

    • 实验表明,融合单目特征后,ScanNet 和 RealEstate10K 等数据集上的深度误差显著降低。

    • 更准确的深度直接导致了生成的 3D 高斯几何更准确,消除了渲染中的几何伪影(如墙壁扭曲、物体漂浮)。

  2. 3DGS 渲染损失 -> 无监督深度预训练:

    • 作者展示了一种 "Unsupervised Pre-training" 策略。

    • 在没有深度真值的大规模视频数据集(如 RealEstate10K)上,仅通过最小化 Lgs(渲染损失)来训练模型。

    • 结果显示,这样预训练出来的模型,在迁移到有深度真值的数据集(如 ScanNet)时,比随机初始化的模型表现更好。这意味着 3DGS 的渲染过程迫使网络学习到了正确的几何结构。

总结

DepthSplat 成功地连接了显式几何(深度图)和体积渲染表示(高斯泼溅)。

  • 对于 Method 的核心总结: 它是 "Cost Volume from MVS" + "Features from Mono-Depth" -> "U-Net Fusion" -> "Explicit Unprojection to Gaussians"。

  • 这种设计既保留了多视图方法的几何一致性,又通过单目特征解决了传统 MVS 在弱纹理和反光区域的致命弱点,实现了当前最先进(SOTA)的前馈式 3D 重建和渲染效果。


ReSplat: Learning Recurrent Gaussian Splats (2025)

  • 输入 (Input):

    • 一组 稀疏的输入图像 (Sparse input images)(例如 2、8 或 16 张 RGB 图像)。

    • 对应的 相机参数(内参 K 和外参 R, t)。

  • 输出 (Output):

    • 一组经过迭代优化的 3D高斯基元 (3D Gaussian primitives)(包含位置、协方差、不透明度、球谐系数)。

    • 从任意新视角渲染出的 高质量2D图像

  • 解决的任务 (Task):

    • 稀疏视角下的通用场景3D重建与新视图合成

    • 旨在解决传统优化方法速度慢、现有前馈方法(Feed-forward)“一锤子买卖”无法修正预测错误且高斯数量过多的问题。

    • ReSplat 引入了 循环神经网络 (Recurrent Network) 机制,利用 渲染误差 (Rendering Error) 作为反馈信号,像优化过程一样迭代地修正 3D 高斯参数,同时在 16x 下采样的空间中工作,大幅减少了计算量并实现了 SOTA 性能。

Motivation

现有技术的局限性:

  1. 基于优化的方法 (如原始3DGS): 能够生成高质量的新视图,但需要针对每个场景进行数千次迭代的梯度下降优化,推理时间长(分钟级),不适合实时应用。

  2. 前馈方法 (如pixelSplat, MVSplat, DepthSplat): 直接从输入图像通过神经网络预测3D高斯参数。速度快(毫秒/秒级),但这是一次性预测(One-shot)。如果预测有误,网络没有机会去“看”一眼结果并进行修正。此外,这些方法通常需要针对每个像素生成一个高斯(Per-pixel Gaussians),导致高斯数量巨大,渲染和存储负担重。

ReSplat的核心洞察:

  • 模拟优化过程: 既然优化方法的优势在于不断计算“渲染误差”并根据梯度修正,那么神经网络也可以学习这个过程。

  • 利用渲染误差 (Rendering Error) 作为反馈: 将当前预测的高斯渲染出的图像与真实图像对比,产生的误差图包含了极丰富的信息。ReSplat 将此误差作为输入反馈给网络,让网络学习如何根据误差来更新高斯参数。

  • 稀疏化表示: 为了支持高效的迭代更新,不能使用百万量级的高斯。作者提出在 16x 下采样 的空间中构建高斯,大幅减少数量,同时通过强大的上下文聚合能力保持质量。

Method

ReSplat 的核心是一个**循环神经网络(Recurrent Network)**框架。它首先进行一个轻量级的初始重建,然后进入循环更新阶段。

1. 初始高斯重建

这部分的目标是生成一个紧凑的初始3D高斯集合 G0

  1. 下采样 3D 空间 (Subsampled 3D Space):

    • 架构基础: 基于DepthSplat架构,但做了关键修改。

    • 空间压缩: 不像以前的方法那样为每个像素预测一个高斯(N x H x W),ReSplat 将深度图预测的分辨率降低为原图的 1/4。这意味着高斯总数减少了 16 倍(4 x 4)。

    • 点云生成: 预测出的低分辨率深度图通过相机参数反投影(Unproject)到3D空间,形成点云。每个点关联一个从图像提取的特征向量 fjf_j

    • 高斯数量: M = N x H x W / 16,其中 N 是输入视图数量。

  2. 聚合 3D 上下文 (Aggregating 3D Context):

    • 由于点数减少了,单个点的信息量变少。为了补偿,模型使用了 6层交替的 kNN Attention(局部)和 Global Attention(全局)

    • 这使得每个3D点不仅知道自己的特征,还能聚合局部邻域和整个场景的上下文信息,得到增强特征 fjf^*_j

  3. 解码为高斯 (Decoding):

    • 使用一个轻量级的 MLP 头(Gaussian Head),将增强特征解码为高斯的属性:位置 μ、不透明度 α、协方差 Σ、球谐系数 sh。

    • 同时,将增强特征fj初始化为循环网络的隐藏状态zj0同时,将增强特征 f^*_j 初始化为循环网络的隐藏状态 z^0_j

2. 基于渲染误差的循环更新 (Recurrent Gaussian Update) - 核心创新

这是论文最精彩的部分。模型不再是一次性输出,而是进入一个循环:预测 → 渲染 → 计算误差 → 修正

步骤 1: 计算渲染误差 (Computing the Rendering Error) 在第 t 次迭代,利用当前高斯参数 Gt 渲染出图像,并与真实输入图像 I 对比。误差计算结合了像素空间和特征空间:

  • 像素误差 (Pixel-space Error):

    • 计算 I^tI\hat{I}^t - I

    • 使用 Pixel Unshuffle 操作进行 4x 下采样,使其空间维度与特征图对齐。

    • 通过线性层投影并归一化。

  • 特征误差 (Feature-space Error):

    • 使用预训练的 ResNet-18(在ImageNet上预训练)提取渲染图和真实图的特征(取前三层特征,分别为 1/2, 1/4, 1/8 分辨率)。

    • 将所有特征双线性插值调整到 1/4 分辨率并拼接。

    • 计算特征差值 F^tF\hat{F}^t - F

  • 误差融合: 将像素误差和特征误差相加,得到最终的 2D 误差特征图 E^t\hat{E}^t

步骤 2: 将误差传播到 3D 高斯 (Propagating Error to Gaussians) 这是一个从 2D 到 3D 的信息传递过程。

  • 难点: 简单的空间对齐(Spatially aligned concatenation)是不够的,因为一个3D高斯可能会投影并影响图像上的多个像素区域(splatting的特性)。

  • 解决方案:Global Attention

    • 模型对 2D 误差特征图执行全局注意力机制。

    • 每个 3D 高斯 j 都可以“关注”到所有位置的 2D 渲染误差。

    • 输出是每个高斯对应的聚合误差特征 ejte^t_j

步骤 3: 循环更新模块 (Recurrent Update Module)

  • 输入: 拼接三个部分:

    1. 当前高斯参数(位置、颜色等)。 gjtg^t_j

    2. 当前隐藏状态(记忆单元)。 zjtz^t_j

    3. 聚合后的渲染误差(反馈信号)。 ejte^t_j

  • 网络架构: 使用 4层 kNN Attention 块。这里使用 kNN 而不是 Global Attention 是为了捕捉局部几何细节,并提高计算效率(因为Global Attention在点数多时极慢)。

  • 输出: 增量更新Δgjt和隐藏状态更新Δzjt增量更新 \Delta g^t_j 和隐藏状态更新 \Delta z^t_j

  • 更新公式:

    gjt+1=gjt+Δgjtzjt+1=zjt+Δzjtg^{t+1}_j = g^t_j + \Delta g^t_j \\ z^{t+1}_j = z^t_j + \Delta z^t_j
  • 迭代次数: 训练时随机采样 1 ∼ 4 次迭代,推理时通常运行 4 次即可收敛。

3. 训练损失

采用两阶段训练策略:

  1. 第一阶段(预热):

    • 只训练初始重建模型。

    • Loss: 渲染损失 (L1 + Perceptual Loss) + 深度平滑正则化 (Edge-aware depth smoothness)。

  2. 第二阶段(端到端):

    • 冻结初始模型,只训练循环更新模块。

    • Loss: 对每一次迭代 t 的预测结果都计算渲染损失。

    • 加权策略: 使用指数加权 γT-1-t,意味着越靠后的迭代步骤(最终结果)权重越大,迫使网络在最后几步输出最好的结果。

模型架构总结

  • Encoder: 类似 DepthSplat 的图像编码器(ViT Backbone)。

  • Initialization Head: 生成 1/16 数量的初始高斯。

  • Renderer: 可微 Gaussian Splatting 渲染器(基于 gsplat)。

  • Feedback Loop: 2D 误差计算 → Global Attention (2D to 3D) → kNN Recurrent Block (3D Update)。

实验结果与优势

  1. 速度与质量的平衡:

    • 比优化版 3DGS 快 100倍

    • 比之前的 Feed-forward 方法(如 MVSplat)渲染速度快 4倍(得益于高斯数量减少16倍)。

    • 在 DL3DV 数据集上,PSNR 比 DepthSplat 高出 3.5dB,比 3DGS 高出 4.2dB

  2. 泛化能力 (Generalization):

    • 跨数据集: 在 DL3DV 上训练,直接在 RealEstate10K 上测试,效果依然出色。这是因为“渲染误差”作为反馈信号,在测试时能让模型适应未见过的数据分布(类似于测试时优化 Test-time Optimization,但是是由网络前馈完成的)。

    • 跨分辨率: 即使测试分辨率与训练不同,模型也能通过误差反馈自适应调整。

  3. 高斯数量:

    • ReSplat 生成的高斯非常稀疏(约 250k),而 MVSplat/DepthSplat 生成数百万个(约 4000k)。这使得 ReSplat 在后续渲染和存储上极具优势。

总结

ReSplat 的本质是**“Learning to Optimize”**(学习如何优化)。它不再试图一次性猜出完美的 3D 结构,而是先猜一个大概(初始重建),然后像人类画画一样,看一眼画纸(渲染),发现哪里不对(计算误差),再通过学到的经验(循环网络)去修补细节。配合 16x 的稀疏化设计,它实现了目前 SOTA 的性能与极高的效率。

最后更新于