Mildenhall B., Srinivasan P. P., Tancik M., Barron J. T., Ramamoorthi R. and Ng R. NeRF: representing scenes as neural radiance fields for view synthesis. In European Conference on Computer Vision (ECCV), 2020.

通过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\)不是. 即:

  1. \(\bm{x}\)首先通过一个子网络得到\(\sigma\)和特征\(f\);
  2. 特征\(f\)加上\(\bm{d}\)一起通过另一个子网络得到\(\bm{c}\).

本文还用到了类似重要性的技巧, 不多赘诉了.

代码

原文代码

pytorch3d

最新文章

  1. [CareerCup] 14.6 CircularArray 环形数组
  2. 【读书笔记】读《JavaScript高级程序设计-第2版》 - 函数部分
  3. Oracle数据库“Specified cast is农田valid”
  4. yii2源码学习笔记(十八)
  5. 【学习】ie-css3.htc---让ie8以下支持css3
  6. 剑指Offer_编程题_25
  7. Python学习笔记-Linux下安装Python
  8. IntelliJ IDEA自动导入包去除星号(import xxx.*)
  9. orcle查看表空间数据文件使用情况
  10. HTTP协议与WEB框架简介
  11. SQL 行列转置
  12. BZOJ 1029 [JSOI2007]建筑抢修 (贪心 + 优先队列)
  13. 冒泡排序算法的C++,Java和Python实现和冒泡排序算法三种语言效率的比较
  14. linux内核分析第二次实验
  15. 剑指offer面试题7:用两个栈实现队列
  16. vue--环境搭建(创建运行项目)
  17. list,set中可以存放Object类型对象
  18. 2014.1.4 cxf spring webservice
  19. Android学习系列(2)--App自动更新之通知栏下载
  20. mobBUS

热门文章

  1. Mysql索引数据结构详解(1)
  2. C++中union相关
  3. Output of C++ Program | Set 3
  4. 深入 char
  5. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)
  6. 测试数据库并发压力的shell脚本
  7. linux系统下命令的学习
  8. 如何利用火焰图定位 Java 的 CPU 性能问题
  9. MySQL 创建定时任务 详解
  10. Windows10下mysql 8.0.19 安装配置方法图文教程