1.参考
论文:https://arxiv.org/pdf/2212.10156
代码:https://github.com/OpenDriveLab/UniAD
2.摘要
原来的自动驾驶任务都是分为模块化的,感知,预测,规划等。每个独立的任务可能都优化得很好,但可能会存在累积误差或者各个独立的任务之间协调不足。
提出一种统一的框架,uniAD,利用各个模块的优势,以全局角度为智能体交互提供互补的特征抽象。在nuScences数据集上有SOTA的表现。
3.介绍
由多个独立的任务,到多任务学习(通过共用backbone,使用不同的head,来训练不同的任务),并将其扩展到tranformer BEV等,mobileye,tesla,nvidia均在上面做了一些个性化的产品。该方法降低车载芯片的计算代价。
端到端的自动驾驶将所有的节点融合在一起,感知,预测,规划。
为了实现可靠地以规划为导向的自动驾驶系统,应该如何设计有利于规划的pipeline ?
UniAD的关键组件是基于查询的设计,用于连接所有节点。
贡献:
(1)基于规划导向的理念
(2)提出UniAD,一种端到端的自动驾驶系统
(3)在现实场景的benchmark上测试,具有SOTA的性能。
4.方法
UniAD包括四个基于编码器的transformer,TrackFormer,MapFormer,MotionFormer,OccFormer,Planner。
(1)TrackFormer联合检测和跟踪。检测到新帧目标到跟踪会生成新目标,下一帧查询上一帧交互在self-attention 模块中聚合时态信息,直至该智能体agent消失,将自车也作为一个智能体引入。其中该智能体传给MotionFormer。
(2)MapFormer二维全景分割,作为地图信息来查询,含车道线分隔线,交叉路口
(3)MotionFormer捕获三种交互,agent-agent,agent-map,agent-goal point。轨迹预测。
(4)OccFormer实例级别的占用。
(5)Planning,没有HD和道路信息,将原始导航信号(左转、右转、直行)转换为三个可学习的embedding。通过MotionFormer可以查询自车周边的多模态意图(其他agent)、OccFormer查询周围环境,解码为周围路点。避免碰撞优化下面的代价函数。
训练:是一个两阶段的训练任务,先训练感知。然后再训练端到端的任务20epoch。
5.实验
实验在Nuscences数据集上进行的。
(1)消融实验
UniAD方法比ID-0这种通过多个检测头的多任务学习性能更好。
(2)模块性能对比
(3)模块组件的消融实验
(4)可视化结果
6.未来可能要做的事
(1)如何为轻量级部署设计和管理系统值得未来探索。
(2)是否将更多的任务(如深度估计、行为预测)以及如何将其嵌入系统中,也是值得未来研究的方向。