跳转至

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

Abstract

  • 本文提出 pixelSplat,一个前馈模型,能够从图像对中学习重建由 3D 高斯原语参数化的 3D 辐射场
  • 模型具有实时和内存高效的渲染特性,支持可扩展的训练和快速的 3D 重建推理
  • 为了克服稀疏且局部支持表示固有的局部最小值问题,预测一个在 3D 上的密集概率分布,并从该概率分布中采样高斯均值
  • 通过重参数化技巧使采样操作可微分,允许梯度通过高斯溅射表示进行反向传播
  • 在真实世界的 RealEstate10k 和 ACID 数据集上的宽基线新视图合成任务中,相比 SOTA 光场 Transformer 方法,不仅性能更优,渲染速度提升 2.5 个数量级,同时重建了可解释和可编辑的 3D 辐射场


Introduction

现有的可泛化新视图合成方法主要存在两类问题:

  1. 基于体积渲染的方法:虽然效果好但内存和时间开销巨大
  2. 光场 Transformer 方法:速度比体积渲染快但仍远未达到实时,且不能重建可编辑或导出的 3D 场景表示

贡献

  • 将基于原语的 3D 表示的优势——快速且内存高效的渲染以及可解释的 3D 结构——引入到可泛化视图合成中
  • 设计了一个多视图极线 Transformer,能够可靠地推断每个场景的尺度因子
  • 提出了一种新的高斯原语参数化方法,通过密集概率分布隐式地表示高斯位置,避免了优化原语参数时的局部最小值问题
  • 首次展示了如何在单次前向传播中从一对图像预测 3D 高斯溅射表示


单场景新视图合成

  • 早期方法:采用体素网格和基于学习的渲染技术
  • 神经场方法:神经场和体积渲染成为事实标准,但计算需求高
  • 3D 高斯溅射:通过光栅化实现实时渲染,但需要大量图像进行优化
  • 本文目标:训练神经网络从仅两张图像中在单次前向传播中估计 3D 高斯原语场景表示的参数

基于先验的 3D 重建和视图合成

  • 基于代理几何方法:通过深度图等几何代理,机器学习可与 IBR (Image-Based Rendering) 结合
  • 小基线新视图合成:通过神经网络直接回归多平面图像
  • 大基线新视图合成:需要完整的 3D 表示
    • 早期神经场方法:仅编码单个 latent code,限制于单物体场景
    • 像素对齐特征方法:通过像素对齐特征或 transformer 保持端到端局部性和平移不变性,能够泛化到无限场景
    • 光场场景表示:区别于 SDF 和辐射场,最近出现的光场场景表牺牲可解释性换取更快的渲染
  • 本文方法:既能够推理出可解释的 3DGS 场景表示,渲染速度又相比光场 Transformer 快了三个数量级

多视图几何中的尺度歧义

  • 单目深度估计:SOTA 模型依赖于复杂的 scale-invariant 深度损失
  • 新视图合成:最近的单图像 3D 扩散模型根据深度统计启发式方法重新缩放 3D 场景,并在场景尺度上调整其编码器
  • 本文方法:构建多视图编码器推断场景尺度,使用 epipolar transformer 找到跨视图像素对应关系


Background: 3D Gaussian Splatting

3D 高斯溅射将 3D 场景参数化为一组 3D 高斯原语 \(\{g_k = (\mu_k, \Sigma_k, \alpha_k, S_k)\}_k^K\),每个原语包含:

  • 均值 \(\mu_k\):高斯中心位置
  • 协方差 \(\Sigma_k\):高斯形状
  • 不透明度 \(\alpha_k\):透明度
  • 球谐系数 \(S_k\):颜色信息

局部最小值问题

原语拟合的关键挑战是容易陷入局部最小值,对于 3DGS 来说,有两点问题阻止了它优化到正确位置:

  1. 局部支持性:高斯原语具有 local support,即如果距离正确位置超过几个标准差,梯度会消失
  2. 路径依赖性:即使高斯足够接近正确位置能够接收到梯度,仍需要存在一条损失单调递减的路径,但这在可微渲染中通常不满足(高斯经常会穿过空的空间遮挡背景特征)

3DGS 依赖非可微的剪枝和分裂操作来解决这个问题,但这些技术与本文可泛化的目标不兼容,因为原语参数由神经网络预测且必须接收梯度。


Image-conditioned 3D Gaussian Inference

解决尺度歧义

在理想情况下,新视图合成数据集应包含可度量的相机位姿。然而实际上,数据集提供的位姿由 SfM 计算,只能重建到尺度,即不同场景 \(\mathcal{C}_i\) 被各自任意的尺度因子 \(s_i\) 缩放。

给定场景 \(\mathcal{C}_i = \{(I_j, s_i T_j^m)\}_j\),其中 \(s_i T_j^m\) 表示平移分量被未知标量 \(s_i \in \mathbb{R}^+\) 缩放的度量位姿。

双视图编码器设计

设两个参考视图为 \(I\)\(\tilde{I}\)。对于 \(I\) 中的每个像素,沿其在 \(\tilde{I}\) 中的极线用对应深度值进行标注:

  1. 特征编码:分别将每个视图编码为特征体积 \(F\)\(\tilde{F}\)

  2. 极线采样:对于 \(I\) 中的像素坐标 \(u\),计算其在 \(\tilde{I}\) 中的极线 \(\ell\),沿 \(\ell\) 采样像素坐标 \(\{\tilde{u}_l\} \sim \tilde{I}\)

  3. 深度计算:通过三角测量计算每个极线样本 \(\tilde{u}_l\)\(I\) 相机原点的距离 \(\tilde{d}_{\tilde{u}_l}\)

  4. 极线交叉注意力:用 \(I\) 的像素特征去查询 \(\tilde{F}\) 中的极线样本特征与深度信息,其中 \(\oplus\) 表示 concat,\(\gamma(\cdot)\) 表示位置编码,使像素特征 \(F[u]\) 包含深度位置编码的加权和,得到任意缩放因子一致的深度信息

    \[s = \tilde{F}[\tilde{u}_l] \oplus \gamma(\tilde{d}_{\tilde{u}_l})\]
    \[q = Q \cdot F[u], \quad k_l = K \cdot s, \quad v_l = V \cdot s\]
    \[F[u] \mathrel{+}= \text{Att}(q, \{k_l\}, \{v_l\})\]
  5. 自注意力传播:传播缩放后的深度估计,让没有被极线采样的像素也能获得深度信息

    \[F \mathrel{+}= \text{SelfAttention}(F)\]

高斯参数预测

采用像素对齐高斯策略:对于每个像素坐标 \(u\),取对应特征 \(F[u]\) 作为输入,预测 \(M\) 个高斯原语的参数,这里只讨论 \(M = 1\),即每个像素对应一个高斯原语。

基线方法:直接预测点估计

直接回归高斯中心 \(\mu\)

\[\mu = \mathbf{o} + d_u \cdot \mathbf{d}, \quad d = g(F[u]), \quad \mathbf{d} = TK^{-1} [u, 1]^T\]

其中 \(d \in \mathbb{R}^+\) 是从相机原点到高斯均值的距离,\(T\)\(K\) 分别是相机的外参和内参。

问题:直接优化高斯参数容易陷入局部最小值,且无法使用非可微的生成和剪枝启发式。

提出方法:预测概率密度

不直接预测高斯深度 \(d\),而是预测沿射线 \(u\) 在深度 \(d\) 处存在高斯的概率分布。

  1. 深度分桶:在近远平面 \(d_{\text{near}}\)\(d_{\text{far}}\) 之间,将深度离散化为 \(Z\) 个桶,表示为向量 \(b \in \mathbb{R}^Z\)

    \[b_z = \left[\left(1-\frac{z}{Z}\right)\left(\frac{1}{d_{\text{near}}}-\frac{1}{d_{\text{far}}}\right)+\frac{1}{d_{\text{far}}}\right]^{-1}\]
  2. 概率分布:定义索引变量 \(z\) 上的离散概率分布 \(p_\phi(z)\),参数为离散概率向量 \(\phi\)

  3. 偏移预测:预测每桶中心偏移 \(\delta \in [0,1]^Z\),调整像素对齐高斯在桶边界间的深度

  4. 高斯位置采样:使用全连接网络 \(f\) 预测概率参数和偏移,得到每个桶的高斯位置

    \[\mu = \mathbf{o} + (b_z + \delta_z) \mathbf{d_u}, \quad z \sim p_\phi(z), \quad (\phi, \delta) = f(F[u])\]

重参数化技巧

为了训练模型,需要将梯度反向传播到深度桶概率 \(\phi\) 中。采样操作 \(z \sim p_\phi(z)\) 不可微分,但是可以通过重参数化技巧来解决:

设置 \(\alpha = \phi_z\),即将高斯的不透明度设置为桶被采样的概率,这样的话就有:

  • 正确深度情况:梯度下降增加高斯不透明度,导致更频繁采样,最终将所有概率质量集中在正确桶中
  • 错误深度情况:梯度下降降低高斯不透明度,减少进一步错误深度预测的概率

协方差和球谐系数预测

通过扩展神经网络 \(f\) 预测单一协方差矩阵和球谐系数:

\[\phi, \delta, \Sigma, S = f(F[u])\]


Experiments

实验设置

  • 数据集:RealEstate10k(YouTube 家庭漫游视频)和 ACID(航拍景观视频)
  • 分辨率:256×256(为了与基线方法公平比较)
  • 基线方法:pixelNeRF、GPNR、Du et al. 的方法
  • 评估指标:PSNR、SSIM、LPIPS,以及运行时间和内存消耗

主要结果

  1. 性能提升:在所有指标上优于基线方法

    • 特别是在感知距离(LPIPS)上有显著改善
    • 更好地捕获细节和正确推断只被一个参考视图观察到的场景部分的 3D 结构
  2. 训练和推理成本:比第二快的方法快约 650 倍

    • 编码时间:0.102s vs 0.016s(Du et al.)
    • 渲染时间:0.002s vs 1.309s(Du et al.)
    • 训练内存:14.4GB vs 314.3GB(Du et al.)
  3. 点云渲染:能够推断结构化的 3D 表示,支持从训练分布外的视角进行可视化

消融研究

  1. 极线编码器的重要性

    • 移除极线编码器(No Epipolar Encoder)导致性能显著下降
    • 产生重影和运动模糊伪影,证明深度预测错误
  2. 深度编码的重要性

    • 移除深度位置编码(No Depth Encoding)导致约 1dB PSNR 下降
    • 说明编码器不仅检测对应关系,还使用通过三角测量获得的场景尺度编码深度来解决尺度歧义
  3. 概率预测的重要性

    • 直接回归深度(No Probabilistic Prediction)导致约 1.5dB PSNR 下降
    • 证明概率采样方法对避免局部最小值的必要性
  4. 注意力可视化:极线交叉注意力权重可视化证实模型学会了沿每条射线找到正确的对应关系

扩展到多视图

虽然极线编码器主要为图像对设计,但可扩展到任意数量的视图:

  • 对于给定像素坐标,可从任意数量图像中获取极线样本
  • 添加可学习的每图像嵌入来区分不同视图的样本
  • 3 视图结果显示进一步的性能提升


Limitations

  1. 高斯融合:不是融合或去重从两个参考视图观察到的高斯,而是简单输出从每个视图预测的高斯的并集
  2. 生成建模:未解决场景未见部分的生成建模问题
  3. 内存开销:当扩展到多个参考视图时,极线注意力机制在内存方面变得过于昂贵


Conclusion

pixelSplat 成功将基于原语的 3D 表示的优势引入到可泛化视图合成中,实现了快速且内存高效的渲染以及可解释的 3D 结构。通过创新的概率分布参数化和重参数化技巧,解决了原语回归中的局部最小值问题,为基于原语表示的先验推理开辟了新的研究方向。