UniAD 论文解释 && 思路

论文链接:

[CVPR 2023 Best Paper] Planning-oriented Autonomous Driving

https://github.com/OpenDriveLab/UniAD

https://arxiv.org/abs/2212.10156

Abstract

  • 现代自动驾驶系统通常以模块化任务的顺序进行,即感知、预测和规划。部署单独的模型来处理各个任务,或者设计具有独立头部的多任务范式。然而,这些方法可能会受到累积误差或任务协调不足的困扰。

  • 一个理想的框架应该为追求自动驾驶汽车的终极目标(即规划)而精心设计和优化。因此,我们介绍了(UniAD),这是一个最新的综合框架,将全栈驾驶任务整合到一个网络中。它精心设计,以利用每个模块的优势,并从全局角度提供互补的特征抽象以进行物体交互。任务通过统一的查询接口进行通信,以相互促进规划。

  • 我们在具有挑战性的nuScenes基准上实例化UniAD。通过广泛的消融研究,使用这种理念的有效性得到证明,因为在各个方面都大大超过了以前的最新水平。

核心

  • 多组查询向量的全 Transformer 模型:UniAD利用多组 query 实现了全栈 Transformer 的端到端模型,我们可以从具体 Transformer 的输入输出感受到信息融合。在 TrackFormer 中,Track query 通过与 BEV 特征通过 attention 的方式进行交互,输出特征 QA。类似的,Map query 经过 MapFormer 的更新后,得到特征 QM 。MotionFormer 使用 Motion query 与 QA 、 QM 以及 BEV 特征进行交互,得到未来轨迹以及特征 QX。OccFormer 以密集的 BEV 特征为 Q 和稀疏的特征 QA 对应的位置信息 PA和 QX作为 K和 V 来构建实例级别的占据栅格。

  • 基于最终“规划”为目标: 在 TrackFormer 中,Track query 中包含一个特定的 ego-vehicle query 用来表示自车属性。规划模块 (Planner) 将 MotionFormer 更新后的 ego-vehicle query 与 BEV 特征进行交互,此时 ego-vehicle query 包含对整个环境的感知与预测信息,因此能更好的学习 planning 任务。为了减少碰撞,我们还利用占据栅格预测模块 OccFormer 的输出对自车路径进行优化,避免行驶到未来可能有物体占用的区域。在这个过程中,全部的模块通过输出特定的特征来帮助实现最终的目标“规划”。

Introduction

  (a) 大多数工业解决方案针对不同的任务部署单独的模型。(b) 多任务学习方案共享骨干网络。(c) 端到端范式将感知和预测模块结合在一起。先前的尝试要么在(c.1)中对规划进行直接优化,要么在(c.2)中设计带有部分组件的系统。相反,我们在(c.3)中认为,理想的系统应该以规划为导向,并正确组织先前的任务以促进规划。

  表1:†代表没有直接用于规划。UniAD执行五项重要的驾驶任务以促进规划。

UniAD是以规划为导向的精神设计的。一个关键组件是连接所有节点的基于查询的设计。与经典的bounding box表示相比,查询受益于更大的感受域,以软化上游预测的复合误差。此外,查询可以灵活地对各种交互进行建模和编码,例如多个物体之间的关系。据我们所知,UniAD是第一个全面研究自动驾驶领域感知、预测和规划等多种任务联合合作的作品。

Methodology

UniAD是面向规划设计的。研究每个模块在感知和预测中的影响,利用联合优化从前面的节点到最终规划。所有感知和预测模块都在transformer解码器结构中设计,任务查询作为连接每个节点的接口。一个简单的基于注意力的规划器可以考虑从先前节点提取的知识来预测自车的未来路线。

  • UniAD包含四个基于transformer解码器的感知和预测模块,以及最后的规划器。查询Q起到连接pipeline的作用。

  • 多视角图像通过BEVFormer特征提取,获得BEV特征B。(可用其他BEV方案、多帧、多模态融合)

  • TrackFormer中,通过track queries的可学习嵌入,从B中查询物体的信息来进行检测和跟踪。

  • MapFormer中,使用map queries从B中查询道路元素(例如车道和分隔线)的信息,并执行地图的全景分割。

  • MotionFormer捕获B+物体+地图之间的交互信息(作为k和v),并预测每个物体的未来轨迹,由于场景中每个物体的行动可能会对其他物体产生重大影响,该模块为所有考虑的物体做出联合预测。

  • 同时,我们设计了一个自车查询,以明确地对自车进行建模,并与其他物体交互。

  • OccFormer使用BEV特征B作为查询,物体motion信息作为k和v,并且预测物体未来occupancy的情况

  • 最后,Planner使用来自MotionFormer的表达性自车查询来预测规划结果,并通过避开OccFormer预测的占用区域来避免碰撞。

  • Planner利用来自MotionFormer的自车查询来预测规划结果,并将其自身远离OccFormer预测的占用区域,以避免碰撞。

TrackFormer & MapFormer

TrackFormer 可以同时进行检测与多目标跟踪,通过引入一组 Track query 去建模追踪物体在场景中的整个生命周期(即从出现到完全消失)。检测查询: 这些查询负责检测新出现的物体。跟踪查询: 它们负责在连续的帧中跟踪已经检测到的物体。这是通过在当前帧的跟踪查询与先前记录的查询之间进行交互来完成的。自车查询:显式地对自车进行建模,获得自车未来的轨迹。

MapFormer 是将 2D 全景分割的经典方案 Panoptic Segformer 迁移至 3D 场景,并用于在线地图分割。具体而言,用一组 Map query(300+1) 表示地图中的不同元素,比如车道线、人行道、可行驶区域等,这些地图元素将有利于下游任务对周围环境信息的学习。Map query 经过 MapFormer 的更新后,将被传送至 MotionFormer 进行物体与地图元素的交互。

Prediction: Motion Forecasting

MotionFormer 以信息丰富的物体特征QA地图特征QM为输入,输出场景中所有智能体在多种模态下的未来轨迹。这种范式只需要进行一次网络的前向传播便能输出所有智能体的未来轨迹,相较于之前以智能体为中心(agent-centric)的方法,节省了每步对坐标空间进行对齐的计算消耗。同时为了持续建模自车运动信息,利用 TrackFormer 中的自车查询向量学习自车的未来轨迹。MotionFormer 由多层交叉注意力 (cross-attention) 模块组成,以达到不断精细化的目的。每层模块包含三次不同的注意力计算以建模不同类型的交互,分别是智能体-智能体,智能体-地图,智能体-轨迹目标,具体交互表示如下:

其中Qa:物体查询,Qm:地图查询,Qg:预期位置查询(goal point), MHCA、MHSA 与 DeformAttn 分别表示多头交叉注意力,多头自注意力与可变形注意力。交互结束后得到的轨迹查询向量 (Motion query) 将继续传递给占用栅格预测与规划模块。

  MotionFormer。它由N个堆叠的交互模块组成,每个模块内会进行agent-agent,agent-map 和 agent-goal point(轨迹终点)的关系建模。 agent-agent 和 agent-map 使用标准的Transformer解码器层,agent-goal为可变形的交叉注意力模块。Qpos由四个方面组成,Is:场景级锚点的位置(全局视图中的先验运动统计信息),Ia:物体级锚点的位置(各物体局部视图中的先验运动统计信息),X0:物体的当前位置,Xl-1:预测的未来目标位置

Prediction: Occupancy Prediction

占用栅格图是一种离散化的BEV 表示形式,其中每个格子代表的值代表当前位置是否被物体占用。占用栅格预测任务是指预测未来多步的占用栅格图,即未来 BEV 的占用情况。之前的方法通常会利用卷积神经网络 (CNN) 与递归神经网络 (RNN) 逐步预测未来多步 BEV 特征图并解码,但是却忽略了场景中物体的运动信息,这些信息与未来场景的占用栅格有很强的关联。为了引入稀疏的物体运动信息,本文在 OccFormer 中利用注意力机制,将场景中密集的各栅格表示为查询向量 (query),将物体motion轨迹预测特征表示为键 (key) 与值 (value)。通过多层 Transformer 的解码器,查询向量将多次更新,用于表示未来时序的 BEV 特征图。为了更好地对齐物体与各栅格的位置关系,本文引入了一个基于占用栅格的注意力掩码,该掩码使得注意力计算只在位置对应的栅格-物体特征之间进行。查询向量的更新过程如下:

  F密集特征为前一帧的输出(或当前帧的观察特征)降采样8倍,残差链接。

  OccFormer。它由T0个顺序模块组成,其中T0是时间范围(包括当前和未来帧),每个模块负责生成一个特定帧的占用栅格。 将上游传递的物体特征QA,物体位置特征PA,轨迹特征QX进行编码用于表示物体的动态运动特征,并通过注意力机制对密集的场景特征(BEV特征)和稀疏的物体运动特征进行充分交互,最终解码为实例级别的占用栅格预测OA。

Planning

为了规划自车未来的运动轨迹,将 MotionFormer 更新后的自车查询向量 BEV 特征进行注意力机制交互,让自车查询感知整个 BEV 环境,隐式地学习周围环境与其他智能体。为了更显式地避免与周围车的碰撞,作者利用占用栅格预测模块的输出对自车路径进行优化,避免未来可能有物体占用的区域。

   QA和Qctx分别是来自跟踪模块轨迹预测motion模块的自车查询特征,与命令嵌入。一起通过 MLP 层进行编码,最大池化层选择最显着的模态特征。用自车作为查询,B作为k和v进入transformer decoder 。最终通过OCC的避障碰撞优化器对预测轨迹进行再次优化,以达到更安全的路径规划。

Experiments

感知结果

对于表2中的多目标跟踪性能,与 MUTR3D 和 ViP3D 相比,UniAD 分别取得了+6.5和+14.2 AMOTA(%)的显着改进。此外,UniAD 取得了最好的 IDS 分数(越低越好),展示了UniAD在物体跟踪上的时序一致性。对于表3中的在线地图,UniAD 显示了出色的地图分割能力,尤其是在车道线分割的表现上(与BEVFormer相比+7.4 IoU(%))。

表2:Multi-object tracking,UniAD的所有指标上都取得了很大的优势。†:具有关联后检测的跟踪方法,使用 BEVFormer 重新实现。

表3:Online mapping,UniAD 与最先进的面向感知的方法相比具有竞争性能,具有全面的道路语义。采用语义IOU,†:使用 BEVFormer 重新实现。Lanes车道、Drivable可行驶区域、Divider分割线、Crossing人行横道

预测结果

轨迹预测结果如表4所示,与 PnPNet 和 ViP3D 相比,UniAD 显著优于之前基于相机输入的端到端方法,并且在minADE 上分别将错误率减少了38.3%和65.4%。对于表5所示的占用栅格预测任务性能,UniAD在近距离区域取得了显着进步,与 FIERY 和 BEVERSE 相比,UniAD 在 IoU near(%)上分别取得了 4.0 和 2.0 的明显提升。

表4:Motion forecasting,UniAD 在轨迹预测的所有指标上均取得最好的性能。†:使用 BEVFormer 重新实现。

表5:Occupancy prediction,UniAD 在附近区域有了显著的改进,这对于规划更为关键。“n.”和“f.”分别表示近(30×30m)和远(50×50m)评估范围。†:用大量增强进行训练。

规划结果

与 ST-P3 相比,UniAD 将规划L2误差和碰撞率分别降低了51.2%和56.3%,并优于其它基于 LiDAR 输入的方案。

表6:Planning,UniAD在所有时间间隔内都达到了最低的L2误差和碰撞率,甚至在大多数情况下都优于基于激光雷达的方法(†),验证了我们的系统的安全性。

消融研究

为了验证以目标为导向的设计理念是否真正发挥作用,本文对感知及预测中的各个模块进行了广泛的消融研究,如表7所示,以证明前序模块的有效性和必要性。

表7:感知及预测中的各个模块对下游任务的帮助。两个感知子任务极大地帮助运动预测,预测性能也受益于统一两个预测模块。“avg.L2”和“avg.Col”是整个规划范围内的平均值。*:ID-0是MTL方案

Limitations

  • 需要大量计算能力,尤其是使用历史帧

Nvidia Tesla A100 GPU上UniAD和运行时的复杂性

  • 部署难度大

  • 端到端模型出现bad case不好修复(文中提到可以用增加数据来提高检测性能)

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值