[读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)

总览

  • 任务:view synthesis: 视图合成。即输入一些同一个静态3D场景的2D照片 with poses,输出任意其他角度的该场景2D图像。
  • 方法:
    • 用一个mlp网络来表示静态三维场景
    • 之后,可以从任意角度该场景渲染为2D图片(视图合成)。
      [读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)_第1张图片

用神经辐射场NeRF来表示场景

  • 基本思路:从某个视角看这个场景,会看到其颜色。于是将场景表示为视角-颜色的对应关系。
  • F Θ : ( x , d ) → ( c , σ ) F_{\Theta}:(\mathbf{x}, \mathbf{d}) \rightarrow(\mathbf{c}, \sigma) FΘ:(x,d)(c,σ)
  • 输入:5D视角。
    • x = ( x , y , z ) \boldsymbol{x} = (x,y,z) x=(x,y,z) . 目标空间点的3D坐标位置。
    • d = ( θ , ϕ ) \boldsymbol{d}=(\theta, \phi) d=(θ,ϕ) . 视角方向,从什么方向去看这个空间点。
  • 输出:密度和颜色
    • c = ( r , g , b ) \boldsymbol{c} = (r,g,b) c=(r,g,b) 颜色认为与方向和xyz都有关。从不同视角看同一个点,颜色是不一样的。
    • σ \sigma σ: density,对应3D体素的密度,也有人叫不透明度。可以理解为一条射线r经过这个位置xyz处的一个无穷小的粒子时,被终止的概率(所以可以叫密度也可以叫不透明度)。这个density是物体本身的属性,和视角方向 d \boldsymbol{d} d无关,只和xyz有关。
  • 网络结构:MLP

关于density的解释:
我们常见的3D重建中,一个点是否是物体表面通常是有确定的表示,比如隐式场的0等值面,体素表示中值为1的部分。但这里的denstiy就是一个虚一点的概念,是有一个可以积分的概率表示的。

关于θ和φ的定义,找到这个图:
https://blog.csdn.net/Master_Cui/article/details/119787704
[读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)_第2张图片

从神经辐射场NeRF渲染出2D图片

思路:2D图片的一个像素,对应了一条从相机发出的射线上所有连续空间点。颜色是被挡住的位置的颜色(在哪里被挡住是由density决定的)。

颜色可以表示为density 乘color的积分。

为了可微,需要将积分过程离散化。近似为,将需要积分的区域分成N分,然后每一个小区域内均匀随机采样。然后积分简化为求和。

两个重要的trick

position encoding 非常重要

不直接使用位置xyz作为输入,而是用position encoding。

  • 作者发现直接用position的话,得到结果比较模糊。
  • 有先前的研究表明神经网络对低频信息比较敏感,容易忽视高频纹理信息
  • 所以作者这样操作来引入高频信息:
    • 将刚才的映射函数F,理解为符合函数F’ * γ。 网络要学习的是F’, 而γ是一个将实数映射到高位空间的编码函数。也就是说,先对xyz通过γ映射到高维空间,然后网络直接拿γ(x)作为输入
    • 在这里插入图片描述
    • 实际的网络结构如下:
      • https://blog.csdn.net/Vpn_zc/article/details/115729297
      • [读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)_第3张图片

可以看到没有这个position encoding就很模糊:
[读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)_第4张图片

分层抽样

去掉神经 Plenoxel(plenoptic volume elements)

Plenoxels: Radiance Fields without Neural Networks
Alex Yu et al.
UC Berkeley
https://baijiahao.baidu.com/s?id=1720283428332813421&wfr=spider&for=pc

  • Plenoxel 是一个稀疏体素网格,
  • 其中每个被占用的体素的八个角,分别存储一个标量不透明度σ和每个颜色通道的球谐系数向量。
  • 三维空间任一点的density和color,通过其所在的体素的角点做三线性插值即可。
  • 不用神经网络,而是直接用数据集,optimization方法来优化这个Plenoxel表示。

这似乎解释了为什么只要NerF只需要MLP就可以实现对3D场景的重建。即使只用optimization也可以做到,没有太多玄学的先验知识需要引入。

每个网络只能表示一个场景

每一个静态3D场景都需要训练自己的NeRF网络。

参考

https://zhuanlan.zhihu.com/p/450521986

你可能感兴趣的:(读论文,point,cloud,AI,计算机视觉,人工智能)