赞
踩
不使用3D建模,使用静态图片进行训练,用(非卷积)深度网络表示场景的5D连续体表示,再通过ray marching进行渲染。
本中文翻译使用“机器学习+人工校准/注解”的方式完成。
本人非英语专业,水平有限,如有错误敬请指出。
仅作个人学习笔记之用,转载请注明出处 https://editor.csdn.net/md?articleId=105890744
约定文中用markdown标注的引用均为个人笔记,原文出处见 [非卷积5D] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis:https://blog.csdn.net/ftimes/article/details/105348410
我们提出了一种通过使用稀疏的输入视图集优化潜在的连续体场景函数来合成复杂场景的新视图的方法,从而获得最新的结果。我们的算法使用一个完全连接(非卷积)的深网络来表示场景,其输入是一个连续的5D坐标(空间位置(x,y,z)和观察方向(θ,ü))并且其输出是该空间位置处的体积密度和视相关发射辐射率。我们通过沿着相机光线查询5D坐标来合成视图,并使用经典的体绘制技术将输出的颜色和密度投影到图像中。由于体绘制是自然可微的,因此优化表示所需的唯一输入是一组具有已知相机姿势的图像。我们描述了如何有效地优化神经辐射场以呈现复杂几何和外观的真实感场景的新视图,并展示了在神经渲染和视图合成方面优于先前工作的结果。视图合成结果最好作为视频查看,因此我们敦促读者查看我们的补充视频以进行令人信服的比较。
5D:spatial location (x,y,z) and viewing direction (θ,ϕ)
Keywords:
scene representation, view synthesis, image-based rendering, volume rendering, 3D deep learning
在这项工作中,我们通过直接优化连续5D场景表示的参数以最小化绘制一组捕获图像的误差,以一种新的方式解决了长期存在的视图合成问题。我们将场景表示为一个连续的5D函数,该函数输出空间中每个点(x,y,z)在每个方向(θ,ü)上发射的辐射度,以及每个点上的密度,该密度的作用类似于控制光线通过(x,y,z)时累积的辐射度的差分不透明度。我们的方法优化了一个没有卷积层(通常称为多层感知器或MLP)的深度全连接神经网络,通过从单个5D坐标(x,y,z,θ,ü)回归到单个体积密度和视相关RGB颜色来表示此函数。为了从一个特定的角度渲染这个神经辐射场,我们:1)让摄像机光线穿过场景生成一组采样的三维点,2)使用这些点及其相应的二维观察方向作为神经网络的输入,生成一组颜色和密度的输出,3)使用经典的体绘制技术将这些颜色和密度累积到二维图像中。 由于这个过程是自然可微的,我们可以使用梯度下降来优化这个模型,通过最小化每个观察到的图像和从我们的表示中呈现的相应视图之间的误差来表示复杂的场景。通过将多个视图之间的错误最小化,可以鼓励网络通过为包含真实底层场景内容的位置分配高体积密度和精确颜色来预测场景的相干模型。图2显示了整个传递途径。
我们发现,针对复杂场景优化神经辐射场表示的基本实现并没有收敛到足够高的分辨率表示,并且在每个摄像机光线所需的采样数方面效率低下。我们通过使用位置编码转换输入5D坐标来解决这些问题,该位置编码使MLP能够表示更高频率的函数,并且我们提出了分层采样过程来减少充分采样这种高频场景表示所需的查询数。
- radiance emitted in each direction (θ,ϕ) at each point (x,y,z) in space 辐射度定义?
- classical volume rendering techniques是什么技术?
- outputs the radiance emitted in each direction (θ,ϕ) at each point (x,y,z) in space, and a density at each point which acts like a differential opacity controlling how much radiance is accumulated by a ray passing through (x,y,z).
==>> 场景用5D表示 ==>>输入5D,输出每个点每个方向的辐射度以及用于控制查分透明度的密度。- 这里分层采样hierarchical sampling是如何实现的?
我们的方法继承了体表示的优点:两者都可以表示复杂的现实世界的几何和外观,并且非常适合使用投影图像进行基于梯度的优化。关键的是,我们的方法旨在克服在高分辨率下建模复杂场景时,离散体素网格的存储成本过高的问题。
体表示 volumetric representations
离散体素网格 discretized voxel grids (曾经我以为词汇量上去了,英语阅读就不是问题,后来我遇到了discretized voxel grids)
总之,我们的主要技术贡献是:
materials翻译成的材料
我们证明,我们得到的神经辐射场方法在数量和质量上都优于最新的视图合成方法,包括将神经三维表示与场景匹配的作品,以及训练深卷积网络以预测采样的体积表示的作品。据我们所知,本文提出了第一种连续的神经场景表示方法,它能够从自然环境下拍摄的RGB图像中呈现真实物体和场景的高分辨率真实感新视图。
As far as we know, this paper presents the first continuous neural scene representation that is able to render high-resolution photorealistic novel views of real objects and scenes from RGB images captured in natural settings.
IT’S AMAZING!
这个技术就像一个魔法,让我读到的时候心就砰砰跳!真是太棒了!让我一个菜鸡愿意强行学习一波~
计算机视觉中一个很有前途的新方向是用MLP的权值对对象和场景进行编码,MLP直接从3D空间位置映射到形状的隐式表示,例如该位置的符号距离[5]。然而,到目前为止,这些方法还无法以与使用离散表示(如三角形网格或体素网格)来表示场景的技术相同的保真度来再现具有复杂几何体的真实场景。在这一节中,我们回顾了这两条线的工作,并将它们与我们的方法进行了对比,这将增强神经场景表示的能力,从而生成用于渲染复杂真实场景的最新结果。
神经三维形状表示
最近的工作通过优化深度网络,将xyz坐标映射到有符号距离函数[23]或占用域[19],研究了连续3D形状作为水平集的隐式表示。然而,这些模型受到访问地面真实三维几何的要求的限制,通常从合成三维形状数据集(如ShapeNet[3])获得。随后的工作通过构造可微的渲染函数来放宽对地面真实三维形状的要求,该函数允许仅使用二维图像优化神经隐式形状表示。Niemeyer等人。[21]将曲面表示为三维占据场,并使用数值方法找到每条光线的曲面相交点,然后使用隐式微分计算精确的导数。然后,将每个光线相交位置作为神经3D纹理场的输入,该纹理场预测该点的漫反射颜色。Sitzmann等人。[30]使用一种不太直接的神经三维表示法,只需在每个连续的三维坐标下输出特征向量和RGB颜色,并提出一个可微的呈现函数,该函数由一个递归神经网络组成,该网络沿着每条光线行进,以确定曲面的位置。尽管这些技术可以潜在地表示任意复杂和高分辨率的场景几何体,但迄今为止,它们仅限于具有低几何复杂度的简单形状,从而产生过度平滑的渲染视图。研究表明,一种优化网络编码5D辐射场(具有二维视相关外观的三维体)的替代策略可以表示更高分辨率的几何体和外观,以呈现复杂场景的真实感新视图。
视相关 view-dependent
视图合成与基于图像的绘制
计算机图形学界通过从观测图像中预测传统的几何和外观表示,在真实感新视图合成方面取得了重大进展。一种流行的方法是使用基于网格的场景表示,其外观可以是漫反射[34]或依赖于视图的[2、6、35]。可微光栅化器[4,8,15,17]或路径跟踪器[14,22]可以直接优化网格表示以使用梯度下降来再现一组输入图像。然而,基于图像重投影的梯度网格优化往往比较困难,可能是由于局部极小值或损失景观条件差造成的。此外,该策略要求在优化前提供具有固定拓扑的模板网格作为初始化[14],这通常不适用于无约束的真实场景。
另一类方法使用体积表示来特别处理从一组输入RGB图像合成高质量真实感视图的任务。体积方法能够真实地表示复杂的形状和材料,非常适合基于梯度的优化,并且与基于网格的方法相比,容易产生较少的视觉干扰伪影。早期的体积方法使用观察到的图像直接给体素网格着色[12,28,32]。最近,一些方法[7,20,24,31,37]使用多个场景的大数据集来训练深层网络,这些深层网络从一组输入图像中预测采样的体积表示,然后使用沿光线的α合成[25]在测试时渲染新视图。其他工作已经优化了卷积网络(CNN)和采样体素网格的组合,以便CNN可以补偿来自低分辨率体素网格的离散化伪影[29],或者允许预测的体素网格基于输入时间或动画控件变化[16]。虽然这些体积技术在新的视图合成方面取得了令人印象深刻的结果,但由于其离散采样,它们缩放到更高分辨率图像的能力从根本上受限于较差的时间和空间复杂性-渲染更高分辨率图像需要更精细的三维空间采样。
我们通过在深度全连接神经网络的参数范围内对连续体积进行编码来规避这个问题,这样不仅可以产生比先前的体积方法更高质量的渲染,而且只需要这些采样体积表示的存储成本的一小部分。
We circumvent this problem by instead encoding a continuous volume within the parameters of a deep fully-connected neural network, which not only produces significantly higher quality renderings than prior volumetric approaches, but also requires just a fraction of the storage cost of those sampled volumetric representations.
这里的体积表示就是volumetric representations
机翻把 materials 都翻译成 材料,个人觉得翻译成 素材 更合适,懂的来说下对不对
“我们通过在深度全连接神经网络的参数范围内对连续体积进行编码来规避这个问题” 怎么做到的啊…
这一段符号比较多,上个原文截图
下面这段话是我自己总结的,不是原文直译,特此说明
我们将连续场景表示为5D向量值函数,其输入为3D位置x =(x,y,z)和2D观看方向(θ,φ),其输出是发射的颜色c =(r,g,b)和体积密度σ。
MLP网络FΘ((X,d)→(c,σ)) == FΘ((坐标,观察方向三维笛卡尔单位向量)→(RGB,体积密度))
怎么把viewing direction (θ,ϕ) 转换成三维笛卡尔单位向量的?
优化WeightΘ
我们通过限制网络将体积密度σ仅作为位置x的函数来预测,同时允许RGB颜色c作为位置和观察方向的函数来预测,从而鼓励表示是多视图一致的。为此,MLP FΘ首先处理输入的具有8个完全连接层的3D坐标x(使用ReLU激活和每层256个通道),并输出σ和256维特征向量。然后,该特征向量与相机光线的观察方向相连,并传递到4个额外的完全连接层(使用ReLU激活和每层128个通道),这些层输出与视图相关的RGB颜色。
我们的5D神经辐射场代表了一个场景的体积密度和空间任意点的定向辐射。我们使用经典体绘制的原理渲染穿过场景的任何光线的颜色[10]。体积密度σ(x)可以解释为射线在x位置处终止于无穷小粒子的微分概率。摄像机射线r(t)=o+td的期望颜色C(r),其近、远界tn和tf为:
函数T(T)表示沿射线从tn到T的累积透过率,即射线从tn到T而不撞击任何其他粒子的概率。从我们的连续神经辐射场绘制视图需要估计穿过所需虚拟摄像机的每个像素的摄像机光线的积分C(r),我们使用求积对该连续积分进行数值估计。确定性求积(Deterministic quadrature)通常用于渲染离散体素网格,它将有效地限制我们表示的分辨率,因为MLP只会在固定的离散位置集上查询。相反,我们使用分层抽样方法,将[tn,tf]分成N个均匀分布的容器,然后从每个容器内随机均匀地抽取一个样本:
虽然我们使用离散的样本集来估计积分,但分层采样使我们能够表示连续的场景表示,因为它会导致在优化过程中在连续位置评估MLP。我们用这些样本来估计C(r)
Max[18]在体绘制评论中讨论了求积规则:
这一段公式比较多,有需要请查阅原文,主要讲了处理输入输出的原理。
在前一节中,我们描述了将场景建模为神经辐射场和从该表示中渲染新视图所需的核心组件。然而,我们发现,如第6.4节所示,这些组件不足以达到最先进的质量。我们引入了两个改进来表示高分辨率的复杂场景。第一种是帮助MLP表示高频函数的输入坐标的位置编码,第二种是分层采样过程,它允许我们有效地采样这种高频表示。
尽管神经网络是通用函数逼近器[9],但我们发现,让网络FΘ直接在xyzθɕ输入坐标上操作会导致渲染在表示颜色和几何体的高频变化方面表现不佳。这与Rahaman等人最近的研究一致。[26],这表明深层网络倾向于学习低频函数。它们还表明,在将输入信息传递到网络之前,使用高频函数将输入信息映射到更高维度的空间,可以更好地拟合包含高频变化的数据。我们将这些发现应用到神经场景表示中,并证明将FΘ重新定义为两个函数FΘ=F′Θ∘γ的组合(一个已学习,一个未学习)可显著提高性能(见图4和表2)。这里γ是从R到高维空间R2L的映射,而F′Θ仍然只是一个正则MLP。形式上,我们使用的编码功能是:
该函数γ(⋅)分别应用于x中的三个坐标值中的每一个(标准化为位于[-1,1])和笛卡尔观察方向单位向量d的三个分量(通过构造,位于[-1,1])。在我们的实验中,我们将γ(x)设为L=10,γ(d)设为L=4。
在流行的Transformer架构[33]中使用了类似的映射,在这里它被称为位置编码。然而,Transformers使用它的另一个目的是提供序列中令牌的离散位置,作为不包含任何顺序概念的体系结构的输入。相比之下,我们使用这些函数将连续输入坐标映射到更高维空间,使我们的MLP更容易逼近更高频率的函数。
分层体积采样
我们的渲染策略是在每个摄像机光线的N个查询点上对神经辐射场网络进行密集评估,但是效率很低:仍然重复地对不影响渲染图像的自由空间和遮挡区域进行采样。我们从体绘制的早期工作中获得了灵感[13],并提出了一种分层表示法,通过将样本按比例分配给最终渲染的预期效果,提高了渲染效率。
我们不只是使用单一的网络来表示场景,而是同时优化两个网络:一个“粗略”和一个“精细”。我们首先使用分层抽样对一组N_c位置进行抽样,并按照方程2和3所述评估这些位置处的“粗糙”网络。给定这个“粗略”网络的输出,然后我们生成沿每条光线的采样点的更为知情的采样,其中采样点偏向体积的相关部分。为此,我们首先将Eqn.3中来自粗糙网络^Cc(r)的alpha合成颜色重写为沿光线的所有采样颜色ci的加权和:
这段没看懂
实施细节
我们为每个场景优化一个单独的神经连续体积表示网络。这只需要场景的已捕捉RGB图像、相应的相机姿势和内在参数以及场景边界的数据集(我们对合成数据使用地面真值相机姿势、内在和边界,并使用运动包[27]中的COLMAP结构对真实数据估计这些参数)。在每次优化迭代中,我们从数据集中所有像素的集合中随机抽取一批相机光线,然后按照第5.2节中描述的分层采样从粗网络中查询Nc样本,从细网络中查询Nc+Nf样本。然后,我们使用第4节中描述的体绘制过程来渲染来自两组样本的每条光线的颜色。我们的损失只是粗略和精细渲染的渲染颜色和真实像素颜色之间的总平方误差:
其中R是每批光线的集合,C(R)、Cc(R)和Cf(R)分别是光线R的基本真值、粗略体积预测和精细体积预测RGB颜色。请注意,即使最终渲染来自Cf(r),我们也将Cc(r)的损失最小化,以便可以使用来自粗网络的权重分布来分配精细网络中的样本。
在我们的实验中,我们使用4096条射线的批量,每个射线在粗体积中以Nc=64坐标采样,在细体积中以Nf=128附加坐标采样。我们使用Adam优化器[11],其学习速率从5×10-4开始,并在优化过程中指数衰减到5×10-5(其他Adam超参数保留默认值β1=0.9、β2=0.999和ϵ=10-7)。单个场景的优化通常需要大约100-300k次迭代才能收敛到单个NVIDIA V100 GPU(大约1-2天)。
这一段主要是拿NeRF与其他传统的立体算法做了对比,直接上截图,有兴趣可以看看。
我们的工作直接解决了以前使用mlp将对象和场景表示为连续函数的工作的不足。我们证明将场景表示为5D神经辐射场(输出体积密度和视相关发射辐射作为3D位置和2D观察方向的函数的MLP)比以前训练深卷积网络以输出离散体素表示的主要方法产生更好的渲染。
尽管我们已经提出了一种分层采样策略来提高绘制样本的效率(包括训练和测试),但在研究有效优化和绘制神经辐射场的技术方面仍有许多进展。未来工作的另一个方向是可解释性:体素网格和网格等采样表示允许对渲染视图和故障模式的预期质量进行推理,但当我们在深层神经网络的权值中对场景进行编码时,如何分析这些问题尚不清楚。我们相信,这项工作朝着一个基于真实世界图像的图形管道的方向发展,在这个管道中,复杂的场景可以由根据实际对象和场景的图像优化的神经辐射场组成。
帅是真的帅
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。