目录
前言
介绍
背景
改进 NeRF 以编码大型场景
在训练数据中获得足够的观点
动态对象移除
应用
结论
参考
最近一直在做NeRF相关工作,偶然看到台湾智慧实验室一篇文章(Hovering Around a Large Scene with Neural Radiance Field Taiwan AILabs),和我们设计方案比较相似,正好进行翻译,与大家共享。
视频一:用神经辐射场盘旋阿里山
https://youtu.be/CcnWuGi2Gh0
自 2020 年以来,神经辐射场 (NeRF) [1] 一直是计算机视觉领域的热门话题。通过使用神经网络对体积场景函数进行建模,NeRF 实现了新视图合成的最先进结果。
虽然与 NeRF 相关的方法在学术界很受欢迎,但它们尚未在产品上广泛实施以提供用户体验。本文旨在演示如何使用 Neural Radiance Field 为徘徊在大型景点周围的用户创造身临其境的体验。
神经辐射场 [1] 是一种从现有图像预测新视图的前卫方法。传统的 3D 重建方法使用网格或网格来估计场景的 3D 表示,而 NeRF 将神经网络过度拟合到单个场景,并确定每个 3D 点从该场景中的新视点看起来如何。通过光线追踪和 L2 图像构建损失,该模型试图从具有已知相机姿势的场景的多个训练图像中预测场景中每个点的颜色和体积密度。
自 NeRF 发表以来,已有多项后续研究。通过渲染锥形截头体而不是射线,Mip-NeRF [2] 无需超级采样即可消除混叠。通过以不同于近景的方式对远景进行建模,Mip-NeRF 360 [3] 和 NeRF++ [4] 在“背景场景”中获得了更好的视觉效果。通过在局部场景中存储特征,Instant-NGP [5] 和 Point-NeRF [6] 允许模型对大场景进行编码并在训练期间快速收敛。通过组合多个神经辐射场,Block-NeRF [7] 允许模型编码更大的场景,例如旧金山的整个社区。
在神经辐射场中编码大型景点的第一步是选择适合我们用例的模型结构。尽管 NeRF 在小型 360 度场景上表现出色,但由于其简单的 MLP 编码方法,在 NeRF 中编码大型复杂场景并不可行。此外,Mip-NeRF 360 和 NeRF++ 不允许用户在场景周围悬停太远,因为远景的编码方式与近景不同。最后,虽然 Block-NeRF 能够很好地对大场景进行建模,但它也需要相当多的时间和计算能力来训练。另一方面,通过将可训练的局部特征存储在哈希表中,并以相同的方式处理场景的近处和远方部分,Instant-NeRF 可以创建一个大的神经辐射场,用户可以在其中自由悬停。因此,在这个项目中,我们将利用 Instant-NGP 在场景中存储局部特征的方法。此外,我们利用 COLMAP [8] 来计算输入图像的相机姿态。然而,要编码一个景点站点并让用户徘徊,我们仍然需要在训练数据中获得足够的视点并删除动态对象。
视频 2:Instant-NeRF 在从看不见的角度推断颜色时效果不佳
https://youtu.be/gUkcSBVq-Wo
视频 3:我们的方法从多个角度提高了图像质量
https://youtu.be/_Q--G20K0W8
与传统的 3D 重建方法不同,神经辐射场允许物体从不同角度以不同颜色出现。然而,Instant-NeRF 在从看不见的角度推断颜色方面效果不佳(参见视频 2)。因此,要在 Instant-NeRF 中对场景进行编码,我们需要一种拍摄策略,使我们的模型能够从多个角度进行观察。
传统上,Instant-NeRF 假设所有训练图像都指向一个共同的焦点。然而,我们发现这种拍摄策略最适合编码对象,而不是大场景。在拍摄大型场景时,我们可能并不总是在图像之间有一个可见的共同焦点。此外,我们可能需要更灵活的技术来对大型复杂场景进行编码,因为它们通常包含更复杂的对象和遮挡区域。
为了获得足够多的不同角度,我们开发了一种新的拍摄透视输入图像的拍摄方法。为了详细说明,我们都围绕场景拍摄 360° 内部视频和不同高度的电影,以便模型有足够的信息来预测不同角度的颜色。然后我们以每秒 2 帧的速度对视频进行采样,以确保 COLMAP 获得足够的通用特征来计算相机姿势。
此外,我们的系统支持360°视频的输入。传统上,Instant-NeRF 和 COLMAP 仅支持透视输入数据。据我们所知,我们是第一个使用 360° 视频训练 Instant-NeRF 的公司。一般来说,人们不会考虑适合 Instant-NeRF 训练的前向行走 360° 视频,因为即使没有遮挡空间,它们也缺乏共同的焦点。然而,我们发现 360° 视频可以为大场景编码带来很好的结果,因为它满足两个条件:COLMAP 具有足够的通用特征来匹配帧,Instant-NeRF 具有用于插值颜色的各种训练数据对于空间中的每个点。在使用来自 Taiwan Traveler 的 360° 视频时,我们首先将采样的全景视图转换为透视图像。一种常见的方法是将球形 360° 图像投影到六面立方体贴图上。我们发现 COLMAP 可以准确估计立方体贴图图像的相机位姿。因此,我们可以将等距柱状图像转换为 Instant-NeRF 支持的格式并产生高质量的结果。此外,我们提供了在室外场景中转储垂直图像的选项,因为它们通常包含很少的场景信息,并且可能会因误导相机姿势而破坏模型。对于 360° 视频,我们发现使用更简单的拍摄技术可以获得更好的效果。
图 1:将 360° 等距柱状图像(左)转换为立方体贴图(右)。立方体贴图中的垂直图像(上下图像)通常包含较少的场景信息
图2:透视(左)和360°(右)拍摄方式,绿色金字塔为相机位置
在对热门网站进行编码时,场景中很可能会有很多人或汽车在四处走动。移动对象对 Instant-NeRF 和 COLMAP 来说可能是一个挑战,因为它们都假设输入数据是静态的。
为了解决这个问题,我们利用预训练的图像分割模型 DeeplabV3 [9] 来掩盖流行的移动物体,例如人和汽车。根据我们之前的工作 [10],我们还可以获得摄影师的面具。然后,在训练 Instant-NeRF 期间提取用于计算相机姿势的特征和光线追踪时,我们忽略了那些被遮盖的对象。
图 3:使用 DeeplabV3 屏蔽流行的动态对象
由于能够在拍摄视频后编辑摄像机路径,导演现在可以仅基于一组训练图像创建许多具有不同摄像机路径的新颖视频。我们集成了开源 WebGL 点云查看器 Potree[11] 和 Instant-NeRF 来开发一个允许创作者编辑所需相机运动的工作室。具体来说,在对整个旅游景点进行编码后,Potree 将 COLMAP 输出的稀疏点可视化,以便创作者可以分配相机路径并使用工作室制作身临其境的悬停视频。
https://youtu.be/ZrQiJOXWdDQ
https://youtu.be/EtnGwrjsHJ8
视频 6、7:在 Potree 中分配相机路径(上),然后渲染具有新奇视角的视频(下)
为了实现 Instant-NeRF 以获得实时的交互式体验,我们在具有高 GPU 内存的本地设备上部署了 Instant-NeRF。此外,我们可以通过结合人体姿态估计让用户身临其境地在场景中飞行。
在这篇文章中,我们演示了如何在神经辐射场中对大型场景进行编码,并让用户随后编辑相机路径或以交互方式绕场飞行。我们通过开发一个管道来实现它,该管道可以将 360 度和透视视频转换为具有新颖路径的新视频。我们还提供了有关编码大场景的拍摄技术的指南,并解决了在现场实施神经辐射场时遇到的常见问题,例如路径分配和动态对象移除。
https://youtu.be/soZG65RNRXI
https://youtu.be/tj-_r8oxejM
https://youtu.be/saqYu1DhQbc
https://youtu.be/4B5Q-AfUmQE
视频8~11:用Instant-NeRF 盘旋台湾著名旅游景点。从上到下分别是高雄驳二艺术特区、香山游客中心、台北车站、日月潭