你好! 这里是“出门吃三碗饭”本人,
本文章接下来将介绍2020年对Nerf工作的一篇总结论文NEURAL VOLUME RENDERING:NERF AND BEYOND,论文作者是佐治亚理工学院的Frank Dellaert同学和 MIT的Lin Yen-Chen同学,非常感谢两位大佬的总结贡献。
视频解说可以关注B站,即可找到对应视频,另外可以关注《AI知识物语》 公众号获取更多详情信息。
Nerf是一个非常美丽的算法,因为简单,而美丽
1:Introduction
神经体渲染指的是通过跟踪光线进入场景并对光线长度进行积分来生成图像或视频的方法。通常,像多层感知器这样的神经网络会对从射线上的3d坐标到密度和颜色等量的函数进行编码,这些函数被整合成图像。
2:outline
下面我们首先讨论导致“NeRF爆炸”的一些非常相关的作品,然后讨论我们认为开始这一切的两篇论文,然后是后续工作的注释参考书目。我们正在广泛而不是深入,并提供链接到所有的项目网站或Arxiv条目
3:preclude神经隐式表面
神经体渲染的直接前身是使用神经网络来定义隐式表面表示的方法。许多3d感知图像生成方法使用体素、网格、点云或其他表示,通常基于卷积架构。但在CVPR 2019上,至少有三篇论文介绍了神经网络作为标量函数的使用定义占用和/或带符号距离函数的近似值。
体素voxel
网格mesh
点云point cloud
Occupancy network引入了隐式的、基于坐标的占用学习。一个由5个ResNet块组成的网络采用一个特征向量和一个3D点并预测二进制占用.
IM-NET (Chen and Zhang, 2019)使用6层MLP解码器,在给定特征向量和3D坐标的情况下预测二进制占用率。可用于自动编码,形状生成(gan样式)和单视图重建
DeepSDF (Park等人,2019)直接从3D坐标和可选的潜在代码中回归有符号距离函数。它使用8层MPL,可跳过连接至第4层,开创了新趋势!
•PIFu (Saito等人,2019)表明,通过将3D点重新投影到像素对齐的特征表示中,可以学习高度详细的隐式模型。这个想法稍后会在PixelNeRF中以出色的效果重现。
4:建立在隐式函数implicit function的一些工作
•结构化隐式函数 Structured Implicit Functions(Genova et al., 2019)表明,你可以组合这些隐式表示,例如,简单地将它们相加。
•Cvnet (Deng et al., 2020b)通过取逐点max(在3D中)组合有符号距离函数。这篇论文还提出了其他一些从深度或RGB图像重建物体的优雅技术。
•BSP-Net (Chen et al., 2020)在许多方面与CvxNet相似,但其核心使用二进制空间划分,产生一种本地输出多边形网格的方法,而不是通过昂贵的网格划分方法。
•Deep Local Shapes (Chabra et al., 2020)在体素网格中存储DeepSDF潜在代码,以表示更大的扩展场景。
• Scene Representation Networks场景表示网络(Sitzmann et al., 2019)或SRN在架构方面与DeepSDF非常相似,但添加了可微射线推进算法来找到学习的隐式表面的最近交叉点,并添加MLP来回归颜色,使其能够从多个姿势图像中学习。
•Differentiable Volumetric Rendering可微分体积渲染(Niemeyer等人,2019)表明,隐式场景表示可以与可微分渲染器相结合,使其可以从图像中训练,类似于SRN。他们使用了术语“体积渲染器”,但真正的主要贡献是一个聪明的技巧,使隐式表面的深度计算可微:没有使用对体积的积分。
• Implicit Differentiable Renderer 隐式可微分渲染器(Yariv等人,2020)提出了类似的技术,但具有更复杂的表面光场表示,并且还表明它可以在训练期间优化相机姿势。
•Neural Articulated Shape Approximation神经关节形状近似(Deng et al., 2020c)或NASA组成隐式表示铰接对象(如人体)的函数。
5:神经体渲染(NEURAL VOLUME RENDERING)
(下文出现的体绘制理解为体渲染 volume rendering)
据我们所知,有两篇论文将体渲染引入该领域,其中NeRF是最简单的,最终也是最具影响力的。
关于命名:下面的两篇论文和所有nerf风格的论文都是基于上面的工作对隐式表面进行编码,因此隐式神经方法这个术语使用得很多。然而,特别是在图形中,这个术语更多地与曲线和面的水平集表示联系在一起。它们与占用/ sdf风格网络的共同之处在于,MLP被用作从3D坐标到标量或多变量字段的函数,因此这些方法有时也被称为基于坐标的场景表示网络。在更大的集合中,我们是
关注下面那些的体渲染的一些工作。
5.1神经体积NEURAL VOLUMES
虽然不是完全在真空中,但我们认为Lombardi等人(2019)在NEURAL VOLUMES论文中引入了用于视图合成的体渲染,它回归了密度和颜色的3D体,尽管仍然是基于(扭曲的)体素的表示。将潜在代码解码成三维体积,并且然后通过体渲染获得新的图像。
这篇论文中最有趣的引用之一是关于神经体绘制方法成功的假设(重点是我们的):
我们在3D空间的每个位置使用由不透明度和颜色组成的体积表示,其中通过积分投影实现渲染。在优化过程中,这种半透明的几何表示沿着积分射线分散梯度信息,有效地扩大了收敛范围,从而能够发现好的解。
我们认为这与许多人产生了共鸣,并部分解释了神经体积渲染的成功。我们不会深入讨论方法本身的任何细节,但这篇论文值得一读。
5.2 关于NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Nerf 引起大家讨论的论文是 Mildenhall 等人的 Neural Radiance Fields 或 NeRF 论文。 (2020)。
本质上,它们采用 DeepSDF 架构,但回归的不是带符号的距离函数,而是密度和颜色。 然后,他们使用(易于微分的)数值积分方法来近似真实的体积渲染步骤。
NeRF 模型将体积场景表示存储为 MLP 的权重,在许多具有已知姿势的图像上进行训练。 通过沿着每条观察光线以规则间隔集成密度和颜色来渲染新视图。
NeRF 能够渲染大量细节的原因之一是它使用周期性激活函数(即傅里叶特征)对光线上的 3D 点和相关视图方向进行编码。 这项创新后来被推广到具有周期性激活的多层网络,又名 SIREN(正弦表示网络)。 两者均随后在 NeurIPS 2020 上发布。
虽然 NeRF 论文表面上于 8 月底在 ECCV 2020 上发表,但它于 3 月中旬首次出现在 Arxiv 上,引发了人们的广泛兴趣,不仅因为综合视图的质量,更可能是因为 可视化深度图中令人难以置信的细节。
可以说,NeRF 论文的影响力在于其极其简单:只是一个 MLP 接收 5D 坐标并输出密度和颜色。 有一些花里胡哨的东西,特别是位置编码和分层采样方案,但许多研究人员对如此简单的架构可以产生如此令人印象深刻的结果感到惊讶(我们认为)。 话虽这么说,普通 NeRF 留下了许多改进的机会:
• 训练和渲染都很慢。
• 它只能表现静态场景。
• 它“烘烤”照明。
• 经过训练的 NeRF 表示不能推广到其他场景/对象。
在这个由 Arxiv 推动的计算机视觉世界中,这些机会几乎立即被利用,六个月内有近 25 篇论文出现在 Arxiv 上。 下面我们列出了所有这些
我们可以找到。
6:Nerf在提高训练效率方面工作(slow training time )
•JaxNeRF (Deng et al., 2020a)使用JAX (https://github.com/google/jax)大大加快了使用多个设备的训练速度,从几天到几小时不等。
•AutoInt (Lindell et al., 2020)通过学习体积积分大大加快了渲染速度直接。
• Learned Initializations 学习初始化(Tancik 等人,2020)使用元学习来找到良好的权重初始化以加快训练速度。
• DeRF(Rebain 等人,2020)将场景分解为“软 Voronoi 图”,以利用加速器内存架构。
• NERF++(Zhang et al., 2020)建议使用单独的 NeRF 对背景进行建模,以处理无界场景。
• Neural Sparse Voxel Fields神经稀疏体素场(Liu et al., 2020)将场景组织成稀疏体素八叉树
将渲染速度提高 10 倍。
6:Nerf由静态(static)扩展到动态场景下(Dynamic)
• Nerfies(Park 等人,2020)及其底层 D-NeRF 模型可变形视频,使用第二个 MLP 对视频的每一帧应用变形。
• D-NeRF(Pumarola 等人,2020)与 Nerfies 论文非常相似,甚至使用相同的缩写词,但似乎限制了翻译的变形。
• Neural Scene Flow Fields神经场景流场(Li et al., 2020)采用已知相机姿势的单目视频作为输入,但使用深度预测作为先验,并通过输出场景流进行正则化,用于损失。
• Space-Time Neural Irradiance Fields 时空神经辐照度场(Xian et al., 2020)仅使用时间作为附加输入。 需要仔细选择损失才能成功训练此方法来渲染 freeviewpoint 视频(来自 RGBD 数据!)。
• NeRFlow(Du 等人,2020)使用变形 MLP 对场景流进行建模,并将其随时间进行积分以获得最终变形。
• NR-NeRF(Tretschk 等人,2020)还使用变形 MLP 来对非刚性场景进行建模。 除了相机参数之外,它不依赖于预先计算的场景信息,但与 Nerfies 相比,它生成的输出清晰度稍差。
• STaR(Yuan et al., 2021)以多视图 RGB 视频作为输入,并将场景分解为静态和动态体积。 然而,目前它仅支持一个运动物体。除了 Nerfies 之外,另外两篇论文也关注人物的化身/肖像。
• Portrait NeRF(Gao 等人,2020)创建静态 NeRF 风格的头像,但这是通过单个 RGB 头像实现的。 为了实现这项工作,需要光阶段训练数据。
• DNRF(Gafni 等人,2020)专注于 4D 化身,因此施加了强烈的归纳偏差通过将可变形面部模型纳入管道中。
7:Nerf在“baking in light”方面的改进工作
重新照明(re-lighting) NeRF 风格方法增强的另一个方面是如何处理照明,通常是通过可用于重新照亮场景的潜在代码。
• NeRV(Srinivasan 等人,2020)使用第二个“可见性”MLP 来支持任意环境照明和“单次反射”间接照明。
• NeRD(Boss 等人,2020)或“神经反射分解”是另一项工作,其中使用局部反射模型,此外,针对给定场景删除了低分辨率球谐照明。
• 神经反射场(Bi 等人,2020)通过在密度之外添加局部反射模型来改进 NeRF。 尽管是单点光源,但它仍能产生令人印象深刻的重新照明效果。
• NeRF-W(Martin-Brualla 等人,2020)是 NeRF 的首批后续工作之一,它优化了潜在的外观代码,以便能够从控制较少的多视图集合。
8:Shape 潜在代码也可用于对形状先验进行编码
(我在这理解为扩展nerf的泛化,使其模型可以适用更多的数据集,避免针对单个场景重新耗时训练)
SHAPE 潜在代码也可用于对形状先验进行编码。
• PixelNeRF(Yu et al., 2020)更接近基于图像的渲染,其中在测试时使用 N 个图像。 它基于 PIFu,创建像素对齐的特征,然后在评估 NeRF 风格渲染器时进行插值。
• GRF Trevithick 和 Yang (2020) 在设置上与 PixelNeRF 非常接近,但在规范空间而不是视图空间中运行。
• GRAF(Schwarz 等人,2020),即“辐射场生成模型”是 NeRF 的条件变体,添加了外观和形状潜在代码,而视点不变性是通过 GAN 式训练获得的。
• pi-GAN(Chan 等人,2020)与 GRAF 类似,但使用 NeRF 的 SIREN 式实现,其中每一层都由不同 MLP 的输出进行调制,该 MLP 接收潜在的
代码。
9:位姿估计
姿态估计 最后,至少有一篇论文在(已知)物体姿态估计的背景下使用了 NeRF 渲染。
• iNeRF(Yen-Chen 等人,2020)在姿势估计框架中使用 NeRF MLP,甚至能够通过微调姿势来改进标准数据集的视图合成。 曾经,它还不处理照明。
10:Conclusion and Congradulation
结束语 2020 年,神经体积渲染和 NeRF 式的论文已经爆火,最后的结局还没有说完。 这篇笔记绝对没有达到彻底审查的水平,但我们希望带注释的参考书目对在该领域工作或考虑加入这一领域的人们有用。
然而,即使面对如此令人兴奋的情况,神经体积渲染最终是否会取得成功还远未可知。 虽然现实世界确实有雾霾、烟雾、透明物体等,但最终大部分光线都是从表面散射到我们的眼睛里的。
NeRF 式网络由于其基于体积的方法而可能很容易训练,但我们已经看到了一种趋势,即作者试图在收敛后发现或猜测表面。 事实上,NeRF 原始论文中的分层抽样方案正是如此。 因此,当我们从 NeRF 爆炸中学习时,我们可以很容易地看到该领域回到了 SDF 风格的隐式表示,甚至是体素,至少在推理时间。
11:阅读笔记(参考)
结束语
感谢你能看到这里,20-23年Nerf的相关后续工作出现了很多有意义的工作,但该领域仍然有大量没有解决的问题(参考最近几个月cvpr论文相关工作),希望未来该技术可以更好地提高生产力!
最后,如果你还是个刚入门的学生,非常强烈建议你一起来学习Nerf等工作,他确实是一个很美丽的算法!