资源
论文题目: Planning-oriented Autonomous Driving
论文地址:https://arxiv.org/abs/2212.10156
代码:https://opendrivelab.github.io/UniAD/
原理
简介
引入了统一自动驾驶(UniAD),这是一个最新的综合框架,它将全栈驾驶任务集成在一个网络中。任务通过统一的查询接口进行沟通,以便于彼此进行规划。
相关研究
(a) 单独部署模型
优势:模块化设计,降低开发难度。
劣势:会造成下游信息丢失、 错误累计、 特征不对齐。
(b). 多任务框架
优势:共享特征,所以易扩展任务,节省计算成本。
劣势:多任务学习可能会造成负迁移。
(c).端到端自动驾驶
- 直接决策
优势:暂无
劣势:没有感知和预测,缺乏安全性和可解释性。
- 由多个模块组成的设计
优势:有感知预测的设计,并且性能良好。
劣势:考虑的不够细。
- 以决策为导向的精心设计的方式
优势:有更详细的设计,通过5个任务来完成安全可靠的系统。
劣势:先不提。
创新点
三大贡献:
- 一种以决策为导向的端到端框架。
- 以查询方式链接各节点的灵活设计。
- 方法全面超过SOTA。
关键:查询
- 与边界框相比查询有更大的感受野来减少上游误差。
- 查询可以灵活的对各种交互进行建模和编码。
- 第一个综合研究自动驾驶领域中感知、预测和规划等各种任务的联合合作的工作。
网络结构
由四个基于变压器解码器的感知和预测模块和一个规划器组成。
总述
backbone: 是多摄像头提取特征,透视图特征通过BEVFormer转换为BEV鸟瞰图
TrackFormer: 负责检测和跟踪智能体。
MapFormer: 作为道路要素的语义抽象和执行全景分割。
MotionFormer: 捕获智能体 和maps的交 互和预测每 个智能体的 未来轨迹。
OccFormer: 以BEV特征作 为查询,智 能体知识作 为键和值, 预测多步未 来占用。
planner: 利用MotionFormer的表达性自我-车辆查询来预测规划结果,并远离OccFormer预测的被占用区域,以避免碰撞。
感知:跟踪和建图
TrackFormer
- 除了目标检测中使用的传统检测查询外,还引入了额外的跟踪查询来跨帧跟踪智能体。
- 当前帧中的跟踪查询与自注意模块中先前记录的查询进行交互,以聚合时间信息,这里要把自己也编码到查询向量里。
MapFormer
- 用于代替高精地图,分为车道、可驾驶区域、分隔物和人行横道。
预测:运动预测
- 作用:预测所有智能体未来多步运动。
- 优势:在一帧中产生多智能体轨迹,这大大节省了将整个场景与每个智能体的坐标对齐的计算成本。
MotionFormer
- 输入查询(运动查询)
MotionFormer每一层的输入查询,称为运动查询,由两个组件组成:由前一层产生的查询上下文Qctx和查询位置Qpos。
位置查询Qpos由四部分组成,场景级锚点位置Is,智能体级锚点位置Ia,某智能体当前位置x0^,预测的目标点xTl-1。
Is是全局的之前运动统计, Ia是捕获局部可能意图,Is和Ia都通过聚类减少预测的不确定性。
- 输入
QA、QM、和B作为输入,预测每个智能体在未来T时间步长中的K个可信轨迹。
- 三种交互
每一层捕获三种交互,智能体之间、智能体和地图、智能体和目标点。
- Qa、Qm
QA/M通过自注意力和交叉注意力得到Qa/m
- Qg
通过可变注意力设计了一个智能体目标点注意力Qg
- Qctx
Qa,Qm,Qg通过多层感知机生成Qctx,Qctx通过解码输出。
- 非线性优化
问题:若从不完美的预测位置或航向角回归真值,可能会导致较大转角和加速度。
解决方案:使用非线性平滑调整运动轨迹解决上游不精确问题。
- 损失函数
目标轨迹优化只在训练中,不影响推理。
预测:占用预测
- 总述:占用网格图是离散的BEV表示。
- 传统方案
传统的RNN结构依赖于高度手工聚类后处理生成占用图,忽略了每个智能体信息。
- 本文方案
OccFormer包含两部分:
- 通过精细的注意力模块从密集场景特征中获取智能体特征。
- 通过智能体特征和场景特征矩阵乘法可获取实例占用。
OccFormer由T0顺序块组成,T0表示预测范围。
每个块输入为智能体特征Gt和前一层的状态(密集特征)Ft-1。
- 智能体特征Gt
将运动查询做最大池化表示为Qx。
上游跟踪查询QA、运动查询Qx和当前位置嵌入PA融合得到智能体特征Gt。
- 下采样Ftds
BEV特征缩小到1/4作为第一个块的输入F0。
为保留更长久记忆,每个块缩放到1/8进行像素和智能体交互,记为Ftds
以密集特征Ftds作为查询,实例级特征作为键和值,随着时间的推移更新密集特征。
- 注意力遮罩Qtm
设计了一个注意力遮罩,来限制每个像素只能看到在时间步长t内是否被智能体占用。由智能体特征M****t和Ftds****相乘得到。
智能体特征命名为M****t=MLP(Gt)
- 密集特征的更新Dtds ,密集特征Ft
Dtds放大到B的1/4
Ft=Ft-1 (残差)+ Dtds给下个block
- 密集特征Ftdec、智能体特征Ut 、实例特征OtA
为得到BEV原始尺寸的占用预测,将Ft通过卷积解码器上采样到Ftdec 。
Ut=MLP(Mt),Ut有更好的性能。
规划
总述:没有高精地图或预定义路线的规划通常需要一个高级命令来指示前进的方向,将原始导航信号转换为三个嵌入称为命令嵌入。载具运动查询和命令嵌入结合称为决策查询。
- QegoA、Qegoctx
分别是来自跟踪和运动预测模块的自我-车辆查询。
与高级命令(左转右转直行)叠加,经过MLP层进行编码,然后是一个跨模态维度的最大池化层。
- BEV特征交互模块
采用标准transformer解码器层构建,采用N层叠加,文中N=3。
为了嵌入位置信息,将平面查询与学习到的位置嵌入相结合,将BEV特征与正弦位置嵌入相结合。
- 牛顿法最优化τ ∗、碰撞损失D(τ ∗,Ot)、轨迹损失f(τ,τ^,Ot)_
牛顿法来优化未来点航路点
f损失将轨迹拉回原始预测轨迹,τˆ是最初的规划预测
D为碰撞损失,远离被占用的网格Ot
训练
总述:采用两阶段训练,跟踪和建图模块先训练6个epoch,再端到端训练20个epoch,这样loss下降更稳定。
因为是实例建模,感知和预测需要和真值每个实例配对,在匹配策略方面,来自新生查询的候选对象采用二部匹配算法。
- 总损失
- 跟踪损失
_ L_track = _λ_focal_L_focal + λl1 _Ll_1
- 建图损失
- 运动预测损失
- 占用预测损失
_ L_occ = _λ_bce_L_bce + _λ_dice_L_dice
- 决策损失