【小白深度教程 1.12】手把手教你 NeRF(神经辐射场)的基本原理和经典工作(含 PPT)
NeRF (Neural Radiance Fields) 简介与原理
NeRF (Neural Radiance Fields) 是一种使用神经网络进行三维场景重建的新方法。NeRF 将三维空间中的场景表示为一个连续的、隐式的神经辐射场,能够以高质量渲染逼真的新视角图像。NeRF 的核心思想是通过体渲染 (volume rendering) 技术,在给定的视角下重建三维场景的密度和颜色。
原理
NeRF 的基本思想是利用一个多层感知器 (MLP) 来学习三维空间中的一个连续函数,该函数可以将空间中的任意一点的坐标 ( x , y , z ) (x, y, z) ( x , y , z ) 和视角方向 ( θ , ϕ ) (\theta, \phi) ( θ , ϕ ) 映射为对应的颜色 ( r , g , b ) (r, g, b) ( r , g , b ) 和密度 σ \sigma σ 。这个映射函数定义为:
F Θ : ( x , d ) → ( c , σ ) F_\Theta : (\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c}, \sigma) F Θ : ( x , d ) → ( c , σ )
其中:
- x = ( x , y , z ) \mathbf{x} = (x, y, z) x = ( x , y , z ) 是空间中的位置坐标。
- d = ( θ , ϕ ) \mathbf{d} = (\theta, \phi) d = ( θ , ϕ ) 是视角方向。
- c = ( r , g , b ) \mathbf{c} = (r, g, b) c = ( r , g , b ) 是该点在该方向上的颜色。
- σ \sigma σ 是该点的密度,用于表示体渲染的透明度。
体渲染公式
为了生成图像,NeRF 使用体渲染公式将三维场景投影到二维图像平面。给定一条射线 r ( t ) = o + t d \mathbf{r}(t) = \mathbf{o} + t\mathbf{d} r ( t ) = o + t d ,其中 o \mathbf{o} o 是射线的起点, d \mathbf{d} d 是射线的方向,沿射线的颜色 C ( r ) C(\mathbf{r}) C ( r ) 可以通过对每一个采样点的颜色和密度进行积分来计算:
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) \, dt C ( r ) = ∫ t n t f T ( t ) σ ( r ( t )) c ( r ( t ) , d ) d t
其中:
- T ( t ) = exp ( − ∫ t n t σ ( r ( s ) ) d s ) T(t) = \exp\left(-\int_{t_n}^{t} \sigma(\mathbf{r}(s)) \, ds\right) T ( t ) = exp ( − ∫ t n t σ ( r ( s )) d s ) 是从射线起点到 t t t 位置的累积透过率。
- t n t_n t n 和 t f t_f t f 分别表示射线的最近和最远采样点。
离散化采样
为了在实际中计算该积分,NeRF 对射线进行离散采样,将连续的积分转化为离散和:
C ( r ) ≈ ∑ i = 1 N T i ( 1 − exp ( − σ i δ i ) ) c i C(\mathbf{r}) \approx \sum_{i=1}^{N} T_i (1 - \exp(-\sigma_i \delta_i)) \mathbf{c}_i C ( r ) ≈ i = 1 ∑ N T i ( 1 − exp ( − σ i δ i )) c i
其中:
- T i = exp ( − ∑ j = 1 i − 1 σ j δ j ) T_i = \exp\left(-\sum_{j=1}^{i-1} \sigma_j \delta_j\right) T i = exp ( − ∑ j = 1 i − 1 σ j δ j ) 是累积透过率。
- σ i \sigma_i σ i 和 c i \mathbf{c}_i c i 是采样点 i i i 处的密度和颜色。
- δ i \delta_i δ i 是相邻采样点之间的距离。
网络训练
NeRF 使用多视角图像及其相应的相机参数作为训练数据,采用 MLP 预测密度和颜色。训练目标是最小化预测图像与真实图像之间的差异,即重建误差:
L = ∑ r ∈ R ∥ C ( r ) − C gt ( r ) ∥ 2 \mathcal{L} = \sum_{\mathbf{r} \in \mathcal{R}} \| C(\mathbf{r}) - C_{\text{gt}}(\mathbf{r}) \|^2 L = r ∈ R ∑ ∥ C ( r ) − C gt ( r ) ∥ 2
其中:
- R \mathcal{R} R 是所有的射线集合。
- C ( r ) C(\mathbf{r}) C ( r ) 是预测的射线颜色。
- C gt ( r ) C_{\text{gt}}(\mathbf{r}) C gt ( r ) 是真实图像中的颜色。
总结
NeRF 是一种基于神经网络的三维重建技术,通过学习一个隐式的辐射场表示,能够生成高质量的新视角图像。其核心是使用体渲染方法来计算沿射线的颜色,并通过神经网络进行参数学习。
相关工作 PPT 下载(百度网盘)
链接:
https://pan.baidu.com/s/1V7Oz2Ylfm7qlVuIQf-GE1g
提取码: wbx5