目录

目录

Non-Rigid Neural Radiance Fields: Reconstruction and Novel View Synthesis of a Deforming Scene from Monocular Video


<NR-NeRF> Non-rigid neural radiance fields: Reconstruction and novel view synthesis of a dynamic scene from monocular video

贡献/结论

  • 消费者级的相机就足够合成简单、短时场景的让人信服的bullet-time videos ;单目视频的free viewpoint rendering,将场景解耦为静态表征和变形
  • 表征允许视野、时间之间的相关性估计
  • 提供场景中每个点的rigidity score刚性评分;一个rigidity network来吧场景分为非刚体前景和刚体背景,没有直接监督信号;是一种空间场中的连续加权和,不是显著的离散划分

Motivation

  • 用非刚体(可形变的nerf来表征一个包含动态可变物体视频
    通过ray bending来重建一个一般的非刚体场景的NeRF
  • 输入一张正在变形的物体的RGB图片,学到它的几何外观表征,并且可以重建任何timestep下的novel camera view下的物体图片
  • task:free viewpoint rendering自由视野渲染,针对dynamic scenes动态场景(随时间变化的场景)
    • 过去需要多视角的captures,但是这样的多视角方案是昂贵的、繁琐的
    • 希望用户只用消费者级的相机,monocular
    • 方法不仅适用于现在拍的视频,还适用于过去久远以前拍的视频,制造immersive更有沉浸感的体验
  • monocular video for dynamic/deforming scenes是一个严重under-constrained欠约束问题
    • 过去的方法限制在单物体类别,如人体
    • 过去的方法只重建非刚性物体的geometry形状/几何,不关注外观
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_tretschk_non/nr-nerf-example.gif

overview

  • https://longtimenohack.com/posts/paper_reading/2020arxiv_tretschk_non/image-20210114085225599.png
  • 并没有显式的cover时间信息
  • 把非刚体场景表征为两个components的组合,并且在观测上一起训练;整个方法都是自监督/无监督的
    • 一个canonical NeRF volume,表达几何与外观
      • 没有直接supervised,是场景的static表征
    • 场景的变形
      • 使用估计的场景变形把canonical NeRF volume变形到每张图片
      • 📌 由于场景的**vometric nature**,本篇选择的是space deformations,而不是mesh-based的方法的surface deformations表面变形
        • 变形的是entire space,和camera view无关;因此可以做novel view synthesis
      • 📌 场景变形表征为ray bending;是互补的路线,instead of 从canonical volume变形到直线camera ray上,本篇是从camera ray上的点变形到canonical volume中
        • 笔者评价:前面两点和DIF, DIT两篇论文的设定都十分类似
        • ray bending 用MLP参数化
          • 输入射线上的点坐标;输入**每张图片(per-time-step)**的一个latent code
          • 变形code是每帧一个code
      • 从视频场景的几何中解耦变形是一种under-constrained问题;
        • 在canonical volume中的每一个点分配一个刚性评分;使得变形不影响场景的静态区域
          • 这个同样也是联合训练,没有直接监督信号
        • 引入sparsity regularizer作为软约束
          • 加权了;主要鼓励在visible, occupied regions的sparsity
        • 引入local shape preserving regularizer,试图保留变形场景的局部volume,通过最小化变形的divergence散度
          • 加权了;hidden regions则被散度正则化约束
  • NeRF:去掉了view-depend 效应的NeRF

deformation model 变形的模型:ray bending / space warping

  • 回归空间中一点在变形code condition下的offset:即,是displacement vector field估计的是位移向量场函数
    • $(c,o)=v(x+b(x,l_i))$ ,其中 $b(x,l_i)$ 是变形后的在canonical space下的坐标, $l_i$ 是变形code, $v$ 是canonical NeRF函数
    • 把每条直线 $\overline{r}$ 变形后的版本表示为 $\tilde{\rm r}_{l_i}(j)=\overline{\rm r}(j)+b(\overline{\rm r}(j), l_i)$
  • rigidity network 刚性网络
    • 实践中发现场景的刚性部分没有被充足地约束;
    • 将 $b(x,l_i)$ 表达为一个raw offset + rigidity mask: $b(x,l_i)=r(x)b’(x,l_i)$
    • 想要防止在场景中的刚性区域也变形,因此这些地方刚性mask $r(x)=0$ ,而在非刚性区域 $r(x)\gt 0$
    • 这使得b能够更专注于场景中的非刚性区域
    • 📌笔者评价:
      • 这里的思路和DIF论文中的位置改变函数和标量场改变函数有些类似;整个场景并不都有变形,在DIF中的情况是物体有时候会有structure discrepancy在结构上的不同、无法用变形建模,而在本篇中的情况是整个空间区域中只有一部分是非刚体;
      • 思路都是类似的,instead of 直接对整个场景变形,多用一个量来反馈一些其他的非变形的信息
    • 这个rigidity network同canonical nerf、变形code变形网络一起,都是jointly learned

losses

考虑单个时间步 $i$ ,单条直线ray $\overline{\rm r}$
射线上在均匀采样的 $j \in [j_n, j_f]$ 处的coarse ray points $\overline{C}=\lbrace \overline{\rm r}(j) \rbrace_{j\in C}$
射线上在importance sampling重要度采样的 $j$ 处的fine ray points $\overline{F}=\lbrace \overline{\rm r}(j) \rbrace_{j \in F}$
对于一个隐变形code $l$ ,弯曲后的射线 $\tilde{\rm r}l$ 给出 $\tilde{C}=\lbrace \tilde{\rm r}(j) \rbrace{j \in C}$ 与 $\tilde{F}=\lbrace \tilde{\rm r}(j) \rbrace_{j \in F}$

  • 📌 既用均匀采样的coarse points,也用重要度采样的fine points

reconstruction loss 重建loss

  • $L_{data}=\lVert c_{c}(\tilde{C}) - \hat{c}({\rm r}) \rVert_2^2 + \lVert c_f(\tilde{C} \cup \tilde{F}) - \hat{c}({\rm r}) \rVert_2^2$
  • 其中 $\hat{c}({\rm r})$ 是颜色真值

offset loss 通过sparsity loss约束变形的Offset:希望Offset场在空间中是稀疏的

  • 希望空气是compressible可压缩的、不阻碍最优化过程,对每个点用其occupancy占用度加权
  • 然而,这还是会对hidden ray points加很大的权;导致渲染novel views时存在严重的artifacts;因此额外用visibility可见性加权
  • $L_{offsets}=\frac{1}{\lvert C \rvert} \underset{j\in C}{\sum}w_j \cdot \left( \Vert b’(\overline{\rm r}(j),l) \rVert_2 ; + ; \omega_{\rm rigidity}r(\overline{\rm r}(j)) \right)$
  • 注意,罗马体的 $\rm r$ 代表射线, $\overline{\rm r}(j)$ 是直线ray上的一点,斜体的 $r$ 代表rigidity network
  • 每个点都用visibility、occupancy加权: $w_j=V(j) \cdot o(\tilde{\rm r}(j))$ ;⚠️并不会对 $w_j$ 反向传播
  • 这个Loss有两个优势:
    • 梯度和offset的大小无关,或大或小的offsets/motions被同等对待;不像L2 loss那样
      • Q: what?
        • A: 代码中是 torch.norm(offsets, dim=-1)
          Frobenius Norm(matrix) / L2-norm(vector);
          $\lVert \boldsymbol{\rm A} \rVert_{F}=\sqrt{\sum_{i=1}^m \sum_{j=1}^n \lvert a_{ij} \rvert^2}$ or $\left(\sum_{k=1}^n x_k^2 \right)^{1/2}$
          L2-norm的梯度为: $\nabla \mid x\mid = \frac{x}{\mid x\mid}$ ;梯度大小和x向量的模大小无关
        • A: 而L2-loss是 $\text{loss}=\sum_{k=1}^n x_k^2$
    • 作用相当于一个L2 loss,它鼓励的是offsets field中的稀疏性,适应本篇提到的场景

divergence loss 散度loss

  • offsets loss只约束可见区域,因此引入一个额外的散度正则化来约束hidden不可见区域
  • inpired by: CG领域中local, isometric等距/等测度 的形状保留方法,比如对表面的as-rigid-as-possible正则化或者volume preservation方法,本篇寻求在变形后仍然保留局部的shape
  • Helmholtz decomposition亥姆霍兹分解 可以把任何二阶可微分的向量场分解为 一个没有旋转(无旋度)的向量场 和 没有散度的向量场的加和;
    • Q: what?
  • 因此,通过惩罚散度,就可以鼓励向量场尽可能主要由平动和旋转和构成,有效地保留volume
  • $L_{divergence}=\frac{1}{\lvert C \rvert} \underset{j\in C}{\sum} w’_j \cdot \lvert {\rm div}(b(\overline{\rm r}(j), l)) \rvert$
  • 其中 $w’_j=o(\tilde{\rm r}(j))$ 不被反向传播, $\rm div$ 代表 $b$ 相对于位置 $\overline{\rm r}(j)$ 处的散度

view dependence

  • 如果要考虑对 view 方向的依赖性的话,需要考虑 view 方向的变形
  • 有两种计算方法:
    • slower and exact
      • $\nabla_j \tilde{\rm r}(j)=\frac{\partial \tilde{\rm r}(j)}{\partial \overline{\rm r}(j)} \cdot \frac{\partial \overline{\rm r}(j)}{\partial j} = J \cdot d$
      • 其中 $J$ 是 $3 \times 3$ 的雅克比矩阵, $d$ 是直线射线的方向
      • 通过3个方向传播来计算 $J$ ,比较耗时
    • faster and approximate
      • 通过有限差分来近似弯曲后的ray的方向

results

  • https://longtimenohack.com/posts/paper_reading/2020arxiv_tretschk_non/image-20210114104442878.png