当前位置: 首页 > 科技观察

NeuralVolumeRendering-NeRFandOtherMethods

时间:2023-03-12 22:53:18 科技观察

参考论文摘要“NEURALVOLUMERENDERING:NERFANDBEYOND”,2021年1月,佐治亚理工学院和麻省理工学院合着。神经渲染被定义为:“一种深度图像或视频生成方法,允许显式或隐式控制场景属性,如光照、相机参数、姿势、几何形状、外观和语义结构”。它是一种新的数据驱动解决方案,解决了计算机图形中虚拟世界的真实感渲染这一长期存在的问题。神经体积渲染是指通过将光线追踪到场景中并沿光线长度执行某种集成来生成图像或视频的方法。通常,像多层感知器这样的神经网络会对从光的3D坐标到密度和颜色等函数进行编码,并将它们集成以生成图像。神经体绘制的直接先驱工作是使用神经网络定义隐式表面表示的方法。许多3D感知图像生成方法使用体素、网格、点云或其他表示,通常基于卷积架构。但在CVPR2019上,至少有三篇论文介绍了使用神经网络作为标量函数近似来定义占用和/或符号距离函数(SDF)。占用网络引入了基于坐标的隐式占用学习。一个由5个ResNet块组成的网络,它将特征向量和3D点作为输入并预测二进制占用。IM-NET使用6层MLP解码器来预测给定特征向量和3D坐标的二进制占用。可用于自动编码、形状生成(GAN风格)和单视图重建。DeepSDF直接从3D坐标和潜在代码中提取带符号的距离函数。它使用一个8层MPL,带有到第4层的跳跃连接。PIFu表明,可以通过将3D点重新投影到像素对齐的特征表示中来学习特别详细的隐式模型。这是在PixelNeRF中复制的,效果非常好。其他使用隐式函数的方法:StructuredImplicitFunctions(2019)表明可以组合这些隐式表示,例如通过简单的总结。CvxNet(2020)通过使用pointwiseMax(3D)结合有符号的距离函数。BSP网络(2020)在许多方面与CvxNet相似,但其核心使用二进制空间划分,从而产生了一种在本地输出多边形网格的方法,而不是通过昂贵的网格划分方法。DeepLocalShapes(2020)在体素网格中存储深度SDF潜在代码,代表更大的扩展场景。SceneRepresentationNetworks(2019),或SRN,在架构上与DeepSDF非常相似,但添加了可微分的光线行进算法以找到学习的隐式表面的最近交点,并添加了MLP来回归颜色,能够从图像中学习多个姿势。可微分体积渲染(DifferentiableVolumetricRendering,2019)表明隐式场景表示可以与可微分渲染器相结合,可微分渲染器可以从图像中训练,类似于SRN。使用术语“体积渲染器”,但实际上主要贡献是使隐式表面的深度计算可微分的巧妙技巧:不在体积上积分。ImplicitDifferentiableRenderer(2020)提供了类似的技术,但具有更复杂的表面光场表示,表明它可以在训练期间优化相机姿势。神经关节形状近似(NeuralArticulatedShapeApproximation,2020),或NASA,组合隐式函数来表示关节物体,例如人体。NeuralVolumes论文并非完全凭空而来,尽管仍然是基于扭曲体素的表示,但它引入了用于视图合成的体积渲染,返回密度和颜色的3D体积。隐码被解码成一个3D体,然后通过体绘制得到一个新的图像。它建议在3D空间中的每个位置使用由不透明度和颜色组成的体积表示,其中渲染是通过积分投影实现的。在优化过程中,这种半透明的几何表示沿着积分射线分散了梯度信息,有效地扩大了收敛范围,从而能够发现好的解决方案。引发讨论的论文是关于神经辐射场的NeRF论文(2020)。本质上,使用了深度SDF架构,但不是符号距离函数(SDF),而是密度和颜色回归。然后,使用(易于区分的)数值积分方法来近似真实的体绘制步骤。NeRF模型将体积场景表示存储为MLP的权重,并在许多具有已知姿势的图像上进行训练。通过沿每条视线以固定间隔整合密度和颜色来呈现新视图。NeRF非常详细的渲染的原因之一是使用周期性激活函数或傅里叶特征来编码射线上的3D点和相关的视图方向。这一创新后来扩展到具有周期性激活函数的多层网络,即SIREN(SInusoidal-REpresentationNetworks)。这两篇文章都发表在NeurIPS2020上。可以说,NeRF论文的影响在于其残酷的简单性:只有一个MLP输出5D坐标中的密度和颜色。有一些花里胡哨的东西,特别是位置编码和分层采样方案,但令人惊讶的是,这样一个简单的架构可以产生如此令人印象深刻的结果。尽管如此,原始的NeRF仍有许多改进的机会:训练和渲染都很慢。只能表示静态场景。固定照明。训练有素的NeRF表示不会泛化到其他场景/对象。一些项目/论文旨在改善原始NeRF论文相当慢的训练和渲染时间。JaxNeRF(2020)使用JAX支持(https://github.com/google/jax)多设备训练,从几天到几小时,大大加快了速度。AutoInt(2020)直接学习体积积分,大大加快了渲染速度。LearnedInitialization(2020)使用元学习来找到好的权重初始化,从而加快训练速度。DeRF(2020)利用加速器内存架构将场景分解为“软Voronoi图”。NERF++(2020)建议使用单独的NERF对背景进行建模,以处理无限场景。NeuralSparseVoxelFields(2020)将场景组织为稀疏体素八叉树,将渲染速度提高了10倍。至少有四部作品专注于动态场景:Nerfies(2020)及其底层D-NeRF模型可变形视频,使用第二个MLP对视频的每一帧应用变形。D-NeRF(2020)与Nerfies论文非常相似,甚至使用相同的首字母缩略词,但似乎限制了平移变形。NeuralSceneFlowFields(2020)将具有已知相机姿势的单目视频作为输入,将深度预测作为先验,并输出场景流以对损失函数进行正则化。Spatial-TemporalNeuralIrradianceField(2020)仅使用时间作为附加输入。成功训练此方法以渲染任意视点视频(来自RGB-D数据!)需要仔细选择损失函数。NeRFlow(2020)使用可变形MLP对场景流进行建模并跨时域集成以获得最终变形。NRNeRF(2020)还使用可变形MLP对非刚性场景进行建模。它不依赖于相机参数以外的预先计算的场景信息,但与Nerfies相比,它产生的清晰度稍差。STaR(2021)将多视图RGB视频作为输入,并将场景分解为静态和动态体积。但是,目前它只支持一个运动目标。另外两篇论文关注人物头像/肖像。PortraitNeRF(2020)创建静态NeRF风格的头像,但仅使用一个RGB捕获图像。为此,需要LightStage训练数据。DNRF(G2020)专注于4DAvatar,将可变形面部模型纳入pipeline,施加强烈的归纳偏差。NeRF风格方法得到增强的另一个方面是如何处理光照,通常是通过可用于重新照亮场景的潜在代码。NeRV(2020)支持任意环境照明和具有第二个“可见性”MLP的“一次反弹”间接照明。NeRD(2020)是另一项使用局部反射模型的工作,此外,对于给定的场景,低分辨率球谐照明被移除。NeuralReflectanceFields(2020)除了密度之外,还通过添加局部反射模型改进了NeRF。它产生令人印象深刻的重新照明效果,尽管来自单点光源。NeRF-W(2020)是NeRF的首批后续工作之一,它优化了潜在的外观代码,以实现从控制较少的多视图集合中学习神经场景表示。潜在代码也可用于对形状先验进行编码:pixelNeRF(2020)更接近于基于图像的渲染,其中在测试时使用N个图像。它基于PIFu,创建像素对齐的特征,然后在评估NeRF风格的渲染器时对其进行插值。GRF(2020)在设置上非常接近pixelNeRF,但在规范空间而不是视图空间中运行。GRAF(2020),或“辐射场的生成模型”,是NeRF的条件变体,它添加外观和形状潜在代码,同时通过GAN式训练获得视点不变性。piGAN(2020),类似于GRAF,但具有SIREN风格的NeRF实现,其中每一层都由使用潜在代码的不同MLP输出调制。可以说,这些都不能扩展到包含许多对象的大场景,因此一个令人兴奋的新领域是如何将对象组合成体积渲染场景。以对象为中心的神经场景渲染(2020)在以对象为中心的坐标系中学习“对象散射函数”,允许对合成场景进行蒙特卡罗渲染并逼真地照亮场景。GIRAFFE(2020)通过从以对象为中心的NeRF模型输出特征向量而不是颜色来支持合成,然后通过平均合成,并以低分辨率呈现为2D特征图,然后在2D中进行上采样。NeuralSceneGraphs(2020)在场景图中支持多个以对象为中心的NeRF模型。最后,至少有一篇论文在(已知)对象姿态估计的上下文中使用了NeRF渲染。iNeRF(2020)在姿势估计框架中使用NeRFMLP,甚至能够通过微调姿势来改进标准数据集上的视图合成。但是,它还不能处理光照。NeuralBodyRendering和NeRF风格的论文最终能否成功还远未确定。虽然现实世界中确实存在烟雾、烟雾、透明度等,但最终大部分光线从表面散射到眼睛中。由于基于体积的方法,NeRF风格的网络可能很容易训练,但已经看到论文倾向于在收敛后尝试发现或猜测表面。事实上,原始NeRF论文中的分层抽样方案正是这样做的。因此,当从NeRF学习时,很容易看到回到SDF风格的隐式表示甚至体素,至少在推理时是这样。

猜你喜欢