🐧企鹅小弟继续带大家读读cvpr2024的论文喽~
碎碎念:这篇文章可以说很有意思,但是第一遍读的时候真的很头疼zzz 项目地址:platonerf.github.io/
一起来看看demo效果吧
这篇文章是CVPR2024 Oral文章。先一起看看看他们重建后的demo,最左边的为本文方法重建的模型。能很好的重建出物体的细节。
作者的心路历程
对于XR用户来说,保持对场景的完整且最新的扫描是繁琐的。因此,需要能够从单视图或少量视图中恢复几何结构的方法。
方法一览:
PlatoNeRF是使用单个视角通过雷达光的反射信息进行三维重建。回忆往常的NeRF方法,都是围绕图片环绕一周采取数据,然后进行三维重建的。这种固定视角的三维重建方法十分新颖,雷达提供了传感器信息。反射光线同时也会提供场景中被遮挡的信息。收集这些激光图像然后进行重建,就得到了最后的PlatoNeRF。
这个方法相比于其他重建方法的优势是,这个单视角最后生成的并不是相对深度。而是包含了物理信息的绝对深度。让PlatoNeRF有很强的实用意义。也就是更加真实了!在本文里,使用了雷达和双次反射采集数据进行NeRF的重建。
- 为什么要使用雷达:激光雷达系统通常向场景发射光并测量光返回传感器的飞行时间(ToF)。激光雷达系统利用从场景返回传感器的第一次反弹光,提供精确的绝对深度,如果利用双次反弹飞行时间,即光在返回传感器前在场景中反射两次的时间,可以实现被遮挡物体的重建。
- 为什么要双次反射:双次反射光的存在或缺失揭示了阴影,从而可以推断被遮挡的几何结构。
双次反射光的存在或缺失揭示了阴影,从而可以推断被遮挡的几何结构,而其ToF则揭示了深度。这两者结合在一起,使用双次反射激光雷达的意义就不言而喻了。说白了双次反射激光雷达有缺点,NeRF有缺点。两个方法结合起来。就可以左脚踩右脚直接登天噜。
NeRF重建图片获取
既然是NeRF,小伙伴们都会想知道。该如何取得NeRF重建所需要的图像呢?这里作者也给了解答。
还是要用到激光雷达系统,激光雷达系统包括一个位于已知位置的 SPAD 传感器和一个位于已知位置 的脉冲激光器。激光器依次指向 K 个不同的点 A = {}。对于每个照明点 ,捕获一张图像,最终形成一组 张图像的集合 。这样不就有了一组数据了嘛。数据也在作者的图1里画出来了,就长这样:
开始渲染
现在要开始渲染的一环了,整体渲染流程由三部分组成:初始光线渲染,次光线渲染。重建。为了能得到真实的重建结果,我们对两条光线都进行渲染。把要渲染的整个场景参数化为一个神经辐射场(NeRF)。多层感知器(MLP)函数
为每个输入的三维场景点 预测体积密度 。然后可以直接从 中估计场景的三维几何结构。开发一个渲染器,将密度 映射到预测的瞬态图像 来合成瞬态图像。这些合成的瞬态测量数据可以在分析-合成框架中用来训练 NeRF。
为了渲染双跳瞬态,我们必须沿两种类型的射线进行渲染:(1) 主要射线和 (2) 次要射线。主要射线定义为
次要射线定义为
渲染第一条光线
又要用到这张图了~对于第一条光线来说,我们的目标是通过确定(看右边那张图,二次反射平面上的点)的深度。通过深度进一步计算这条反射路径的飞行时间。当已知时,、也可以被计算了。因为、、都已知。我们就可以通过:
首先我们先对第一条光线上从近到远采样个点,并使用MLP查询这几个点的深度信息。也就是通过这几个点的NeRF获取深度,这也是NeRF的性质。查询到的密度是。做完这些准备工作之后就可以开始计算了。在前文铺垫了很多,但最终的目的是要得到这个深度。它的深度信息通过:
得到,其中:
,
在这里,是沿着光线两个采样点之间的距离,的求解方程可以理解成离散化对期望的积分。是光线到这点停止的概率。是透射率。总而言之,我们通过这些流程,先通过神经网络得到计算ToF,并且能得到对应的深度信息。
渲染第二条光线
再来看这个图,渲染第二条光线的目的是确定是否在阴影里,也就是对阴影的预测。能从图里很明显的看出紫色的线条是第二条光线。我们直观来想,如果处于阴影中,那么次级光线密度会很高。要不然就会很低。
我们用这个公式来表示不处于阴影中的概率,这个公式代表了二条光线的透射率,透射率较低代表处于阴影中。而且对于这个光线来说,因为它是两次反射间的光线。拿右图举例子,它是一条处于到间的光线。可以由此确定远平面和近平面(光从哪里来,到哪里去)。因此渲染第二条光线的目的就是为了确定阴影。
结合两条光线
除了渲染好光线,我们更需要把渲染结果结合起来进行重建工作,具体来说分两种损失对MLP进行训练。
- 距离loss:距离loss使用欧氏距离的平方来衡量。公式如下:
在这里,是瞬态测量的ToF,而是NeRF预测后计算的ToF。这个距离loss我们只会在无阴 影上进行计算,对有阴影的像素。二次反射都不会存在。但是我们仍然可以估计有阴影场景的深度,因为随 时间的推移,阴影也会转化成不是阴影的场景。
- 阴影loss:
阴影损失确定瞬态观测值和渲染值之间的欧式距离平方作为第二个损失。
- loss确定:
β 是一个超参数。一旦 MLP 在这个损失函数上训练完毕,可以通过密集采样 3D 场景点并在这些点上查询 MLP 来提取预测的体积密度。结果密度可以用于从任何视点渲染深度图。这个损失函数虽然形式简单,但仅 使用基于物理的测量而无需数据先验,就能重建可见和被遮挡的场景。
来看看渲染结果吧
文章提供了预测深度在训练视角和新测试视角上的定性结果,比较了文章的方法、BF Lidar 和 S³–NeRF 与四个场景中的真实数据的对比。每种方法都从展示的一个训练视角进行训练,并重建整个场景。
总结
PlatoNeRF在自动驾驶、扩展现实(XR)等领域有着广泛的应用潜力。例如,在XR游戏中,虚拟物体的物理行为可以更加真实地反映被遮挡的几何结构。此外,该方法适用于室内场景,特别是在需要多表面反射光的情况下。总的来说,PlatoNeRF通过结合NeRF和双跳跃激光雷达技术,实现了单视图下更为准确和物理真实的3D重建,展示了在现实应用中的潜力。