目录

目录

AutoInt: Automatic Integration for Fast Neural Volume Rendering


<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
    • https://longtimenohack.com/posts/paper_reading/2021cvpr_lindell_autoint/image-20201216203510708.png

overview

  • 把grad network的parameters reassembled to form integral networks
  • 用一个sampling network 预测ray上的piecewise sections的位置,用于计算定积分
  • https://longtimenohack.com/posts/paper_reading/2021cvpr_lindell_autoint/image-20201216204202712.png

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)近似
        • https://longtimenohack.com/posts/paper_reading/2021cvpr_lindell_autoint/image-20201216214526084.png
  • 由于目前的autoint是两阶段的,训练很慢;本篇用了一个pytorch custom implementation of AutoDiff