最近需要写一篇关于NeRF的文献综述,看了看网上有关NeRF的所有教程和笔记,感觉对于初入门的初学者并不是很友好,在这里开个坑,准备更新NeRF的知识和相关的论文

综述如下:

神经辐射场在视图合成和三维重建方法中的应用

计算机科学与技术 2113615 张铭徐

摘  要:

神经辐射场方法(NeRF)作为计算机视觉领域的一种全新的视觉合成技术,自ECCV2020由Mildenhall等人首次提出后,在相关领域迅速掀起了一股热潮;NeRF实现了复杂场景的高度真实感的视图合成,在机器人,城市地图,导航,AR,VR等领域得到了广泛应用;特别是在图形学上的渲染任务上做出了重要的贡献。本文将针对NeRF在视图合成和三维重建中最新的应用进行详细介绍。

关键词:NeRF,神经辐射场,计算机视觉,三维重建

  1. 介绍

NeRF(Neural Radiance Fields)自首次在ECCV2020提出后,在计算机视觉掀起了一阵热潮,在2022年的CVPR上,就发表了超过50篇该主题的论文。在ECCV2020的论文中,作者以一种全新的方式解决了长期存在的视图合成问题。

一个连续的场景可以表示为一个五维向量方程,其中是物体在三维空间中的位置,是观测角度;其输出值是一个颜色以及以及体积密度值,对于连续场景下,通常只需要维护一个表,在给定时查询对应的颜色值及其体密度,最后用体渲染的方法进行渲染即可;NeRF则提出一个面对此场景下更好的解决方案——用神经网络建模映射。

为了渲染特定视角下的神经辐射场,我们令摄像机发出的光线穿过整个场景以便于完成三维空间位置的采集;同时,将采集过后的点以及其观测方向作为整个神经网络的输入以便于产生颜色和密度的输出集合;接下来应用体渲染方法将颜色和密度累计到二维的图像中,由于整个过程是可微分的,可以通过梯度下降的方法优化;优化的对象为观测图像和渲染图像之间的误差。通过最小化多个视图之间的误差,可以训练出一个模型;此模型可以通过精确分配体积密度和颜色到原场景中每一个位置,以便于精确的预测场景中的若干视角。下图1展示了NeRF的整个过程:

图 1神经辐射场场景表示和渲染过程的描述,其中(a)为沿该方向采样并产生颜色密度输出集合;(b)表示用体渲染技术将输出集合合成为一张图像(c);由于整个过程是可微分的,所以可以通过减小渲染图和实际图之间的差异(d)来优化整个过程.

  1. 相关工作

在这个部分我们将广泛的回顾与NeRF相关的工作。

Human NeRF:Human NeRF是在2022年华盛顿大学和谷歌研究中心在CVPR上发表论文中的一项技术,在论文中介绍了一种自由视点渲染的方法——NeRF,其可以在人体在执行各种复杂运动时所给定的视频上工作:可以在任意帧时停止视频,并且可以针对该帧所呈现出的动作渲染出任意视角的图片。这项任务主要的挑战是需要合成身体细节,面料褶皱和面部外观。此方法与运动场一致,优化了典型T姿势中人的体积表示。其研究方法是把人看做一个辐射场,将视频的每一帧作为输入表示为一个连续场,并将其视为从观察角度到规范空间的运动场映射。此外,作者使用一个身体姿态估计器来细化初始化的身体姿态,从而得到更好的效果。同时,观察视角得到渲染图像和输入图像之间的差异作为损失,不断优化损失数值得到更优的模型。此项工作具有开创性,可以针对某一视频的任意帧率下的画面进行任意视角的观测,可能会应用于未来的虚拟现实(VR),增强现实(AR)以及元宇宙等领域;不足的地方在于如果视频中没有给出身体的某一个部分,那么Human NeRF会人工的合成出这一个部分;虽然身体姿态估计器可以细化初始化的身体姿态,但如果初始姿态较差或视频中包含运动模糊场景,可能会导致工作的失败;此外,Human NeRF对于随意采样视频的鲁棒性较差,需要依靠人工纠正来分割错误。总之,Human NeRF为单目视频自由视角渲染的最新研究成果,其中所潜在的问题可以为未来的工作指明一些研究方向。

图 2:该方法以视频的每一帧作为输入,优化规范外观将其表示为一个连续场;并且将运动分解为骨骼刚性运动和非刚性运动,分别用离散网格和连续场表示。此外,作者用一个身体姿态估计器来细化初始化的身体姿态。以输入图像和渲染图像之间的差异作为损失,以达到优化的目的。

Raw NeRF:Raw NeRF是谷歌研究中心在2022年CVPR上提出的一种方法,其可以从较为黑暗的环境中捕获的噪声较大的图片中重建场景。作者直接用NeRF在线性原始图像中进行学习训练,保留场景完整的动态范围,通过训练生成的NeRF渲染输出原始图像,其可以将低动态范围的图像作为输入,执行高动态范围的合成任务。可以有效地将Raw NeRF变成一个多图像降噪器,能够组合来自数十或数百个输入图像的信息。尽管单一原始图片比该工作生成的图片噪声大很多,但工作证明了NeRF对原始噪声的零均值分布具有高度的鲁棒性。在有许多嘈杂的原始输入的情况下,NeRF所渲染出的新视图要明显优于在相同宽基线输入图像上运行的专用单图像和多图像深度原始降噪器。针对标准NeRF,其以低动态范围(LDR)sRGB颜色空间和范围在[0,1]的值作为输入。将原始的高动态范围(HDR)图片转变为低动态范围图片会出现问题;例如噪声分布在通过非线性调压曲线后,其分布会发生改变即非零均值分布了。Raw NeRF会直接对HDR颜色空间原始输入数据进行处理,用其优化NeRF,使其能够解决噪声分布改变的问题。图2展示了Raw NeRF和标准NeRF的不同之处。Raw NeRF可以应用到计算摄影领域;目前谷歌已经将此项技术应用到AI夜景拍照的技术中,在该技术中,Raw NeRF将夜晚的照片实现了较大程度的降噪,并可以由多张2D照片合成3D场景,并可以调整焦点。在这项工作中,作者已经证明了线性原始数据对于训练NeRF的好处,但是这种好处是没有权衡利弊的。如果想要实现利用原始数据训练NeRF,需要大量的全分辨率的原始图片,但是大多数相机只能以最小的压缩率保存全分辨率的原始图片,这使得如果需要训练NeRF,需要在每一个场景下采集数十张乃至几百张图片,产生了大量存储的压力。此外,Raw NeRF虽然对于噪声具有鲁棒性,但其仍不具有广泛的适用性,例如Raw NeRF就无法处理运动场景。总之,Raw NeRF是NeRF的迭代版本,工作是具有创造性的,其在很多方面都具有较好的特性,在计算摄影领域可以得到广泛的应用,能够显著性的改良夜间拍照噪声较多的问题;此外Raw NeRF存在的问题也为后续的优化工作指明了方向。

图 3:(a)为标准的NeRF的训练通道,接收通过相机处理管道发送的LDR图像,重建场景,并在LDR颜色空间中呈现新的视图;而(b)为作者提出的Raw NeRF训练通道,其直接利用线性原始HDR输入数据进行训练;由Raw NeRF产生新视图可以像原始图片一样被编辑。

NeRF Without Known Camera Parameters:该方法是来自牛津大学的Zirui Wang等人在2022年CVPR上提出的一种多视角场景重构的方法;在这项工作中,作者将原本需要摄像机参数的要求删除掉,简化了在前向场景中训练NeRF的过程。这项工作的动机是NeRF和多平面图像(MPI)证明了通过优化体场景表示在一组稀疏图像中可以重新渲染全新视角的视图,但是这些方法都需要已知图像的相机参数,而作者将相机的参数(包括位置和内置参数)都作为NeRF中的可学习参数,训练时将其初始化为一个固定的值,然后利用该位置发射一条光线,得到光线上的对应点的密度和颜色;再去不同位置重复发射光线,最终得到的密度和颜色通过体渲染的方法得到一张完整的图像;该渲染图与输入图片进行对比,其误差作为损失,进而可以优化参数和最终生成渲染图的质量(如图2所示)。这项工作通过数据结果证明了这种优化框架在不同的摄像机轨迹模式下是可行的;但是这项工作仍然具有相应的局限性:在相机追踪物体的运动上的表现欠佳,无法准确的估计相机的参数;此外,一旦旋转扰动超过20°可能就会导致该项工作的失效。综上所述,这项工作探索了旋转扰动不大且在特定受控运动模式的情况下,用NeRF学习相机参数的可能。同时,未来对于此项工作的优化可以从旋转扰动角度较大的情况下入手进行优化,为实现能够处理360°全场景创造了先决条件。

图 4:将相机的位置和内参作为NeRF学习的参数的可视化流程图.

Point-NeRF:Point-NeRF是来自南加州大学的Qiangeng Xu等人在2022年CVPR上发表出的一项研究成果。NeRF是一种有效的体积渲染方法,可以生成高质量的视图合成的结果,但是如果针对每一个情景进行优化和学习,会导致学习时间过长。另一方面,深度多视图立体方法通过直接网络推理快速重建场景几何;作者从这两个方面入手,结合了这两个方法的优点,即通过具有神经特征的三维点状云来模拟辐射场。Point-NeRF可以通过聚合场景表面附近的神经点特征,可以有效地渲染点网络。此外,Point-NeRF还具有较好的性质:可以通过直接利用预先训练的深度网络进行初始化,生成神经点云;该点云可以细化,加快30×的训练时间,超过NeRF的视觉质量。图3介绍了Point-NeRF的工作流程。工作的创新之处在于有效的结合了MVS和NeRF,对点云的生成起到了加速作用;此外,减少了训练时间,同时优化了NeRF的质量;也对于现实中应用的真实场景重建问题提出了更加新颖更加高效的解决方案。

图 5:Point-NeRF应用了神经三维点来表示和渲染连续的辐射体积;Point-NeRF可以通过网络从多视角图像中预测的,可以对每个场景进行优化,在几十分钟内实现超过NeRF的重建质量。Point-NeRF还可以利用现成的重建方法,如COLMAP,并能够执行点生长,自动修复这些方法中常见的孔和异常值。

  1. 总结

本文主要聚焦于ECCV2020中获得最佳论文提名的项目:神经辐射场(NeRF)以及在2022年CVPR上发表的相关文章进行了综合性的介绍。本文主要介绍了NeRF及相关应用的主要原理、论文动机、研究价值、可优化之处以及未来的发展进行了讨论。以下是本文中提到过的NeRF相关应用的优势:

(1) Human NeRF:实现了对任意给定视频的任意帧率的任意视角的重建工作。

(2) Raw NeRF:显著性的改良了夜间场景下拍摄照片噪点较多的问题,已在计算摄影中得到了应用。

(3) NeRF Without Known Camera Parameter:探索了一定条件下用NeRF学习相机参数的可能性。

(4) Point-NeRF:显著性的加快了NeRF的训练时间以及优化了NeRF的重建质量。

参考文献:

[1] Chung-Yi Weng,BrianCurless,Pratul P.Srinivasan,Jonathan T.Barron and Ira K.-S., :Human NeRF: Free-viewpoint Rendering of Moving People from Monocular Video.In:CVPR(2022)

[2] Ben Mildenhall,Pratul P. Srinivasan,Matthew Tancik,Jonathan T. Barron,Ravi R.,Ren Ng,:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.In:ECCV(2020)

[3] Qiangeng Xu,Zexiang Xu,Julien Philip ,Sai Bi,Zhixin Shu,K. S.,Ulrich Neumann:Point-NeRF: Point-based Neural Radiance Fields.In:CVPR(2022)

[4] Ben Mildenhall,Peter Hedman,Ricardo Martin-Brualla,Pratul P. Srinivasan,J. T.Barron:NeRF in the Dark: High Dynamic Range View Synthesis from Noisy Raw Images.In:CVPR(2022)

[5] Zirui Wang,Shangzhe Wu,Weidi Xie,Min Chen,Victor Adrian Prisacariu:NeRF−−: Neural Radiance Fields Without known Camera Parameters.In:CVPR(2022)

 

NeRF(Neural Radiance Fields)神经辐射场方法 学习总结的更多相关文章

  1. NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

    目录 概 主要内容 positional encoding 额外的细节 代码 Mildenhall B., Srinivasan P. P., Tancik M., Barron J. T., Ram ...

  2. Neural Turing Machine - 神经图灵机

    Neural Turing Machine - 神经图灵机 论文原文地址: http://arxiv.org/pdf/1410.5401.pdf 一般的神经网络不具有记忆功能,输出的结果只基于当前的输 ...

  3. 单片机和Linux都想学_换个两全的方法学习单片机

    本节教你如何学习单片机,如何选择合适的开发板和开发工具. 现在我们知道单片机是要学习的,那么怎么去学习单片机?在上一课我们说不要使用老一套的方法学习,实际上是指的两个问题. 第一:选择什么开发板: 第 ...

  4. JavaScript ES6 数组新方法 学习随笔

    JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...

  5. java方法学习

    java方法学习 方法概念 什么是方法 方法就是完成某些事情的过程,如:实现两个数相加,用方法add(数值1,数值2). 1.System.out.print(),System是系统的一个类,out是 ...

  6. 短文对话的神经反应机 -- Neural Responding Machine for Short-Text Conversation学习笔记

    最近学习了一篇ACL会议上的文章,讲的是做一个短文对话的神经反映机, 原文: 会议:ACL(2015) 文章条目:    Lifeng Shang, Zhengdong Lu, Hang Li: Ne ...

  7. Recurrent Neural Network Language Modeling Toolkit代码学习

    Recurrent Neural Network Language Modeling Toolkit  工具使用点击打开链接 本博客地址:http://blog.csdn.net/wangxingin ...

  8. 【RS】Automatic recommendation technology for learning resources with convolutional neural network - 基于卷积神经网络的学习资源自动推荐技术

    [论文标题]Automatic recommendation technology for learning resources with convolutional neural network ( ...

  9. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  10. runtime运行机制方法学习

    runtime这玩意第一次听说时都不知道是什么,经过了解后才知道它就是oc动态语言的机制,没有它那oc就不能称为动态语言.在之前可能大家对runtime了解都不深,随着编程技能的日益加深和需要,大家开 ...

随机推荐

  1. 基于Sekiro的jsRPC的使用和安装

    什么是jsRPC 说实话在介绍 JSRPC 我向大家推荐一个库 Selenium-wire 感觉和JSrpc的原理很像 RPC指远程过程调用,APP里面的RPC大家比较熟悉了. 那什么是jsRPC,顾 ...

  2. 火山引擎 DataLeap:一家企业,数据体系要怎么搭建?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 导读:经过十多年的发展,数据治理在传统行业以及新兴互联网公司都已经产生落地实践.字节跳动也在探索一种分布式的数据治 ...

  3. 用声网 Android UIKit 为实时视频通话应用添加自定义背景丨声网 SDK 教程

    使用声网 SDK 和 UIKit 创建视频推流应用非常简单,而且声网还有许多功能,可以提高视频通话的质量和便利性.例如,我们可以在视频通话过程中使用虚拟背景,为视频通话增添趣味性. 我们可以通过以下三 ...

  4. Windows7蓝牙音响连接成功,但是无法播放音乐,没有声音

    本人使用的蓝牙是博通94360CD的无线网卡集成的,在Windows7系统,成功安装蓝牙驱动,但是无论连接什么蓝牙音响设备,都可以连接成功,但是在音频管理却没有蓝牙音响的设备,自然就没有声音.后来找到 ...

  5. 教你如何通过CodeArts IDE插件调用API,高效合成语音

    摘要:本实验基于华为云自研CodeArts IDE,指导用户通过使用华为云API,来实现一个文字合成语音的应用. 本文分享自华为云社区<通过CodeArts IDE插件调用API,高效合成语音! ...

  6. Alchemy Nft黑客松任务(第一周)

    Alchemy是什么项目? 2019年12月,Alchemy完成1500万美元A轮融资,资方为Pantera Capital,斯坦福大学,Coinbase,三星等. 2021年4月,Alchemy以5 ...

  7. vue之箭头函数

    目录 说明 解决方法一 重新定义this 解决方法二 使用箭头函数 无参数的箭头函数 有一个参数的箭头函数 有两个参数的箭头函数 有一个参数一个返回值的箭头函数 说明 当在一个方法(函数)里面再定义一 ...

  8. SSM整合的所有配置(配置文件)

    mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE co ...

  9. 补五月三号java基础知识

    1.泛型技术可以通过一种类型或方法操纵各种不同类型的对象,同时又提供了编译时的类型安全保证.2.容器(即集合)是以类库形式 提供的多种数据结构,用户在编程时可直接使用3.泛型其实质就是将数据的类型参数 ...

  10. SpringBoot项目中使用缓存Cache的正确姿势!!!

    前言 缓存可以通过将经常访问的数据存储在内存中,减少底层数据源如数据库的压力,从而有效提高系统的性能和稳定性.我想大家的项目中或多或少都有使用过,我们项目也不例外,但是最近在review公司的代码的时 ...