点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
论文作者 | Tong Qin
编辑 | 自动驾驶之心
大规模重建战略要地:数据
NeRF等方法使用神经网络来表示场景,能够生成高保真和真实感的图像合成。这些方法能够处理稀疏的3D点云和密集的表面,适用于虚拟现实(VR)、增强现实(AR)和自动驾驶模拟等领域。这些方法需要大量高质量的数据来生成准确和真实的3D模型,数据获取成本高。对于大规模城市建模,依赖专门设计的高精度数据收集设备,难以扩展。
众包是一种在短时间内以相对较低的成本收集大量数据的有效方式。众包数据收集成本低,数据流稳定且恒定,适合大规模城市3D重建和更新。NeRF-W等方法成功地使用互联网照片集合来生成静态模型,证明了众包数据的潜力。但众包数据中存在大量冗余,增加了存储和计算资源的负担。数据的质量和传感器类型的差异影响了NeRF重建的准确性,需要预处理、标准化和校准技术来减轻这些差异。

为了解决上述挑战,CS-NeRF(Crowd-Sourced NeRF)[1] 利用无数生产车辆捕获的数据通过NeRF模型重建场景。首先,空间-时间选择器过滤大量的众包数据,去除冗余并保持空间和时间的平衡分布。图像进一步分为多个类别。动态场景被掩盖以提高SfM和NeRF训练过程的准确性。使用逆投影来估计地面像素的深度,这作为深度监督。由于车辆上缺乏高精度的定位设备,数据的姿态不准确且噪声较大。执行SfM以精确定位每张图像。NeRF模型在深度监督、遮挡补全以及序列外观嵌入下进行训练。最后,将NeRF模型应用于一个实际应用,第一视角导航,将场景与导航信息一起合成以提供清晰的指导。

整个框架如图2所示。众包数据收集了大量数据并通过空间和时间上的平衡分布进行过滤。然后,数据预处理模型对图像进行语义分割,提取地面深度,并通过运动恢复结构(SfM)优化相机姿态。NeRF训练模型时包含三个改进,即序列外观嵌入、地面深度监督和遮挡补全。
众包数据采集
数据收集平台
数据通过多个量产车辆以众包方式收集。只需要一个集成的定位系统和带有内外参校准的摄像头。大量配备了高级驾驶辅助系统(ADAS)或自动驾驶系统(ADS)的量产车辆满足硬件要求,可以作为数据收集源。图像和米级精度的全球定位数据被上传到数据收集平台。
数据选择
由于大量数据会不断聚集,数据选择管道设计旨在高效选择图像并减少冗余。数据选择管道通过分块和图像过滤来确保数据的空间和时间分布。
分块: 根据Block-NeRF[2],场景被划分为小块。众包数据根据姿态被分配到各个块。相邻块重叠20%以确保一致性。随后,每个块可以训练一个单独的神经网络,从而实现并行处理并减少整体训练时间。
图像过滤: 在每个块中,图像根据以下原则自动过滤:
较小比例的运动物体: 我们通过语义分割识别运动物体。运动物体比例超过40%的图像被过滤掉。
稳定的姿态估计: 理论上,优化后的姿态不应偏离太远。因此,如果特定图像的姿态在优化后变化很大,则认为该图像不可信,并被过滤掉。
数据多样性: 利用优化后的姿态和时间戳,将相似时间、位置和视点拍摄的图像聚类。每个聚类类别中仅保留少量图像。
数据预处理
语义分割
语义分割是一项成熟的技术,已经广泛应用于视觉应用中。典型的基于CNN的方法包括FCN、U-Net、SegNet、BiSeNet V2等。在本项目中采用了BiSeNet V2,它在速度和准确性之间具有良好的平衡。在BiSeNet V2中,网络分为两个分支。细节分支捕获低级细节并生成高分辨率特征,而语义分支则通过深层获取高级语义上下文。
对每张图像进行了语义分割。如图3(a)所示,图像被分割成多个语义组,例如车道、人行横道、车辆、树木、道路、停车线等。语义分割结果有两种用途:
掩盖运动物体: 运动物体(如汽车和行人)严重影响后续3D重建和NeRF模型训练的准确性。
道路表面提取: 通过分割,可以在图像平面上检测道路表面,这将在下一节用于表面深度生成。

地面深度
由于数据是在开放街道上捕获的,假设道路表面是一个大致平坦的平面。因此,道路表面可以在NeRF训练过程中提供深度监督。道路表面的深度可以通过逆投影推断出来。如图3(b)所示,逆投影过程的示意图。像素被逆向投影到地面(),从而可以获得射线的深度d。
具体来说,将车辆坐标系 下的3D点投影到2D图像平面 的公式为:

其中,和是相对于车辆中心的相机外参校准矩阵,。是相机的内参矩阵,,其中fx和fy是焦距,cx和cy代表相机主点。这个公式将3D点投影到图像平面的2D像素上。λ是一个缩放因子。我们定义车辆坐标系的原点位于地面上,因此对于地面上的点为0。给定, , , 和,可以求解和。因此可以得到射线的深度,即3D表面点与相机中心之间的距离。
稀疏3D重建
众包数据具有米级定位精度,这对于NeRF训练来说是不够的。为了解决这个问题,执行运动恢复结构(SfM)以进一步提高定位精度。采用COLMAP ,通过特征提取、特征匹配和束调整(优化相机姿态和特征位置)来优化场景的几何结构。在特征匹配步骤中进行了一些改进以提高精度:
移除动态物体上的特征: 由于动态物体(如汽车、行人、自行车等)上的无效特征会影响3D场景重建的准确性,基于分割结果移除动态物体上的特征。
使用语义标签过滤错误匹配对: 仅保留具有相同语义标签的匹配对。例如,属于道路或建筑的特征被视为内点。
此外,为了提高SfM姿态优化过程的有效性,还做了一些改进:
使用先验姿态指导特征匹配: 由于每张图像都有米级精度的位置,先验姿态可以指导特征匹配,而不是穷尽搜索。只对邻近的候选图像进行特征匹配。
在束调整中采用先验姿态: 先验姿态被采用以保证优化的正确性并加速收敛。
因此,众包图像的定位达到了厘米级精度,可以用于进一步的NeRF训练。
NeRF训练
序列外观嵌入
众包数据由不同车辆在不同时间捕获。图像风格的一致性可能导致重建性能不佳。传统算法为每张图像分配一个外观嵌入向量。虽然外观嵌入解决了重建的歧义,但高自由度使得模型在单张图像中学习到一些随机性,如阴影。我们不是为每张图像分配外观嵌入向量,而是为每个序列分配外观嵌入向量。换句话说,同一序列(由同一摄像机在同一行程中捕获的图像)共享同一个嵌入向量,而不是为每张图像使用一个外观嵌入向量。因此,我们减少了外观嵌入的维度并减少了随机性。模型学习了一系列图像的共同风格,而不是为某一图像学习特定模式。
地面深度监督
在典型的NeRF训练过程中,像素的颜色受到监督,而场景的几何结构被忽略。由于缺乏几何监督,新的视图中通常会有许多浮动伪影。生成击中地面表面的光线深度。这个深度用于监督以提高几何质量。通过监督光线的密度分布使其看起来像狄拉克函数,如图4所示。

深度损失函数定义为:

其中 是狄拉克函数。最终损失是所有光线的颜色损失和击中路面光线的深度损失的总和:

在添加深度损失后,渲染的深度比没有深度监督的深度更平滑,如图8所示。

遮挡补全
虽然使用语义分割来掩盖动态物体(如猫、行人、骑自行车者),但由于缺乏有效的监督,掩盖区域可能会产生黑洞。如图10所示,渲染视图中车辆遮挡区域会出现黑影。为此,我们用附近的地面填充掩盖区域的深度。因此,掩盖区域得到有效监督,地面重建的质量得到提高,如图10所示。

3D导航
通过利用 NeRF 模型,可以用任何虚拟元素渲染新视图。在这个复杂的交通交叉口渲染了一条指引线,这可以为用户提供第一视角的导航体验。如图 1(b) 所示,一条参考线被渲染在视图上,以生动地引导驾驶员,如何通过指导标记渲染新视图以实现第一视角导航。
指导标记生成
除了图像,还通过众包平台收集了车辆的轨迹。如图 12 所示,在一个交叉口内收集了多个驾驶路径。经验丰富的驾驶员的驾驶路径可以用来指导新手驾驶员。因此,我们选择了一些平滑的轨迹,并将它们作为复杂十字路口路线的指导标记。

新视图渲染
整个过程在算法1中以伪代码的形式详细说明。

首先,与正常渲染过程相同,对每条光线执行公式(3)。其次,如果光线与标记相交,将标记的颜色添加到该像素上。叠加颜色的公式为:

其中 是标记的恒定颜色值, 是用于阿尔法合成的常数比例。在实现中使用 以实现透明外观。
然而,在某些地方,指导标记被场景遮挡。因此需要特别处理遮挡。如图 13(a) 所示,如果光线在标记之前终止,换句话说,光线的深度短于标记,我们确定发生了遮挡。光线将保持原始颜色。否则,光线将叠加标记的颜色。如图 13(b) 所示的新视图中带有遮挡标记的示例。通过这种方式,可以实现第一视角的导航体验,同时驾驶员可以自由在线改变视角。

如图 14 所示,将其与传统导航工具 Amap 进行了比较。Amap 仅为用户提供固定角度视图的二维图片。然而,本系统可以为用户提供类似真实场景的真实图片。此外,视角可以任意改变,例如前视图和俯视图,从而为用户提供更清晰的体验。

实验效果








总结一下
Crowd-Sourced NeRF是从多个生产车辆捕获的数据中训练NeRF模型的一种众包框架。这种方法解决了大规模重建的关键问题:数据来源。本方法结合了多个改进,例如地面监督、遮挡补全和序列外观嵌入,以提高性能。最终,基于NeRF模型的3D第一视角导航应用于实际场景。
限制和未来工作:
现实变化:在NeRF重建过程中处理现实变化(时间不一致性)是一个挑战。需要准确识别和纳入临时变化(例如车道重绘)和长期变化(例如道路扩建)
隐私问题:由于用户数据的性质,需要解决隐私问题。实施适当的数据处理和匿名化措施以确保用户隐私和数据安全。
数据质量和传感器差异:不同平台上的数据质量和传感器类型的差异会影响NeRF重建的准确性。采用数据预处理、标准化和校准技术来减轻这些差异并确保一致的数据质量。
参考
[1] Crowd-Sourced NeRF: Collecting Data from Production Vehicles for 3D Street View Reconstruction
[2] Block-nerf: Scalable large scene neural view synthesis
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)

② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵