锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

NeRF:用深度学习完成3D渲染任务的蹿红

时间:2022-08-13 21:00:02 abs轮速传感器固定结构cs系列速度传感器

1 引言

NeRF(https://www.matthewtancik.com/nerf)是2020年ECCV论文。关于过去不到两年,关于NeRF的论文数量已经十分可观。与计算机视觉相比,特别是与基于深度学习的计算机视觉相比,计算机图形学更加困难和模糊。计算机视觉任务被深度学习席卷,但被深度学习席卷的计算机图形学任务仍然很少。

由于NeRF及其众多follow-up工作在图形学中非常重要的渲染任务中取得了优异的成绩,可以预见,未来完成图形学任务的工作将迅速增长。今年的GIRAFFE(https://m-niemeyer.github.io/project-pages/giraffe/index.html)是NeRF摘下2021年的后续工作之一CVPR最佳论文奖在促进整个方向的繁荣方面了积极作用。

本文希望讨论以下问题:

  • NeRF基础(2 前NeRF时代);

  • NeRF是什么(3 NeRF!);

  • NeRF的代表性follow-up工作(4 后NeRF时代);

  • 包含NeRF更广泛的研究方向Neural Rendering的简介(5 不止是NeRF)。

2 前NeRF时代

2.1 渲染传统图形学

本质上,NeRF用深度学习完成图形学中的3D渲染任务。然后我们问两个问题。

  • 问题1:3D渲染是要干什么?

看两个官方定义。

MIT计算机图形学课程EECS 6.837(https://ocw.mit.edu/courses/6-837-computer-graphics-fall-2012/pages/lecture-notes/)对渲染(Rendering)的定义:

“Rendering” refers to the entire process that produces color values for pixels, given a 3D representation of the scene.

优秀综述论文State of the Art on Neural Rendering(https://arxiv.org/abs/2004.03805)对渲染(Rendering)的定义:

The process of transforming a scene definition including cameras, lights, surface geometry and material into a simulated camera image is known as rendering.

也就是说,渲染就是用计算机模拟相机拍照,结果就是生成一张照片。

用相机拍照是现实世界的物理过程,主要是光学过程。拍照对象是现实世界中真实的一切。形成照片的主要机制是通过镜头到达传感器并记录。

e0101bfc0bd9a6673e738c7309bf6d97.png

拍照的物理过程

而渲染就是用计算机模拟这个过程,模拟拍照的对象是现有的三维场景(3)D representation of the scene),图形研究人员精心设计的算法是模拟生成照片的机制。

关键前提:渲染的前提是某种三维场景已经存在。渲染词本身并不包括生成三维场景表示。然而,渲染确实与三维场景表示的形式密切相关;因此,对渲染的研究通常包括对三维场景表示的讨论。

  • 问题2:3D渲染是一个图形学问题,那么我们用什么传统的图形学方法来实现3呢?D渲染的呢?

主要有两种算法:光栅化:(rasterization),光线追踪(ray tracing);通过对照相机拍照的光学过程进行数学物理建模来实现。

Rrasterization,Ray Tracing

参考本教材中传统渲染的详细原理(https://github.com/QianMo/Real-Time-Rendering-3rd-CN-Summary-Ebook)。

光栅化是一种前馈过程,几何被转换为图像域,是上个世纪较早的算法。光跟踪是将光从图像素向后投射到虚拟三维场景中,通过从与几何的交点递归投射新光来模拟反射和折射,具有全球光的优势(可以模拟光的多次反射或折射)。

目前,在学术界,大多数仍在研究传统图形渲染算法的人应该进行优化和加速,以及如何使用它GPU实时渲染更复杂的场景等。在工业界,许多游戏严重依赖渲染技术,因此许多游戏公司应该研究更现实、更快、更经济的渲染算法。去年,虚拟引擎的新虚拟引擎5效果非常令人震惊。光线、纹理和流体的实时渲染模拟已经达到了前所未有的新高度。你可以看到虚拟引擎的官方宣传视频,这真的很好。

虚拟引擎5

2.2 神经网络侵略3D渲染任务:NeRF呼之欲出

隐形场景表示(implicit scene representation)

基于深度学习渲染的先驱是用神经网络隐式表示三维场景。D-aware图像生成方法以体素、网格、点云等形式表示三维场景,通常基于卷积架构。CVPR 2019年开始出现 使用神经网络拟合标量函数 来表示三维场景的工作。

DeepSDF

2019年CVPR的DeepSDF(https://openaccess.thecvf.com/content_CVPR_2019/papers/Park_DeepSDF_Learning_Continuous_Signed_Distance_Functions_for_Shape_Representation_CVPR_2019_paper.pdf)也许是最NeRF先锋工作。

SDF是Signed Distance Function的缩写。DeepSDF通过回归(regress)三维表面的分布。如下图所示,SDF>在0处,表示该点在三维表面外;SDF<0的位置表示该点在三维表面。回归这一分布的神经网络是多层感知机(Multi-Layer Perceptron,MLP),神经网络结构非常简单原始。

DeepSDF

NeRF比DeepSDF进步的地方在于,NeRF用RGBσ代替了SDF,因此,除了推理与物体表面的距离外,还可以推理RGB颜色和透明度,颜色是view-dependent(不同的观察视角,不同的颜色),从而实现更强大的渲染功能。

3 NeRF!

建议前往NeRF项目网站(https://www.matthewtancik.com/nerf)查看视频效果图。

3.1 Radiance Fields(RF)

NeRF是Neural Radiance Fields缩写Radiance Fields指函数,或映射。

3.2 Neural Radiance Fields(NeRF)

3.3 NeRF的体积渲染

NeRF(Neural Radiance Fields)事实上,三维场景表示(scene representation),这是一个隐藏的场景表示(implicit scene representation),因为不能像point cloud、mesh、voxel直接看一个三维模型。

3.4 NeRF的训练

训练NeRF输入数据是:从不同位置拍摄相同场景的图片,拍摄相机位置、相机内部参数和场景范围。如果图像数据集缺乏相机参数的真实值,作者将使用经典SfM重建解决方案COLMAP估计所需参数作为真值。

在训练使用NeRF在渲染新图片的过程中,

  • 先输入这些位置MLP以产生volume density和RGB颜色值;

  • 利用体积渲染技术将这些值合成不同位置的完整图像;

  • 由于体积渲染函数可以微,可以通过最小化上一步渲染合成和真实图像之间的差异来训练和优化NeRF场景表示。

这样的一个NeRF训练结束后,你会得到一个 多层感知机的权重表示 模型。一个模型只包含场景的信息,能力生成其他场景的图片。

除此之外,NeRF还有两个优化trick:

  • 位置编码(positional encoding),与傅里叶变换类似,低维输入映射到高维空间,提高网络捕获高频信息的能力;

  • 体积渲染的分层采样(hierarchical volume sampling),通过更有效的采样策略,降低估算积分的计算成本,加快训练速度。

4 后NeRF时代

GIRAFFE:composition方向代表作

2021CVPR的最佳论文奖得主GIRAFFE是NeRF、GRAF工作的延申。

在NeRF之后,有人提出了GRAF(Generative Radiance Fields),关键点在于引入了GAN来实现Neural Radiance Fields;并使用conditional GAN实现对渲染内容的可控性。

在GRAF之后,GIRAFFE实现了composition。在NeRF、GRAF中,一个Neural Radiance Fields表示一个场景,one model per scene。而在GIRAFFE中,一个Neural Radiance Fields只表示一个物体,one object per scene(背景也算一个物体)。这样做的妙处在于可以随意组合不同场景的物体,可以改变同一场景中不同物体间的相对位置,渲染生成更多训练数据中没有的全新图像。

GIRAFFE实现composition

如图所示,GIRAFFE可以平移、旋转场景中的物体,还可以在场景中增添原本没有的新物体。

其他最新相关工作

2021年CVPR还有许多相关的精彩工作发表。例如,提升网络的泛化性:

  • pixelNeRF:将每个像素的特征向量而非像素本身作为输入,允许网络在不同场景的多视图图像上进行训练,学习场景先验,然后测试时直接接收一个或几个视图为输入合成新视图。

  • IBRNet:学习一个适用于多种场景的通用视图插值函数,从而不用为每个新的场景都新学习一个模型才能渲染;且网络结构上用了另一个时髦的东西 Transformer。

  • MVSNeRF:训练一个具有泛化性能的先验网络,在推理的时候只用3张输入图片就重建一个新的场景。

针对动态场景的NeRF:

  • Nerfies:多使用了一个多层感知机来拟合形变的SE(3) field,从而建模帧间场景形变。

  • D-NeRF:多使用了一个多层感知机来拟合场景形变的displacement。

  • Neural Scene Flow Fields:多提出了一个scene flow fields来描述时序的场景形变。

其他创新点:

  • PhySG:用球状高斯函数模拟BRDF(高级着色的上古神器)和环境光照,针对更复杂的光照环境,能处理非朗伯表面的反射。

  • NeX:用MPI(Multi-Plane Image )代替NeRF的RGBσ作为网络的输出。

5 不止是NeRF:Neural Rendering

Neural Radiance Fields的外面是Neural Rendering;换句话说,NeRF(Neural Radiance Fields)是Neural Rendering方向的子集。

在针对这个更宽泛的概念的综述State of the Art on Neural Rendering中,Neural Rendering的主要研究方向被分为5类,NeRF在其中应属于第2类“Novel View Synthesis”(不过这篇综述早于NeRF发表,表中没有NeRF条目)。

Neural Rendering的5类主要研究方向

表中彩色字母缩写的含义:

在这篇综述中,Neural Rendering被定义为:

Deep image or video generation approaches that enable explicit or implicit control of scene properties such as illumination, camera parameters, pose, geometry, appearance, and semantic structure.

Neural Rendering包含所有使用神经网络生成可控(且photo-realistic)的新图片的方法。“可控”指人可以显式或隐式地控制生成新图片的属性,常见的属性包括:光照,相机内参,相机位姿(外参),几何关系,外观,语义分割结构。在这个大框架下,NeRF是一种比较受欢迎的可控相机位姿的Neural Rendering算法。但Neural Rendering这个方向不止于此。

深度学习视频课程:自动驾驶中的深度学习模型部署实战

在目前的Neural Rendering方向,最火的子方向就是“Novel View Synthesis”,这与NeRF的强势蹿红密不可分;第二火的子方向是“Semantic Photo Synthesis”,这主要归功于语义分割以及相关的GAN领域的成熟度。“Semantic Photo Synthesis”方向也是成果颇丰,例如2019年CVPR的Semantic Image Synthesis with Spatially-Adaptive Normalization,其效果图如下。

Semantic Image Synthesis

相关资源

Github论文收集仓库

小仓库(仅限于NeRF):

https://github.com/yenchenlin/awesome-NeRF

大仓库(neural rendering):

https://github.com/weihaox/awesome-neural-rendering

综述论文

可以说是官方综述,作者列表是目前在Neural Rendering领域最活跃的一群人。两篇分别是2021、2020年的SIGGRAPH、CVPR讲座用到的综述,很全面很有条理,值得每位从业者一读!

SIGGRAPH 2021 Course:Advances in Neural Rendering

CVPR 2020 Tutorial:State of the Art on Neural Rendering

范围限定为可微渲染方法的综述:

Differentiable Rendering: A Survey

上面小仓库的库主(MIT博士生Yen-Chen Lin)写的综述:

Neural Volume Rendering: NeRF And Beyond

论文

列论文实在挂一漏万,象征性地放上本文提到的2篇很重要的论文吧。

NeRF项目主页:

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

GIRAFFE项目主页:

GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields

教材

传统图形学渲染技术:

Real-Time Rendering 3rd

计算机视觉经典教材,含有image-based rendering章节:

Computer Vision: Algorithms and Applications

两篇Georgia Tech老师写的博客

NeRF at ICCV 2021 - Prof. Frank Dellaert

NeRF Explosion 2020 - Prof. Frank Dellaert


附录

NeRF体积渲染公式的推导

连续形式

要搞清楚上述积分式的来由,应当学习体渲染的基础知识。该渲染问题考虑的是光在介质中传播的问题,和物理中的比尔朗伯定律是同源的,在图形学的运用起源于1984 Kajiya的经典论文。

由于NeRF的一作Ben Mildenhall在SIGGRAPH 2021 Course Advances in Neural Rendering中从概率的角度推导了该体积渲染公式,另外这篇博文也解释得很透彻,可以去看他们的,所以我这里就不写了。

离散形式

推导一下连续形式变为离散形式的运算。

计算机求解积分式的办法一般是化为黎曼和。在这里,如果我们每次都将积分区间划分为固定的、等间距的窄长方形面积和,其实就失去了NeRF是连续场景表示的优势:因为虽然每个点的RGBσ都可以访问,但是实际上你也只用了固定点的值求积分。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章