Survey: nerf + performance/timing boost up
目录
Preliminaries
NeRF 的稠密采样过程需要耗费大量的时间、算力资源;同时,这种不在乎物质密度分布的采样,对于实际 unconstrained 场景(比如城市场景,有近景也有非常远的背景)也有很大的问题。
Method
<DeRF>
Derf: Decomposed radiance fields目录
Motivation
- 对于NeRF这种研究,在提高网络深度、大小时,有diminishing returns(减小的回报)
- 因此,instead of 提高单个网络深度、大小,本篇把空间分成几个voronoi cell,对应几个NeRF,来学习
- 因为是空间分区的network,因此无论分多少部分,Infer时间是几乎不变的
- voronoi空间分解非常合适,因为被证明与Painter’s Algorithm 兼容,可以高效GPU渲染
- 对于现实世界场景,在相同的渲染质量情况下,比NeRF高效3倍以上
Overview
Neural sparse voxel fields
目录
编者按
- 兼顾精度、速度?
- 既然是利用形状/点云信息,加快query时的速度,那可否利用SDF?
- 这种加速,相当于额外存储一下空间中哪些位置占用低
Motivation
- 现有的方法,由于网络容量/寻找和scene geometry的精确intersection有困难,目前的很多方法都是blurry results
- 提出一种新的表征,用octree结构的voxels来each 存local feature
这样在采样时就可以跳过无关的voxels,比NeRF快10倍 - 至于每个pixel的feature,渲染结构与NeRF类似
Overview
- self-pruning
把占用小于阈值的网格直接剪枝掉 - 一个voxel上的feature有顶点补间得来
Results
- 因为用的是显式的sparse voxel 表征,可以轻松用于scene composition
- 还可以在
ScanNet
上直接进行尝试:首先用注册后的深度图提取点云 - 还可以做scene editing:因为用的是显式的voxel
<AutoInt>
Autoint: Automatic integration for fast neural volume rendering目录
Motivation
- 初版NeRF需要离散采样数值积分,计算非常费时:millions of rays,每个ray上hundreds of forward passes,用蒙特卡洛采样来近似积分
- 本文用了一种快速自动积分的算法,应对这种对一个隐式神经场的积分
- training: grad net来表征多视角图片
- testing: integral net来迅速evaluate per-ray integrals
overview
- 把grad network的parameters reassembled to form integral networks
- 用一个sampling network 预测ray上的piecewise sections的位置,用于计算定积分
neural volumetric rendering
- automatic integration支持高效地用closed-form solution来evaluate 定积分
- 不过volume rendering不能直接应用AutoInt,因为包含嵌套的积分:ray上的radiance加权 累积transmittance 以后的积分
- 因此,把这个积分近似为piecewise sections来用AutoInt高效地积分
- 将
- $ \boldsymbol{\rm C}(\boldsymbol{\rm r})=\int_{t_n}^{t_f} T(t) ; \cdot ; \sigma(\boldsymbol{\rm r}(t)) ; \cdot ; c(\boldsymbol{\rm r}(t),\boldsymbol{\rm d}) \quad {\rm d}t $
- $ T(t)=\exp(-\int_{t_n}^t \sigma(\boldsymbol{\rm r}(s))) ; {\rm d}s $
- 近似为
- $ \tilde{\boldsymbol{\rm C}}(\boldsymbol{\rm r})=\sum_{i=1}^N \overline{\sigma}_i \overline{\boldsymbol{\rm c}}_i \overline{T}_i, \qquad \overline{T}i=\exp(-\sum{j=1}^{i-1}\overline{\sigma}_j) $
- 其中 $\overline{\sigma}i=\delta_i^{-1}\int{t_i-1}^{t_i}\sigma(t);{\rm d}t, \qquad \overline{\boldsymbol{\rm c}}i = \delta_i^{-1} \int{t_i-1}^{t_i}\boldsymbol{\rm c}(t);{\rm d}t$
- 每段的 $\overline{\sigma}_i$ 由这段上的 $\sigma(t)$ 积分求出,每段的 $\overline{\boldsymbol{\rm c}}_i$ 由这段上的 $\boldsymbol{\rm c}(t)$ 积分求出
- 这里用AutoInt近似
- 解释 $\overline{T}i=\exp(-\sum{j=1}^{i-1}\overline{\sigma}_j)$ :每段的累积transimittance $T(t)$ 则由这段之前的那些段的累加 $\overline{\sigma}_i$ 的负指数幂近似
- 这里是真正的数值近似,把一段上的所有T(t)都用这段起始的T(t)近似
- 每段的 $\overline{\sigma}_i$ 由这段上的 $\sigma(t)$ 积分求出,每段的 $\overline{\boldsymbol{\rm c}}_i$ 由这段上的 $\boldsymbol{\rm c}(t)$ 积分求出
- 由于目前的autoint是两阶段的,训练很慢;本篇用了一个pytorch custom implementation of AutoDiff
Nerf++: Analyzing and improving neural radiance fields
目录
Motivation
- 面对unbounded scenes时,用一种球内 / 球外 $\frac {1}{r}$ 的参数化来更好的处理foreground / background