论文地址:NerfDiff
Pipeline
Contributions 主要贡献:
- 开发了一个新的框架——NerfDiff,联合训练 NeRF 和 CDM,在测试时对 learned NeRF 进行finetune;
- 引入了一种高效的、以图像为条件的 NeRF 表示法,基于 camera-aligned triplanes
- 提出了一种3D-aware CDM,将体渲染纳入二维扩散模型,提高了新颖试图的泛化能力。
Training Phase
1. Single-image NeRF with Local Triplanes
回顾NeRF
NeRF简单来说就是训练了一个网络 ,其中 表示点的三维位置, 表示光线方向,输出颜色值 和密度值 ,再通过体渲染获得图像。其中,为了使网络获得高频细节,提高渲染能力,对 和 分别使用了位置编码(Positional Encoding)。
本文对NeRF的优化
图像编码器使用U-Net结构,其输出层同时包含局部信息和全局信息;最后一层输出被重塑为三平面,三平面的空间分辨率与输入图像相同,特征维度设置为48。
将图像特征 W 表示为相机坐标系下的 triplane(三平面结构) { Wxy, Wxz, Wyz }
在三个平面内进行双线性插值,每个3D点都会得到一个唯一的特征向量:
好处:
- 可以在xz, yz平面分配深度信息,不需要使用位置编码来表示空间信息
- 浅层MLP代替深层MLP,提高渲染效率
2. 3D-aware Conditional Diffusion Models
使用 NeRF 渲染出的 target-view 图像作为 CDM 的条件(而不是input-view)
渲染图像与噪声图像拼接
可以在 CDM U-Net和 图像编码器 U-Net之间使用交叉注意力机制增强条件
3. Training Loss
Loss = Rendering Loss + Denoising Loss
两个加权系数lamda都为1。
这里解释一下为什么要联合使用NeRF + CDM
如果只使用NeRF,在只有一张输入图像的条件下,NeRF对图片中物体背面的信息是完全不可见的,因此渲染出的图像会出现模糊的结果;
如果只使用CDM,diffusion model生成每个视角的图像都是独立进行的,因此会出现多视角不一致的结果。
通过将二者结合,向NeRF引入生成式的扩散模型,在未知信息的部分通过生成可以很好的解决模糊的问题;同时CDM也需要NeRF的监督和引导来实现多视角一致的结果。
Finetuning Phase
- 生成虚拟视图:根据已训练的 NeRF,生成若干个虚拟视图
- 多视角扩散:对每个虚拟视图,进行64步DDIM扩散
- 更新参数:每一步扩散过程中,更新NeRF参数(MLP 和 triplane)
NeRF Guided Distillation (NGD)
直接输出的结果包含许多模糊的细节和伪影,提出NGD,考虑多视角一致性,引入了所有虚拟视图的联合分布,经过一系列计算,得到了损失函数,即最小化所有虚拟视图中去噪图像和Nerf渲染图像之间的均方差MSE loss:
算法
Experiment
与VisionNeRF对比实验,同时做了消融实验(w/o NGD & CDM),分别是没有NGD和没有NeRF监督的消融实验,最右为Ground Truth。
Conclusion
- 提出一种单张图像进行视图合成的生成式框架——NerfDiff
- triplane结构对传统NeRF位置编码的更新
- finetune的不同策略(SDS、NGD等)