目录
Block-NeRF: Scalable Large Scene Neural View Synthesis 可扩展的大场景神经视图合成
Abstract
1. Introduction
2. Related Work
2.1. Large Scale 3D Reconstruction
2.2. Novel View Synthesis
基于几何图形的图像重投影。Geometry-based Image Reprojection.
Volumetric Scene Representations.
2.3. Urban Scene Camera Simulation城市场景摄像机仿真
3.Background
3.1. NeRF and mip-NeRF Preliminaries
4. Method
4.1. Block Size and Placement块的大小和位置
4.2. Training Individual Block-NeRFs
4.2.1 Appearance Embeddings
4.2.2 Learned Pose Refifinement
4.2.3 Exposure Input曝光输入
4.2.4 Transient Objects瞬态对象
4.2.5 Visibility Prediction
4.3. Merging Multiple Block-NeRFs
4.3.1 Block-NeRF Selection
4.3.2Block-NeRF合成
4.3.3 Appearance Matching外观匹配
5. Results and Experiments
5.1. Datasets
San Francisco Alamo Square Dataset
San Francisco Mission Bay Dataset.
5.2. Model Ablations
5.3. Block-NeRF Size and Placement
5.4. Interpolation Methods
6. Limitations and Future Work
7. Conclusion
我们提出了Block-NeRF,一种神经辐射场的变体,可以代表大规模的环境。具体来说,我们演示了当缩放NeRF来渲染跨越多个块的城市规模场景时,将场景分解为单独训练的NeRF是至关重要的。这种分解将渲染时间与场景大小解耦,使渲染能够扩展到任意大的环境,并允许对环境进行每个块的更新。我们采用了几个架构上的更改,使NeRF对不同环境条件下几个月捕获的数据健壮。我们添加了外观嵌入、学习到的姿态细化和对每个单独的NeRF的可控曝光 controllable exposure,并引入了一个对齐相邻NeRF之间的外观的程序,以便它们可以无缝地组合。我们从280万张图像中构建了一个Block-NeRF的网格,以创建迄今为止最大的神经场景表示,能够渲染旧金山的整个社区。
最近在神经渲染的进展,如神经辐射场[42],使逼真的重建和新的视图合成给定一组姿势的相机图像[3,40,45]。早期的工作倾向于关注小规模和以物体为中心的重建。虽然现在有些方法处理的场景是单个房间或建筑的大小,但这些场景通常仍然是有限的,并且不能扩展到城市规模的环境。将这些方法应用于大型环境通常会导致显著的伪影和由于有限的模型容量而导致的低视觉保真度。
重建大规模环境好处。重建大规模环境使自动驾驶[32,44,68]和空中测量[14,35]等领域的几个重要用例成为可能。一个例子是映射,其中创建了整个操作域的高保真映射,以作为各种问题的强大先验,包括机器人定位、导航和避免碰撞。此外,大规模的场景重建可以用于闭环机器人模拟[13]自动驾驶系统通常通过重新模拟以前遇到的场景来评估;然而,任何偏离记录的遭遇都可能改变车辆的轨迹,需要沿着改变的路径进行高保真的新视图渲染。除了基本的视图合成,场景条件的nerf也能够改变环境照明条件,如相机曝光、天气,或一天中的时间,这可以用于进一步增加模拟场景。
重建这样的大规模环境会带来额外的挑战,包括瞬态物体(汽车和行人)的存在、模型容量的限制,以及内存和计算约束。此外,如此大环境的训练数据不太可能在一致的条件下在一次捕获中收集。相反,环境中不同部分的数据可能需要来自不同的数据收集工作,从而在场景几何形状(例如,建筑工作和停放的汽车)以及外观(例如,天气条件和一天中的时间)中引入差异。
我们扩展了具有外观嵌入和学习姿态细化的NeRF,以解决收集的数据中的环境变化和姿态错误。此外,我们还增加了暴露条件反射 exposure conditioning,以提供在推理过程中修改暴露的能力。我们将这个修改后的模型称为Block-NeRF。扩大Block-NeRF的网络容量,使其能够表示越来越大的场景。然而,这种方法有许多限制;渲染时间尺度与网络的大小,网络不能再适合单个计算设备,更新或扩展环境需要对整个网络进行再训练。
为了解决这些挑战,我们建议将大型环境划分为单独训练的Block-NeRF,然后在推理时动态地呈现和组合。独立地建模这些Block-NeRF允许最大的灵活性,可扩展到任意大的环境,并提供以分段方式更新或引入新区域的能力,而不需要重新训练整个环境,如图1所示。为了计算目标视图,只渲染Block-NeRF的一个子集,然后根据它们的地理位置进行组合。为了实现更无缝的合成,我们提出了一种外观匹配技术,通过优化它们的外观嵌入,将不同的Block-NeRF带到视觉对齐中。
图1。Block-NeRF是一种方法,通过使用多个紧凑的nerf来表示环境,每个nerf都适合于内存中,从而实现大规模的场景重建。在推理时,Block-NeRF无缝地结合了给定区域的相关nerf的渲染图。在这个例子中,我们使用3个月来收集的数据重建了旧金山的阿拉莫广场社区。Block-NeRF可以更新环境中的单个块,而无需对整个场景进行再训练,如右边的构造所示。视频结果可以在项目网站waymo.com/research/block-nerf上找到。
几十年来,研究人员一直在开发和改进从大型图像集合中进行三维重建的技术,目前的许多工作依赖于成熟和健壮的软件实现,如COLMAP来执行这项任务[55]。几乎所有这些重建方法都有一个共同的管道:提取二维图像特征(如SIFT[39]),在不同的图像上匹配这些特征,并联合优化一组3D点和相机姿态,以与这些匹配保持一致(束调整 bundle adjustment[23,65]的精心研究问题)。将这条管道扩展到城市规模的数据,在很大程度上是为了实现这些算法的高度健壮和并行化版本,正如在照片旅游[57]和在一天[1]中构建罗马等工作中所探索的那样。核心图形研究也探索了分解场景的快速高质量的渲染[38]。
这些方法通常为每个输入图像输出一个相机姿态和一个稀疏的三维点云。为了得到一个完整的三维场景模型,这些输出必须通过一个密集的多视图立体算法(如PMVS[18])进行进一步处理,以产生一个密集的点云或三角形网格。这个过程呈现了它自己的缩放困难[17]。由此产生的3D模型通常包含纹理有限或镜面反射区域的伪影或孔洞,因为它们很难在图像之间进行三角定位。因此,它们经常需要进一步的后处理来创建模型,可用于渲染令人信服的图像[56]。然而,这项任务主要是新视图合成领域,三维重建技术主要关注几何精度。
相比之下,我们的方法不依赖于大规模SfM来产生相机姿态,而是在采集图像时使用车辆上的各种传感器进行测速。
给定给定场景及其相机姿态的一组输入图像,新视图合成寻求从以前未观察到的视点渲染观察到的场景内容,允许用户以高视觉保真度在重新创建的环境中导航。
许多查看合成的方法都是通过应用传统的三维重建技术来构建表示场景的点云或三角形网格。然后,这个几何“代理”被用来将像素从输入的图像中重新投影到新的相机视图中,在那里它们被启发式[6]或基于学习的方法[24,52,53]混合。这种方法已经被扩展到第一人称视频[31]的长轨迹,沿着城市街道[30]收集的全景图,以及来自照片旅游数据集[41]的单个地标。依赖于几何代理的方法受到初始三维重建质量的限制,这损害了它们在具有复杂几何效果或反射率效应的场景中的性能。
最近的视图合成工作主要集中在统一重建和渲染,并端到端学习这个管道,通常使用体积场景表示。方法呈现小基线视图插值通常使用前馈网络学习映射直接从输入图像输出体积[15,76],而方法如神经卷[37]目标大基线视图合成运行全球优化所有输入图像重建每一个新场景,类似于传统的束调整。
神经辐射场(NeRF)[42]将这种单次优化设置与神经场景表示相结合,能够比离散的三维体素网格更有效地表示复杂的场景;然而,它的渲染模型在计算方面对大规模场景的规模非常差。后续工作提出,通过将空间划分为更小的区域,每个区域包含自己的轻量级NeRF网络[48,49],来提高NeRF网络的效率。与我们的方法不同,这些网络集合必须联合训练,这限制了它们的灵活性。另一种方法是以潜在代码[36]的粗三维网格的形式提供额外的容量。该方法还被应用于将详细的三维形状压缩为神经符号距离函数[62],并使用占用网络[46]表示大型场景。
我们在mipNeRF[3]之上构建了我们的Block-NeRF实现,它改进了混叠问题,在输入图像从许多不同距离观察场景的场景中损害了NeRF的性能。我们结合了野外NeRF(NeRF-w)[40]的技术,它在每个训练图像上添加一个潜在代码,以便在应用NeRF时添加该代码来处理不一致的场景外观。NeRF-w从数千张图像中为每个地标创建一个单独的NeRF,而我们的方法结合了许多NeRF,从数百万张图像中重建一个连贯的大环境。我们的模型还结合了一个学习到的相机姿态细化,这已经在以前的工作[34,59,66,69,70]中探索过。
一些基于nerf的方法使用分割数据来分离和重建跨视频序列中的静态[67]或移动物体(如人或汽车)的[44,73]。由于我们主要关注于重建环境本身,所以我们选择在训练过程中简单地屏蔽动态对象。
摄像头仿真已经成为在交互式平台[2,28]上训练和验证自动驾驶系统的流行数据源。早期的作品是,[13,19,51,54]从脚本场景中合成了数据,并手动创建了3D资产。这些方法存在域不匹配和场景级多样性有限的问题。最近的几项工作通过最小化模拟和渲染管道中的分布变化来解决模拟到现实的差距。Kar等人[26]和德瓦兰扬等人[12]提出通过学习场景生成框架来最小化从渲染输出到真实摄像机传感器数据的场景级分布转移。Richter等人[50]利用图形管道中的中间渲染缓冲区来提高合成生成的相机图像的照片真实性。
为了构建逼真和可扩展的相机模拟,之前的方法[9,32,68]利用丰富的多传感器驱动数据来重建三维场景对象注入[9]和新视图合成[68]使用现代机器学习技术,包括2D神经图像网络渲染。依靠复杂的surfel重建管道,SurfelGAN[68]仍然容易在图形重建中出现错误,并可能受到激光雷达扫描的有限范围和垂直视场的影响。与现有的工作相比,我们的工作解决了3D渲染问题,并能够建模在不同的环境条件下从多个驱动器捕获的真实相机数据,如天气和时间,这是重建大规模区域的先决条件。
我们基于NeRF[42]及其扩展mip-NeRF[3]。在这里,我们总结了这些方法的相关部分。详情请参考原文。
神经辐射场(NeRF)[42]是一种基于坐标的神经场景表示,通过可微的渲染损失进行优化,以再现来自已知相机姿态的一组输入图像的外观。优化后,NeRF模型可以用于呈现以前看不见的视点。
NeRF场景表示是一对多层感知器(MLPs)。第一个MLP fσ接受一个三维位置x,并输出体积密度σ和一个特征向量。这个特征向量与二维观看方向d连接,并输入第二个MLP fc,输出RGB颜色c。这种结构确保了从不同角度观察输出颜色可以变化,允许NeRF表示反射和光滑材料,但由σ表示的底层几何图形只是位置的函数。
图像中的每个像素对应于通过三维空间的光线r(t) = o + td。为了计算r的颜色,NeRF沿着射线随机采样距离{ti}Ni=0,并将点r(ti)和方向d通过其MLPs来计算σi和ci。所生成的输出颜色为
NeRF的完整实现是迭代地重采样点ti(通过将权重wi作为一个概率分布),以便更好地将样本集中在高密度区域。
为了使NeRF MLPs能够表示更高的频率细节[63],输入x和d每个都由一个分量正弦位置编码γPE进行预处理:
其中,L为位置编码的级别数。
NeRF的MLP fσ采用一个3D点作为输入。然而,这既忽略了相应图像像素的相对足迹,也忽略了沿包含该点的光线r的间隔长度 [ti−1,ti],导致在呈现新的相机轨迹时产生混叠伪影。MipNeRF[3]通过使用投影像素足迹沿射线采样conical frustums来解决这个问题,而不是间隔。为了将这些frustums输入MLP,mip-NeRF将每个frustums近似为参数µi、Σi的高斯分布,并用其对输入高斯的期望代替位置编码γPE
被称为集成的位置编码。
当试图代表像城市这样大的场景时,训练一个NeRF是不规模化的。相反,我们建议将环境分割成一组Block-NeRF,它们可以并行地独立训练,并在推理过程中进行组合。这种独立性允许使用额外的block-nerf来扩展环境或更新块,而无需对整个环境进行重新培训(参见图1)。我们动态地选择相关的Block-NeRF来进行渲染,然后在穿越场景时以平滑的方式进行合成。为了帮助这种合成,我们优化了外观代码以匹配照明条件,并使用基于每个Block-NeRF到新视图的距离计算的插值权值。
应安排单独的Block-NeRF,以确保目标环境的全面覆盖。我们通常在每个十字路口放置一个Block-nerf,覆盖十字路口本身和任何连接街道的75%,直到它收敛到下一个十字路口(见图1)。这导致在连接街道段上的任何两个相邻街区之间有50%的重叠,使它们之间的外观对齐更容易。遵循此步骤表示块大小可变;必要时,可引入其他块作为交叉点之间的连接器。通过应用一个地理过滤器,我们确保每个块的训练数据完全保持在其预期的范围内。这个过程可以被自动化,并且只依赖于基本的地图数据,如开放的街道地图[22]
请注意,其他放置启发式,只要整个环境被至少一个Block-NeRF覆盖,也是可能的。例如,在我们的一些实验中,我们将一个街区以均匀的距离放置块,并将块大小定义为Block-NeRF原点周围的球体(见图2)。
图2。场景被分割成多个Block-NeRF,每个块都在一个特定的Block-NeRF原点坐标(橙色点)的某个半径(虚线橙色线)内的数据上进行训练。要在场景中渲染目标视图,将计算给定半径内的所有nerf的可见性贴图。具有低可见性的Block-NeRF将被丢弃(底部的Block-NeRF),并为其余的块呈现颜色输出。然后根据每个块原点到目标视图的距离合并渲染图。
考虑到我们的数据的不同部分可能在不同的环境条件下被捕获,我们遵循NeRF-W[40],并使用生成潜在优化Generative Latent Optimization[5]来优化周围图像外观嵌入向量,如图3所示。
图3。我们的模型是mip-NeRF[3]中提出模型的扩展。第一个MLP fσ预测了空间中一个位置x的密度σ。该网络还输出一个特征向量,它与观看方向d、曝光水平和一个外观嵌入连接起来。这些被输入到第二个MLP fc中,输出该点的颜色。此外,我们还训练了一个可见性网络fv来预测空间中的一个点是否在训练视图中可见,这是用于在推理过程中剔除Block-NeRF。
这使得NeRF可以解释几种外观变化的条件,比如不同的天气和照明。此外,我们还可以操纵这些外观嵌入,以在训练数据中观察到的不同条件之间进行插值(如多云和晴朗的天空,或白天和晚上)。在图4中可以看到具有不同外观的渲染示例。在4.3.3中,我们对这些嵌入使用测试时间优化test-time optimization来匹配相邻的Block-NeRF的外观,这在组合多个渲染时非常重要。
图4。外观代码允许模型表示不同的照明和天气条件。
虽然我们假设提供了相机的姿态,但我们发现学习正则化的姿态偏移 regularized pose offsets有利于进一步对齐。在以前的基于NeRF的模型[34,59,66,70]中已经探索了姿态细化。这些偏移量由每个驱动段学习,并包括平移和旋转分量。我们与NeRF本身一起优化这些偏移,在训练的早期阶段显著地正则化偏移,以允许网络在修改姿态之前首先学习一个粗糙的结构。
训练图像可以在广泛的曝光水平上被捕获,如果不考虑,这可能会影响NeRF训练。我们发现,将相机曝光信息输入到模型的外观预测部分,可以让NeRF补偿视觉差异(见图3)。具体来说,曝光信息被处理为γPE(shutter speed × analog gain/t快门速度×模拟增益/t ),其中γPE是一个具有4个水平的正弦位置编码,t是一个比例因子(我们在实践中使用1000)。在图5中可以找到一个不同的学习暴露的例子。
图5。我们的模型以exposure为条件,这有助于解释训练数据中出现的暴露变化。这允许用户在推理过程中以人类可解释的方式改变输出图像的外观。
虽然我们的方法使用外观嵌入来解释外观的变化,但我们假设场景的几何形状在整个训练数据中是一致的。任何可移动的物体(如汽车、行人)通常都违反这一假设。因此,我们使用语义分割模型[10]来生成常见的可移动物体的掩模,并在训练过程中忽略掩模区域。虽然这并不能考虑到环境中其他静态部分的变化,例如构造,但它适应了最常见的几何不一致geometric inconsistency类型。
当合并多个Block-NeRF时,知道在训练过程中对 给定的NeRF 是否可见一个特定的空间区域 是很有用的。我们用一个额外的小MLP fv来扩展我们的模型,该模型被训练来学习一个采样点的可见性的近似值(见图3)。对于沿着训练射线的每个样本,fv取位置和视图方向,并回归相应的点的透射率(式2中的Ti)。该模型与提供监督的fσ一起进行训练。透射率表示一个点对特定输入相机的可见程度:自由空间或第一个相交物体表面的点的透射率接近1,而第一个可见物体内部或后面的点的透射率接近0。如果一个点从某些角度能看到,而从其他角度不能,回归透射率值将是所有训练摄像机的平均值,在0到1之间,表明该点被部分观察到。我们的能见度预测类似于斯里尼瓦桑等人[58]提出的能见度场。然而,他们使用MLP来预测环境照明的可见性,目的是恢复可恢复的NeRF模型,而我们则预测训练射线的可见性。
可见性网络很小,可以独立于颜色和密度网络运行。当合并多个nerf时,这被证明是有用的,因为它可以帮助确定特定的NeRF是否可能为给定位置产生有意义的输出,如4.3.1所解释。可见性预测还可以用于确定在两个nerf之间执行外观匹配的位置,详见4.3.3。
该环境可以由任意数量的Block-NeRF组成。为了提高效率,我们使用两种过滤机制来只呈现给定目标视点的相关块。我们只考虑在目标视点的设定半径范围内的Block-NeRF。此外,对于每个候选项,我们计算相关的可见性。如果平均可见性低于一个阈值,我们将丢弃Block-NeRF。图2提供了一个可见性过滤的示例。可见性可以快速计算,因为它的网络独立于彩色网络,并且不需要在目标图像分辨率下进行渲染。在过滤之后,通常会有一到三个Block-NeRF有待合并。
我们从每个过滤后的block-nerf中渲染彩色图像,并使用相机原点c和每个Block-NeRF的中心xi之间的逆距离加权 inverse distance weighting在它们之间进行插值。具体来说,我们计算各自的权重为,其中p影响Block-NeRF渲染之间的混合速率。插值是在二维图像空间中完成的,并在Block-NeRF之间产生平滑的过渡。我们还探讨了5.4中的其他插值方法。
在Block-NeRF训练后,我们学习模型的外观可以通过外观潜在代码来控制。这些代码在训练过程中被随机初始化,因此,相同的代码在输入不同的Block-NeRF时,通常会导致不同的外观。这在合成时是不可取的,因为它可能会导致视图之间的不一致。给定一个在其中一个Block-NeRF中的目标外观,我们的目标是匹配它在其余块中的外观。为了实现这一点,我们首先在相邻的Block-NeRF对之间选择一个三维匹配位置。对于两个Block-NeRF,这个位置的能见度预测都应该很高。
给定匹配位置,我们冻结Block-NeRF网络的权重,只优化目标的外观码,以减少各自区域呈现之间的l2损失。这种优化非常快速,可以在100次迭代内收敛。虽然不一定会产生完美的对齐,但这个过程会将场景的大多数全局和低频属性对齐,如一天中的时间、颜色平衡和天气,这是成功合成的先决条件。图6显示了一个优化示例,其中外观匹配将白天的场景转换为夜间,以匹配相邻的Block-NeRF。
图6。当基于多个Block-NeRF渲染场景时,我们使用外观匹配来获得整个场景的一致外观。给定其中一个Block-NeRF的固定目标外观(左图像),我们优化相邻的Block-NeRF的外观以进行匹配。在这个示例中,外观匹配会在Block-NeRF中产生一致的夜间外观。
优化后的外观在场景中迭代传播。从一个根Block-NeRF开始,我们优化相邻根块的外观,并从那里继续这个过程。如果围绕一个目标Block-NeRF的多个块已经被优化,我们在计算损失时考虑每个块。
在本节中,我们将讨论我们的数据集和实验。架构和优化的细节在补充部分中提供。该补充还提供了从COLMAP[55]重建的比较,一种传统的结构从运动方法。这种重建是稀疏的,不能代表反射表面和天空。
我们在专门为大尺度场景的新视图合成任务而收集的数据集上进行实验。我们的数据集是使用数据收集车辆在公共道路上收集的。虽然已经存在一些大规模的驱动数据集,但它们并不是为视图合成任务而设计的。例如,一些数据集缺乏足够的相机覆盖范围(例如,KITTI[21],城市景观[11]),或者优先考虑视觉多样性而不是重复观察目标区域(例如,NuScenes[7],Waymo开放数据集[61],艺术控制[8])。相反,它们通常是为对象检测或跟踪等任务而设计的,其中跨驱动器的类似观察可能会导致泛化问题。
我们捕获了长期序列数据(100秒或更多),以及在几个月内在特定目标区域重复捕获的不同序列。我们使用从12个相机中捕获的图像数据,它们总共提供了360°的视图。其中8个摄像头提供了从车顶拍摄的完整的环绕视图,另外4个摄像头位于车辆前方,指向前方和侧面。每个相机以10hz的频率捕捉图像,并存储一个标量曝光值。车辆姿态已知,所有摄像头都经过校准。利用这些信息,我们计算了一个公共坐标系中相应的相机射线起源和方向,也考虑了相机的滚动快门。如4.2.4中所述,我们使用语义分割模型[10]来检测可移动的对象。
我们选择旧金山的阿拉莫广场社区作为我们的可扩展性实验的目标区域。该数据集占地面积约为960m,×570m,记录于2021年6月、7月和8月。我们将这个数据集划分为35个Block-NeRF。渲染图和Block-NeRF放置如图1所示。为了更好地欣赏重建的规模,请参考补充视频。每个Block-NeRF都接受了38到48次不同的数据收集数据训练,每次训练的总时间为18到28分钟。在过滤掉一些冗余的图像捕获(例如静止捕获)后,每个Block-NeRF都要对64,575到108,216张图像进行训练。整个数据集由13.30次不同数据采集运行的13.4小时的驾驶时间组成,总共有2,818,745张训练图像。
旧金山任务湾数据集。我们选择旧金山的任务湾区作为我们的基线、街区大小和放置实验的目标区域。任务湾是一个具有挑战性的几何形状和反射立面的城市环境。我们在第三街发现了一段能见度很远的长路段,使它成为一个有趣的测试用例。值得注意的是,该数据集是在2020年11月的一次捕获中记录的,具有一致的环境条件允许进行简单的评估。该数据集记录了超过100秒,其中数据收集车辆行驶了1.08公里,总共从12个摄像机中捕获了12000张图像。我们将发布这个单捕获数据集来帮助再现性。
我们从阿拉莫广场数据集的单个交集上取消了模型修改。我们在表1中报告了用于测试图像重建的PSNR、SSIM和LPIPS[75]指标。测试图像被垂直地分成两半,外观嵌入在一半上进行优化,在另一半上进行测试。我们还在图7中提供了定性的示例。Mip-NeRF单独不能正确地重建场景,并且容易添加不存在的几何形状和多云的伪影来解释外观上的差异。
当我们的方法没有使用外观嵌入进行训练时,这些工件仍然存在。如果我们的方法不进行姿态优化训练,生成的场景就会更加模糊,并且可能会包含重复的对象。最后,曝光输入略微改善了重建,但更重要的是为我们提供了在推理过程中改变曝光的能力。
表1。在阿拉莫广场数据集中的单个交叉口上,不同的Block-NeRF组件的消融。我们展示了mip-NeRF作为基线的性能,以及从我们的方法中去除单个成分的效果。
我们比较了任务湾数据集的性能与使用的Block-NeRF的数量。我们在表2中显示了细节,其中根据粒度,Block-NeRF大小从小到54m到544m不等。我们确保每对相邻的块重叠50%,并比较补充部分中的其他重叠百分比。
表2。比较不同数量的Block-NeRF来重建任务湾数据集。将场景分割成多个Block-NeRF可以提高重建精度,即使保持权重总数不变(底部部分)。块的数量决定了每个块所训练的区域的大小以及推理时的相对计算费用。
所有这些图像都是在跨越整个轨迹的同一组保留的测试图像上进行评估的。我们考虑了两种机制,一种是每个Block-NeRF包含相同数量的权值(顶部部分),另一种是所有Block-NeRF的权值总数是固定的(底部部分)。在这两种情况下,我们都观察到增加模型的数量可以改善重建度量。在计算费用方面,训练过程中的并行化是微不足道的,因为每个模型都可以跨设备进行独立优化。在推理时,我们的方法只需要在目标视图附近呈现Block-NeRF。根据场景和NeRF的布局,我们通常会渲染一到三个NeRF。我们报告了每个设置中的相对计算费用,而没有假设任何并行化,但这是可能的,并导致额外的加速。我们的结果表明,将场景分割成多个较低容量的模型可以降低总体计算成本,因为并不是所有的模型都需要进行评估(见表2的底部部分)。
我们在表3中探讨了不同的插值方法。只渲染最近的BlockNeRF到相机的简单方法需要最少的计算量,但在块之间转换时会导致严重的跳跃。如4.3.2所述,通过在相机和Block-NeRF中心之间的逆距离加权(IDW),可以平滑这些过渡。我们还探索了IDW的一种变体,其中插值是在由预期的Block-NeRF深度预测的投影三维点上进行的。当深度预测不正确时,该方法就会失效,导致伪影和时间不相干。
最后,我们实验使用了基于每像素和每幅图像的预测可见性来加权Block-NeRF。这产生了更远区域的更清晰的重建,但容易出现时间不一致。因此,这些方法最好只在渲染静止图像时使用。进一步的细节见附录。
该方法通过在训练过程中进行掩蔽过滤来处理瞬态对象。如果对象没有被正确地屏蔽,它们可能会在结果渲染中产生工件artifacts。例如,汽车的阴影经常仍然存在,即使汽车本身被正确地去除。植被也打破了这一假设,因为树叶随季节变化并在风中移动;这导致了树木和植物的模糊表现。同样,训练数据中的时间不一致,如施工工作,也不会自动处理,需要对受影响的区块进行人工再训练。此外,目前无法渲染包含动态对象的场景,这限制了Block-nerf对机器人技术中的闭环仿真任务的适用性。在未来,这些问题可以通过在优化[40]过程中学习瞬态对象,或直接建模动态对象[44,67]来解决。特别是,场景可以由环境的多个Block-NeRF和单个可控对象nerf组成。通过使用分割掩模或边界框,可以促进分离。
在我们的模型中,场景中遥远的物体的采样密度与附近物体的密度不同,从而导致更模糊的重建。这是关于采样无界体积表示sampling unbounded volumetric representations的一个问题。在NeRF++[74]和并发的Mip-NeRF360[4]中提出的技术可能被用于产生更清晰的远处物体的渲染。
在许多应用程序中,实时渲染是关键,但nerf的计算代价昂贵(每张图像可达数秒)。几种NeRF缓存技术[20,25,72]或稀疏体素网格[36]可以用于实现实时Block-NeRF渲染。类似地,多个并行的工作已经演示了通过多个数量级的[43,60,71]来加速训练NeRF风格表示的技术。
在本文中,我们提出了Block-NeRF,一种使用nerf重建任意大环境的方法。我们通过在旧金山的280万张图像中构建整个社区,形成迄今为止最大的神经场景表示,来证明该方法的有效性。我们通过将我们的表示分割成多个可以独立优化的块来实现这个规模。在这样的尺度下,收集到的数据必然会有瞬态的对象和外观上的变化,我们通过修改底层的NeRF架构来解释这一点。我们希望这能启发未来使用现代神经渲染方法进行大规模场景重建的工作。