NeRF系列(2):NeRF in the wild : Neural Radiance Fields for Unconstrained Photo Collections论文解读与公式推导

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections

论文:https://openaccess.thecvf.com/content/CVPR2021/papers/Martin-Brualla_NeRF_in_the_Wild_Neural_Radiance_Fields_for_Unconstrained_Photo_CVPR_2021_paper.pdfhttps://openaccess.thecvf.com/content/CVPR2021/papers/Martin-Brualla_NeRF_in_the_Wild_Neural_Radiance_Fields_for_Unconstrained_Photo_CVPR_2021_paper.pdf

code:  https://github.com/kwea123/nerf_pl/tree/nerfwhttps://github.com/kwea123/nerf_pl/tree/nerfw

1 论文概要:

我们提出了一种基于学习的方法,利用非结构化的野外照片集合合成复杂场景的新视角。我们在神经辐射场(NeRF)的基础上进行了改进,以解决在真实世界的图像中存在的光照和遮挡等问题。我们将我们的方法命名为NeRF-W,并将其应用于互联网上著名地标的照片集合,展示了更接近真实照片的新视角渲染效果。

2 问题的提出:

从稀疏的拍摄图像集合中合成场景的新视角是计算机视觉中一个长期存在的问题,也是许多增强现实和虚拟现实应用的前提。传统的技术通常使用运动结构或基于图像的渲染来解决这个问题,但是近年来,由于神经渲染技术的进展,这个领域取得了重大的进步。

神经辐射场(Neural Radiance Fields,NeRF)方法将学习模块嵌入到3D几何上下文中,并通过训练来重建观察到的图像。NeRF模型使用神经网络的权重来建模场景的辐射场和密度,然后利用体素渲染技术合成新的视角,展示了前所未有的高保真度。

然而,在受控环境中,NeRF模型的表现良好:场景在短时间内捕捉,光照效果保持恒定,并且场景中的所有内容都是静态的。然而,当场景中存在移动物体或变化的光照时,NeRF的性能会显著下降。这种限制阻碍了NeRF在大规模自然环境中的直接应用,这些环境下输入图像可能相隔数小时或数年,并且可能包含行人和车辆的移动。

Background:

NeRF的原始公式:

在上述公式中,R(r, c, σ)是颜色c和密度σ的体积渲染,c(t)和σ(t)分别表示点r(t)处的颜色和密度,α(x) = 1 - exp(-x),而δk = tk+1 - tk是两个积分点之间的距离。为了选择在tn和tf(相机的近平面和远平面)之间的积分点{tk},我们使用分层抽样。 

 参数θ = [θ1, θ2]是待拟合的参数,而编码函数是固定的。

生成σ(t)和c(t)时,最终的激活函数分别是ReLU和sigmoid,因为密度必须是非负的,颜色必须在[0, 1]范围内。与[NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.]不同的是,我们将神经网络描述为两个MLP,其中后一个依赖于前一个的一个输出z(t),以突出体积密度σ(t)与视角方向d之间的独立性。

 为了拟合参数θ,NeRF最小化了对RGB图像集合的重建误差的平方和,其中每个图像Ii与其对应的内部和外部相机参数配对,这些参数可以使用结构从运动中估计得到[27]。我们预先计算与每个像素j对应的相机射线集合,每条射线通过三维位置oi并具有方向dij,其中

为了提高采样效率,NeRF同时优化两个MLP:一个粗糙模型和一个细致模型,其中粗糙模型预测的密度确定了细致模型的积分点采样。两个模型的参数通过最小化以下损失函数进行优化:

3 NeRF-W

我们现在介绍NeRF-W,这是一个用于从自然环境中的照片集合重建3D场景的系统。我们基于NeRF [24] 并引入了两个增强方法,专门处理无约束图像的挑战。与NeRF类似,我们从一个无结构的照片集合中学习了一个体积密度表示Fθ,其中相机参数是已知的。NeRF假设输入视图是一致的:即从两个不同图像中的相同位置和观察方向观察的三维空间点具有相同的强度。但是,这个假设在互联网照片中(如图2所示)被违反,原因有两个不同的现象:

      1. 光度变化:在户外摄影中,白天时间和大气条件直接影响场景中物体的照明(因此也影响辐射强度)。这个问题在摄影成像流程中更加严重,因为自动曝光设置、白平衡和色调映射在不同照片之间的变化可能导致额外的光度不一致性[4]。

     2. 瞬态物体:真实世界的地标很少在没有移动物体或遮挡物的情况下被捕捉到。尤其是地标的旅游照片往往具有挑战性,因为它们经常包含摆姿势的人物和其他行人。 

4. Method

4.1 潜在外观建模

为了适应可变的照明和光度后处理,我们采用了生成潜在优化(Generative Latent Optimization,GLO)的方法,其中每个图像Ii被分配一个相应的长度为n(a)的实值外观嵌入向量。我们用图像相关的辐射ci(t)替换方程(1)中的图像无关辐射c(t),这还引入了对图像索引i的依赖性,用于逼近的像素颜色。 

  

 将这些外观嵌入作为仅用于生成颜色的网络分支的输入,使我们的模型能够在特定图像中变化场景的辐射,同时保证之前由MLPθ1预测的3D几何结构是静态的并在所有图像中共享。通过将n(a)设置为一个较小的值,我们鼓励优化过程识别一个连续的空间,可以嵌入照明条件,从而实现条件之间的平滑插值,如图8所示。

Generative Latent Optimization,GLO的方法

生成潜在优化(Generative Latent Optimization,简称GLO)是一种用于无监督学习生成模型的方法。它由Bojanowski等人在2017年的论文《Generative Latent Optimization》中提出。

GLO的目标是学习一个生成模型,能够从给定的数据集中生成逼真的样本,而无需显式的标签或监督。GLO的关键思想是学习一个潜在空间表示,该表示能够捕捉数据中的潜在结构和变化。

GLO模型包括两个主要组件:编码器网络和生成器网络。编码器网络将输入样本从数据集映射到潜在空间中的潜在表示。生成器网络接受潜在空间中的样本,并生成对应的输出样本,使其与输入样本相匹配。

GLO的训练过程涉及一个优化过程,用于找到每个输入样本的最优潜在表示。这是通过最小化重构损失来实现的,该损失衡量输入样本与其相应的生成样本之间的差异。优化过程是迭代进行的,逐渐更新潜在表示以改善生成样本的质量。

在训练过程中,GLO还包括一个正则化项,以促使潜在表示遵循先验分布,例如标准高斯分布。这有助于规范化潜在空间,并提高生成模型的泛化能力。

一旦训练完成,GLO模型可以通过从潜在空间中采样并通过生成器网络传递样本来生成新的样本。生成器网络将潜在样本映射到数据空间,产生逼真的输出样本,类似于训练数据。

GLO已应用于多种任务,包括图像生成、图像补全和风格转换等。它在生成高质量样本和捕捉训练数据的潜在分布方面表现出有希望的结果,而无需显式的监督。

总之,生成潜在优化(GLO)是一种无监督学习生成模型的方法,利用优化过程来学习潜在空间表示。它能够生成逼真的样本,捕捉训练数据的变化和结构。

4.2. 瞬态物体

 我们通过两个不同的设计决策来处理瞬态现象:

首先,我们将NeRF中用于发射颜色的MLP(方程(4))指定为我们模型的“静态”部分,并添加一个额外的“瞬态”部分,该部分发射自己的颜色和密度,其中密度可以在训练图像中变化。这使得NeRF-W能够重建包含遮挡物的图像,而不会在静态场景表示中引入伪影

其次,我们不再假设所有观察到的像素颜色都是同样可靠的,我们允许短暂部分发射一个不确定性场(类似于我们现有的颜色和密度场),这使得我们的模型能够根据需要调整重建损失,忽略不可靠的像素和可能包含遮挡物的3D位置。

我们将每个像素的颜色建模为各向同性的正态分布,我们将最大化该分布的似然性,并使用NeRF使用的体素渲染方法来“渲染”该分布的方差。这两个模型组件使得NeRF-W能够在没有显式监督的情况下解耦静态和瞬态现象。

为了构建我们的瞬态部分,我们基于方程(6)的体素渲染公式,并在静态密度σ(t)和辐射ci(t)的基础上增加了瞬态密度σi(τ)(t)和瞬态辐射ci(τ)(t)。

 我们采用Kendall等人的贝叶斯学习框架[15]来建模观察到的颜色的不确定性。我们假设观察到的像素强度本质上是有噪声的(随机性的),并且进一步假设这种噪声是依赖于输入的(异方差的)。我们使用各向同性正态分布来建模观察到的颜色Ci(r),其中具有图像和射线依赖的方差βi(r)和均值ˆCi(r)。方差βi(r)通过类似于颜色的alpha合成进行“渲染”,根据短暂密度σi(τ)(t)来计算。

 为了使场景的短暂组件在图像之间变化,我们为每个训练图像Ii分配第二个嵌入,作为输入提供给短暂MLP。

 对于σi(τ)(t)和c(iτ)(t),使用ReLU和sigmoid激活函数,对于βi(t)使用softplus激活函数(通过βmin > 0进行偏移,βmin是一个超参数,用于确保对每个光线分配最小的重要性)。请参见图3,以了解我们完整的模型架构的示意图。

 图3:NeRF-W模型架构。给定一个3D位置、视角方向和学习的外观和瞬时嵌入,NeRF-W生成静态和瞬时的颜色和密度,并给出一个不确定性的度量。请注意,在模型基于外观嵌入进行条件化之前,生成静态不透明度,确保静态几何在所有图像中共享。

4.3 损失函数

对于图像i中的射线r,其真实颜色为Ci(r)的损失函数为:

前两项是Ci(r)相对于均值为ˆCi(r)、方差为βi(r)^2的正态分布的负对数似然。较大的βi(r)值会减弱对像素的重要性,假设该像素属于某个瞬态物体。第一项由第二项平衡,第二项对应于正态分布的对数分区函数,防止了βi(r) = ∞时的平凡最小值。第三项是L1正则化器,乘以λu,应用于非负瞬态密度σi(τ)(t),这样可以防止模型使用瞬态密度来解释静态现象。 在测试阶段,我们省略瞬态和不确定性字段,只渲染σ(t)和c(t)。

请参见图4,了解静态、瞬态和不确定性组成部分的示意图。 

图4:NeRF-W分别渲染场景的静态元素(a)和瞬态元素(b),然后进行合成(c)。训练通过不确定性(e)加权,最小化合成图像与真实图像之间的差异(d),同时优化以识别和折扣异常图像区域。照片由Flickr用户vasnic64 / CC BY提供。

4.4 Optimization

与NeRF类似,我们同时优化两个Fθ的副本:一个是细模型,使用上述模型和损失函数,另一个是粗模型,仅使用潜在外观建模组件。除了参数θ,我们还优化每个图像的外观嵌入和瞬态嵌入。NeRF-W的损失函数如下所示:

 λu, βmin和嵌入维度n(a)和n(τ)是NeRF-W的额外超参数集合。

由于优化过程只针对训练集中的图像生成外观嵌入,因此对于测试集图像的嵌入是未指定的。在测试集的可视化中,我们选择 来最好地拟合目标图像(例如图像8),或者将其设置为任意值。

 

 图 8:两个训练图像的外观嵌入 之间的插值,渲染的图像(中间),对其中颜色和照明进行插值,但几何形状保持不变。请注意,训练图像中包含的人物(左侧)和灯光(右侧)在渲染中不会出现。照片由 Flickr 用户 mightyohm、blatez / CC BY 提供。

5. Experiments

在这里,我们对 NeRF-W 在文化地标的无约束(例如“在野外”)互联网照片收集中进行了评估。我们从 Phototourism 数据集[13]中选择了六个地标。受先前的工作[22]的启发,我们重建了特维喷泉和圣心教堂,以及四个新场景,即勃兰登堡门、泰姬陵、布拉格老城广场和圣索非亚大教堂。这些场景的实证性能可在表格1中找到,

5.1 Baseline:

我们将我们提出的方法与Neural Rerendering in the Wild (NRW) [22]、NeRF [24]以及NeRF-W的两个消融模型进行了评估:NeRF-A(仅包含外观),其中消除了“瞬态”部分;NeRF-U(仅包含不确定性),其中消除了外观嵌入 。NeRF-W是NeRF-A和NeRF-U的组合。虽然还有其他一些类似领域的最新工作,如[18],但我们将基准模型限制在那些能够在数据集中所表示的视角之外进行显著外推的模型上。

5.2 Optimization:

在NeRF的基础上,我们使用Keras在TensorFlow 2中实现了所有的实验。 对于每个场景,我们使用COLMAP进行相机参数估计,启用了两个径向畸变和两个切向畸变参数。与NeRF一样,对于每个场景, 我们训练一个初始化为随机权重的模型
 我们使用Adam进行优化,使用8个GPU,在批量大小为2048的情况下,对所有的NeRF变种进行300,000步的训练(使用超参数β1 = 0.9、β2 = 0.999和ε = 10^(-7)。优化过程在使用8个GPU的情况下进行,每个场景的优化步数为300,000步,批量大小为2048,大约需要2天的时间完成。
所有NeRF变种共享的超参数是根据 Brandenburg Gate dataset的PSNR最大化选择的,并在所有其他场景中固定为这些值。NeRF-W的其他超参数通过网格搜索在 Brandenburg Gate dataset的保留验证集上最大化PSNR进行选择,并在所有其他场景中固定为这些值。有关超参数的其他详细信息,请参阅补充材料。

5.3 Evaluation:

我们评估的任务是新视角合成:给定一个保留的图像及其相应的相机参数,我们从相同的视角生成一幅图像,并将其与真实图像进行比较。
由于衡量感知图像相似性是具有挑战性的,我们提供生成的图像供视觉检查,并根据PSNR、MS-SSIM和LPIPS等指标报告定量结果。
由于优化过程只为训练集图像生成外观嵌入,当计算测试集图像的误差指标时,我们在每幅图像的左半部分上优化一个外观嵌入 ,并在右半部分报告指标(见图5)。有关误差指标的详细讨论,请参阅补充材料。

 图5:由于优化过程只为训练集图像生成外观嵌入,因此在评估测试集图像的误差指标时,我们仅使用每个图像的左半部分来优化 (a)以匹配真实图像的外观。误差指标仅在每个图像的右半部分进行评估,以避免信息泄漏。照片由Flickr用户eadaoinflynn / CC BY提供。

5.4 Results:

 图7展示了部分场景上所有模型和基线的定性结果。

NRW生成的渲染图像存在棋盘格伪影,这是2D重新渲染方法的特点[14]。NRW对于3D几何上游的错误非常敏感,比如在Prague Old Town的教堂较小的塔楼中可以看到这种情况。

NeRF生成了一致的3D几何结构,但是场景的大部分区域存在幽灵伪影和遮挡,尤其在Sacre Coeur和Prague Old Town上特别明显。与地面真实图像相比,NeRF的渲染图像还会出现明显的全局颜色偏移。这些伪影是NeRF的静态世界假设的直接结果。 NeRF试图使用单一场景表示来解释所有光度变化和瞬时遮挡。这种静态假设不仅影响了NeRF的渲染结果,也影响了其基础几何结构,而NeRF-W则能够产生准确的3D重建结果(图6)。

NeRF-A消除了NeRF中的“雾化”渲染效果,如图7所示。然而,NeRF-A无法重建出Sacré-Cœur圆顶上的砖砌细节等高频细节。相反,NeRF-U能够更好地捕捉细节,但无法模拟不同的光度效应。NeRF-W具有这两种消融方法的优点,因此能够产生更清晰、更准确的渲染结果。

定量结果总结在表1中。在野外照片集上优化NeRF会导致结果特别差,无法与NRW竞争。

相比之下,NeRF-W在PSNR和MS-SSIM上优于所有基线模型,并在所有数据集上取得了显著的改进。特别是,NeRF-W在PSNR上比之前的最先进方法NRW提高了平均4.4dB的边际效果,并在MS-SSIM上提升了高达40%。NeRF 模型评价指标PSNR,MS-SSIM, LPIPS 详解和python实现见链接http://t.csdn.cn/67qEjhttp://t.csdn.cn/67qEj尽管在训练过程中仅最小化每个像素的平方误差,但NeRF-W在LPIPS上改进了先前的最先进方法,其中有3个场景的改进效果,并在其他场景上保持竞争力。由于缺乏感知损失,NeRF-W没有激励产生被LPIPS等感知度量器所偏好的高频纹理

然而,NRW存在时间不稳定性问题 - 随着相机移动,渲染的图像会出现不真实的闪烁和摇晃,这些问题无法通过本文中使用的单张图像指标或图表来捕捉。我们强烈建议读者查看补充视频,观察NRW与NeRF和NeRF-W之间的时间不稳定性差异。

可控外观:使用潜在嵌入空间 建模外观的一个结果是,它可以在不改变底层3D几何的情况下修改渲染的照明和外观

在图1(右图)中,我们看到NeRF-W使用与四个训练集图像相关联的外观嵌入生成的四个渲染图像的切片。除了与训练集图像相关联的嵌入外,还可以将NeRF-W应用于同一空间中的任意向量。

在图8中,我们展示了从固定相机位置渲染的五个图像,在这些图像中,我们在左侧和右侧训练图像相关联的外观嵌入之间进行插值。请注意,渲染图像的外观在两个端点之间平滑过渡,而不会引入对3D几何的瑕疵。

 

 5.5 View-consistency:

图9展示了在相机沿直线路径平移时,NRW、NeRF和NeRF-W的“平面”光场渲染图像。NeRF-W的渲染图像更具视角一致性(Lambertian场景内容在不同视角下保持不变),并且比NRW或NeRF具有更少的闪烁。NRW无法对瞬态物体的帧间时间一致性建模,而NeRF则将视角相关效果强行嵌入场景表示中,作为有色的雾气效果。

5.6 Limitations:

尽管NeRF-W能够从非结构化的照片中产生逼真且在时间上保持一致的渲染图像,但在训练图像中很少观察到或只以非常倾斜的角度观察到的场景区域(例如地面)的渲染质量会下降,如图10所示。与NeRF类似,NeRF-W对相机校准误差也很敏感,这可能导致在由于相机校准不正确而成像的场景部分产生模糊的重建效果。

5.7  Synthetic Experiments

合成实验:NeRF-W的各个组成部分旨在处理特定形式的光度不一致,例如颜色偏移和遮挡物。不幸的是,Phototourism数据集的非受控性质意味着很难证明每个模型组件确实解决了其设计用于解决的混淆因素。因此,在补充材料中,我们进行了一项受控的消融研究,其中我们构建了一个用于[24]中的合成数据集的变种,其中手动引入了我们预期在野外图像中发现的现象。正如在补充材料中所看到的,这个消融研究的结果与我们的预期一致。

6. Conclusion

我们提出了NeRF-W,这是一种基于NeRF的新颖方法,用于从非结构化的互联网照片集合中重建复杂环境的3D场景。我们学习了一个针对每个图像的潜在嵌入,捕捉了野外数据中常见的光度外观变化,并将场景分解为图像相关和共享组件,使我们的模型能够将瞬时元素与静态场景区分开来。对真实世界(和合成)数据的实验评估表明,与先前最先进的方法相比,我们取得了显着的定性和定量改进。

7 补充材料:

模型参数

以下是我们记录的NeRF-W的选择超参数。

我们对超参数空间进行了网格搜索,以选择下面的值。请注意,这些值是针对Phototourism数据集中的Brandenburg Gate场景进行优化的,并在其他场景中重复使用。

与NeRF一样,我们使用MLP架构来建模密度和辐射。

我们对“基本”组件应用了8层512个隐藏单元

对“静态”和“瞬时/不确定性”组件分别应用了4层128个隐藏单元(参见图3)。

对于位置编码函数γ,我们在编码位置时使用15个频率,在编码视角时使用4个频率。

训练过程中,每条射线从粗糙模型和细化模型中采样512个点,每条射线总共采样1024个点。

在评估过程中,我们将该数量增加到2048个。

外观的潜在嵌入向量具有嵌入维度大小n (a) = 48。

对于瞬时对象,我们使用嵌入维度大小n (τ) = 16。

我们选择了0.01作为L1正则化器乘数λu,0.03作为最小重要性βmin。

模型使用Adam在300,000次迭代中进行训练,批量大小为2048,初始学习率为0.001,在每150,000次迭代后减小十倍。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
nerf-simple是基于PyTorch框架实现的NERF(神经辐射场)模型的简单版本。NERF是一种用于生成高质量逼真图像的深度学习模型,它通过对场景中各个点的辐射值进行建模,从而实现精确的三维重建和渲染。 在NERF模型中,神经辐射场是核心概念之一。它是一个由多个隐藏层组成的神经网络,用于估计场景中每个点的辐射值。这里的辐射值通常表示像素的RGB颜色值或光强度。 nerf-simple通过使用PyTorch框架的张量操作和自动微分功能来实现NERF模型。首先,我们需要定义一个神经网络模型,包括隐藏层的数量和大小。这个模型可以基于现有的PyTorch模块,如nn.Linear和nn.ReLU,以便构建非线性变换和特征提取。 然后,我们需要定义训练过程,实现数据加载、优化器设置和损失函数计算等步骤。训练数据通常包括一系列场景中的图像及其对应的相机和深度信息。 在模型训练完成后,我们可以使用训练好的神经网络来生成逼真的图像。通过对场景中每个像素点的辐射值进行预测,我们可以还原出场景的三维形状和纹理信息,并最终渲染出高质量的图像。 总结来说,nerf-simple是一个使用PyTorch实现的简单版本NERF模型,它通过神经辐射场来估计场景中每个像素点的辐射值,从而实现精确的三维重建和渲染。通过定义神经网络模型、训练过程和图像生成过程,我们可以利用这个模型生成逼真的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeapMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值