UNISURF: Unifying Neural Implicit Surfaces and Radiance Fields for Multi-View Reconstruction
<UNISURF>
Unisurf: Unifying neural implicit surfaces and radiance fields for multi-view reconstruction目录
Motivation
task:做了什么
- 从多视角无 mask 图像中重建表面,并且合成新视角观测
核心 insight: neural radiance model 和 neural implicit shape model 可以用一种统一的方式建模
- 更高效的 sampling 过程
- 没有 input mask (不像 DVR,IDR 那样)的情况下也可以学到精确的表面
diss 目前:
- nerf:
- cons:没有 accurate surface
- pros:对非 solid scene 也能用,比如烟雾;本文 focus on solid objects
- DVR / IDR:
- pros:可以从图像重建精确表面;
- cons:
- 需要 per-pixel mask;🤔 注意 per-pixel mask 和 sihoulette 的区别
- per-pixel mask 意味着物体上那些有空洞的区域也要扣掉;不然会被认为是背景色实体
- 网络需要适当的初始化,因为 表面渲染技术 只能在局部提供梯度信息(也就是光线和表面的交点区域) -> 不像 nerf 那样整个空间都密布着梯度
- 直觉上讲,这种利用局部梯度信息的最优化过程就是在迭代对初始形状(总是一个球)进行变形
- 需要 per-pixel mask;🤔 注意 per-pixel mask 和 sihoulette 的区别
Overview
对 nerf 的魔改:
- $\alpha(x) = 1-\exp\left(-\sigma(\mathbf{x})\delta\right)$ 直接改为 $o(x)$,
- 即把 nerf 渲染过程中的 $\alpha(x)$ 替换为$o(x)$ ,即 Occupancy field,取值 $[0,1]$,$o=0.5$ 代表表面
- 颜色场从 $c(\mathbf{x}_i, \mathbf{d})$ 改为 $c(\mathbf{x}_i, \mathbf{n}_i, \mathbf{h}_i, \mathbf{d})$,其中 $\mathbf{n}_i$ 为点 $\mathbf{x}_i$ 处的法向量,$\mathbf{h}_i$ 为点 $\mathbf{x}_i$ 处的几何场特征
- 对法向量 $\mathbf{n}_i$ 和 $\mathbf{h}_i$ 的额外依赖在 IDR 一文中有所提现
- 渲染射线采样点时:
- 考虑到,implicit surface 的一个关键假设是只有和表面的第一个交叉点对渲染有贡献;
- 但是这一点在迭代初始时,表面并没有被好好定义时,并不竟然;
- 因此,DVR 和 IDR 都需要强 mask 监督(per-pixel mask)
- 首先寻根找到交叉点,然后从交叉点出发向两侧采样
- 在刚开始的迭代,采样间隔很大,涵盖整个 volume;effectively bootstrapping
- 在迭代过程中,采样间隔逐渐变小,靠近估计的交叉点/表面点;一个随迭代代数指数衰减的积分间隔(有最小值)
- occupancy field 可以直接寻根,在根周围采样,因此也不需要 NeRF 的 hierarchical 重要度采样过程
- 笔者:而且理论上应该效果会好很多,尤其是在训练的 later 迭代里
- 考虑到,implicit surface 的一个关键假设是只有和表面的第一个交叉点对渲染有贡献;
思路:
- start at nothing that:
- nerf 中的渲染式子
- 可以被写作:
- nerf 中的渲染式子
- 考虑 solid 物体,把 $\alpha$ 这个 [0,1] 的值直接替换为一个离散的 inside/outside indicator,$o=0$代表 free space,$o=1$代表 occupied
- 这种情况下,事实上 $\hat{C}(\mathbf{r})$ 事实上就只取射线上==第一个 occupied 的点==的 $c(\mathbf{x_i}, \mathbf{d})$
- 然后稍微弱化一下这个设定,不要 $\lbrace 0,1\rbrace$ 的极端,而是取像 occupancy field 那样的 $[0,1]$ 范围值;这时,$o=0.5$ iso-surface即作为曲面表达,即得到了 accurate 表面的表面
训练
- Loss
- 图像重建 $l_1$ loss
- 表面法向量 $l_2$ 正则 $\lVert \mathbf{n}(\mathbf{x}_s) - \mathbf{n}(\mathbf{x}_s + \epsilon) \rVert$,其中$\mathbf{x}_s$ 就是渲染图像时采样的像素射线和表面的交点(直接通过寻根过程找到)
结果
Implementation
网络结构
occupancy field: $o_{\theta}$
- 类似 IDR,使用8层MLP+256 hidden +
softplus
激活 - 初始化,使得 decision boundary 是一个 sphere
- 类似 IDR,使用8层MLP+256 hidden +
radiance field: $c_{\theta}$
- 4层MLP;
一样的位置编码
最优化过程
- 采用了和 IDR / IGR 相同的
geometric init
,即保证初始化后的 implicit surface model 是一个大致的球形(sphere init
),半径可控- 笔者:intro里面diss了
geometric init
,可自己还是要用 geometric init 🐶 - 如图,初始化时最后一层
bias
为(-1)*radius
,中间还有对每层权重以及针对positional embedding
的专门处理- 搞清楚原理
- 笔者:intro里面diss了
- 随机采样 rays
- render all sampled rays
- root-finding:256均匀采样点;用
secant
方法迭代8步[32][32] Occupancy networks事实上 occupancy networks没有这个过程,作者应该是引错了,应该引他们的另外一篇论文 DVR
- interval 内 64 个 query points在 $\left[t_s-\Delta, t_s+\Delta\right]$,32 个 freespace中(camera和interval的下界之间,也就是camera $t=0$ 和 $t=t_s-\Delta$ 之间)
- 两步衰减?应该指的是学习率在200k和400k衰减两次,总共训练450k迭代
- root-finding:256均匀采样点;用
数据集
DTU
- 虽然没提,但应该仍然做了 camera 的 re-normalization 到单位球内;
- 因为训练时没有mask,所以需要建模 background;因此,实际的ROI考虑是4倍大的半径;射线采样也只在这个ROI中进行
- background is black
Indoor Scene from SceneNet
- 定义ROI,使得所有相机都位于一个 sphere 内,并且 sphere 的中心大致就是 scene 的中心
- 这里需要写一个 re-normalize 函数工具,使得所有相机形成的总visual hull的中心大致是一个sphere的中心,同时这个sphere的半径刚好把所有相机都包进去
- background is black
BlendedMVS
- background 过于复杂,使用 nerf++ 的设定,额外用一个 seperate 的 background model 可以起到很好的效果,可以 seperate foreground and background properly