NeRF学习笔记(三):基于NeRF的三维内容生成


NeRF学习笔记(三):基于NeRF的三维内容生成

Why NeRF Succeeded

Why 3D content creation from images

What are 3D contents

3D内容是形状和外观模型的组合,可以从不同的视点渲染为2D图像。

Rendering and inverse rendering

计算机图形学主要是假设我们有了这些3D内容,即形状、材质和光照,我们如何设计更高效和高质量的渲染操作来生成图片。

从计算机视觉的角度来说的话,我们给定了一堆图片,可以是从真实世界中拍摄的图片,也可以是渲染出来的图片,通过反渲染的操作去生成这些3D内容。

下文主要讨论的是Inverse Rendering技术。

3 key factors in inverse rendering

What shape representations to use?

这部分可以参考几何的隐式表示与显示表示

在Inverse Rendering中,非常关键的就是选择合适的形状表征方式,不同的方式有不同的优化特点,会影响我们反渲染的难度。

What appearance representations to use?

第一种方法,上面的材质纹理贴图是把3D的形状展开成2D的平面,在每个图片上存储对应3D点的性质,比如世界地图就是2D平面上表示了3D的地球;下面的环境光可以用下面这样的全景图来记录。根据材质纹理贴图和环境光就可以渲染

第二种方法叫做Radiance field(辐射场),早期的时候叫做surface light field(2000年的文章)。 他的定义比较简单,物体中的每个点,从不同的角度看会有不同的内容(颜色)。

两种方法的对比:

  • 左边这种方法将材料和光照分开了,而右边没有给材料和光照分开处理。
  • 左边的方法是非常理想的,很容易编辑材质或者更换光照,但同时又是非常难解决的。
  • 右边这种方法非常简单,但是很难去编辑,很难把物体放到新的环境去观察它的外观,因为新的环境光照会变化很多,导致物体的外观也变化了。

What rendering operator to use?

Why NeRF is a big thing

Break NeRF into 3 components

Shape:NeRF使用Soft opacity field表示形状,这种方式非常soft,类似于把物体表示成一种雾。

Appearance:NeRF使用Radiance field表示。

Randering:NeRF渲染的过程中,会在同一条ray上sample很多点,再把这些点结合起来,得到最后这条ray的颜色。(讲座的录屏里面有视频介绍)

Take-home messages from NeRF

soft shape

NeRF初始化的时候,类似于虚空的状态,什么也没有,然后在优化的过程中,image loss会在需要的位置生成需要的三维模型。

与hard geometry相比较:

  • 不需要object segmentation mask,不会面临genus的问题。对于hard geometry,如果initial shape是一个球,没有object segmentation mask的话,需要把它变成圆环是一个非常困难的操作。
  • 没有boundary discontinuity,容易做differentiable rendering。
  • 渲染的代价很大,比如之前一条ray的颜色是一条ray上很多点的颜色结合起来的,而hard geometry里面只需要找到相机的ray与表面的交点即可渲染。
  • 对于soft shape,目前还没有非常好的工具去编辑它。

soft shape相关的新工作:

Fourier features fixes the spectral bias of MLPs

这里讲座讲的东西没太听懂,有几个英文单词没听过,,,

不过这个部分NeRF论文里面讲了,就是通过高维变换让MLP可以学习高频函数

neural fields for inverse rendering
  • Compact:neural fields指的是用神经网络表示信号,这种表征方式特别袖珍。比如每隔NeRF的内容只有10MB

  • Continuous:这种表示方式他的场景没有被discretized,因为它是连续的,可以表示更加高质量的信号

  • Flexible and easy for optimization:这个神经网络本身有一些非常平滑的表示方式,所以很好优化。

NeRF++

从这里开始介绍自己的工作了,NeRF++扩展了NeRF到360 capture of unbounded scenes,解决的是NeRF只能够对没有背景的物体进行建模的问题,实现了既能够重建前景,也能够重建背景。

5 Capture scenarios

  • 360 Inward-facing:物体在中间,相机绕着物体拍。对于NeRF,这种情况没有背景,背景是白色的,但这种情况相对于真实情况是很困难的。
  • Forward-facing:相机在一个很小的范围内运动,相机基本朝着一个方向,NeRF很擅长这种场景。
  • 360 Outward-facing:类似于拍摄全景图。
  • Unconstrained 360 Outward-facing:类似于360 Outward-facing,但分布更加不规则
  • 360 capture of unbounded scenes:360 Inward-facing与360 Outward-facing的结合,更贴合实际的情况,去拍摄一个实际的物体,既能够拍摄到处于中央的物体,也会拍摄到背景图。

Core idea

Separate foreground/background

NeRF有一种很好的compositional性质,它的一条ray上面sample了很多的点最后再把这些点结合起来得到ray的颜色,这些点在结合的过程中就可以被分成前景和背景。

Symmetry between 360 inward-facing and 360 outward-facing captures

上面还没有解决resolution问题,因为背景很大,ray可能会延申到很远。

可以画一个球,把场景包围起来,也可以画一个球把相机包围起来,如下图所示。从这里可以看出360 inward-facing 和 360 outward-facing是有对称关系的。

可以通过映射的方式,把outward-facing capture这个非常大的场景map成一个Bounded unit cube。

下面这个球里面,离中心越远的地方,在cube中就更密,而距离中心更近的地方,在cube中更稀疏。

如下图所示,对于前景,它的空间没有受到任何的挤压,而对于外面的背景,通过上面的Inverted sphere parametrization方式,映射到了Bounded unit cube里面,空间会受到挤压。

这样,Foreground和Background都定义在一个unit cube中,就可以用普通的NeRF去model它了。(NeRF就是compositional的,很容易得到结果)

NeRF++ vs NeRF

  • NeRF faces resolution issue for 360 captures of unbounded scenes
  • NeRF++ separates foreground/background modelling, as NeRF is compositional
  • NeRF++ uses inverted sphere parametrization to establish symmetry between 360 inward-facing and 360 outward-facing captures

Future works

Questions

Q:三维重建与反渲染的关系?

A:三维重建广义上也可以说是反渲染,他可以说是反渲染的特例。三维重建更注重shape,没有特别关注Appearance的部分。

Q:如何理解辐射场?

A:TODO

Q:为什么NeRF只用没有空间信息的MLP?

A:TODO


文章作者: Immortalqx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Immortalqx !
评论
  目录