当前位置: 首页 > 科技观察

为了自动驾驶,谷歌用NeRF在虚拟世界中重建了旧金山市

时间:2023-03-18 01:11:51 科技观察

对于自动驾驶,谷歌使用NeRF在虚拟世界中重建了旧金山市凭借自己的自动驾驶出租车车队,Nvidia创建了NVIDIADRIVESim平台,这是一个用于大规模训练的虚拟环境。近日,谷歌AI和谷歌旗下自动驾驶公司Waymo的研究人员实践了一个新思路。他们试图用280万张街景照片重建整个旧金山城市的3D环境。通过大量的街景图像,谷歌研究人员构建了一个Block-NeRF网格,完成了迄今为止最大的神经网络场景表示,并渲染了旧金山的街景。研究提交给arXiv后,JeffDean立即转发介绍:Block-NeRF是神经辐射场的一种变体,可以表征大规模环境。具体而言,该研究表明,当扩展NeRF以渲染跨越多个街区的城市场景时,将场景分解为多个单独训练的NeRF至关重要。这种分解将渲染时间与场景大小分离,使渲染能够扩展到任意大的环境,并允许逐块更新环境。该研究采用了多项架构更改,使NeRF对几个月内在不同环境条件下捕获的数据具有鲁棒性,添加了外观嵌入、学习姿势细化和对每个单独NeRF的可控曝光,并提出了一种用于对齐相邻NeRF之间的外观以实现无缝连接的程序作品。是加州大学伯克利分校的研究人员在ECCV2020上发表的一篇论文,获得了最佳论文提名。它提出了一种隐含的3D场景表示,区别于显示场景表示(如点云、栅格网格),其原理是解决任何穿过场景的光的颜色,从而渲染出2D场景画面综合了一个新的视角。NeRF可以在给定一组姿势相机图像的情况下实现逼真重建和新颖的视图合成。NeRF的早期工作倾向于专注于小规模和以对象为中心的重建。尽管现在有方法可以重建单个房间或建筑物大小的场景,但这些方法的范围仍然有限,无法扩展到城市规模的环境。由于模型容量有限,将这些方法应用于大型环境通常会导致明显的伪像和低视觉保真度。大尺度环境重建在自动驾驶、航测等领域具有广阔的应用前景。例如,创建大比例尺高保真地图,为机器人定位导航等应用提供先验知识。此外,自动驾驶系统通常通过重新模拟以前遇到的场景来评估,但是与记录的任何偏差都可能改变车辆的轨迹,因此需要沿路径进行高保真视图渲染。除了基本的视图合成外,场景条件NeRF还能够改变环境照明条件,例如相机曝光、天气或一天中的不同时间,这些可用于进一步增强模拟场景。论文链接:https://arxiv.org/abs/2202.05263项目链接:https://waymo.com/intl/zh-cn/research/block-nerf/如上图所示,作者提出的Block-NeRF谷歌这次是一种利用多个紧凑的NeRF表示环境进行大规模场景重建的方法。在推理时,Block-NeRF无缝组合给定区域的相关NeRF的渲染。上面的示例使用3个月内收集的数据重建了旧金山的阿拉莫广场社区。Block-NeRF可以在不重新训练整个场景的情况下更新环境的各个块。重建如此大规模的环境带来了额外的挑战,包括瞬态物体(汽车和行人)的存在、模型容量的限制以及内存和计算限制。此外,在一致的条件下,极不可能在一次捕获中收集到如此大环境的??训练数据。相反,环境不同部分的数据可能需要来自不同的数据收集工作,引入场景几何(例如,建筑工作和停放的汽车)以及外观(例如,天气状况和一天中的不同时间)的差异。方法本研究通过外观嵌入和学习姿势细化来扩展NeRF,以应对收集到的数据中的环境变化和姿势错误,同时还向NeRF添加曝光条件,以提供在推理过程中修改曝光的能力。添加这些变化后的模型被研究人员称为Block-NeRF。扩展Block-NeRF的网络容量将能够表征越来越大的场景。然而,这种方法本身有很多局限性:渲染时间随网络的大小而变化,网络不再适合单个计算设备,更新或扩展环境需要重新训练整个网络。为了应对这些挑战,研究人员建议将大型环境划分为多个单独训练的Block-NeRF,然后在推理时动态渲染和组合它们。对这些Block-NeRF单独建模可以实现最大的灵活性,扩展到任意大的环境,并提供以分段方式更新或引入新区域的能力,而无需重新训练整个环境。要计算目标视图,只需渲染Block-NeRF的一个子集,然后根据它们相对于相机的地理位置将它们合成。为了实现更无缝的合成,谷歌提出了一种外观匹配技术,通过优化外观嵌入来视觉对齐不同的Block-NeRF。图2:重建的场景被分成多个Block-NeRF,每个Block-NeRF在特定Block-NeRF原点坐标(橙色点)的某个原型区域(橙色虚线)内的数据上进行训练。该研究在mipNeRF之上构建了一个Block-NeRF实现,它改善了由从许多不同距离查看场景的输入图像引起的损害NeRF性能的混叠问题。研究人员结合了NeRFintheWild(NeRF-W)的技术,该技术在将NeRF应用于PhotoTourism数据集中的地标时,为每个训练图像添加了一个潜在代码,以处理不一致的场景外观。NeRF-W从数千张图像中为每个地标创建单个NeRF,而谷歌的新方法结合了许多NeRF,从数百万张图像中重建连贯的大环境,并结合学习相机姿态细节的变化。图3.新模型是mip-NeRF中提出的模型的扩展。一些基于NeRF的方法使用分割数据来隔离和重建视频序列中的静态和动态对象(例如人或汽车)。由于研究的重点是重建环境本身,因此在训练期间只需选择动态对象以将其屏蔽掉。为了在遍历场景时动态选择相关的Block-NeRF以平滑的方式渲染和合成它们,谷歌优化了外观代码以匹配光照条件,并使用根据每个Block-NeRF到新视图的距离计算的插值权重.重建效果鉴于不同部分的数据可能在不同的环境条件下被捕获,该算法遵循NeRF-W并使用生成潜在优化(GLO)来优化perimageappearanceembeddingvector。这使得NeRF可以考虑多种外观变化条件,例如天气和光照的变化。这些外观嵌入也可以被操纵以在训练数据中观察到的不同条件之间进行插值(例如多云与晴空,或白天与夜晚)。图4.外观代码允许模型展示不同的光照和天气条件。整个环境可以由任意数量的Block-NeRF组成。为了提高效率,研究人员使用两种过滤机制来仅渲染给定目标视点的相关块。这里只考虑目标视点设定半径内的Block-NeRF。此外,系统会计算每个候选人的相关可见性。如果平均可见性低于阈值,则丢弃Block-NeRF。图2提供了可见性过滤的示例。可以快速计算可见性,因为它的网络独立于颜色网络并且不需要以目标图像分辨率进行渲染。经过过滤后,通常会有1到3个Block-NeRFs进行合并。图5.谷歌的模型包括曝光条件,这有助于解释训练数据中存在的曝光变化,允许用户在推理过程中以人类可解释的方式改变输出图像的外观。为了重建整个城市场景,研究人员在拍摄街景时捕捉了长时间序列(超过100秒),并在特定目标区域连续几个月重复捕捉不同序列。谷歌使用从12个摄像头捕获的图像数据,这些摄像头共同提供360°视图。其中八个摄像头提供了车顶的完整环绕视图,四个摄像头位于车辆前部,分别指向前方和两侧。每个相机以10Hz的频率捕获图像并存储标量曝光值。车辆姿态已知,所有相机都经过校准。有了这些信息,该研究就可以在一个共同的坐标系中计算出相应的相机光线原点和方向,同时考虑到相机的卷帘快门。图6.当基于多个Block-NeRF渲染场景时,该算法使用外观匹配来获得整个场景的一致外观。给定Block-NeRF(左)的固定目标外观,该算法优化相邻Block-NeRF的外观以匹配。在此示例中,外观匹配在Block-NeRF中产生一致的夜间外观。图7.多段数据的模型消融结果。外观嵌入有助于神经网络避免添加云几何来解释天气和照明等环境变化。移除曝光会稍微降低精度。姿势优化有助于提高结果并消除重复对象的重影,如在第一行的电线杆上观察到的那样。未来展望谷歌研究人员表示,新方法还有一些问题需要解决,比如一些车辆和阴影没有被适当去除,植被在虚拟环境中因为其外观随季节变化而变得模糊。同时,AI无法自动处理训练数据(例如建筑工程)中的时间不一致,需要对受影响的区域进行手动再训练。此外,当前无法渲染包含动态对象的场景限制了Block-NeRF在机器人闭环仿真任务中的适用性。将来,这些问题可能会通过在优化过程中学习瞬态对象或直接对动态对象建模来解决。