UniAD
摘要
现代自动驾驶系统的特征是按顺序的模块化任务,即感知、预测和规划。为了执行广泛多样的任务并实现高级智能,现代方法要么为单个任务部署独立模型,要么设计具有独立头部的多任务范式。然而,他们可能会受到累积错误或任务协调不足的影响。相反,我们认为,为了追求最终目标,即自动驾驶汽车的规划,应该设计和优化一个有利的框架。针对这一点,我们重新审视感知和预测中的关键组成部分,并对任务进行优先级排序,使所有这些任务都有助于规划。我们介绍了统一自动驾驶(UniAD),这是一个最新的综合框架,将全栈驱动任务集成在一个网络中。它经过精心设计,可以利用每个模块的优势,并从全球角度为代理交互提供互补的功能抽象。任务通过统一的查询接口进行通信,以便于彼此进行规划。我们在具有挑战性的nuScenes基准上实例化了UniAD。通过广泛的消融,使用这种哲学的有效性在各个方面都大大优于以往的艺术水平。代码和模型是公开的。
引言
随着深度学习的成功发展,自动驾驶算法被组装成一系列任务,包括感知中的检测、跟踪、映射;以及预测中的运动和占用预测。尽管针对不同任务分别使用单独模型这样的设计简化了跨团队的研发难度,但由于优化目标的隔离,它暴露了跨模块的信息丢失、错误积累和特征错位的风险。
图1。自动驾驶框架的各种设计比较。(a)大多数工业解决方案针对不同的任务部署单独的模型。(b) 多任务学习方案与划分的任务负责人共享骨干。(c) 端到端范式将感知和预测模块结合在一起。先前的尝试要么在(c.1)中采用对规划的直接优化,要么在(c.2)中设计具有部分组件的系统。相反,我们在(c.3)中认为,一个理想的系统应该以规划为导向,并适当地组织之前的任务以促进规划。
一种更优雅的设计是通过将几个特定任务的头插入共享特征提取器,将广泛的任务纳入多任务学习(MTL)范式。在MTL中,跨任务的协同训练策略可以利用特征抽象;它可以毫不费力地扩展到额外的任务,并节省板载芯片的计算成本。然而,这样的方案可能会导致不希望的“负转移”。
【“Negative transfer” 】是指在多任务学习中,一个任务的学习过程可能会影响另一个任务的学习,导致性能下降而不是提升。这种现象通常发生在不同任务之间存在较大差异或共享特征与任务之间的关联较弱时。在自主驾驶领域,负面迁移可能会影响系统在诸如感知、预测和规划等任务上的性能。
相比之下,端到端自动驾驶的出现[6,8,12,23,54]将感知、预测和规划的所有节点统一为一个整体。前面任务的选择和优先级应该有利于规划。该系统应以计划为导向,精心设计,涉及某些组件,以便很少出现独立选项中的累积误差或MTL方案中的负传输。表1描述了不同框架设计的任务分类法。
表1。任务比较和分类。“设计”一栏如图1所示。“Det.”表示3D对象检测,“Map”表示在线映射,“Occ.”表示占用图预测。†:这些作品并不是直接为规划而提出的,但它们仍然具有共同感知和预测的精神。UniAD执行五项重要驾驶任务以促进规划。
按照端到端的范式,一种“制表”的做法是直接预测计划的轨迹,而无需对感知和预测进行任何明确的监督,如图所示。第1(c.1)段。开创性的工作[7,9,14,15,45,53,54,60]在闭环模拟[17]中验证了这种香草设计。虽然这样的方向值得进一步探索,但在安全保障和可解释性方面还不够,尤其是对于高度动态的城市场景。在本文中,我们倾向于另一个视角,并提出以下问题:对于一个可靠的、面向规划的自动驾驶系统,如何设计有利于规划的管道?前面哪些任务是必需的?
直观的解决方案是感知周围的物体,预测未来的行为,并明确地计划安全机动,如图1(c.2)所示。当代方法[6,18,23,32,47]提供了良好的见解,并取得了令人印象深刻的性能。然而,我们认为细节决定成败;以前的工作或多或少没有考虑到某些组成部分(见表1中的方框(c.2)),这让人想起了以规划为导向的精神。我们在补充部分中详细阐述了这些模块的详细定义和术语以及必要性。
为此,我们引入了UniAD,这是一个统一的自动驾驶算法框架,利用图1(c.3)和表1(c.3)所示的五个基本任务来实现安全和稳健的系统。联合国开发计划署的设计是以规划为导向的精神。我们认为,这不是仅仅通过工程努力就能完成的一堆简单的任务。一个关键组件是连接所有节点的基于查询的设计。与经典的边界框表示相比,查询受益于更大的接受域,以减轻来自上游预测的复合错误。此外,查询可以灵活地建模和编码各种交互,例如多个代理之间的关系。据我们所知,UniAD是第一个全面研究自动驾驶领域中感知、预测和规划等多种任务的联合合作的工作。
贡献总结如下。
- 我们遵循以规划为导向的理念,拥抱自动驾驶框架的新前景,并证明有效的任务协调的必要性,而不是独立的设计或简单的多任务学习。
- 我们提出了UniAD,一个全面的端到端系统,利用了广泛的任务范围。开始运行的关键组件是将查询设计为连接所有节点的接口。因此,UniAD具有灵活的中间表示,可以将多任务知识交换到规划中。
- 我们在具有挑战性的基准上对现实情况进行实例化。通过广泛的消融,我们验证了我们的方法在各个方面优于以前的最先进的技术。
我们希望这项工作可以为自动驾驶系统的目标驱动设计提供一些启示,为协调各种驾驶任务提供一个起点。
方法
如图2所示,UniAD包括四个基于变压器解码器的感知和预测模块,最后包括一个规划器。查询Q扮演连接管道的角色,以模拟驱动场景中实体的不同交互。具体来说,将一系列多相机图像输入到特征提取器中,并通过BEVFormer中的现成BEV编码器将所得的视角特征转换为统一的鸟瞰(BEV)特征B[30]。请注意,UniAD并不局限于特定的BEV编码器,人们可以利用其他替代方案,通过长期时间融合[19,43]或多模态融合[33,36]来提取更丰富的BEV表示。
图2。统一自动驾驶(UniAD)管道。它是按照以规划为导向的理念精心设计的。与简单的任务堆栈不同,我们研究了每个模块在感知和预测方面的效果,利用了从前面节点到最终驾驶场景规划的联合优化的好处。所有感知和预测模块都采用变压器解码器结构设计,任务查询作为连接各个节点的接口。最后,一个简单的基于注意力的规划器,结合从前面节点中提取的知识来预测自驾车未来的路点。以上地图仅供参考。
- TrackFormer中,我们称之为跟踪查询的可学习嵌入从B中查询agent的信息来检测和跟踪agent。
- Mapformer将地图查询作为道路元素(例如,车道和分隔线)的语义抽象。并进行语义分割。
【Panoptic segmentation 】是一种图像分割方法,旨在对图像中的每个对象进行实例级分割(thing),同时对背景元素进行stuff级分割。在自动驾驶领域,这种技术可以用于将道路元素(如车道、隔离带和交叉口)与可行驶区域进行区分。通过将道路元素视为things,将可行驶区域视为stuff,panoptic segmentation能够提供丰富的环境信息,从而有助于自动驾驶系统进行规划和决策。
通过上述代表代理和地图的查询,
- MotionFormer捕获代理和地图之间的交互,并预测每个代理的未来轨迹。由于每个智能体的行为会显著影响场景中的其他智能体,因此该模块对所考虑的所有智能体进行联合预测。同时,我们设计了一个自我-车辆查询来显式地对自我-车辆建模,并使其能够在这种以场景为中心的范式中与其他代理进行交互。
- OccFormer采用BEV特性b作为查询,配备智能体知识作为键和值,并在保留智能体身份的情况下预测未来的多步占用。
- 最后,Planner利用来自MotionFormer的表达性自我车辆查询来预测规划结果,并使自己远离OccFormer预测的占用区域,以避免碰撞。
Perception: Tracking and Mapping
TrackFormer:它在不进行不可微分后处理的情况下,联合进行检测和多目标跟踪(MOT)。受[56,58]的启发,我们采用了类似的查询设计。除了在目标检测中使用的传统检测查询[5,62]外,还将额外的跟踪查询引入到跨帧的跟踪代理中。具体来说,在每个时间步,初始化的检测查询负责检测第一次感知到的新代理,而跟踪查询继续对在前一帧中检测到的代理建模。检测查询和跟踪查询都通过关注BEV特征b来捕获代理抽象。随着场景的不断发展,当前帧的跟踪查询与先前在自关注模块中记录的跟踪查询交互,以聚合时间信息,直到相应的代理完全消失(在某一时间段内不被跟踪)。与[5]类似,TrackFormer包含N层,最终输出状态QA为下游预测任务提供Na个有效代理的知识。除了对自我车辆周围的其他智能体进行编码的查询外,我们还在查询集中引入了一个特定的自我车辆查询,以显式地对自动驾驶车辆本身进行建模,并进一步用于规划。
【非可微后处理】是一种在某些计算机视觉和深度学习任务中使用的技术,它在处理检测或跟踪结果时,会对原始输出进行一定的修改或筛选。这种后处理方法可能不具有可微性,因此在优化过程中可能无法直接使用反向传播算法。而非可微后处理通常用于改进模型的性能,例如提高目标检测的准确性或提高多目标跟踪的效果。
Mapformer:我们基于二维全视分割方法panoptic SegFormer进行设计[31]。我们将道路元素稀疏地表示为地图查询,以帮助下游运动预测,并对位置和结构知识进行编码。对于驾驶场景,我们将车道、分隔线和人行横道作为things,将可驾驶区域作为stuff[28]。MapFormer也有N个堆叠层,每一层的输出结果都是监督的,而只有最后一层更新的queriesQM被转发给MotionFormer进行agent-map交互。
- things:指代车道、隔离带和十字路口。这些是具体的、可区分的道路元素,通常需要对自动驾驶系统进行特定的处理和规划。
- stuff:指代可驾驶区域。这是比较抽象的一个概念,包括道路的各个部分,如路面、人行道等。相对于 things,stuff 更注重描述道路的总体结构和功能性。
总之,things 和 stuff 的区别在于它们所代表的道路元素的类型和复杂程度。things 代表具体的、需要特殊处理的道路元素,而 stuff 代表抽象的、描述道路总体结构和功能性的元素。
Prediction: Motion Forecasting
最近的研究已经证明了变压器结构在运动任务中的有效性[24,25,35,39,40,48,55],受此启发,我们在端到端设置中提出了MotionFormer。MotionFormer分别从TrackFormer和MapFormer中对动态代理sqa和静态地图QM进行高度抽象的查询,以场景为中心的方式预测所有代理的多模式未来运动,即top-k可能的轨迹。这种模式在帧中产生多智能体轨迹,通过单一的向前传递,这大大节省了将整个场景对齐到每个智能体坐标的计算成本[27]。同时,考虑到未来的动态,我们将来自TrackFormer的ego-vehicle查询通过MotionFormer传递给ego-vehicle,让ego-vehicle与其他agent进行交互。形式上,输出运动公式为{{i xi,k∈RT×2|i = 1,…Na;K = 1,…, K},其中i表示agent, K表示轨迹的模态,T表示预测视界的长度。
MotionFormer
它由N层组成,每层捕获三种类型的交互:agent-agent、 agent-map和agent-目标点。对于每个运动queryQi,k(稍后定义,为了简单起见,我们在以下上下文中省略下标i,k),它与其他代理QA或地图元素QM之间的交互可以表示为
其中MHCA、MHSA分别表示多头交叉注意和多头自注意[50]。由于关注预定位置(即目标点)也很重要,因此为了改进预测轨迹,我们通过可变形注意设计了agent-目标点注意[62],如下所示
其中, xl−1T为前一层预测轨迹的终点。DeformAttn(q,r,x)是一个可变形的注意模块[62],它将查询q、参考点r和空间特征x纳入其中,对参考点周围的空间特征进行稀疏注意。通过这一点,预测的轨迹进一步细化为端点周围的意识。所有三种交互都是并行建模的,其中生成的Qa、Qm和Qg被连接并传递给多层感知器(MLP),从而产生查询上下文Qctx。然后,将Qctx发送到后续层进行细化或在最后一层解码为预测结果。
Motion queries
MotionFormer每层的输入查询称为运动查询,包括两个组件:如前所述由前一层产生的查询上下文Qctx和查询位置Qpos。具体而言,Qpos将位置知识整合为四个方面,如等式所示(3):
(1)场景级锚点的位置Is;
(2)代理级锚点的位置Ia;
(3)代理i的当前位置;
(4)预测的目标点。
这里,正弦位置编码PE(·)和MLP用于对位置点进行编码,并且在第一层处将ξx0T设置为is(下标i,k也被省略)。场景级锚点表示全局视图中的先前运动统计信息,而代理级锚点捕捉局部坐标中的可能意图。它们都通过k-means算法在地面实况轨迹的端点上进行聚类,以缩小预测的不确定性。与现有知识相反,起点为每个代理提供定制的位置嵌入,并且预测的端点充当以粗略到精细的方式逐层优化的动态锚点。
Non-linear Optimization.
与直接获取地面实况感知结果(即代理的位置和相应的轨迹)的传统运动预测工作不同,我们在端到端范式中考虑了来自先验模块的预测不确定性。从不完美的检测位置或航向角粗暴地回归地面实况航路点可能导致具有大曲率和加速度的不切实际的轨迹预测。为了解决这一问题,我们采用了非线性平滑器[4]来调整目标轨迹,并在上游模块预测的起点不精确的情况下使其在物理上可行。过程是:
其中,[x]和[x *]表示真地轨迹和光滑轨迹,x由multiple-shooting生成[2],代价函数为:
其中λxy和λgoal为超参数,运动函数集Φ有5个项,分别是加速度、曲率、曲率率、加速度和侧向加速度。代价函数对目标轨迹进行正则化,使其服从运动约束。这种目标轨迹优化只在训练中进行,不影响推理。
【“multiple-shooting”】 是一种数值优化方法,用于求解非线性问题。在自动驾驶领域中,它通常用于预测轨迹时,考虑到预测的不确定性。这种方法通过多次模拟(或射击)来计算目标轨迹,从而使预测结果在给定不精确的初始条件时,变得更具有物理可行性。
Prediction: Occupancy Prediction
占用率网格图是一种离散化的BEV表示,其中每个单元都有一个信念,表明它是否被占用,占用率预测任务是发现网格图在未来如何变化。以前的方法利用RNN结构从观测到的BEV特征中临时扩展未来预测[20,23,59]。然而,它们依赖于高度手工制作的聚类后处理来生成每个代理的占用图,因为它们通过将BEV特征作为一个整体压缩到RNN隐藏状态来实现大多数代理不可知。由于智能体知识的使用不足,预测全局所有智能体的行为是一项挑战,而这对于理解场景的演变至关重要。为了解决这个问题,我们提出OccFormer在两个方面结合场景级和代理级语义:
(1)当展开到未来视界时,密集的场景特征通过精心设计的注意力模块获得代理级特征;
(2)通过在代理级特征和密集场景特征之间的矩阵乘法,我们可以轻松地产生实例占用,而无需进行大量的后处理。
OccFormer由To序列块组成,To表示预测水平。注意,在运动任务中,To通常小于T,因为密集表示占用的计算成本很高。
每个块将前一层的富智能体特征Gt和状态(密集特征)F t−1作为输入,并在考虑实例级和场景级信息的情况下生成时间步t的F t。为了获得具有动态和空间先验的智能体特征Gt,我们将MotionFormer在模态维(QX∈RNa×D)中的运动查询进行最大池化,其中Das为特征维。然后,我们通过一个时间特定的MLP将其与上游轨迹查询QA和当前位置嵌入PA融合
其中[·]表示串联。对于场景级知识,为了提高训练效率,将BEV特征B缩小到1/4分辨率,作为第一个块输入f0。为了进一步保存训练记忆,每个块遵循下采样-上采样的方式,中间有一个注意模块,在1/8缩小的特征上进行像素-代理交互,表示为ftds。
像素-代理交互的目的是在预测未来占用时统一场景和代理级别的理解。我们将密集特征fd作为查询,将实例级特征作为键和值,以便随着时间的推移更新密集特征。详细地说,ftds通过一个自注意层来模拟远距离网格之间的响应,然后一个交叉注意层来模拟智能体特征gt和每个网格特征之间的相互作用。此外,为了对齐像素-代理的对应关系,我们通过一个注意掩模来约束交叉注意,这限制了每个像素只看到在时间步长t占用它的代理,灵感来自[10]。稠密特征的更新过程表示为:
Dtds = MHCA(MHSA(F tds), Gt, attn mask = Ot m)。(7)
注意掩码Ot m在语义上与占用相似,是通过将一个附加的代理级特征与密集特征F tds相乘生成的,这里我们将代理级特征命名为掩码特征m t = MLP(Gt)。经过Eq.(7)的交互过程后,将Dtds上采样到b的1/4大小。我们进一步添加具有块输入F t−1的Dtds作为残差连接,并将得到的特征F t传递给下一个块
实例级别占用率:它表示每个代理的身份都被保留的占用情况。它可以简单地通过矩阵乘法绘制,就像最近基于查询的分割工作[11,29]一样。形式上,为了得到BEV特征B的原始大小H×W的占用预测,通过卷积解码器将场景级特征Ft上采样到Ftdec∈RC×H×W,其中C是信道维度。对于代理级特征,我们进一步通过另一个MLP将粗掩模特征MT更新为占用特征UT∈RNa×C。我们根据经验发现,从掩模特征MT而不是原始代理特征Gt生成UT导致优越的性能。时间步长t的最终实例级占用率为:
Planning
没有高清地图或预定义路线的规划通常需要高级命令来指示前进方向[6,23]。接下来,我们将原始导航信号(即左转、右转和保持前进)转换为三种可学习的嵌入,称为命令嵌入。由于来自MotionFormer的ego-vehicle查询已经表达了它的多模态意图,我们为它配备了命令嵌入来形成一个“计划查询”。我们对BEV特征B进行计划查询,使其意识到周围环境,然后将其解码为未来的路点τ。为了进一步避免碰撞,我们在推理中基于牛顿方法对φ τ进行如下优化:
其中,τ^为原始规划预测,τ∗表示从多重射击[2]轨迹τ中选择的优化规划,以最小化代价函数f(·)。O是一个经典的二进制占用映射,由OccFormer的实例占用预测合并而成。成本函数f(·)的计算公式为:
这里λcoord, λobs和σ是超参数,t是未来视界的时间步长。l2代价将轨迹拉向原始预测的轨迹,而碰撞项md将其推离已占用的网格,考虑到周围的位置限于S = {(x, y)|∥(x, y) - τt∥2 < d, δ t x,y = 1}。
Learning
UniAD分两个阶段进行培训。我们首先联合训练几个时期的感知部分,即跟踪和映射模块(在我们的实验中为6个),然后使用所有感知、预测和规划模块端到端地训练20个时期的模型。两阶段训练在经验上更稳定。我们介绍每一次损失的详细信息.
由于UniAD涉及实例建模,因此在感知和预测任务中需要将预测与地面实况集配对。与DETR[5,31]类似,在跟踪和在线映射阶段采用了二分匹配算法。至于跟踪,来自检测查询的候选者与新生的地面实况对象配对,并且来自跟踪查询的预测继承来自先前帧的分配。跟踪模块中的匹配结果在运动和占用节点中重复使用,以在端到端框架中对从历史轨迹到未来运动的代理进行一致建模。
实验
我们可以得出结论,两个感知子任务极大地帮助了运动预测,并且预测性能也得益于两个预测模块的统一。有了所有先前的陈述,我们的目标规划将大大提高,以确保安全。在预测和规划任务方面,UniAD在很大程度上优于朴素的MTL解决方案,而且它还具有不会出现显著感知性能下降的优势。为简洁起见,仅显示了主要指标。“avg.L2”和“avg.Col”是整个规划范围内的平均值。*:ID-0是MTL方案,每个任务都有单独的头。
结论
我们讨论了自动驾驶算法框架的系统级设计,提出了一种面向规划的流水线,即UniAD。我们对感知和预测中每个模块的必要性进行了详细分析。为了统一任务,提出了一种基于查询的设计来连接UniAD中的所有节点,这得益于环境中更丰富的代理交互表示。大量的实验从各个方面验证了所提出的方法。局限性和未来的工作。协调这样一个具有多个任务的综合系统是不平凡的,需要大量的计算能力,尤其是经过时间历史训练的计算能力。如何为轻量级部署设计和策划系统值得未来探索。此外,是否纳入更多的任务,如深度估计、行为预测,以及如何将它们嵌入系统中,也是值得关注的未来方向。