目录

目录

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