赞
踩
其实,23年7月,在北京的某个闭门会议上“AI大模型应用于自动驾驶的潜力与路径”研讨会上,小鹏的专家作为主持人,就以这个论文作为开头让大家进行讨论,当时论文的通信作者还到场交流了。现场是一些主机厂的领导们在讨论,我是个小啰啰。会上还碰到了之前的负责我们这块业务的智能驾驶的总技术专家,后来去其他公司当专家了。最早5月份就注意到了这个论文。这个当时给我眼前一亮,站在24年4月的角度回顾,感觉这个曾经的高峰又要被突破了。
(在不是颁奖现场,这是某次邀请通信作者过来研讨会讨论的现场)
以下是论文的笔记,这已经是很早之前的笔记了,如有错误还请指正。
题目:Planning-oriented Autonomous Driving
名称:面向规划的自动驾驶
论文:https://arxiv.org/abs/2212.10156
代码:https://github.com/OpenDriveLab/UniAD
现代自动驾驶系统的特点是将任务按顺序模块化,即感知、预测和规划。
为了执行多种多样的任务并实现高级智能,当代的方法:
他们可能会遭受累积错误AE或缺乏任务协调deficient task coordination。相反,我们认为,为了追求最终目标,即自动驾驶汽车的规划(planning of the self-driving car),应该设计和优化一个有利的框架。
基于此,我们重新审视感知和预测中的关键组成部分,并对任务进行优先排序,使所有这些任务都有助于(planning of the self-driving car)
我们引入了统一自动驾驶(UniAD),这是一个全面的、最新的框架,将全堆栈的驾驶任务集成在一个网络中
它被精心设计来利用每个模块的优势(leverage advantages of each module,),并从全局的角度为代理交互提供互补的特性抽象。任务之间通过统一的查询接口进行通信(Tasks are communicated with unified query interfaces to facili-tate each other toward planning),便于规划
随着深度学习的成功发展,自动驾驶算法集成了一系列任务,包括检测、跟踪、感知建图; 预测中的运动和占用预测。
只要板载芯片的资源带宽允许,我们可以为每个功能设置一个模型。如图1
虽然这样的设计简化了跨团队的研发难度,但由于优化目标的独立性,存在跨模块信息丢失、错误积累和特征不匹配的风险[57,66,82]。
原因:the isolation of optimization targets
一个更优雅的设计是,通过将几个特定于任务的头插入一个共享的特征提取器,将大范围的任务合并到一个多任务学习(MTL)范式中,如图1(b)所示。
这在很多领域都很流行,包括通用视觉[79,92,108],自动驾驶2[15,60,101,105],如transuser [20], BEVerse[105],以及工业化产品,如Mobileye[68],特斯拉[87],英伟达[71]等。在MTL中,跨任务的协同训练策略可以利用特征抽象;它可以毫不费力地扩展到其他任务,并节省板载芯片的计算成本。然而,这样的方案可能会导致不良的“负迁移”(undesirable “negative transfer”)[23,64]。
相比之下,端到端自动驾驶的出现[11,15,19,38,97]将感知、预测和规划的所有节点统一为一个整体。(the emergence of end-to-end autonomous driving [11, 15, 19, 38, 97] unites all nodes from perception, prediction and planning as a whole. )
为了便于规划,应确定前面任务的选择和优先级。系统应面向规划,精心设计,包括某些组件,这样就不会像独立选项中那样存在累积误差(accumulative error)或像MTL方案中的负传递( negative transfer )那样。表1描述了不同框架设计的任务分类。
按照端到端范式,一种“白板tabula-rasa”实践是直接预测计划的轨迹,没有任何明确的感知和预测监督,如图1(c.1)所示。前人的工作[14,16,21,22,78,95,97,106]在闭环仿真[26]中验证了这种vanilla design (黑话)。 虽然这一方向值得进一步探索,但在安全保障和可解释性方面存在不足,特别是对于高度动态的城市场景。
在本文中,我们倾向于另一个角度,提出了以下问题: 在一个可靠的、面向规划的自动驾驶系统中,如何设计有利于规划的管道? 前面的哪些任务是必需的?
Toward a reliable and planning-oriented autonomous driving system, how to design the pipeline in favor ofplanning? which preceding tasks are requisite?
一种直观的解决方案是感知周围的物体,预测未来的行为,并明确地计划安全的操作,如图1(c.2)所示。当代的方法[11,30,38,57,82]提供了良好的见解并取得了令人印象深刻的表现。然而,我们认为细节决定成败;以前的作品或多或少没有考虑到某些组成部分(见表1中的(c.2)部分),使人联想到面向规划的精神。
在附录中详细阐述了这些模块的定义、术语、必要性。
为此,我们引入了统一自动驾驶算法框架UniAD,以实现如图1(c.3)和表1(c.3)所示的五项基本任务,从而实现安全可靠的系统。UniAD是本着面向规划的精神设计的。我们认为,这不是一个简单的任务堆栈(工程努力)。一个关键组件是连接所有节点的基于查询Query的设计。与经典的边界框表示相比,Query查询受益于更大的接受域,以软化来自上游预测的复合错误。此外,查询可以灵活地建模和编码各种交互,例如,多个代理之间的关系。
据我们所知,UniAD是第一个全面调查包括感知、预测和规划在内的自动驾驶领域的各种任务的联合合作的工作。
这些贡献总结如下。(a)我们遵循以规划为导向的理念,拥抱自动驾驶框架的新前景,并证明了有效的任务协调的必要性,而不是独立的设计或简单的多任务学习。(b)我们介绍了UniAD,一个综合的端到端系统,利用了广泛的任务范围。关键是将查询设计成连接所有节点的接口。因此,UniAD具有灵活的中间表示,并为规划交换多任务知识。©我们在具有挑战性的基准上为现实场景实例化UniAD。通过广泛的消融,我们证实了我们的方法在所有方面都优于以前的先进水平。
希望本文的工作能够为自动驾驶系统的目标驱动设计提供一些启示,为协调各种驾驶任务提供一个起点。
概述。如图2所示,UniAD由:组成。
查询Q扮演连接管道的角色,以在驱动场景中建模实体的不同交互。具体来说,将一系列多摄像机图像送入特征提取器,通过BEVFormer[55]中现成的BEV编码器将生成的透视视图特征转换为统一的bird -eye-view (BEV)特征B。
(请注意,UniAD并不局限于特定的BEV编码器,可以利用其他替代方法,通过长期时间融合[31,74]或多模态融合[58,64]提取更丰富的BEV表示。)
在TrackFormer中,我们称之为跟踪查询的可学习嵌入从B中查询代理的信息,以检测和跟踪代理。MapFormer将地图查询作为道路元素(如车道和分隔线)的语义抽象,并执行全景分割
通过上述查询表示代理和地图,MotionFormer捕获代理和地图之间的交互,并预测每个代理的未来轨迹。由于每个agent的动作会对场景中的其他agent产生显著的影响,因此该模块对所有被考虑的agent进行联合预测。
同时,我们设计了一个 ego-vehicle query 来显式地建模自我载体,并使其能够在这样一个场景中心范式中与其他主体进行交互。
OccFormer使用BEV特征B作为查询,并以智能代理知识作为键和值,并在保留代理身份的情况下预测多步未来占用情况。
最后,Planner利用MotionFormer表达性的自我车辆查询来预测规划结果,并使自己远离OccFormer预测的被占领区域以避免碰撞。
《TrackFormer》。该算法联合进行检测和多目标跟踪(MOT),不需要不可微后处理。
受[100,104]的启发,我们采用了类似的查询设计。除了在目标检测中使用的常规检测查询[8,109],还引入了额外的跟踪查询来跨帧跟踪代理。
具体来说,在每个时间步骤中,初始化的检测查询负责检测第一次感知到的新生代理,而跟踪查询则继续建模那些在前一帧检测到的代理。
检测查询和跟踪查询都通过关注BEV特征b来捕获代理抽象。
随着场景的不断演化,当前帧的跟踪查询与自注意模块中先前记录的查询交互,以聚合时间信息。直到相应的代理完全消失(在一段时间内不被跟踪)。
与[8]类似,TrackFormer包含N层,最终的输出状态QA为下游预测任务提供na个有效代理的知识。除了对围绕自驾驶汽车的其他代理进行编码的查询外,我们还在查询集中引入了一个特定的自驾驶汽车查询,以显式地对自动驾驶汽车本身建模,并进一步用于规划。
MapFormer. 我们基于2D全景分割方法panoptic SegFormer[56]进行设计。我们将道路元素稀疏地表示为地图查询,以帮助下游运动预测,并将位置和结构知识编码。
For driving scenarios, we set lanes, dividers and crossings as things, and the drivable area as stuff [50] 对于驾驶场景,我们将车道、分隔线和十字路口设置为东西,可驾驶区域设置为[50]
运动预测。在整个自动驾驶系统中,感知与规划、预测的衔接是保证最终安全的重要环节。通常情况下,运动预测是一个独立开发的模块,通过检测到的包围框和高清地图,预测agent的未来轨迹。而包围盒是目前大多数运动数据集[27]中的ground truth注释,在机载场景中是不现实的。而在本文中,运动预测模块以之前编码的稀疏查询(即QA和QM)和密集BEV特征B为输入,预测每个agent在未来T时间步长的K条可信轨迹。此外,为了与我们的端到端和以场景为中心的场景兼容,我们根据每个agent的当前位置预测轨迹作为偏移量。在最后一次解码的mlp之前,代理的特征将被发送到占用模块,以理解场景级的未来。对于自我车辆查询,它还预测未来的自我运动(实际上提供了一个粗略的计划估计),计划者利用该特征生成最终目标。
最近的研究已经证明了变压器结构对运动任务的有效性[43,44,63,69,70,84,99],受此启发,我们在端到端设置中提出了MotionFormer。通过分别从TrackFormer和MapFormer对动态代理QA和静态映射QM进行高度抽象的查询,MotionFormer以场景为中心的方式预测所有代理的多模态未来运动,即top-k可能的轨迹。该范式通过一次前向传递在帧中生成多智能体轨迹,大大节省了将整个场景对齐到每个智能体的坐标[49]的计算成本。同时,考虑到未来的动态,我们将TrackFormer的self -vehicle查询传递给MotionFormer,使self -vehicle与其他agent进行交互。在形式上,输出运动表示为{ˆxi,k∈RT×2|i = 1,…,Na;K = 1,…, K},其中i表示agent, K表示轨迹的模态,T表示预测视界的长度。
MotionFormer. 它由N层组成,每一层 层捕获三种类型的交互:agent-agent、agent-map和agent-goal-point。对于每个运动查询Qi,k(后面定义,为了简单起见,我们在下面的上下文中省略下标i,k),其与其他agent QA或map元素QM之间的交互可以表示为:
其中,MHCA、MHSA分别表示多头交叉注意和多头自我注意[91]。由于关注预定位置即目标点对于细化预测轨迹也很重要,我们通过**变形注意attention via deformable attention **设计了一种agent-goal-point 注意[109],如下所示:
其中ˆxl−1 T为前一层预测轨迹的端点。变形注意模块DeformAttn(q,r,x)引入查询q、参考点r和空间特征x,对参考点周围的空间特征进行稀疏注意。通过这种方法,预测的轨迹可以进一步细化,以了解端点环境。所有这三种交互都是并行建模的,其中生成的Qa、Qm和Qg被连接并传递给一个多层感知器(MLP),从而产生查询上下文Qctx。然后将Qctx发送到后续层进行细化或解码为最后一层的预测结果
Motion queries.
MotionFormer的每一层的输入查询,称为运动查询,由两个组件组成:查询上下文Qctx产生的前一层,如前所述,和查询位置Qpos。
其中,Qpos将位置知识进行了四次整合,如式(3)
(1) the position of scene-level anchors Is;
(2) the position of agent-level anchors Ia;
(3) current location of the agent i
(4) the predicted goal point.
这里利用正弦位置编码PE(·)后接一个MLP对定位点进行编码,将ˆx0 T设为第一层的is(下标i, k也省略)。
场景级锚在全局视图中表示先前的移动统计数据,而代理级锚在局部坐标中捕获可能的意图。它们都是用k-means算法在groundtruth轨迹的端点上进行聚类,以缩小预测的不确定性。与先验知识相反,起点为每个代理提供定制的位置嵌入,预测端点作为一个动态锚,以粗到细的方式逐层优化。
Non-linear Optimization.
与传统的运动预测方法直接获取地面真实感知结果(即主体位置和对应轨迹)不同,我们在端到端范式中考虑了先验模块的预测不确定性。从一个不完美的探测位置或方向角度生硬地还原地面真实航点,可能会导致不现实的轨迹预测与大曲率和加速度。为了解决这个问题,我们采用了非线性平滑non-linear smoother的[7]来调整目标轨迹,并且在上游模块预测的起始点不精确的情况下,使目标轨迹在物理上可行。过程是:
该目标轨迹优化仅在训练中进行,不影响推理。
Occupancy grid map 是一种离散化的BEV表示,其中每个单元都持有表示其是否被占用的信念,Occupancy 预测任务是发现网格图在未来如何变化。
以往的方法利用RNN结构,从观测到的BEV特征对未来进行时间扩展预测[35,38,105]。然而,它们依赖于高度手工制作的集群后处理来生成每个代理的占用图,因为通过将BEV特征整体压缩到RNN隐藏状态,它们大多是不确定的。由于agent-wise知识的使用不足,他们很难在全局范围内预测所有agent的行为,而这对于理解场景的演变是至关重要的。
为了解决这个问题,我们提出了OccFormer,从两个方面结合scene-level
and agent-level semantics:
(1)密集场景特征在展开到未来视界时,通过精心设计的注意模块获得代理级特征
(2)我们通过在agent级特征和密集场景特征之间进行矩阵乘法,而不需要进行大量的后处理,就可以轻松地产生实例占位。
OccFormer由To序列块组成,其中To表示预测层位。注意,在运动任务中,To通常小于T,这是由于密集表示占用的计算成本较高。
每个块以上一层的丰富代理特征Gt和状态(稠密特征)Ft−1作为输入,同时考虑实例级和场景级信息,对时间步长t生成Ft。为了得到具有动力学和空间先验的agent特征Gt,我们将MotionFormer的模态维记为QX∈RNa×D,其中D为特征维。然后我们将其与上游轨道查询QA和当前位置嵌入PA通过一个特定于时间的MLP融合:
其中[·]表示连接。对于场景级知识,为提高训练效率,将BEV特征B降为1/4分辨率,作为第一个块输入F0。为了进一步节省训练记忆,每个块采用下采样-上采样的方式,中间有一个注意模块,以1/8的缩减特征进行像素-agent交互,记为Ft ds。
Pixel-agent interaction 像素-代理交互的设计是为了在预测Occupancy 率时统一场景和代理级别的理解。 我们将稠密特征Ft-ds作为查询,实例级特征作为键和值,以随着时间的推移更新稠密特征。通过一个自注意层来模拟网格间的响应,然后通过一个交叉注意层来模拟agent特征Gt与每个网格特征之间的交互作用。此外,为了对齐像素-代理的对应关系,我们通过一个注意掩码来约束交叉注意,该掩码限制每个像素只能查看在时间步长t时占据它的代理,灵感来自[17]。稠密特征的更新过程表示为:
注意掩码Ot m在语义上类似于占用,它是由一个附加的代理级特征与密集特征Ft ds相乘生成的,这里我们将代理级特征称为掩码特征Mt = MLP(Gt)。在Eq.(7)的交互过程之后,Dt ds被上采样到b的1/4大小,我们进一步将Dt ds加上块输入Ft−1作为剩余连接,得到的特征Ft被传递到下一个块。
Instance-level occupancy 它代表occupancy (保留了每个代理身份)。它可以通过矩阵乘法简单地绘制出来,就像最近基于查询的分割工作一样[18,52]。
形式上,为了得到BEV特征B原始大小H×W的占用预测,通过卷积解码器将场景级特征Ft上采样到Ft dec∈RC×H×W,其中C为信道维数。对于代理级特征,我们进一步通过另一个MLP将粗糙掩模特征Mt更新为占用特征Ut∈RNa×C。我们的经验表明,用掩模特征Mt而不是原始agent特征Gt生成Ut可以获得更好的性能。时间步t的最后实例级占用为:
没有高清地图或预定义路线的规划通常需要高级命令来指示前进方向[11,38]。在此之后,我们将原始导航信号(即左转,右转和向前)转换为三个可学习的嵌入,称为命令嵌入。
由于MotionFormer的自我-车辆查询已经表达了它的多模态意图,我们在它身上嵌入了命令,形成了一个“Plan查询”。
我们对BEV特征B进行 Plan 查询,使其能够感知周围环境,然后将其解码为未来的航路点ˆτ。
为了进一步避免碰撞,我们仅通过以下方法推理,基于牛顿方法对ˆτ进行优化:
其中ˆτ为原始规划预测,τ∗为优化规划,该规划是从多次拍摄的[3]轨迹τ中选择,使代价函数f(·)最小。Oˆ是一个经典的二元占用图,由OccFormer的实例占用预测合并而来。代价函数f(·)的计算方法为:
考虑到周围位置限制为S = {(x, y)|∥(x, y)−τt∥2 < D,ˆOt x,y = 1},
l2代价将轨道拉向原先预测的轨道,
而碰撞项D则将轨道推离已占据的网格。
niAD的培训分两个阶段。我们首先联合训练几个epoch(实验中为6个)的感知部分,即跟踪和映射模块,然后用所有的感知、预测和规划模块端到端训练20个epoch的模型。实验结果表明,两阶段训练更稳定。有关每项损失的详情,请参阅附录。
Shared matching.
由于UniAD涉及到实例建模,因此在感知和预测任务中需要将预测与地面真理集配对。与DETR[8,56]相似,跟踪和在线映射阶段采用了二部匹配算法。在跟踪方面,来自检测查询的候选对象与新生的地面真实对象配对,而来自跟踪查询的预测继承了之前帧的分配。在端到端框架中,跟踪模块中的匹配结果在运动和占用节点中被重用,以一致地建模从历史轨迹到未来运动的代理。
我们在具有挑战性的nuScenes数据集[6]上进行了实验。在本节中,我们从三个方面验证了我们的设计的有效性:联合结果揭示了任务协调的优势及其对规划的影响,每个任务的模块化结果与以前的方法相比,以及对特定模块的设计空间的消融。由于篇幅限制,在附录中提供了整套的协议、一些烧蚀和可视化。
按照感知预测计划的顺序,我们报告每个任务模块的性能,并将其与之前的nuScenes验证集的技术水平进行比较。请注意,UniAD用一个训练有素的网络联合执行所有这些任务。每个任务的主要指标在表格中以灰色背景标记。
感知结果。在表3的多目标跟踪中,UniAD与MUTR3D[104]和ViP3D[30]相比,AMOTA(%)分别提高了+6.5和+14.2。此外,UniAD实现了最低的ID切换分数,显示了它对每个tracklet的时间一致性。对于表4中的在线映射,UniAD在分割车道上表现良好(与BEVFormer相比+7.4 IoU(%)),这对于运动模块中的下游agent - road交互至关重要。由于我们的跟踪模块遵循端到端范式,它仍然不如带有复杂关联的检测跟踪方法,如Immortal跟踪器[93],而且我们的 map 结果在特定类上落后于之前的面向感知的方法。我们认为,UniAD是要利用可感知的信息来促进最终规划,而不是利用充分的模型能力来优化感知。
预测结果。运动预测结果如表5所示,其中UniAD明显优于以往基于视觉的端到端方法。与PnPNet-vision[57]和ViP3D[30]相比,minADE的预测误差分别降低了38.3%和65.4%。就表6中报告的用房预测而言,UniAD在邻近地区取得了显著进展,与FIERY[35]和BEVerse[105]相比,分别在IoU-near(%)上产生+4.0和+2.0,增幅较大。
Planning结果。UniAD利用自身-车辆查询和占用的丰富时空信息,以规划水平平均值计算,与ST-P3[38]相比,规划L2误差和碰撞率分别降低51.2%和56.3%。此外,它的性能明显优于基于激光雷达的同类产品,后者通常被认为是感知任务的挑战。
在补充部分中,我们展示了更具挑战性的场景的更多可视化,以及面向规划的设计的一个有希望的案例,即在前面的模块中出现了不准确的结果,而后面的任务仍然可以恢复,例如:在目标存在较大的航向角偏差或跟踪结果未检测到目标时,规划的轨迹仍然合理。此外,我们分析UniAD的故障案例主要是在一些长尾场景下,如大型卡车和拖车,也在补充中显示。
讨论了自动驾驶算法框架的系统级设计。针对规划的终极追求,即UniAD,提出了面向规划的管道。对感知和预测中各个模块的必要性进行了详细的分析。为了统一任务,提出了一种基于查询的设计来连接UniAD中的所有节点,从而为环境中的代理交互提供了更丰富的表示。大量实验验证了该方法的有效性。
将这样一个综合系统与多个任务协调起来并非易事,需要广泛的计算能力,特别是用时间历史训练的能力。如何为轻量级部署设计和管理系统值得未来的探索。此外,是否加入更多的任务,如深度估计,行为预测,以及如何将它们嵌入到系统中,也是有价值的未来方向。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。