为了确保自动驾驶汽车在行驶中能够安全、可靠地执行任务,了解周围环境的变化至关重要。近年来,一些技术能够通过分析摄像机图像来估计周围物体的位置和分布,这对于理解大规模场景的结构非常有帮助。
然而,这些技术主要关注的是当前的3D空间,对于未来物体可能的位置和状态并没有太多考虑。
为了解决这个问题,最近,毫末智行联合上海交大、国防科大、北京理工大学提出了一种新的方法,叫做Cam4DOcc。
这是一个专门为仅使用摄像头进行4D占用预测而设计的基准测试,用于评估未来一段时间内周围场景的变化。
Cam4DOcc基准测试的目标是使用摄像头图像作为输入,预测当前和未来短时间内(通常是几秒内)的3D空间占用状态。
包括对一般可移动物体(GMO)和一般静态物体(GSO)的占用状态进行预测。预测任务又分为多个级别,从预测膨胀的GMO到预测精细的GMO、GSO和自由空间。
Cam4DOcc基准测试为自动驾驶中的4D占用预测提供了一个标准化的评估平台,使研究人员能够比较不同算法的性能。通过这些测试,研究人员可以更好地理解和改进自动驾驶系统在理解和预测周围环境方面的能力。
毫末预测,自动驾驶领域中下一个重要的挑战将是仅使用摄像头进行4D占据预测。这项技术不仅可以通过摄像头图像扩展时间上的占据预测,还要在BEV格式和预定义类别之外拓展语义/实例预测。
该论文的主要核心贡献包括:
提出了Cam4DOcc基准,这是第一个促进基于摄像头的4D占用预测未来工作的基准。
通过利用现有数据集,提出了自动驾驶场景中预测任务的新数据集格式。
提供了四种新颖的基于摄像头的4D占用预测基线方法,其中三种是现成方法的扩展。
还引入了一个新颖的端到端4D占用预测网络,展示了强大的性能,为研究者提供了有价值的参考。
论文引入了标准化评估协议,并通过Cam4DOcc基于该协议进行了全面的实验和详细的分析。
下面我们来详细剖析这篇论文。
01.
解锁自动驾驶时空预测的超能力
该论文首先提出了一个新的数据集格式。
该格式基于现有的数据集(包括nuScenes、nuScenes-Occupancy和Lyft-Level5)进行了扩展和调整,这样就可以适应4D占用预测的需求,这里需求就包括关于可移动和静态物体的连续占用状态,以及它们的3D向后向心流的信息。
下图为以原始和Scenes-Occupancy为基础,在Cam4DOcc中构建数据集的整体流程。
通过利用现有数据集,提出了自动驾驶场景中预测任务的新数据集格式被重组为一种新颖的格式,既考虑了一般的活动类别,也考虑了静态类别,用于统一的四维空间占用预测任务。
如下图所示,论文首先将原始nuScenesnu分割成时间长度为N = Np+Nf+1的序列。然后按顺序对可移数据集动物体进行语义和实例注释,并收集到 GMO 中。
包括自行车、公共汽车、汽车、建筑、摩托车、拖车、卡车和行人,它们都被转换为当前坐标系(t = 0)。
之后,再对当前3D空间进行体素化,并使用边界框注释语义/实际标签附加到可移动对象的网格。
值得注意的是,在此过程中,一旦出现以下情况,无效实例就会被丢弃。
(1)如果它是 Np 个历史帧中新出现的对象,则其可见性在 6 个摄像机图像中低于 40%
(2)它首先出现在 Nf 个传入帧中或者
(3)它超出了在 t = 0 时预定义的范围(H,W,L)。可见性通过相机图像中显示的实例的所有像素的可见比例来量化[29]。基于恒定速度假设[22]、[44],利用顺序注释来填充缺失的中间实例。相同的操作也适用于 Lyft-Level5 数据集。
最后,论文作者利用Lyft-Level5数据集生成3D中的实例关联生成三维向心流。利用此3D流来提高基于摄像头的4D 占用预测的准确性。
该论文的目标不仅是预测GMO的未来位置,还要估计GSO的占用状态和安全导航所需的自由空间。因此,作者们又进一步将原始nuScenes中的顺序实例注释与从nuScenes-Occupancy转换到当前帧的顺序占用注释连接起来。这种组合平衡了自动驾驶应用中下游导航的安全性和精度。GMO标签借鉴了原始nuScenes的边界框标注,可以看作是对可移动障碍物进行了膨胀操作。GSO 和免费标签由nuScenes-Occupancy提供,专注于周围大型环境的更细粒度的几何结构。
介绍完数据集,接下来是评估协议。为了充分发挥仅使用摄像头的 4D 占用预测性能,作者在 Cam4DOcc 中建立了具有不同复杂程度的各种评估任务和指标。
论文在标准化评估协议中引入了四级占用预测任务:
(1)预测膨胀的GMO:所有占用网格的类别分为GMO和其他,其中来自nuScenes和LyftLevel5的实例边界框内的体素网格被注释作为GMO。
(2)预测细粒度GMO:类别也分为GMO和其他,但GMO的注释直接来自nuScenes-Occupancy的体素标签,去除了第2节中介绍的无效网格。
(3)预测膨胀的GMO、细粒度GSO和自由空间:类别分为来自边界框注释的GMO、遵循细粒度注释的GSO和自由空间。
(4)预测细粒度GMO、细粒度GSO和自由空间:类别分为GMO和GSO,均遵循细粒度注释,和自由空间。由于 Lyft-Level5 数据集缺少占用标签,因此作者仅对其第一个任务进行指标评估。对于所有四个任务,作者使用交并集(IoU)作为性能指标。作者分别评估当前时刻 (t = 0) 占用率估计和未来时间 (t ∈ [1, Nf ]) 预测:
其中St'和St分别表示时间戳t处的估计体素状态和真实体素状态,更接近当前时刻的时间戳的IoU对最终的IoUf贡献更大。这符合“接近时间戳的占用预测对于后续运动规划和决策更为重要”的yuan。
接下来,论文作者们又提出了四种基线。
为了建立一个全面比较的基准,基于摄像头的感知和预测功能,论文引入了四种不同类型的基线方法。
这些方法包括静态世界占用模型、点云预测的体素化、基于2D-3D实例的预测。这些基线方法为论文提供了一个框架,以便可以比较和评估各种方法在当前和未来占用估计方面的性能。
静态世界占用模型可以理解为一种假设环境在短时间内保持不变的简单方法。在这种假设下,当前估计的占用网格可以作为所有未来时间步的预测。这种方法仅基于静态世界假设,即在预测的时间范围内,场景中的物体不会发生显著的运动变化。(如下图)
点云预测的体素化是指将点云预测的结果转换为体素(voxel)表示的一种方法。
一般这个过程涉及几个步骤:
深度估计:首先,使用环视摄像头捕获的图像,通过深度估计算法生成连续的周围视图深度图。
点云生成:接着,通过射线投射(ray casting)技术,将深度图转换为3D点云。这个过程模拟了激光雷达(LiDAR)的工作原理,通过多个摄像头的深度信息来重建三维空间中的点。
点云预测:使用现有的点云预测方法(如PCPNet)来预测未来时间步的3D点云。这些方法通常基于当前的点云数据,通过学习点云随时间变化的模式来预测未来的点云。
语义分割:预测得到的点云通过语义分割算法(如Cylinder3D)进行处理,以提取可移动和静态物体的点级标签。
体素化:最后,将预测得到的点云转换为体素表示,即将每个点映射到一个三维网格中,形成占用网格(occupancy grid)。这样,每个体素代表一个空间体积,其值表示该空间是否被物体占据。
这种方法的关键作用在于,它能够将点云预测的结果转换为一种适合于占用预测的格式,即体素化表示。通过这种方式,可以更好地评估和比较不同预测方法在自动驾驶场景中对动态和静态物体未来状态的预测能力。
基于2D-3D实例的预测指的是一种基于实例的预测方法,它使用环绕视图摄像头来预测近未来的语义场景,包括车辆、行人等动态物体的位置和运动。这种方法是作为Cam4DOcc基准中的一个基线提出的,用于评估和比较不同的4D占用预测方法。
当然,在智驾网看来,基于2D-3D实例的预测方法也有一定局限性。
这个方法涉及到2D实例预测的步骤,2D实例预测是指使用2D鸟瞰图(BEV)格式的实例预测算法(如PowerBEV)来预测动态物体在未来时间步的语义分布。这些算法直接从多视图2D摄像头图像中提取BEV特征,并结合时间信息来估计未来的实例分布。
局限就在于它依赖于2D BEV格式的预测,并且假设所有动态物体在同一高度上运动,这可能不适用于所有场景,特别是在复杂的城市环境中。
上述三种基线在执行任务过程中都存在局限性,因为不能直接预测未来三维空间的占用状态,它们需要额外的后处理——根据现有结果扩展和转化为四维空间占用预测。
因此,论文也提出了端到端的4D占用预测网络OCFNet。
02.
OCFNet:端到端4D占用预测的创新
OCFNet能够直接从摄像头图像中预测3D空间的未来占用状态,而不需要依赖于2D到3D的转换。
OCFNet通过接收连续的环绕视图摄像头图像,能够同时预测当前占用状态和未来占用变化。该网络利用多帧特征聚合模块和未来状态预测模块,不仅预测了物体的占用状态,还预测了物体的运动流,为自动驾驶车辆提供了更为丰富和精确的信息。
最后论文结果分析,OCFNet的性能在多个任务上超过了第一段分析的三个基线方法(静态世界占用模型、点云预测的体素化、2D-3D实例基础预测)。
比如下图中的实验任务是预测nuScenes和LyftLevel5上的GMO。这里OpenOccupancy-C、PowerBEV和OCFNet仅使用膨胀的GMO标签进行训练,而PCPNet则通过整体点云进行训练。OCFNet和OCFNet†优于所有其他基线,在 nuScenes上的IoUf和IoUf'上超过基于BEV的方法12.4%和13.3%。在Lyft-Level5上,作者的OCFNet和OCFNet†在 IoUf和IoUf'方面始终优于PowerBEV-3D 20.8%和21.8%。
下图显示了OCFNet和CFNet†对nuScenes GMO占用率进行预测的结果,这表明仅使用有限数据训练的OCFNet仍然可以合理地捕获GMO占用网格的运动。此外,预测对象的形状在未来的时间步长中会显著失去一致性。OpenOccupancy-C的性能远优于点云预测基线,但与PowerEBV-3D和OCFNet相比,估计当前占用率和预测未来占用率的能力仍然较弱。
通过在提出的Cam4DOcc基准上运行所有基线方法,作者收集了详细的性能数据。评估指标包括交并比IoU和视频全景质量(VPQ),这些指标衡量了模型在当前和未来时间步的占用预测准确性。
结果表明,OCFNet在多个任务上都取得了更高的IoU分数,这表明在预测当前和未来的占用状态方面更为准确。
为了进一步证明OCFNet的优势,作者还进行了消融研究,展示了网络中不同组件(如流预测头)对性能的贡献。
下图实验表明,在当前和未来的占用率估计中,完整的OCFNet比没有流预测头的OCFNet增强了约 4%。原因可能是 3D 流程指导学习每个时间间隔的 GMO 运动,从而帮助模型确定下一个时间戳中占用估计的变化。
简单来讲,OCFNet的优势在于,通过端到端的方式直接预测未来的占用状态,减少了传统方法中的伪影,提供了更准确的预测结果。
尽管OCFNet取得了显著的成果,但如若应用在未来的工作上,对于更长时间段内多个移动物体的预测,论文认为这一任务仍然具有挑战性。不过未来的工作可以在此基础上进一步提高预测的准确性和鲁棒性。
03.
说到最后,端到端的技术兴起背后
马斯克的第一性原理同样可以化套用在自动驾驶的能力上。
如果从第一性原理来讲,自动驾驶就是一个序列到序列的映射过程,输入的是一个传感器信号序列,可能包括多个摄像头采集到的视频、Lidar采集到的点云、GPS、IMU 等各类信息,输出的是一个驾驶决策序列,例如可以是驾驶动作序列,也可以输出轨迹序列再转为操作动作。
这个过程与大部分AI任务基本一致,这种映射过程就相当于一个函数y= f(x),但实现这种函数难度较大,任务复杂,一般解决方式包括分治法、端到端、传统分治法等。
端到端的方式原理最为简单——直接寻找一个函数实现y=f(x)。
相比之下,端到端自动驾驶不进行任务切分,希望直接输入传感器数据、输出驾驶决策(动作或者轨迹),从而抛弃传统自动驾驶里的感知、预测、规划、控制等各类子任务。这种方式有明显的优势,例如:
•效果上:不但系统更简单,还能实现全局最优。
•效率上:由于任务更少,避免了大量重复处理,可以提高计算效率。
•数据收益:不需要大量的人工策略、只需要采集足够多的优质驾驶数据来训练即可,可以通过规模化的方式(不断扩展数据)来不断提升系统的能力上限。
一个典型的端到端自动驾驶系统如图所示:
输入:大部分自动驾驶汽车都装载了摄像头、Lidar、毫米波雷达等各类传感器,采集这些传感器的数据,输入深度学习系统即可。
输出:可以直接输出转向角、油门、刹车等控制信号,也可以先输出轨迹再结合不同的车辆动力学模型,将轨迹转为转向角、油门、刹车等控制信号。
可见,端到端自动驾驶系统就像人类的大脑,通过眼睛、耳朵等传感器接收信息,经过大脑处理后,下达指令给手脚执行命令……但是这种简单也隐藏了巨大的风险,例如可解释性很差,无法像传统自动驾驶任务一样将中间结果拿出来进行分析;对数据的要求非常高,需要高质量的、分布多样的、海量的训练数据,否则 AI 就会实现垃圾进垃圾出。
与传统的自动驾驶方式对比可见,同样的输入、同样的输出,传统自动驾驶包含多个任务(多个模块),但是端到端只有一个任务。此处容易产生一个误区,即认为传统的自动驾驶是多模块的、端到端自动驾驶是单模块的,把分模块与分任务的概念搞混了。
传统的自动驾驶是分任务的,必然是多个模块。端到端自动驾驶可以用单模块来实现,当然也可以用多模块来实现,其区别在于是否端到端训练。分任务系统是每个任务独立训练、独立优化、独立测评的,而端到端系统是把所有模块看成一个整体进行端到端训练、端到端测评的。
例如2023年CVPR best paper提出的UniAD就是一种分模块端到端训练方式,这种方式通过端到端训练避免了多任务训练的融合难题实现全局最优,又保留了分模块系统的优势、可以抛出中间模块的结果进行白盒化分析,反而更具灵活性对部署也更友好,如图所示:
分任务的自动驾驶系统更像model centric系统,开发者通过不断优化各个模型来提升各个任务的效果。而端到端自动驾驶则更像data centric系统,通过对数据的调优来提升系统效果。
早年,由于自动驾驶积累的数据还非常少,端到端系统的效果往往比较差。最近几年,随着带高阶辅助驾驶功能的量产车大规模落地,通过海量量产车可以采集到丰富的驾驶数据,覆盖各类场景,再加上最近几年 AI 算力的蓬勃发展,端到端自动驾驶在海量数据、海量算力的加持下,取得了突破性进展。
以特斯拉为例,通过遍布全球的几百万辆量产车,可以采集到足够丰富、足够多样的数据,再从中选出优质数据,在云端使用数万张 GPU、以及自研的 DOJO 进行训练和验证,使得端到端自动驾驶能够从 paper 变成 product。
到 2023 年初,特斯拉就声称已经分析了从特斯拉客户的汽车中收集的1000万个视频片段(clips),特斯拉判断完成一个端到端自动驾驶的训练至少需要100万个、分布多样、高质量的clips才能正常工作。
特斯拉通过分布在全球的几百万量产车,基于影子模式,每当自动驾驶决策与人类司机不一致时,就会采集并回传一个 clip,已经累积了 200P 以上的数据,不管是数据规模、数据分布还是数据质量上都遥遥领先。为了能在云端处理这些数据,当前特斯拉拥有近10万张A100,位居全球top5,预计到今年底会拥有100EFlops的算力,并针对自动驾驶自研了Dojo,在算力上同样遥遥领先。
端到端的挑战比当前带来的惊喜感要更多。
从特斯拉的开发经验来看,端到端自动驾驶门槛颇高,其所需的数据规模、算力规模远远超出国内企业的承受能力。