Paper: 链接
Code: https://github.com/dcharatan/pixelsplat
Author: MIT, SFU
前置知识
1)几种常见的伪影
\quad
① ghosting artifacts:当摄像机运动,或者物体运动时,画面会在物体旧位置留下重影,其实就是残影。
\quad
② Blurring:和ghosting类似,都是把画面变糊,但是有区别。blurring指的是空域高频图像的细节损失,通常在锐利的边缘,如下图中,边缘模糊。导致这种伪影的原因,其实就是高频细节的丢失。
\quad
③ Ringing artifacts / Gibbs artifacts / Spectral leakage artifacts / truncation artifacts(振铃伪影):图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。
\quad
④ Aliasing Artifacts(混叠伪影):当对连续信号进行离散化(采样)时,如果采样频率过低,可能导致高频信号被误解为低频信号,产生混叠。该伪影往往由于采样频率不足而产生的"走样"效应,通常表现为图像中的锯齿状边缘(jaggies,左图)或周期性波纹(摩尔纹,moire pattern,右图)。
为了解决jagged sharp edges,一种方法叫做anti-aliasing(反走样),让边缘更光滑。如下图所示:
\quad
⑤ Floating artifacts(漂浮伪影):漂浮是指某些区域的虚幻运动,而周围区域保持静止。从视觉上看,这些区域似乎漂浮在周围的背景之上。有两种类型的浮动:纹理浮动和边缘浮动。如下图出现了漂浮效应,从视觉上看,这些区域产生了一种强烈的错觉,就好像它们漂浮在叶子上。
\quad
⑥ Block Boundary Artifact(块效应):不同的图像块进行了不同的处理,有时是量化步长不同,有时是舍去的高频分量不同,这将导致图像块之间的相关性被破坏。有点像马赛克。
\quad
⑦ Flickering Artifacts:场景中的高频着色区域,会有闪烁的现象。这是最需要重点解决的artifact,因为最难看,而且是在静态的时候都会出现。闪烁一般是指亮度或色度随时间的频繁变化(类似于蜡烛的火焰),通常分为细粒忽明忽暗和粗粒忽明忽暗,如下图。
\quad
⑧ speckling artifacts:在医学图像学、雷达图像、激光雷达图像等领域中经常出现的一种现象,主要是由于波的干涉或光学干涉引起的,通常表现为图像中的随机亮暗斑点。这种伪影可以使用滤波技术、图像平滑算法以及在采集图像时使用多视角或多个传感器等来解决。
\quad
⑨ Jerkiness:抖动是一种类似闪烁的伪像,描述了对视频中的单个静止图像的感知。
2)small-baseline 与 large-baseline
\quad 这两个术语通常与立体视觉(stereo vision)或者三维重建有关。
- Small Baseline(小基线):在立体视觉中,小基线通常用于处理近距离的场景,例如室内摄影或者近距离的物体。
- Large Baseline(大基线):在立体视觉中,大基线通常用于处理遥远或广阔的场景,例如户外景观或者远距离的物体。
3)Epipolar line
Epipolar线是在一个相机中观察到的点对应于另一个相机中的可能位置形成的线。
正文
1)引言
\quad
我们研究 “generalizable novel view synthesis from sparse image observations” 的问题。可微分渲染给NVS领域带来了革命性的进展,但是也受限于它需要大的时间、内存,因为可微分渲染要计算每个相机射线上的数十个或数百个点。
\quad 这启发了light-field transformers(SRT,Light field networks,Light field neural networks),它们通过将光线嵌入到query token中来渲染光线,并通过对图像token使用交叉注意来获得颜色。虽然light-field transformers比体素渲染快,但是他们还远没达到实时。此外,他们也不能为视觉/图形下游任务重建出可编辑的或导出的三维场景表示。
\quad 最近的工作显示,基于栅格化的体渲染,可以使用基于三维高斯原语的场景参数化,从而实现实时渲染。
\quad 我们提出pixelSplat,将3DGS的优点带入到泛化性视角生成任务中。
\quad 3D 高斯原语这种表征有以下两个优点:
- 一个是fast and memory efficient rendering;
- 另一个就是可解释(这个很重要);
\quad This is no straightforward task。
\quad 首先,相机的姿态只能重建到任意的比例因子。我们通过设计一个multi-view epipolar transformer来解决这个问题,可靠地推断每个场景的比例因子。
\quad 其次,直接使用梯度下降来优化源于参数会容易陷入局部最小值。在单场景的情况下,这可以通过3DGS原文提出的不可微的剪枝和分割启发式来解决。相反,在泛化的情况下,我们需要通过表征反向传播梯度,因此不能依赖于任何spawn或delete高斯原语的不可微操作。所以,作者提出了一个在训练中隐式生成或删除高斯原语的方法,避免局部最小值的同时保持梯度流。
\quad 具体地,我们使用encoder预测到的dense probability distributions隐式地参数化高斯的位置(means)。然后,在每个前向过程中,从这个分布中采样高斯原语的位置。当然,这个采样必然是需要可微分的。所以,这里我们使用一个重参数化技巧来实现,它将一个采样的高斯原语的密度与该位置的概率相匹配。更直率点说,当接收到一个梯度会增加在某些三维位置的高斯的不透明度时,我们的模型也会增加这些高斯在未来再次在该位置被采样的概率。
2)相关工作
\quad Single-scene novel view synthesis。神经渲染[50]和神经场[29,42,57]领域的进步已经彻底改变了来自collections of posed images的三维重建和新视图合成。神经场已经成为de-facto(事实上的)标准。然而,这些方法的一个关键障碍是它们的高计算需求,因为渲染通常需要对每条射线的神经场进行几十个查询。Tensorf,Plenoxels,InstantNGP等离散的数据结构可以加速渲染,但是仍然达不到在高分辨率时的实时渲染。最近提出的三维高斯溅射提供了一种有效的替代方法,通过稀疏化的三维高斯原语稀疏表示辐射场。然而,所有的单场景优化方法都需要每个场景的几十幅图像来实现高质量的新视图合成。在这项工作中,我们训练神经网络来估计一个三维高斯原始场景表示的参数,仅从两个图像在一个单一的向前传递。
\quad Prior-based 3D Reconstruction and View Synthesis. generalizable novel view synthesis这一研究方向试图通过每个场景的少量图像来实现三维重建和新视图合成。如果代理几何(在本文中是depth maps)可以获得,机器学习和基于图像的渲染可以结合起来产生可信的结果。对于small-baseline novel view synthesis,神经网络可以被训练直接回归multi-plane images。对于Large-baseline novel view synthesis,需要完整的3D表示。虽然目前泛化性的方法以有符号距离场或辐射场的形式推断可解释的三维表示,但最近的光场场景表示trade off可解释性,获取更快地渲染,比如Light field networks, GPNR,Light field neural networks(也就是说,基于SDF或NeRF的可解释性还是有的,但是渲染太慢,基于光场Transformer的渲染速度快,但是可解释性差)。因此,这篇文章结合了两种方法的优点:推断一个以3D高斯原语的可解释性的3D场景表征,同时比光场Transformer的渲染速度还快3个数量级。
\quad Scale ambiguity in machine learning for multi-view geometry.先前的工作已经意识到了在用于多视图几何的机器学习中,scene scale ambiguity的重要性。在新的视图合成中,最近在真实世界数据上训练的单图像三维扩散模型根据深度统计的启发式方法重新调整三维场景,并将其编码器条件在场景尺度上。在这项工作中,我们构建了一个多视图编码器,可以推断场景的规模。我们使用一个epipolar transformer来实现这一点,它用于发现cross-view pixel correspondences,并将它们与位置编码的深度值相关联。
3)Background: 3D Gaussian Splatting
\quad NeRF和plenoxel都是dense representations,需要昂贵的渲染,因为它们的渲染方法都属于sampling-based approach。
\quad Local minima。用原语拟合函数的一个关键挑战是它们对局部极小值的敏感性。三维-GS模型的拟合与高斯混合模型的拟合密切相关,其中我们寻找一组高斯的参数,以使得一组样本的似然最大化。这个问题是著名的非凸问题,通常用期望最大化(EM)算法来解决。可是,EM算法仍然存在局部最小的问题,不适用于inverse graphics,因为这个问题中只提供三维场景的图像,而不是三维体积密度的Ground Truth。在3D-GS中,当在随机位置初始化的高斯原语必须在空间中移动才能到达其最终位置时,就会出现局部极小值。有个两个方法可以阻止这个问题:1)高斯原语具有局部支持,这意味着如果到正确位置的距离超过几个标准差,梯度就会消失。2)即使一个高斯分布足够接近一个“正确的”位置(局部最优),当接收到梯度时,仍然需要存在一条通往其最终位置的路径,沿着这条路径损失单调地减少。在可微渲染的上下文中,这通常不是这样的情况,因为高斯经常必须遍历空白空间,在那里它们可能会遮挡背景特征。
\quad 3D-GS的原文依赖于Adaptive Density Control来解决这种问题。然而,这些技术与泛化性的设置不兼容,在泛化性设置中,原始参数是由一个必须接收梯度的神经网络来预测的。
4)Image-conditioned 3D Gaussian Inference
\quad 所提出的方法包含a two-view image encoder 和 a pixel-aligned Gaussian prediction module
4.1 解决 Scale Ambiguity
\quad 现在的NVS数据集需要带pose,他们中的大部分都是由SfM算法计算pose的。但是,SfM算法只按照scale缩放场景,这意味着不同的场景是根据单独的、任意的scale factors来进行缩放的。从单一图像中恢复scalar si是不可能的,由于缩放模糊准则。这意味着,神经网络从单张图片中做一个场景的几何的预测时,是不可能预测与SfM重建的pose相匹配的深度。在单目深度估计中,这个问题可以通过scale-invariant losses来解决。
\quad
比如在上图中,SfM不重建在real-world(metric)scale的pose,在其中pose以任意缩放因子被缩放,这个缩放因子在每个场景中是不同的。为了渲染正确的视角,我们模型的3D 重建需要在这个任意缩放因子上相一致。
\quad 为了解决这个问题,这篇文章提出了一个epipolar encoder。如上图所示,将左侧属于射线对应像素的特征与右侧沿外极线采样的特征进行比较。Epipolar samples被他们沿着ray的位置编码的深度增强,允许encoder记录深度,这些记录的深度稍后被用于深度预测。
\quad
具体的实现方法如下。首先将每个view通过a per-image feature encoder单独编码为feature volume F。对于I中的一个坐标u,l是u在另一张图像中的极线。在这条极线上采样一批点,对于每个采样点,我们通过u和该采样点的三角测量,计算每个极线采样点到原图相机中心的距离(这个距离其实就是每个点的depth,因为这写depth是由两张image的pose计算出来的,所以其中编码了当前场景的scale s)。然后epipolar cross-attention的q,k,v构造如下:
\quad
s就是极限采样点的特征,拼接上原图相机中心坐标的位置编码。epipolar cross-attention的操作如下,就是对每个像素特征进行一次更新:
\quad
在经历了epipolar cross-attention后,每个像素特征都编码上scaled depth(极线的各个采样点的距离)。之后,又跟随了一个残差卷积层和一个子注意力层。目的是,保证encoder将缩放的深度估计传播到特征图中哪些在opposite image中可能没有对应极线的部分。
\quad 经过了这样一个encoder之后,我们就得到了一个scale-aware feature maps。
4.2. Gaussian Parameter Prediction
\quad 这篇文章方法是,通过pixel-aligned Gaussians来参数化场景,即:对于每个pixel,将对应的特征作为输入,预测其对应的M个高斯原语。这里为了简单起见,考虑M=1。因此,问题就变为:对于每个像素点,需要预测一个高斯的参数组(µ, Σ, α, S)。最重要的问题是,如何参数化每个高斯的位置μ。下图是从scale-aware feature maps中预测pixel-aligned Gaussians的全过程。
\quad
首先,如果想预测一个高斯的参数组的话,可以根据pixel特征,直接输入神经网络中挨个预测。尤其是在预测μ时,一个baseline是使用一个神经网络直接预测到从相机远点到高斯均值的距离,如下所示:
\quad
光线方向d通过相机外参T和相机内参K计算。但不幸的是,这种方法容易陷入局部最小值。此外,因为我们需要通过表征进行反向传播,所以就不能利用在3D-GS中提出的生成和剪枝启发式方法,因为它们是不可微的。
\quad 因此这篇文章提出:相比于直接预测一个高斯的深度d,我们转而建议预测一个高斯(即表面)在沿射线u的深度d处存在的似然的概率分布。为了实现如此,在一组depth buckets上定义一组离散概率密度。在近平面和远平面之间,将深度分为Z个bins,用一个向量b表示他们,这个b在离散空间上定义,即每个元素b_z的定义如下:
\quad
然后,按照索引z,可以定义一个离散概率分布p,它的第z个元素Φ_z表示一个表面存在于第 b_z 个depth bucket的概率。每个元素Φ都通过该射线出发点u对应的特征F[u]经过一个全连接网络f后来进行预测。此外,还预测了一个per-bucket center offset δ ∈ [0, 1],它可以在bucket边界内调整高斯的深度。
\quad
上面这个式子中,d_u是方向。从中可以看出,与直接预测深度不同,这里高斯的位置是从离散分布中采样得到的,而网络需要预测的只是在每个bucket处的概率。
\quad 为了训练我们的模型,我们需要将梯度反向传播到depth buckets Φ的概率上。这意味着我们需要计算高斯位置均值μ相对于概率Φ的导数。但是,这里的采样操作z~p_Φ(z)操作是不可微分的。所以,作者这里借鉴VAE的思路,采用了重参数化技巧,克服了这一点。因此,我们将一个高斯的不透明度设置为与它采样的bucket的概率相等。也就是说,α的值与Φ向量的第z个项目相同。当损失的梯度传递到α时,就可以传递到Φ上。即:
\quad
在这种情况,梯度下降增加了高斯分布的不透明度,导致它更高频次的被采样。这最终会将所有的概率质量集中在正确的桶中,创造出一个完全不透明的表面。考虑一下采样深度不正确的情况。在这种情况下,梯度下降降低了高斯分布的不透明度,降低了进一步错误的深度预测的概率。
\quad 除了用神经网络预测概率Φ和偏差δ之外,还需要为每个pixel预测一个协方差矩阵和一组球谐波系数。
\quad
有了Φ后,就有了α,也可以和δ一起通过上面的公式得到μ。因此,也就预测到了一个 pixel-aligned Gaussian primitive的参数集合。
\quad
下面这个算法,总结了使用一个像素的特征来预测一个pixel-aligned Gaussian primitive对应参数的流程:
5)实验部分
5.1. Experimental Setup
\quad
在RealEstate10k和ACID上训练和评估我们的方法。
\quad
Baselines: pixelNeRF、GPNR、The unnamed method of 《Learning to render novel views from wide-baseline stereo pairs.》
5.2. Results
\quad
下表报告了质量以及其他方面的一些结果。
\quad
可视化的结果如下:
\quad
可以看出,在质量上,本文的方法效果非常好。并且在训练和推理花销上,我们方法比baseline更少resource-intensive。
\quad 为了定性地评估我们方法推断结构化三维表示的能力,我们对远远超出训练分布的视图中的高斯进行可视化。在下图中,作者将点云进行了可视化。需要注意的是,虽然我们方法产生的高斯分布在训练分布内的相机姿态上可以实现高保真新视图合成,但它们存在与使用原始3DGS方法优化的三维高斯相同的失效模式。就是,反射平面(reflective surfaces)经常是transparent(透明的),并且,在分布外(out-of-distribution)的视角看时,Gaussians看起来是billboard-like。
5.3. Ablations and Analysis
\quad 回答几个问题:
- Q1a: 我们的epipolar encoder是否对我们的模型处理scale ambiguity的能力负责?
- Q1b: 如果是这样,我们的模型通过什么机制来处理scale ambiguity?
- Q2: 我们的概率primitive预测是否缓解了primitive回归中的局部极小值?
\quad 一些实验结果如下表和下图:
\quad
Q1a: 为了调查Epipolar Encoder的重要性,我们去除了Epipolar Encoder,单独编码每个参考图像特征。实验结果显示,结果下降得很明显,并且会出现ghosting和motion blur伪影,这些是错误深度预测的证据。此外,在下图中,我们可视化了epipolar attention scores,证明了我们的Epipolar Encoder确实是发现了跨视图对应关系。
\quad Q1b: 为了调查这个问题,作者只将图像特征F输入给每个epipolar attention layer(正常要加上scene-scale encoded depths),如表二所示,性能下降,证明除了使用对应关系之外,scene-scale encoded depths也被用于解决scale ambiguity。文章来源:https://www.toymoban.com/news/detail-807643.html
\quad Q2:为了调查预测是否需要概率地预测高斯分布的深度,我们这里做了一个直接回归深度的实验,但是结果如上表显示,效果下降。文章来源地址https://www.toymoban.com/news/detail-807643.html
到了这里,关于pixelSplat: 3D Gaussian Splats from Image Pairs for Scalable Generalizable 3D Reconstruction的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!