一、研究背景:
现代自动驾驶系统包含多个顺序执行的任务,即感知、预测及规划。随着传感器和硬件的进步,设计一种可以执行各种任务的智能系统成为一种趋势。之前的设计方案可概括为两类:1)为每个任务部署独立的模型;2)组建包含多个独立任务头的多任务学习模型。然而,这些方法都可能会受到累积误差以及在下游规划上较差的迁移效果的影响。
近期,arXiv 中收录了上海人工智能实验室OpenDriveLab团队联合武汉大学、商汤科技的一篇文章——Goal-oriented Autonomous Driving,其提出良好的自动驾驶系统应该以最终任务——安全的路线规划为导向。该研究对感知与预测中的关键组成部分进行分析与研究,并按照一定优先级进行组建,以便所有的子任务都有助于规划,并提出了统一自动驾驶框架 (UniAD) ,这是第一个将全栈驾驶任务整合到一个深度神经网络中的框架,并可以发挥每个子任务以及各个模块的优势,以执行安全的规划。作者也公布了其项目(代码)地址:https://github.com/OpenDriveLab/UniAD。
随着深度学习的成功发展,自动驾驶算法由一系列子任务组成,包括感知中的物体检测、多目标跟踪、地图分割;预测任务中的轨迹预测和占用栅格预测。如图1(a)所示,大多数工业解决方案是为每个任务部署独立模型。尽管简化了多任务模型的设计,但由于不同子任务优化方向的不同,这样的设计面临着信息丢失、错误累积和特征未对齐的风险。
图1:自动驾驶算法框架的各种设计比较。(a)大多数工业解决方案是对不同的任务部署不同的模型。(b)多任务学习架构,多个任务头共享一个主干网络(特征提取器)。(c)端到端学习范式,其联合了感知与规划模块。现有工作或如(c.1)采用直接从感知结果进行规划,或如(c.2)中采用多模块级联的系统。
除了上述工业方案,更为先进的设计是将不同的任务整合到多任务学习(MTL)范式中,如图1(b)所示,例如BEVerse,以及部分工业化架构,例如Mobileye、Tesla、Nvidia等。在MTL中,多任务的协同训练利用同一个特征提取器,可以方便地拓展至多个子任务并节省芯片的计算。然而,这样的方法仍未解决不同任务优化方向不一致的问题,同时不同任务的监督信息也未得到充分的交互,以更好作用于规划。相比之下,端到端自动驾驶架构(如图1(c)所示)将感知、决策和规划结合为一个整体。前序任务(模块)的组合应当有利于最终的规划,同时应该尽量避免误差累计的问题。(c.1)中采用直接从感知结果进行规划,(c.2)中采用模块级联的方式。在(c.3)中,UniAD以良好的规划为导向,通过层级结构对不同任务进行组建以达到更好的规划结果。
表1:UniAD 与之前方案的对比,包含了更多的任务以辅助下游规划,包含检测 (Detection),跟踪 (Tracking),地图生成 (Mapping),轨迹预测 (Motion Forecasting),占用栅格预测 (Occupancy prediction) 与规划 (Planning)。
二、研究内容
如图2所示,UniAD是由四个基于Transformer解码器的感知预测模块以及一个规划模块组成。多组查询向量 (query) 用于连接整个架构以及学习多个智能体与周围环境的交互。具体而言,多个环视摄像头采集的图像将首先通过特征提取器转化为图像特征,再通过 BEV(Bird’s-Eye-View,鸟瞰图视角)编码器将图像特征转化为 BEV 特征。在 TrackFormer 中,用一组跟踪查询向量 (Track query) 从 BEV 特征中检测新出现的物体(智能体)并持续跟踪已经检测到的物体。MapFormer 是通过地图查询向量 (Map query) 对不同类别的地图元素进行分割,比如车道线与人行道。MotionFormer 通过建模物体与环境之间的交互关系对每个物体的未来轨迹进行预测。同时引入自车查询向量 (Sdc query) 对自车的运动进行建模,自车查询向量将用于后续的自车规划中。OccFormer 用于进行占用栅格预测,以 BEV 特征为查询向量,物体特征为键 (key) 与值 (value),对未来的 BEV 特征进行不断地更新,进而解码为占用栅格。规划模块 (Planner) 将自车查询向量解码,生成规划路径,并利用占用栅格预测对路径进行优化,使其避免障碍物。
图2. 统一的自动驾驶(UniAD)的整体框架。UniAD通过多个 Transformer 模块将各个任务进行层级式的结合,并对不同任务间的信息进行了充分的交互。UniAD使用多组查询向量对物体与地图进行建模,并将预测结果传递至规划模块,用于进行安全的路径规划。
(1)感知:跟踪与地图分割
TrackFormer 可以同时进行检测与多目标跟踪,通过引入一组 Track query 去建模追踪物体在场景中的整个生命周期(即从出现到完全消失)。Track query 通过与 BEV 特征进行注意力机制运算并通过多层感知机 (MLP) 进行解码,最终得到跟踪物体的边界框与速度等属性。MapFormer 是将 2D 全景分割的经典方案 Panoptic Segformer 迁移至 3D 场景,并用于在线地图分割。具体而言,用一组 Map query 表示地图中的不同元素,比如车道线、人行道等,这些地图元素将有利于下游任务对周围环境信息的学习。Map query 经过 MapFormer 的更新后,将被传送至 MotionFormer 进行物体与地图元素的交互。
(2)预测:轨迹预测
MotionFormer 以信息丰富的物体特征和地图特征为输入,输出场景中所有智能体在多种模态下的未来轨迹。这种范式只需要进行一次网络的前向传播便能输出所有智能体的未来轨迹,相较于之前以智能体为中心(agent-centric)的方法,节省了每步对坐标空间进行对齐的计算消耗。同时为了持续建模自车运动信息,利用 TrackFormer 中的自车查询向量 (Sdc query) 学习自车的未来轨迹。MotionFormer 由多层交叉注意力 (cross-attention) 模块组成,以达到不断精细化的目的。每层模块包含三次不同的注意力计算以建模不同类型的交互,分别是智能体-智能体,智能体-地图,智能体-轨迹目标,具体交互表示如下:
![b78edbca94a066e16e04ee0d9bffaac6.png](https://i-blog.csdnimg.cn/blog_migrate/598b99d3ae955137cb8424b882359b8d.png)
![dc60c30552a54a38e0ba45944b151743.png](https://i-blog.csdnimg.cn/blog_migrate/7eb19142dd657a90e86e9f5e2f2e88b8.png)
其中 MHCA、MHSA 与 DeformAttn 分别表示多头交叉注意力,多头自注意力与可变形注意力。交互结束后得到的轨迹查询向量 (Motion query) 将继续传递给占用栅格预测与规划模块。
图3. MotionFormer。它由N个堆叠的交互模块组成,每个模块内会进行agent-agent,agent-map 和 agent-goal point(轨迹终点)的关系建模。agent-agent 和 agent-map 交互模块使用标准的Transformer解码器层,agent-goal交互模块构是建在可变形的交叉注意力模块上。
(3)预测:占用栅格预测
占用栅格图是一种离散化的BEV 表示形式,其中每个格子代表的值代表当前位置是否被物体占用。占用栅格预测任务是指预测未来多步的占用栅格图,即未来 BEV 的占用情况。之前的方法通常会利用卷积神经网络 (CNN) 与递归神经网络 (RNN) 逐步预测未来多步 BEV 特征图并解码,但是却忽略了场景中物体的运动信息,这些信息与未来场景的占用栅格有很强的关联。为了引入稀疏的物体运动信息,本文在 OccFormer 中利用注意力机制,将场景中密集的各栅格表示为查询向量 (query),将物体特征表示为键 (key) 与值 (value)。通过多层 Transformer 的解码器,查询向量将多次更新,用于表示未来时序的 BEV 特征图。为了更好地对齐物体与各栅格的位置关系,本文引入了一个基于占用栅格的注意力掩码,该掩码使得注意力计算只在位置对应的栅格-物体特征之间进行。查询向量的更新过程如下:
![b7238a4494216c7d829edbb2e25b35ef.png](https://i-blog.csdnimg.cn/blog_migrate/803572f9b4f8fff35ab880d16b6f15f9.png)
图4. OccFormer。它由个顺序模块组成,其中是时间范围(包括当前和未来帧),每个模块负责生成一个特定帧的占用栅格。将上游传递的物体特征,物体位置特征,轨迹特征进行编码用于表示物体的动态运动特征,并通过注意力机制对密集的场景特征(BEV特征)和稀疏的物体运动特征进行充分交互,最终解码为实例级别的占用栅格预测。
(4)自车规划
为了规划自车未来的运动轨迹,将 MotionFormer 更新后的自车查询向量 (Sdc query) 与 BEV 特征进行注意力机制交互,让 Sdc query 感知整个 BEV 环境,隐式地学习周围环境与其他智能体。为了更显式地避免与周围车的碰撞,作者利用占用栅格预测模块的输出对自车路径进行优化,避免未来可能有物体占用的区域。
图5. Planner。 和分别是来自跟踪模块和轨迹预测模块的自车特征。通过使用 MLP 层进行编码,BEV特征交互模块采用标准 transformer decoder 层进行构建。最终通过碰撞优化器对预测轨迹进行再次优化,以达到更安全的路径规划。
三、实验结果
1. 各模块实验结果
感知结果
对于表2中的多目标跟踪性能,与 MUTR3D 和 ViP3D 相比,UniAD 分别取得了+6.5和+14.2 AMOTA(%)的显着改进。此外,UniAD 取得了最好的 IDS 分数(越低越好),展示了UniAD在物体跟踪上的时序一致性。对于表3中的在线地图,UniAD 显示了出色的地图分割能力,尤其是在车道线分割的表现上(与BEVFormer相比+7.4 IoU(%))。
![6cf53639aae9f2ce010d1d2af9351ab9.jpeg](https://i-blog.csdnimg.cn/blog_migrate/e7fbc83a8c4ab0b5fb51c20cae10dc1e.jpeg)
![0f489b7eaa11853a329af01b4cc145a6.jpeg](https://i-blog.csdnimg.cn/blog_migrate/af4195a05d8053e742b5d67930c3f331.jpeg)
预测结果
轨迹预测结果如表4所示,与 PnPNet 和 ViP3D 相比,UniAD 显著优于之前基于相机输入的端到端方法,并且在minADE 上分别将错误率减少了38.3%和65.4%。对于表5所示的占用栅格预测任务性能,UniAD在近距离区域取得了显着进步,与 FIERY 和 BEVERSE 相比,UniAD 在 IoU near(%)上分别取得了 4.0 和 2.0 的明显提升。
![746be258b91e8defe9070e3380c77c66.jpeg](https://i-blog.csdnimg.cn/blog_migrate/e9e1066d3e9baec2dd7957941a03266a.jpeg)
![b01d618bc78c7102794c3d1d8698ab6f.jpeg](https://i-blog.csdnimg.cn/blog_migrate/265d8d6a8a3eb5673e6fdb99d787c8b0.jpeg)
规划结果
与 ST-P3 相比,UniAD 将规划L2误差和碰撞率分别降低了51.2%和56.3%,并优于其它基于 LiDAR 输入的方案。
![3aacd7012791e51998d1bb0640b42992.jpeg](https://i-blog.csdnimg.cn/blog_migrate/55301a75de4acd6528bae3df6cf7af9c.jpeg)
2. 消融研究
为了验证以目标为导向的设计理念是否真正发挥作用,本文对感知及预测中的各个模块进行了广泛的消融研究,如表7所示,以证明前序模块的有效性和必要性。
![e41dcdedf78d5190082fc5fb58441f76.jpeg](https://i-blog.csdnimg.cn/blog_migrate/0d7d61e780be20cb5a86f22ffd68c858.jpeg)
3. 可视化
图6:在环视图像和BEV中显示所有任务的可视化结果。
图7:在市区驾驶的可视化表示。UniAD 可以生成高质量的感知和预测结果,并进行安全的路径规划。前三列显示六个摄像机的视角,最后两列分别是 BEV 预测结果和来自规划模块的注意力掩码。每个智能体都用单独的颜色表示。
图8:关键案例可视化。第一个场景(上图)显示自车正在让两个过马路的行人,第二个场景(下图)显示自车正在让侧方一辆快速行驶的汽车。从最右图可以观察到规划模块对最关键的智能体给予更多的关注度。
图9:避障可视化。在这两种情况下,自车正在进行变道以避开障碍物车辆。从最右注意力掩码中,可以观察到UniAD可以关注障碍物以及前后的道路
四、总结
UniAD 设计是以安全的路径规划为导向,对多个必需的自动驾驶任务进行层级化设计,以多组查询向量 (query) 对物体与环境之间的多种交互进行建模。通过大量实验验证了模型设计的有效性,并相对之前的方案取得了更好的性能。UniAD 是一种统一的自动驾驶算法框架,可以以高精度执行包含跟踪、地图生成、轨迹预测、占用预测与规划任务,是首个全面探索自动驾驶系统各模块必要性的工作,作者通过进行广泛的消融和实验,验证了 UniAD 在各感知预测任务对最终规划的帮助。
点击阅读原文跳转github地址:https://github.com/OpenDriveLab/UniAD
推荐阅读
欢迎大家加入DLer-自动驾驶技术交流群!
👆 长按识别,邀请您进群!