(水一篇博客)
项目主页
BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis
作者介绍
- 是 Mildenhall 和 Barron 参与的工作(都是谷歌的),同时一作是 Lipman 的学生,VolSDF 的一作。
- 本文引用了很多其他文章的方法,Mildenhall 和 Barron 等的论文Mip-NeRF 360,以及VolSDF的方法。
- 采用了 Instant-NGP 为中介来学习处于顶点位置的参数然后再固定到顶点上。
任务
重建大型无界现实世界场景的高质量网格,适用于逼真的新颖视图合成。(新视图合成,还是与NeRF有关,事实上本文基于Mip-NeRF 360的方法实现)
方法
- 首先优化混合神经体积-表面场景表示,设计为具有与场景中的表面相对应的表现良好的水平集。(结合VolSDF的方法)
- 然后,将这种表示烘焙成高质量的三角形网格,并为其配备基于球形高斯的简单且快速的依赖于视图的外观模型。
- 最后,优化这个烘焙表示以最好地再现捕获的视点,从而产生一个可以利用加速多边形光栅化管道在商用硬件上进行实时视图合成的模型。
要点
提出了一种新方法 BakedSDF,用于重建大型无界真实世界场景的高质量网格,以进行实时视图合成;
用混合神经体-表面场景表示法,为准确的表面重建进行了优化,然后 bake 成具有与视图相关的外观模型的三角形网格;
BakedSDF 在精度、速度和功耗方面优于之前的实时渲染场景表示,可产生高质量的网格,使下游应用如外观编辑和物理模拟成为可能;
该系统可以在消费级设备上以实时帧率进行渲染,产生的网格准确而详细,可以实现标准的图形应用。
实现过程
-
第一阶段是把 Mip-NeRF 360 塞进了 VolSDF 中然后加了很多实现上的细节,其中 VolSDF 还做了改进,融合了 Ref-NeRF[9] 的 appearance 处理,实现了更好的高亮效果。
这里是用了VolSDF的方法,把密度用SDF表示。
-
第二阶段就是从训好的 VolSDF 中提取 mesh,作者意识到了 VolSDF 中有偏的问题,所以在做 Marching Cubes 的时候调整了一下阈值 (0 -> 0.001)。此外,BakedSDF 也考虑了可视的问题,所以做了 visibility culling 策略避免在看不见的区域生成不必要的 mesh。而对于不可视区域产生的空洞,BakedSDF 则用区域生长策略将其补全。具体细节见章节 4.2,同时还有细节请参考附录 B。
-
最后一步则是利用 spherical Gaussian lobes 构建 view-dependent appearance。BakedSDF 为mesh 的每个顶点都设置了漫反射颜色项 c d c_d cd,( c d c_d cd应该可以查询参考了 Ref-NeRF[9] 的 VolSDF 直接获得,或者作为一个初始化)和一组 spherical Gaussian lobes (单位球内区域每个顶点三个 lobes,单位球外则为一个 lobe)。因此每个顶点的着色写作:
C = c d + ∑ i = 1 N c i e x p ( λ i ( μ i ∗ d − 1 ) ) C=c_d+\sum^N_{i=1}c_iexp(\lambda_i(\mu_i*d-1)) C=cd+i=1∑Nciexp(λi(μi∗d−1))然后根据上述顶点着色,固定 mesh,仅优化每个顶点的着色参数 c d , c i , λ i , μ i c_d,c_i,\lambda_i,\mu_i cd,ci,λi,μi,其中梯度反传需要考虑像素在三角面片上的重心坐标,反传到相应的顶点上。
由于 mesh 的顶点数量过多,不可能全部放进 GPU 中同时优化,BakedSDF 也采用了 Instant-NGP 为中介来学习这些处于顶点位置的参数然后再固定到顶点上。
参考文献
NeRF Baking 系列工作个人总结
VolSDF(Volume Rendering of Neural Implicit Surfaces)论文阅读笔记
Nvidia最新三维重建技术Instant-ngp初探