24年4月来自香港科技大学的论文“PLUTO: Pushing the Limit of Imitation Learning-based Planning for Autonomous Driving”。
PLUTO,突破基于模仿学习的自动驾驶规划极限。改进来自三个关键方面:一种纵向横向感知模型架构,可实现灵活多样的驾驶行为;一种创新的辅助损失计算方法,可广泛应用且可高效地进行批量计算;一种利用对比学习的训练框架,采用一系列数据增强,以规范驾驶行为并促进对底层交互的理解。用大规模真实世界 nuPlan 数据集及其相关的标准化规划基准评估该框架。PLUTO 实现最先进的闭环性能,击败其他基于学习的竞争方法,并首次超越目前表现最佳的基于规则规划器。
基于学习的规划已成为一种潜在的可扩展自动驾驶方法,吸引大量研究兴趣 [1]。尤其是基于模仿的规划在模拟和实际应用中取得显著的成功。然而,基于学习规划的有效性仍然不令人满意。如 [2] 所示,传统的基于规则规划优于所有基于学习的替代方案,赢得 2023 年 nuPlan 规划挑战赛。本文概述基于学习的规划所固有的主要挑战,并提出了新解决方案,旨在突破基于学习规划所能实现的界限。
第一个挑战在于获得多模态驾驶行为。据观察,虽然基于学习的规划擅长学习纵向任务(例如车道跟随),但他们在横向任务 [3] 方面却举步维艰,例如,即使在空间允许的情况下,也要执行车道变换或绕过障碍物。这种不足归因于模型架构设计中缺乏明确的横向行为建模。之前的研究 [4] 试图通过生成明确以附近参考线为条件的规划来解决此问题,但仅限于生成最多三个提案,并且无法有效整合横向和纵向行为建模。本研究通过采用基于查询的架构来增强此方法,该架构能够通过融合纵向和横向查询来生成大量提案。先进的模型设计使规划器能够展示多样化和灵活的驾驶行为,这是迈向实用的基于学习规划的关键一步。
除了模型架构之外,人们认识到纯粹的模仿学习包含固有的局限性,包括学习短路的倾向 [5]–[8]、分布漂移 [3]、[5]、[9] 和因果混淆 [10]、[11] 问题。
基于模仿的规划
考虑到当今数据的丰富性和可负担性,通过克隆经验丰富的驾驶员策略来学习驾驶可能是最直接和可扩展的自动驾驶解决方案。其中一种流行的方法是端到端 (E2E) 驾驶 [15]。这种方法直接从原始传感器数据中学习驾驶策略,并在相对较短的时间内取得了重大进展。最初,重点是基于卷积神经网络 (CNN) 的模型 [16][17],将摄像头输入映射到控制策略。这演变为结合多传感器融合的更复杂方法 [18]–[21]。最近,由 LAV [22] 和 UniAD [23] 等实体牵头的开发已转向基于模块的 E2E 架构。这种方法将感知、预测和规划过程集成到一个统一的模型中 [24][25]。尽管潜力巨大,但大多数 E2E 策略在训练和评估方面都广泛依赖 CARLA [26] 等高保真模拟环境。因此,这些方法受到几个问题的困扰,包括模拟智体缺乏真实性和多样性、依赖不完善的基于规则的专家,以及迫切需要弥合模拟与现实之间的差距以适用于现实场景。
本文重点介绍另一个研究方向,通常称为“中间-到-中间”方法,该方法采用感知结果作为输入特征。该方法的主要优点是模型可以专注于学习规划和使用真实数据进行训练,从而消除模拟-到-现实的迁移问题。ChauffeurNet [5]、SafetyNet [27] 和 UrbanDriver [28] 等先驱方法已经展示了在现实环境中操作自动驾驶汽车的能力,后续工作也在此基础上建立 [3]、[4]、[29]–[31]。这些方法极大地受益于运动预测社区的进步,包括采用在预测任务中表现出色的基于矢量模型 [4]、[28],取代基于光栅化鸟瞰图像的早期规划模型 [5]、[9]。然而,许多这些模型忽略了规划任务的固有特性,例如需要闭环测试和主动决策能力。
先前的研究 [5]、[9]–[11] 已经证明基本模仿学习的局限性,并提出增强方法。为了解决复合错误,早期的解决方案可以追溯到 DAgger [32],它通过结合额外的专家演示以交互方式细化训练后的模型。随后,ChauffeurNet [5] 引入基于扰动的增强,使模型能够从微小偏差中恢复,并为后续研究建立标准实践。添加辅助损失,如碰撞损失和越野损失 [5]、[9]、[28] 是提高整体性能的另一个重要方面。然而,他们的方法要么是为热图输出而设计的 [5],要么需要可微分的光栅化器 [9],将轨迹转换为具有核函数的图像序列。这些方法不能有效地应用于基于矢量方法。
对比学习
对比学习 [33] 是一个通过比较相似和不相似对来学习表征的框架,在计算机视觉 [13]、[34] 和自然语言处理 [35] 中取得了重大成功。在自动驾驶的背景下,已经进行一些运动预测的尝试。social NCE [36] 引入社交对比损失来指导行人运动预测中的目标生成。Marah [37] 利用基于动作的对比学习损失来改进学习的轨迹嵌入。FEND [38] 采用这种方法来识别长尾轨迹。这些研究强调对比学习在通过仔细选择正反两方面的例子将域特定知识融入模型方面的潜力。
问题定义
本研究探索动态城市环境中的自动驾驶任务,考虑自动驾驶汽车 (AV)、N/A 个动态智体、N/S 个静态障碍物、高清地图 M 和其他交通相关环境 C(例如交通信号灯状态)。将智体的特征定义为 A = A/0:N/A ,其中 A/0 代表 AV,静态障碍物用 O = O/1:N/S 表示。此外,将智体 a 在时间 t 的未来状态表示为 y^t/a,历史和未来范围分别用 T/H 和 T/F 表示。
提出的系统 PLUTO 旨在同时为 AV 生成 N/T 个多模态规划轨迹并为每个动态智体生成预测。最终输出轨迹 τ∗的选择由评分模块 S 执行,该模块将基于学习的结果与所有场景环境相结合。PLUTO 定义为:(T/0, π/0), P/1:N/A = f(A, O, M, C | φ), (τ∗,π^∗) = argmax S(τ, π, P/1:N/A, O, M, C), 其中 f 表示 PLUTO 的 NN,φ 是模型参数,(T/0,π/0) 是 AV 的规划轨迹和相应的置信度分数,P 是智体的预测。
输入表征和情景编码
智体历史编码。每个智体在任意给定时间 t 的观察状态,表示为 st/i = (pt/i, θt/i, vt/i, bt/i, It/i),其中 p 和 θ 分别表示智体的位置坐标和航向角;v 表示速度矢量,b 定义感知边框的尺寸(长度和宽度);I 是一个二进制指标,表示此帧的观察状态。通过计算连续时间步之间的差异将历史序列转换为矢量形式:st/i = (pt/i −pt-1/i, θt/i − θt-1/i, vt/i −vt-1/i, bt/i, I^t/i),得到智体的特征向量 F/A。为了提取和压缩这些历史特征,采用基于邻域注意的特征金字塔网络 (FPN) [39],它生成一个嵌入 EA 的智体,其中 D 表示本文中一致使用的隐层维数。
静态障碍物编码。与经常忽视静态障碍物的运动预测任务不同,静态障碍物的存在对于确保安全导航至关重要。静态障碍物包括 AV 不得穿越的任何实体,例如交通锥或障碍物。可驾驶区域内的每个静态障碍物都用 o/i = (p/i , θ/i , b/i ) 表示。我们使用两层多层感知器 (MLP) 对静态对象特征 F/O 进行编码,从而嵌入 E/O。
AV 的状态编码。借鉴先前研究 [3][8] 的观点,即模仿学习倾向于从历史状态中走捷径,从而对性能产生不利影响,该方法仅利用 AV 的当前状态作为输入特征。当前状态包括 AV 的位置、航向角、速度、加速度和转向角。为了对状态特征进行编码,同时避免基于外推运动状态生成轨迹,采用基于注意的状态丢弃编码器 (SDE),如 [3] 中建议的那样。编码的 AV 嵌入是 E/AV。
矢量化地图编码。地图由 N/P 个折线组成。这些折线经过初始子采样过程标准化点的数量,然后计算每个点的特征向量。具体来说,对于每条折线,第 i 个点的特征包含八个通道: (p/i − p/0, p/i − p/0, p/i − pleft/i, p/i − pright/i)。这里 p/0 表示折线的起始点,而 pleft/i 和 pright/i 分别表示车道的左边界点和右边界点。加入边界特征至关重要,因为它传达有关可驾驶区域的信息,这对于规划任务至关重要。折线的特征表示为 F/P,n/p 表示每条折线的点数。为了对地图特征进行编码,采用类似 PointNet 的 [40] 折线编码器,从而得到编码特征空间 E/P。
情景编码。为了有效地捕捉各种模态输入之间复杂的相互作用,将不同的嵌入连接成一个张量 E/0。随后使用一系列 L/enc 个 Transformer 编码器集成该张量。由于矢量化过程,输入特征被剥离全局位置信息。为了抵消这种损失,每个嵌入都引入一个全局位置嵌入,记为 PE 。根据 [41],PE 表示全局位置 (p, θ) 的傅里叶嵌入,利用智体和静态障碍物的最新位置以及折线的起始点。此外,为了封装固有语义属性,如智体类型、车道限速和交通信号灯状态,可学习的嵌入 E/attr 也与输入嵌入一起合并。E/0 初始化为 E/0 = concat(E/AV, E/A, E/O, E/P) + PE + E/attr。E/enc 表示为 Transformer 编码器最后一层的输出。
多模态规划轨迹解码
自动驾驶中的规划任务本质上是多模态的,因为通常有多种有效行为可以用于响应给定的驾驶场景。例如,车辆可能会继续跟随前方较慢的车辆,或者选择变道超车。为了解决这个复杂的问题,用基于查询的 DETR 类 [43] 轨迹解码器。然而,直接实施学习的无锚查询,已被发现会导致模式崩溃和训练不稳定,如 [44] 所示。从驾驶行为可以分解为横向(例如变道)和纵向(例如制动和加速)动作组合的观察中汲取灵感,引入一种基于半锚的解码结构。如图显示解码流程的说明性概述,
参考线作为横向查询。按照 [4] 中概述的方法,本研究采用参考线作为横向查询的高级抽象。参考线通常来自自动驾驶汽车在其路线上的周围车道,是传统车辆运动规划中的关键组成部分,用于指导横向驾驶行为。首先,从 AV 的当前位置确定半径为 R/ref 的车道段。从每个已识别的车道段开始,进行深度优先搜索以探索所有潜在的拓扑连接,并连接它们各自的车道中心线。随后,将这些连接的中心线截断为均匀长度并重新采样以保持一致的点数。表示和编码参考线特征的方法,与矢量化地图编码的方法相似。最终,嵌入的参考线被用作横向查询 Q/lat,N/R 表示参考线的数量。
分解的横向-纵向自注意。除了 Q/lat,还使用 N/L 个无锚点、可学习查询 Q/lon 来封装纵向行为的多模态性质。随后,将 Q/lat 和 Q/lon 组合起来以创建初始横向纵向查询集,表示为 Q/0:Q/0 = Projection(concat(Q/lat, Q/lon)),其中 Projection 指的是简单线性层或多层感知器。由于 Q/0 中的每个查询仅捕获与单个参考线相关的局部区域信息,因此在 Q/0 上使用自注意机制来整合各种参考线上的全局横向纵向信息。尽管如此,将自注意直接应用于 Q/0 会导致计算复杂度为 O(N2/R N2/L),随着 N/R 和 N/L 的增加,该复杂度会变得非常高。借鉴文献 [45] 中的类似方法,采用在 Q 各个轴上的分解注意策略,有效地将计算复杂度降低至 O(N2/R N/L + N/R N^2/L)。
轨迹解码。轨迹解码器由一系列 L/dec 个解码层组成,每个层包含三种类型的注意机制:横向自注意、纵向自注意和查询-到-场景交叉注意。这些过程在数学上表示如下:Q′/i-1 = SelfAttn(Q/i-1, dim = 0), Qˆ/i−1 = SelfAttn(Q′/i−1, dim = 1), Q/i = CrossAttn(Qˆ/i−1, E/enc, E/enc)。这里,SelfAttn(X, dim = i) 表示在 X 的第 i 维上应用自注意,而 CrossAttn(Q, K, V) 则结合层归一化、多头注意和前馈网络。然后使用解码器的最终输出 Q/dec,通过两个 MLP 确定 AV 的未来轨迹点及其各自的分数:T/0 = MLP(Q/dec),π/0 = MLP(Q/dec)。每个解码的轨迹点都有六个通道:[p/x, p/y, cos θ, sin θ, v/x, v/y]。此外,为了适应缺少参考线的情况,引入一个额外的 MLP 头来直接从 AV 编码特征中解码单个轨迹:τ^free=MLP(E’/AV)。
模仿损失。为了避免模式崩溃,在训练过程中采用教师-强制 [46] 技术。首先,将真实轨迹 τ/gt 的端点投影到参考线上,选择横向距离最近的参考线作为目标参考线。随后,将该目标参考线按距离分成 N/L −1 个相等的线段。每个段对应于每个纵向查询管理的区域,最终查询负责超出目标参考线的区域。包含投影端点的查询被指定为目标查询。通过将目标参考线与目标纵向查询相结合,得出目标监督轨迹 τˆ。对于轨迹回归,采用平滑 L1 损失 [47],对于分数分类,利用交叉熵损失。总体模仿损失由这两个部分的总和来表示。
预测损失。一个简单的两层 MLP 用于从编码智体的嵌入中为每个动态智体生成单个模态预测:P/1:N/A = MLP(E‘/A)。首先,这提供密集的监督,有利于训练 [39],[48]。其次,生成的预测在后处理阶段消除不合适的规划提议方面起着至关重要的作用。
高效可微分辅助损失
正如早期研究 [5][12] 所强调的那样,纯粹的模仿学习不足以排除不良结果,例如与静止障碍物发生碰撞或偏离可行驶路径。因此,在模型训练阶段将这些约束作为辅助损失纳入模型中至关重要。然而,以可微分的方式整合这些约束并实现模型的端到端训练是一项重大挑战。为此目的,一种经常采用的方法是可微分光栅化。例如,Zhou [9] 演示一种技术,其中每个轨迹点使用可微分核函数转换为光栅化图像,然后使用图像空间内的障碍物掩码计算损失。然而,这种方法受到计算和内存需求的限制,这反过来又限制输出分辨率(例如,它只允许较大的时间间隔和较短的规划范围)。为了缓解这些限制,提出一种基于可微分插值的新方法。该方法有助于同时计算所有轨迹点的辅助损失。以可驾驶区域约束为例来阐明提出的方法。
成本图构建。该方法的第一步是将约束转换为可查询的成本图表示。具体来说,对于可驾驶区域约束,采用广为认可的欧几里得符号距离场 (ESDF) 进行成本表示。该过程包括将不可驾驶区域(例如越野区域)映射到 H×W 栅格化二进制掩码上,然后对该掩码执行距离变换。与现有方法相比,该方法的一个显着优势是它无需将轨迹渲染成一系列图像,从而显着降低计算需求。
损失计算。根据基于优化车辆运动规划中已建立的方法 [49],用 N/c 覆盖圆来建模车辆的形状。轨迹点决定这些圆的中心,这些圆的中心可以通过可微分的方式得出。如图所示,对于与轨迹点相关联的每个覆盖圆 i,通过投影和双线性插值获得其有符号距离值 d/i。为了确保遵守可驾驶区域约束,当 d/i 低于圆的半径 R/c 时,会对模型施加惩罚。
实际上,可以使用现代深度学习框架以可微分和高效的方式分批计算 d/i 和 L/aux,如算法 1 所示。值得注意的是,该方法是通用的,不仅限于基于 ESDF 的表示。任何允许连续查询的成本表示(例如潜能场)都可以与适当设计的损失函数结合使用。
对比模仿学习框架
引入对比模仿学习 (CIL) 框架,旨在有效解决连贯而直接的结构中分布漂移和因果混淆的挑战。如图所示,CIL 框架包含四个基本步骤:
• 给定一个训练场景数据样本,表示为 x,应用正数据增强模块 T+ 和负数据增强模块 T− 来生成正样本 x+ 和负样本 x^−。正增强是那些保留原始真值有效性的增强,而负增强会改变原始因果结构,使原始真值不适用。
• Transformer 编码器用于导出原始和增强数据样本的潜表示 h(·)。随后,这些表示被两层 MLP 投影头映射到一个新空间,表示为 z、z+、z^−。
• 计算三重对比损失以增强 z 和 z+ 之间的一致性,同时降低 z 和 z^− 之间的相似性。
• 最后,解码原始和正增强数据样本的轨迹,并计算模仿损失和辅助损失。
实际上,随机抽取一小批次 N/bs 样本。每个样本都经过正增强和负增强,分别由从集合 T+ 和 T− 中随机选择的增强器执行。此增强将样本总数增加三倍,达到 3N/bs。所有样本均由相同的编码器和投影头处理。令 sim(u,v) = u^Tv/∥u∥∥v∥ 表示 l2 归一化的 u 和 v 之间的点积,基于 softmax 的三重对比损失 [50] 定义为:
对比损失是在小批次的所有三元组中计算的。除此之外,还使用未修改的真值轨迹对原始样本和正增强样本进行监督。请注意,负增强样本仅用于计算对比损失,因为它们的原始真值在增强后可能无效。整体训练损失包括四个部分:模仿损失、预测损失、辅助损失和对比损失。
数据增强。数据增强是对比学习发挥作用的关键。虽然基于扰动的增强很普遍,但替代增强策略仍未得到充分探索。在这种情况下,提出六个设计的增强函数来定义对比任务,并在下图中提供说明性示例。
(1) 状态扰动 ∈ T^+ (图 a):对自动驾驶汽车的当前位置、速度、加速度和转向角度引入轻微的随机干扰。
(2) 非交互式智体丢弃 ∈ T^+ (图 b):从输入场景中省略近期不会与 AV 交互的智体。通过其未来边框与 AV 轨迹的交集来识别交互式智体。
(3) 领先智体丢弃 ∈ T^− (图 c):删除位于 AV 前方的所有代理。特别考虑了领先-跟随动态,这是现实世界驾驶中普遍存在的情况。这种增强功能训练模型进行领先-跟随行为,以防止追尾碰撞。
(4) 领先智体插入 ∈ T^− (图 d):将领先车辆引入 AV 的原始路径,在 AV 的预期轨迹变得无效的位置(例如,会导致碰撞)。
(5) 交互式智体丢弃 ∈ T^−(图 e):排除与 AV 有直接或间接交互的智体。交互式智体的识别遵循非交互式智体 丢弃中概述的方法。
(6) 交通信号灯反转 ∈ T^−(图 f):在 AV 接近由交通信号灯控制的十字路口而没有领先车辆的情况下,交通信号灯状态会反转(例如从红色变为绿色)。
这些增强功能设计有最小的归纳偏差,以确保广泛的适用性。对比学习任务促进隐式反馈机制,提供隐式奖励信号。这些信号强化对基本驾驶原则的遵守。
规划和后处理
在轨迹规划的背景下,目标是从多模态输出提供的各种结果中选择一条确定性的未来轨迹。不仅仅选择最可能的轨迹,还集成一个后处理模块作为额外的安全验证机制,如算法 2 所示。
在提取场景的特征后,执行模型以生成多模态规划轨迹 T/0、相关置信度得分 π/0 以及智体运动的预测 P/1:N/A。鉴于 T/0 的总轨迹数 N/R N/L 可能很大,初始过滤步骤仅保留按置信度得分排序的前 K 条轨迹,以简化后续计算。
按照 [2],对 T 进行闭环前向模拟,以获得模拟展开 T^~/0,利用线性二次调节器 (LQR) 进行轨迹跟踪,利用运动自行车模型进行状态更新。据 [3] 指出,基于轨迹的模仿学习可能无法完全解释底层系统的动态,这可能会导致模型的规划轨迹与实际执行之间出现差异。为了缓解这个问题,评估依赖于模拟展开而不是模型的直接输出,从而缩小差距。
随后,基于规则的评估器根据进度、驾驶舒适度和遵守交通规则等标准为每个模拟推出分配分数 π/rule,这与 [2] 中建立的框架一致。该评估还结合智体轨迹 P/1:N/a 的预测来计算碰撞时间 (TTC) 指标,排除导致有过错碰撞的推出。最终得分将初始的基于学习置信度得分 π/0 与基于规则的得分 π/rule 通过下式相结合:π = π/rule + α π/0,其中 α 表示固定加权因子。最终轨迹 τ^∗ 的选择基于最大化 π。与 [30][31] 中描述的通常利用优化器来优化轨迹的后处理步骤不同,该后处理模块仅充当轨迹选择器,保持原始规划轨迹不变。将后处理步骤视为将人类偏好或控制注入黑盒子神经网络的智体,承认其当前的局限性,并提供下限安全保证,以减轻灾难性事故的风险。
本文提出两种变体 PLUTO† 和 PLUTO,唯一的不同之处在于 PLUTO† 省略了后处理步骤。特征提取侧重于自动驾驶汽车 120 米半径范围内的地图元素和智体。遵循 nuPlan 挑战,将规划和历史数据范围分别设置为 8 秒和 2 秒。该模型包含旨在惩罚路外驾驶和碰撞的辅助任务。使用 4 个 RTX3090 GPU 进行训练,批量大小为 128,历时 25 个epochs。用 AdamW 优化器,应用 1e-4 的权重衰减。学习率在前三个epochs线性增加到 1e-3,然后在剩余的epochs遵循余弦衰减模式。损失权重 w/1-4 统一分配为 1.0。使用 CIL 时训练在 45 小时内完成,不使用 CIL 时训练在 22 小时内完成。