NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
概
通过MLP和不同视角的2D图像拟合3Dshape: 引入了positional encoding, 用于捕获高频信息.
主要内容
假设\(\bm{x} = (x, y, z)\)表示一个3D图的位置坐标, \(\bm{d}=(\theta, \phi)\)为观看(拍摄?)角度, 我们希望拟合一个MLP\(F_{\Theta}\)将这个5维的向量映射为该3D物体在\((x, y, z, \theta, \phi)\)处的颜色\(\bm{c}=(r, g, b)\)加上体密度\(\sigma\).
训练的监督信息是不同视角的2D图片, 以及其拍摄的参数.
所以, 对于每一张2D图片可以获得:
\[C(r) = \int_{t_n}^{t_f} T(t) \sigma(\bm{r}(t)) \bm{c}(\bm{r}(t), \bm{d}) \mathrm{d}t,
\]
注: 这些个\(C(r)\)以及体密度之类概念不明白, 看这篇文章只是为了看看positional encoding 怎么发挥作用的, 感兴趣的请回看原文.
对于\(F_{\Theta}\)我们可以估计出:
\[\hat{C}(\bm{r}) = \sum_{i=1}^N T_i (1 - \exp(-\sigma_i \delta_i)) \bm{c}_i,
\]
通过下列损失来更新
\[\mathcal{L} = \sum_{\bm{r}} [\|\hat{C}_c (\bm{r}) - C(\bm{r})\|_2^2 + \|\hat{C}_f (\bm{r}) - C(\bm{r})\|_2^2].
\]
positional encoding
在\((\bm{x}, \bm{d})\)在被喂入\(F_{\Theta}\)之前, 对其进行一个预处理(entry-wise):
\[\gamma(p) = (\sin (2^0 \pi p), \cos (2^0\pi p), \cdots, \sin (2^{L-1}\pi p), \cos(2^{L-1}\pi p)).
\]
\(\gamma (p)^T \gamma(p')\)仅和\(p-p'\)有关? 所以编码了相对信息?
额外的细节
\(\bm{c}\)是视角依赖的, 但是\(\sigma\)不是. 即:
- \(\bm{x}\)首先通过一个子网络得到\(\sigma\)和特征\(f\);
- 特征\(f\)加上\(\bm{d}\)一起通过另一个子网络得到\(\bm{c}\).
本文还用到了类似重要性的技巧, 不多赘诉了.