NeRF笔记

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

神经辐射场(Neural Radiance Fields)nerf

NeRF:表示场景为神经辐射场的视图合成

2020 ECCV Best paper candidate 最佳论文候选人

博客参考:

https://zhuanlan.zhihu.com/p/377615690

https://zhuanlan.zhihu.com/p/360365941(体渲染)

https://zhuanlan.zhihu.com/p/44121378(位置编码)

https://blog.csdn.net/Vpn_zc/article/details/115729297

Nerf的重点:

  • 网络的作用:网络的输入、输出、在整个流程中起了什么作用。

  • rendering 渲染的

  • 位置编码

  • 粗到精细的采样

nerf能做的是什么?

​ 其核心点在于非显式地将一个复杂的静态场景用一个神经网络来建模。在网络训练完成后,可以从任意角度渲染出清晰的场景图片。

​ 使用完全连通fully-connected(非卷积)的深度网络来表示场景,通过使用稀疏的输入视图集来优化底层的连续体积场景函数,从而获得用于合成复杂场景的新视图。查询相机光线上的5D坐标来合成视图,并使用经典的体绘制技术将输出的颜色和密度投影到图像中。建立5D矢量值函数的输入是3D位置x=(x,y,z)和2D观察方向(θ,φ),它的输出是发射的颜色c=(r,g,b)和体积密度densities σ。通过限制网络只预测作为位置x的函数的体积密度σ,同时允许预测作为位置和观察方向的函数的RGB颜色c,来激励多视点一致性表现。

1、特色

  • 一种将具有复杂几何和材料的连续场景表示为5D神经辐射场的方法,参数化为基本的MLP网络。

  • 一个基于经典体绘制技术的可微绘制程序,我们用它来优化标准RGB图像的这些表示。这包括一个分层抽样策略,将MLP的容量分配到具有可见场景内容的空间。

  • 位置编码将每个输入5D坐标映射到更高维度的空间,这使得我们能够成功地优化神经辐射场来代表高频场景内容。

简而言之:1、采用一个网络来表示一个3D模型 2、一个可微的渲染过程 3、一个位置编码技术将其输入到网络中

2、相关

MLP:多层感知机multi-Layer Perception

体素(Voxel)

NeRF笔记_第1张图片

上图中是3D数据的不同表示类型:(a)点云(Point clouds);(b) 体素网格(Voxel grids); © 多边形网格(Polygon meshes); (d) 多视图表示(Multi-view representations)

其中:

a. 点云是三维空间(xyz坐标)点的集合。

b. 体素是3D空间的像素。量化的,大小固定的点云。每个单元都是固定大小和离散坐标。

c. mesh是面片的集合。

d. 多视图表示是从不同模拟视点渲染的2D图像集合。

为了解释体素网格(Voxel grid),首先我们要了解占据栅格地图(Occupancy Grid Map)。画一个二维网格,每个网格单元里有实体的话就为占据状态(1),空的话就为(0)。很好理解。

而体素就是固定分辨率的三维栅格地图。体素网格是固定分辨率的,与之对应可变分辨率的网格叫八叉树地图(Octomap)。

NeRF笔记_第2张图片

总结:
体素网格是用固定大小的立方块作为最小单元,来表示三维物体的一种数据结构
体素可以看成粗略版的点云。

计算机视觉最近的一个很有前途的方向是在MLP的权重中编码对象和场景,直接从三维空间位置映射到形状的隐式表示,例如在该位置的符号距离[6]。然而,到目前为止,这些方法还不能像使用离散表示(如三角形网格或体素网格 triangle meshes or voxel grids)的技术那样,再现具有复杂几何形状的逼真场景,并具有相同的保真度。在本节中,我们回顾了这两种工作,并将它们与我们的方法进行对比,该方法增强了神经场景表示的能力,以生成最先进的结果,以渲染复杂的现实场景。

神经三维形状表示 最近的工作研究了通过优化深度网络,将xyz坐标映射到符号距离函数[15,32]或占用字段[11,27],将连续的3D形状作为水平集的隐式表示。然而,这些模型受到访问地面真实三维几何的要求的限制,通常从合成的三维形状数据集,如ShapeNet[3]。随后的工作通过制定可微分的绘制函数,使神经隐式形状表示仅使用2D图像进行优化,从而放宽了对地面真实三维形状的要求。Niemeyeret al.[29]将曲面表示为三维占用场,并使用数值方法找到每条射线的曲面交点,然后使用隐式微分计算精确的导数。每个射线交点的位置都作为神经3D纹理场的输入,该纹理场预测该点的漫反射颜色。Sitzmannet al.[42]使用一种不太直接的神经3D表示,在每个连续的3D坐标上简单地输出一个特征向量和RGB颜色,并提出了一个可微的渲染函数,它由一个循环的神经网络组成,沿着每条射线行进,以决定表面的位置。

虽然这些技术可以潜在地表示复杂和高分辨率的几何图形,但迄今为止,它们仅限于具有低几何复杂性的简单图形,从而导致过度平滑的渲染。我们表明,优化网络编码5D辐射场(具有2D视图依赖外观的3D体积)的另一种策略可以代表更高分辨率的几何和外观,以渲染复杂场景的逼真新颖视图。

视图合成和基于图像的渲染 给定一个密集的视图采样,可以通过简单的光场样本插值技术来重建逼真的新视图[21,5,7]。对于具有稀疏视图采样的新型视图合成,计算机视觉和图形学界通过预测观测图像的传统几何和外观表示方式取得了重大进展。一种流行的方法是使用基于网格的场景表示,无论是漫反射的[48]或视图依赖[2,8,49]外观。可微分光栅[4,10,23,25]或路径跟踪器[22,30]可以直接优化网格表示,以使用梯度下降再现一组输入图像。然而,基于图像重投影的基于梯度的网格优化往往是困难的,可能是由于局部最小值或对损失景观的较差的调理。此外,该策略需要在优化[22]之前提供一个具有固定拓扑结构的模板网格作为初始化,这在无约束的真实场景中通常是不可用的。

另一类方法使用体积表示来处理从一组输入RGB图像合成高质量的真实感视图的任务。体积方法能够真实地表示复杂的形状和材料,非常适合基于梯度的优化,并且比基于网格的方法产生的视觉干扰更少。早期的体积方法使用观测图像直接为体素网格着色[19,40,45]。最近,几个方法[33 17 9日13日,28日,43岁,46岁,52]使用大型数据集的多个场景训练深度网络预测采样体积表示的输入图像,然后使用alpha-compositing合成[34]或学会合成沿着光线渲染小说的看法在测试时间。其他工作已经为每个特定的场景优化了卷积网络(CNN)和采样体素网格的组合,这样CNN可以补偿低分辨率体素网格[41]的离散化工件,或者允许预测的体素网格根据输入时间或动画控制[24]的变化。虽然这些体积技术在新视图合成方面取得了令人印象深刻的结果,但它们缩放到更高分辨率图像的能力从根本上受到时间和空间复杂性的限制,因为它们的离散采样——渲染更高分辨率的图像需要更精细的3D空间采样。我们通过在深度全连接神经网络的参数中编码连续体积来解决这个问题,这不仅产生了比之前的体积方法更高质量的渲染,而且只需要那些采样的体积表示的存储成本的一小部分。

3 Neural Radiance Field Scene Representation

我们将连续场景表示为一个5D向量值函数,其输入为3D location x= (x, y, z)和 2D viewing direction (θ, φ),输出为发射颜色c= (r, g, b)和体积密度volume density σ \sigma σ。在实践中,我们将 direction 表示为三维笛卡尔单位矢量(应该是三维球坐标系吧)。我们用MLP网络

FΘ: (x,d)→(c, σ)近似这种连续的5D场景表示,并优化其权值Θ,从每个输入5D坐标映射到其相应的体积密度和方向发出的颜色。

我们鼓励多视图一致的表示,通过限制网络预测体积密度σ仅作为位置x的函数,同时允许RGB颜色c作为位置 x 和观看方向 d 的函数预测。为了实现这一点,MLP FΘ首先处理8个全连接层的输入3D坐标(使用ReLU激活和每层256个通道),并输出σ和256维特征向量。然后,这个特征向量与相机光线的观看方向 camera ray’s viewing direction连接,并传递到另一个完全连接的层(使用ReLU激活和128通道),输出与视图相关的RGB颜色。

图3是我们的方法如何使用输入观看方向来表示非朗伯效应的例子。如图4所示,没有视图依赖的训练模型(只有x作为输入)难以表示高光。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dG67dBwP-1639988699513)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211214154601167.png)]

图3:视相关发射辐射的可视化。我们的神经亮度场表示输出RGB颜色作为空间位置x和观看方向d的5D函数。在这里,我们将船舶场景的神经表示中两个空间位置的方向性颜色分布示例可视化。在(a)和(b)中,我们从两个不同的摄像机位置显示两个固定的3D点的外观:一个在船的一侧(橙色嵌入),另一个在水面(蓝色嵌入)。我们的方法预测了这两个3D点的镜面外观的变化,在©中,我们展示了这种行为如何在整个观察方向的半球中持续地推广。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVGj58s3-1639988699514)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211214154655170.png)]

图4、在这里,我们可以看到我们的整个模型如何受益于表示视相关的发射辐射,以及通过高频位置编码传递我们的输入坐标。消除对视图的依赖可以防止模型在推土机踏面上再现镜面反射。去除位置编码极大地降低了模型表示高频几何和纹理的能力,导致过度平滑的外观。

4 Volume Rendering with Radiance Fields

立体渲染:体绘制

我们的5D神经辐射场代表一个场景,即空间中任意一点的体积密度和方向辐射。我们使用经典体渲染[16]的原理渲染通过场景的任何光线的颜色。体积密度σ(x)可以解释为射线在x位置终止于无穷小粒子的微分概率。相机射线r(t) =o+td的期望颜色C®在远近边界tn和tf下为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zniNhmg1-1639988699514)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211214155713514.png)]

x:相机3D位置;d:相机拍摄角度;c:RGB;

函数T(t)表示从tn到t沿射线累积透过率,即射线从tn到t不撞击任何其他粒子的概率。从我们的连续神经辐射场绘制视图,需要估计通过所需虚拟相机的每个像素跟踪的相机光线的积分C®。

NeRF笔记_第3张图片

一个直观且很常用的思路是,在需要求积的区域均匀地采样N个点进行近似计算。但作者提出,这样的方式会导致MLP只需要学习一系列离散点的信息,最终会限制NeRF的分辨率,使得最终生成的结果不够清晰。作为替代,作者提出了一种简单有效的方法,如上图所示,首先将射线需要积分的区域分为N份,然后在每一个小区域中进行均匀随机采样。这样的方式能够在只采样离散点的前提下,保证采样位置的连续性。第i个采样点可以表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pwfeeicn-1639988699514)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211214163940793.png)]

基于这些采样点,我们可以将上面的积分简化为求和的形式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DlhOp0Qb-1639988699515)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211214164126812.png)]

其中, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGD98to8-1639988699515)(https://www.zhihu.com/equation?tex=%5Cdelta_i+%3D+t_%7Bi%2B1%7D±+t_i)] 是邻近两个采样点之间的距离。此处[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQAiDxwn-1639988699515)(https://www.zhihu.com/equation?tex=T%28t%29)] 为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LgAutTRu-1639988699516)(https://www.zhihu.com/equation?tex=T_i+%3D+exp%28-%5Csum_%7Bj%3D1%7D%5E%7Bi-1%7D%5Csigma_j%5Cdelta_j%29)]

同样,基于分段采样的渲染方式也是可微的。因此,基于这样的渲染方式,我们就可以用NeRF函数从任意角度中渲染出图片。

5 Optimizing a Neural Radiance Field

​ 在上一节中,我们描述了将场景建模为神经辐射场并从该表示中渲染新视图所需的核心组件。然而,我们发现这些组件不足以实现最先进的质量,如第6.4节所示)。为了能够表示高分辨率的复杂场景,我们引入了两个改进。第一种是对输入坐标进行位置编码,帮助MLP表示高频函数;第二种是分层采样程序,使我们能够有效地对这种高频表示进行采样。

5.1 Positional encoding

transform位置编码

transform 位置 Embedding

Transformer 中除了单词的 Embedding,还需要使用位置 Embedding 表示单词出现在句子中的位置。**因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。**所以 Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。

位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下:

NeRF笔记_第4张图片

其中,pos 表示单词在句子中的位置,d 表示 PE的维度 (与词 Embedding 一样),2i 表示偶数的维度,2i+1 表示奇数维度 (即 2i≤d, 2i+1≤d)。使用这种公式计算 PE 有以下的好处:

  • 使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。
  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 xx 就是 Transformer 的输入。

​ NeRF函数的输入为位置和角度信息,作者发现直接将位置和角度作为网络的输入得到的结果是相对模糊的(见实验部分)。而用positon encoding 的方式将位置信息映射到高频则能有效提升清晰度效果。具体而言,这里采用的是与Transformer 中类似的正余弦周期函数的形式。我的理解是,采用position encoding 能够使得网络更容易的理解并建模位置信息。

​ 尽管神经网络是通用函数逼近器[14],但我们发现,让网络FΘ直接在xyzθφ输入坐标上操作会导致渲染效果很差,无法表示颜色和几何的高频变化。这与Rahaman等人最近的工作是一致的。[35]这表明深层网络偏向于学习低频函数。它们还表明,在将输入传递到网络之前,使用高频函数将输入映射到更高维空间,可以更好地拟合包含高频变化的数据。

​ 我们在神经场景表示的背景下利用这些发现,并表明将FΘ重新表述为两个函数FΘ=F’Θ◦γ的组合,一个已学而另一个未学,显著提高了性能(参见图4和表2)。这里γ是从R到高维空间R2L的映射,而F’Θ仍然是简单的正则MLP。形式上,我们使用的编码函数是:

image-20211215104322597

​ 上述为一个三角函数系,γ(·)把一维的值映射到2L维上

​ 位置编码主要是让encoder区分不同的位置,通过三角函数这种方式就可以很好的区分开,而且能保留不同的相对位置信息(比如pos-k和pos+k的表示是不一样的)

​ 此函数γ(·)分别应用于x中的三个坐标值中的每一个(归一化为位于[−1,1]中)和笛卡尔观察方向单位向量d的三个分量(通过构造位于[−1,1]中)。在我们的实验中,我们为γ(X)设置L=10,为γ(D)设置L=4。

​ 在流行的Transformer架构[47]中也使用了类似的映射,在那里它被称为positional encoding。然而,Transformers将其用于不同的目标,即将序列中符号(tokens)的离散位置作为输入提供给不包含任何顺序概念的结构(比如说CNN,相对于RNN没有顺序概念)。相反,我们使用这些函数将连续输入坐标映射到更高维空间,以使我们的MLP能够更容易地逼近更高频率的函数。关于从投影[51]建模3D蛋白质结构的相关问题的并行工作也利用类似的输入坐标映射。

5.2 Hierarchical volume sampling

5.2分级体积采样

​ 我们沿着每个相机光线在N个查询点密集评估神经辐射场网络的渲染策略是低效的:对渲染图像没有贡献的自由空间和遮挡区域仍然被重复采样。我们从早期的体绘制工作[20]中得到了启发,并提出了一种分层表示法,通过按照样本在最终绘制上的预期效果按比例分配样本,从而提高了绘制效率。

​ 我们不再仅仅使用单个网络来表示场景,而是同时优化了两个网络:一个“粗略”,一个“精细”。我们首先使用分层抽样对一组NC位置进行抽样,并评估这些位置的“粗略”网络,如等式2和3中所述。给出这个“粗略”网络的输出,然后我们沿着每条光线产生一个更有信息的采样点,其中样本偏向体积的相关部分。为此,我们首先将Eqn3中粗糙网络ˆCc®的alpha合成颜色重写为沿射线所有采样颜色的加权和:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxOA1wRR-1639988699516)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211215145747395.png)]

将这些权重归一化为 w ^ i = w i / ∑ j = 1 N c w j \hat{w}_{i}=w_{i} / \sum_{j=1}^{N_{c}} w_{j} w^i=wi/j=1Ncwj,会产生沿射线的分段常数PDF(概率密度函数)。我们使用反变换采样从这个分布中采样第二组Nf位置,在第一组和第二组样本的并集评估我们的“精细”网络,并使用Eqn3但使用所有Nc+Nf样本计算射线ˆCf®的最终渲染颜色。此过程将更多样本分配给我们预期包含可见内容的区域。这解决了与重要性抽样类似的目标,但我们使用采样值作为整个积分域的非均匀离散化,而不是将每个样本作为整个积分的独立概率估计。

理解:

​ NeRF的渲染过程计算量很大,每条射线都要采样很多点。但实际上,一条射线上的大部分区域都是空区域,或者是被遮挡的区域,对最终的颜色没有啥贡献。因此,作者采用了一种“coarse to fine" 的形式,同时优化coarse 网络和fine 网络。这一部分也非常有趣。首先对于coarse 网络,我们可以采样较为稀疏的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48hV5QN4-1639988699517)(https://www.zhihu.com/equation?tex=N_c)] 个点,并将前述的离散求和函数重新表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PX4mi3r6-1639988699517)(https://www.zhihu.com/equation?tex=%5Chat%7BC%7D_c%28%5Cbm%7Br%7D%29%3D%5Csum_%7Bi%3D1%7D%5E%7BN%7D%7Bw_i%5Cbm%7Bc%7D_i%7D)]

其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QtUvBrzc-1639988699517)(https://www.zhihu.com/equation?tex=w_i+%3D+T_i%5Ccdot%281-+exp%28-%5Csigma_i%5Ccdot%5Cdelta_i%29%29)]

接下来,可以对 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GT0SPFgx-1639988699518)(https://www.zhihu.com/equation?tex=w_i)] 做归一化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywDN5NVq-1639988699518)(https://www.zhihu.com/equation?tex=%5Chat%7Bw%7D_i+%3D+%5Cfrac%7Bw_i%7D%7B%5Csum_%7Bj%3D1%7D%5E%7BN_c%7Dw_j%7D)]

此处的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMxsmNWm-1639988699519)(https://www.zhihu.com/equation?tex=%5Chat%7Bw_i%7D)] 可以看作是沿着射线的概率密度函数(PDF),如下图所示。通过这个概率密度函数,我们可以粗略地得到射线上物体的分布情况。

NeRF笔记_第5张图片

接下来,基于得到的概率密度函数来采样 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GxlD2JbU-1639988699519)(https://www.zhihu.com/equation?tex=N_f)] 个点,并用这[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6b3oJD84-1639988699519)(https://www.zhihu.com/equation?tex=N_f)] 个点和前面的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P3vhk412-1639988699520)(https://www.zhihu.com/equation?tex=N_c)] 个点一同计算fine 网络的渲染结果 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNW3WXKI-1639988699520)(https://www.zhihu.com/equation?tex=%5Chat%7BC%7D_f%28%5Cbm%7Br%7D%29)] 。虽然coarse to fine 是计算机视觉领域中常见的一个思路,但这篇方法中用coarse 网络来生成概率密度函数,再基于概率密度函数采样更精细的点算的上是很有趣新颖的做法了。二阶段的采样示意图如下所示:

NeRF笔记_第6张图片

5.3实施细节

​ 我们为每个场景优化了一个单独的神经连续体积表示网络。这只需要场景的捕获RGB图像的数据集、相应的摄影机姿势和内部参数以及场景边界(我们使用合成数据的地面真实摄影机姿势、内部函数和边界,并使用COLMAP运动结构包来估计真实数据的这些参数)。在每次优化迭代中,我们从数据集中所有像素的集合中随机采样一批相机光线,然后按照第5.2节中描述的分层采样从粗略网络中查询NC样本,从精细网络中查询NC+NF样本。然后,我们使用第4节中描述的体积渲染过程来渲染两组样本中每条光线的颜色。我们的损失只是粗略和精细渲染的渲染像素颜色和真实像素颜色之间的总平方误差:

最后,训练损失的定义倒是非常简单,直接定义在渲染结果上的L2损失(同时优化coarse 和 fine):

image-20211215150408785

其中R是每批中的射线集合,C®、ˆCc®和ˆCf®是GT,粗放量预测,精细体积分别预测射线r的RGB颜色。请注意,即使最终渲染来自ˆCf®,我们也会最小化ˆCc®的损失,以便可以使用来自粗略网络的权重分布来分配精细网络中的样本。

在我们的实验中,我们使用4096条射线的批次大小,每条射线在粗略体积中以Nc=64个坐标采样,在精细体积中以Nf=128个额外坐标采样。我们使用ADAM优化器[18],学习速率从5×10−4开始,在优化过程中以指数方式衰减到5×10−5(其他ADAM超参数保留为默认值β1=0.9、β2=0.999和?=10−7)。

实验

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-og2KWu6h-1639988699520)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211215172946369.png)]

在表2中,我们对算法的设计选择和参数进行了广泛的消融研究。我们呈现结果在我们的“现实合成360◦”场景。第9行显示了作为参考点的我们的完整模型。第1行显示了我们模型的最低限度版本,没有位置编码(PE),视图依赖(VD),或分层采样(H)。在第2-4行,我们一次从整个模型中移除这三个组件,观察到位置编码(第2行)和视图依赖(第3行)提供了最大的量化效益,其次是分层采样(第4行)。第5-6行显示了我们的性能如何随着输入图像数量的减少而下降。请注意,我们的方法仅使用25张输入图像时,在所有指标上,当提供100张图像时,其性能仍然超过NV、SRN和LLFF(参见补充资料)。在第7-8行,我们验证我们选择的最大频率仅使用5个频率会降低性能,但将频率从10个增加到15个不会提高性能。我们认为,一旦2L超过了采样输入图像中的最大频率(在我们的数据中约为1024),增加L的好处就会受到限制。

速度

单个场景的优化通常需要大约100 - 300k次迭代才能收敛,在一个NVIDIA V100 GPU上(大约1-2天)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0V3eqcJs-1639988699521)(C:\Users\ISP-001\AppData\Roaming\Typora\typora-user-images\image-20211215093708578.png)]

我们的全连接网络架构的可视化。输入向量用绿色表示,中间隐藏层用蓝色表示,输出向量用红色表示,每个块内的数字表示向量的维数。所有层都是标准的全连接层,黑色箭头表示具有ReLU激活的层,橙色箭头表示没有激活的层,虚线黑色箭头表示具有sigmoid激活的层,“+”表示向量连接。输入位置(γ(x))的位置编码通过8个全连接ReLU层,每个层有256个通道。我们遵循DeepSDF[32]架构,并包含一个跳过连接,将该输入连接到第五层的激活。另外一个层输出体积密度σ(使用ReLU进行修正,以确保输出的体积密度是非负的)和256维特征向量。该特征向量与输入观看方向(γ(d))的位置编码相连接,并由一个具有128个通道的全连接ReLU层进行处理。最后一层(使用sigmoid曲线激活)输出位置x处发射的RGB亮度,就像有方向的光线所看到的那样。

置(γ(x))的位置编码通过8个全连接ReLU层,每个层有256个通道。我们遵循DeepSDF[32]架构,并包含一个跳过连接,将该输入连接到第五层的激活。另外一个层输出体积密度σ(使用ReLU进行修正,以确保输出的体积密度是非负的)和256维特征向量。该特征向量与输入观看方向(γ(d))的位置编码相连接,并由一个具有128个通道的全连接ReLU层进行处理。最后一层(使用sigmoid曲线激活)输出位置x处发射的RGB亮度,就像有方向的光线所看到的那样。

你可能感兴趣的:(计算机视觉,深度学习,神经网络)