3D生成技术路线(零)--NeRF的变体-工具人的命运(NeRF--Neus--SparseNeus)

这个路线主要3D生成方向中是NeRF及自身的一些变体,这些变体会被后续算法作为工具使用/改进。

一. NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis

https://www.bilibili.com/video/BV1CC411V7oq/?spm_id_from=333.999.0.0&vd_source=c0f01552982e68d65da90507bc5d21cb

二. NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction

三. SparseNeuS:Fast Generalizable Neural Surface Reconstruction from Sparse Views(ECCV2022)

1. 背景

NeuS等算法利用nueral rendering同时优化implicit geometry和radiance field。但缺点是:
a. 需要大量多视角下输入图片
b. 需要大量时间的per-scene优化,不能泛化到其他场景中
SparseNeus解决了这两个问题:可以泛化到其他场景,且2/3张图即可。

2.方法

在这里插入图片描述

2.1 Geometry reasoning

Geometry encoding volume
对一个拍摄了N个视图{Ii}i=0N−1\{I_i\}_{i=0}^{N-1}{Ii}i=0N1的场景,先estimate一个bounding box,然后构建一个geometry encoding volume。
a.用户在配置文件预设一个bounding box的维度,例如[96,96,96]。在代码中,还做了一个mask,即世界坐标系点投影到UV平面后,要在图像中,以及要在camera坐标系中,在camera前面。
b.随后,每个视角的图片通过一个2D特征提取网络获得特征{Fi}i=0N−1\{F_i\}_{i=0}^{N-1}{Fi}i=0N1
c.依据每个图片的相机参数,可以将bounding box的每个顶点投影到{Fi}i=0N−1\{F_i\}_{i=0}^{N-1}{Fi}i=0N1中,插值得到Fi(πi(v))F_i(\pi_i(v))Fi(πi(v)),其中πi(v)\pi_i(v)πi(v)是在{Fi}\{F_i\}{Fi}中的投影点,Fi(πi(v))F_i(\pi_i(v))Fi(πi(v))简写为Fi(v)F_i(v)Fi(v)
d. 计算每个顶点投影特征Fi(πi(v))F_i(\pi_i(v))Fi(πi(v))的方差,构建一个cost volume B,然后用一个sparse 3D CNN ψ\psiψ聚合成geometry encoding volume M
Surface extraction
对任意一个试探点qqq,concat这个点的位置编码PE(q)PE(q)PE(q)和它插值后在geometry encoding volume对应的特征M(q)M(q)M(q),然后利用一个MLP网络fθf_\thetafθ,获得预测的SDF值。
在这里插入图片描述
cascaded volume scheme
coarse阶段的SDF可以帮助优化Geometry encoding volume,即:根据sdf值,远离coarse表面的顶点舍弃。
同时精修,构建分辨率更高的Geometry encoding volume。

2.2 Appearance prediction

由于只有稀疏视角,不能像NeRF一样直接回归出颜色。本文:对于某个试探点,先投影到几个稀疏视角中得到对应颜色{Ii(q)}i=0N−1\{I_i(q)\}_{i=0}^{N-1}{Ii(q)}i=0N1,然后将这些点的颜色混合得到最后q点的预测颜色。

混合权重
混合权重的选择重点在于输入图片的photography consistency。
a. 将试探点q头投影到每个输入图片对应的特征图中并双线性插值得到Fi(q)F_i(q)Fi(q)
b. 计算Fi(q)F_i(q)Fi(q)的均值和方差,用于获得photographic consistency information
c. concat每个Fi(q)F_i(q)Fi(q)和均值和方差,输入一个tiny MLP网络,得到新的特征Fi′(q)F_i^\prime(q)Fi(q)
d. Fi′(q)F_i^\prime(q)Fi(q),volume encoding feature M(q)M(q)M(q),query ray和第i个输入图片的viewing direction的角度差Δdi=d−di\Delta d_i=d-d_iΔdi=ddi输入到新的一个MLP网络得到混合权重。
在这里插入图片描述
e.得到的混合权重通过softmax归一化

Pixel-based color blending
有了混合权重,即可得到某个ray direction中,像素的颜色值。
随后利用NeuS的SDF-based volume rendering进行渲染。

虽然pixel-based color blending可以得到高校的几何表面推理,在输入比较稀疏时,像素级别的信息is local and lacks contextual information。所以会导致不一致的表面。

patch-based color blending
改善pixel-based color blending的缺点,采用了patch-based color blending。其实就是让一个块的混合weights相同
传统方法比较直接,可以选取k×kk\times kk×k个点的块,query k2k^2k2个ray,通过某些算法(例如取平均),这个块中获得同样的blending weights,这样会带来很大的计算成本。
因此,本文采用了local surface plane assupmtion和homography transformation来实现高效patch-based color blending。
方法:先选择试探点qqq,根据SDF网络s(q)s(q)s(q)计算梯度nq=∇s(q)n_{q}=\nabla s(q)nq=s(q),在局部平面(垂直法线方向的一个n*n区域,实验选择5*5)采样一些点,投影到几个视角中,通过插值得到颜色值(应该是用了上述混合权重的计算得到插值权重)。计算混合权重时,选取一个点计算就行,其他局部点共享权重。
体渲染
在这里插入图片描述
就是NeuS的体渲染公式,并包括了像素混合和块混合。

notes:以上train好后,即可固定参数,通过输入新的稀疏视角进行推理,得到sdf的预测,通过neus中的函数可以转化为密度的预测,加上blending weights的预测可以得到空间中采样粒子的颜色,从而相当于feed-forward泛化出新的neural field

2.3 Per-scene fine-tuning

2.1中训练的sdf可以作为generalizable priors,在新场景中得到初步的surface预测,这一步进一步进行微调增强效果。

微调的改进:
a. 优化 fine-level阶段的geometry encoding volume以及SDF网络fθf_\thetafθ
b. 2D 特征提取网络和3D sparse CNN继续冻结
c. blending network选用tiny MLP,输入为试探点qqq的位置编码,ray direction ddd的位置编码,surface的法向nqn_qnq,SDF值s(q)s(q)s(q)以及geometry encoding volume M(q)M(q)M(q)
{wiq}i=0N−1=fc′(PE(q),PE(d),nq,s(q),M(q))\{w_{i}^{q}\}_{i=0}^{N-1}=f_{c}^{\prime}\left(\mathrm{PE}(q),\mathrm{PE}(d),n_{q},s(q),M(q)\right){wiq}i=0N1=fc(PE(q),PE(d),nq,s(q),M(q))

consistency-aware loss
不同视角下,由于遮挡、图片噪声污染,有些投影点会有不一致的情况(不同投影点没有对应一个空间点),当然就会对重建结果造成很大影响。因此本文提出了一种自动检测不一致投影情况的损失函数,将这些区域排除在优化过程中。
在这里插入图片描述

其中,
在这里插入图片描述

DpixD_{pix}DpixDpatD_{pat}Dpat分别为L1L_1L1 loss和Normalized Cross Correlation(NCC)loss,衡量距离
CrC_{r}CrC~(r)\tilde{C}\left(r\right)C~(r)为pixel-based rendered color的预测和GT。
PrP_{r}PrP~(r)\tilde{P}\left(r\right)P~(r)为patch-based rendered color的预测和GT。
思路为:如果不一致,那么颜色差会很大,距离损失函数值会比较大,加上倒数第二项,就会倒逼降低O(r)O(r)O(r)的值趋近于0,达到排除的效果。
最后两项的系数作为更多排除/留下,渲染结果中更复杂/干净的tradeoff。

2.4 training loss

训练时不依赖3D surface point的GT值。
在这里插入图片描述
在finetuning前,由于geometry还不是很好,给(3)最后两项关于是否排除该点的信息不够多,这两项没有使用。
在finetuning阶段加上了。
在这里插入图片描述
是正则项,用于规定SDF的梯度为1。
在这里插入图片描述
正则项,用于将不是0的SDF值绝对值变大,所以提取表面时不会出现不可控的情况(是因为没有监督射线经过的表面后被表面前遮挡的监督造成的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值