本文经自动驾驶之心公众号授权转载,转载请联系出处。
笔者的个人理解
BEVGPT 是第一个生成式, 集预测、决策、运动规划于一体的自监督 pre-trained的大模型。输入BEV images, 输出自车轨迹, 并且能够输出对驾驶场景的预测, 该方案训练时需要高精地图.
之所以叫GPT,一方面是因为利用了GPT式的自回归训练方法, 这里自回归的输入是历史的轨迹及BEV, target 是下一个BEV和轨迹.
另一方面,能够做到生成, 即给定初始桢的BEV, 算法能够自己生成接下来的多桢BEV场景.
该方法并不是一个从传感器输入的端到端方法, 可以看成是基于感知的结果,将后面的模块用一个模型给模型化了, 在实际中也有重要的应用价值. 比如能够基于很多驾驶回传数据的感知结果和轨迹真值来训练驾驶专家模型.
问题&思考
- causal transformer训练那块儿感觉不是很详细, 没有具体说BEV图像和BEV轨迹在进入transformer之前是如何编码或token化的?
- BEV预测Head结构是什么样?
- trajectory head 结构是什么样?
- 训练时需要高精地图, 如何去掉高精度地图, 高精地图在这里起到的作用是和动态障碍物信息一起组成了当前BEV场景;
- 如果不用高精地图, 就只用障碍物的信息来训练的话, 即BEV Image里面只有障碍物的信息, 效果是怎样的? (人在没有车道线和路沿的乡间小路上仍然会开车), 个人认为应该做这个实验.
- 自动驾驶场景, 可以看作是连续序列, 使用GPT这种语言模型可能天然具有一定的优势, 但是对于输入, 目前还没有做到像语言那样简单又富含语义,这可能是接下来思考的重点. 一个可能的尝试是这里的BEV image,如果换成了BEV feature(比如用BEVformer或者LSS得到的BEV feature), 效果是怎样的?
BEVGPT到底做了什么?
预测,决策,运动规划在自动驾驶的模块设计中起着至关重要的作用。在很多工作中,这几个模块是通过共享backbone 用不同的head,以multi-task的方式进行学习。
作者认为这些模块应该集成到一个综合的框架中.尽管已经有一些工作在这么做,但是已有的方法中,有一些问题,比如复杂的输入表示,以及网络框架上的冗余设计,更重要的是,已有的工作不能够对驾驶场景做长时间的预测。
为了处理这些问题,作者重新思考每个模块的必要性,设计了一个尽可能性小的框架, 叫BEVGPT, 它是一种自监督pre-trained大模型, 并且集驾驶场景的预测,决策,运动规划与一体。
BEVGPT输入BEV的images, 根据周围的交通场景做决策。为了确保驾驶轨迹的可行性和光滑性, 作者设计了一套基于优化的运动规划方法。
BEVGPT在多个数据集上体现出了有效性和鲁棒性。并且BEVGPT能够精确地产生长时间的BEV images,这一点通过驾驶场景的预测得已体现。
BEVGPT简介
自动驾驶车辆是集成了预测、决策和规划技术的智能系统。一个被广泛接受的解决方案是将这些任务划分为不同的模块,并为每个模块设计并发展针对具体任务的模型。
在这个方案中,首先基于环境信息预测周围交通参与者的未来轨迹。然后利用预测的交通参与者行为以及地图信息来进行驾驶决策和规划自车的未来轨迹。然而,采用这种模块化的方法,系统容易受到不同模块之间累积误差的影响。
另一种替代范式是多任务学习,其中共享backbone进行特征提取, 但各自有独立任务heads。虽然这种方法减小了模型的大小和复杂性,并实现了更快的计算速度和较少的计算开销,但由于与不相关任务共享信息可能会损害模型性能,因此可能会遭受负面影响。
相反,作者认为自动驾驶的各个模块应该被整合到一个综合框架中。最近的研究表明,俯视图(BEV)视角对自动驾驶系统具有巨大潜力。BEV为以视觉为中心的感知提供了邻近交通情况的准确表示。然而,现有的BEV生成方法需要复杂的输入表示。此外,这些方法缺乏长期建模的能力,使得它们对未来BEV的预测不可靠。
作者提出了一个名为BEVGPT的综合框架,它将预测、决策和运动规划整合到一个单一的具有BEV图像作为输入的生成式预训练GPT中。
如图所示,
整个框架采用了一个两阶段的训练过程。首先,使用大量的自动驾驶数据来训练一个casual transformer。随后,通过在线学习使用一个逼真的模拟器对模型进行微调。预训练阶段的目标是学习驾驶场景的预测和决策,即自动驾驶任务中的BEV生成和自车的预测。
该模型具有较高的容量,可以预测未来4秒的轨迹,并预测未来6秒内的驾驶场景。
BEVGPT的方法设计
框架设计
作者从人类驾驶员的角度重新评估每个模块的必要性,以设计自动驾驶系统框架。
- 人类驾驶员对环境地图有先验的知识, 比如在使用导航软件时,每条道路的结构和路口位置都比较明显.
- 人类驾驶员并不会显示地追踪周围的其他车辆,并预测它们的未来轨迹。相反,他们更关注的是预测的自车轨迹是否会被其他车辆所占据。然后,他们会做出相应地驾驶决策。
基于上述思考, 作者设计了一个基本的模块, 即包括决策,运动规划和驾驶场景预测,而把目标跟踪以及他车运动预测模块去掉了.
在该框架中,决策输出的是自车未来T = 4秒内的位置,在motion planner进一步处理后生成一个符合动力学和平滑的轨迹。考虑到静态环境信息可以从高清地图轻松获取,我们更加关注包括车辆和行人在内的动态物体的精确预测。驾驶场景预测通过环境地图和动态物体预测的组合获得, 如下图所示
车辆模型
为了合理地表示自车运动并规划可行的轨迹, 这里用的是自行车模型.
【补充】自行车模型(Bicycle Model)的建立基于如下假设:
- 不考虑车辆在垂直方向(Z轴方向)的运动,即假设车辆的运动是一个二维平面上的运动。
- 假设车辆左右侧轮胎在任意时刻都拥有相同的转向角度和转速;这样车辆的左右两个轮胎的运动可以合并为一个轮胎来描述。
- 假设车辆行驶速度变化缓慢,忽略前后轴载荷的转移。
- 假设车身和悬架系统都是刚性系统。
- 假设车辆的运动和转向是由前轮驱动(front−wheel−only)的。
运动方程如下
分别代表着后轮的中心位置, 朝向角, 车辆速度, 是车辆的加速度及前轮的转角, 是前后轮子间的距离。由于整个系统是可微的, 这有助于轨迹的表示和运运规划。
轨迹表示
这里采用的是分段的表示, 每个子段都是由5次多项式来表达,用5次多项式是为了减少抖动. 假设轨迹总共有 个段组成, 每段的时间间隔相等,记为 , 因此对于第 段轨迹,便可表达为下面的多项式
运动规划
可以看到,上面设计的表达 , 基本上满足了对于可行性和平滑性的要求, 在我们的设定下, 我们选择jerk来表示控制effort【补充: minimum-jerk是轨迹优化的经典算法】。初始状态 和最终状态已指定。决策输出应包含在轨迹中。总之,运动规划提出了下面的最小jerk问题.
上面的方程看起来很亲切, 是运动规划问题的一般形式, 目标就是最小化控制effort jerk, 其他几项是初始条件,最终条件以及满足的一些约束. 确保每个片段的初始位置都是由pretrained的causal transformer预测的轨迹点得到. 代表了两个连续片段之间的连续性和光滑性, 代表了最大速度和最大加速度的限制,这里用的是车辆加速度的上界来作为整个系统的约束。
模型训练
训练数据
用的数据集是由Houston等人于2021年提出的, 包括了超过1000个小时的驾驶数据,采集跨度4个月,是由20辆车组成的车队。
从数据集中提取车辆姿态、语义BEV图像和静态环境地图图像。去除持续时间短于24秒(即240帧,时间间隔Δt = 0.1秒)的驾驶情景。然后将自车的未来目标位置作为决策训练的label。将每帧的车辆位置、当前BEV图像、下一桢BEV图像和下一桢环境地图图像作为训练集。
Pre-training
在预训练阶段,BEVGPT进行了20个epochs的训练。为了提高模型的决策能力和预测能力,这里使用均方误差(MSE)作为Loss。
分别代表着接下来4秒的决策输出和自车位置的GT.
代表着 BEV的预测和GT, 代表着静态地图, 所以这个系统是要用高精地图信息的. 是用来平衡各loss的.
超参信息
整个的超参信息如下
在线Fine-tuning
作者使用的是Woven Planet L5Kit进行自动驾驶仿真,以微调预训练模型。
BEV输入模型后,输出未来时间间隔内的轨迹点。运动planner根据决策输出生成动态可行的轨迹, 而后得到BEV的预测。
回看上面的loss公式, 模型要fine-tuning, 需要地图的信息, 这里作者开发了一种经验光栅化器,以帮助模型获得仿真驾驶场景的静态信息。这里的出发点是一旦知道静态全局地图、自车的初始世界坐标和世界坐标与光栅坐标之间的转换,就可以将所有车道和交叉口轻松映射到光栅化的BEV图像中。
有了BEV和静态图的信息之后, 接下来就是要得到真值的BEV。
仿真器经过Δt时间间隔的仿真后,就可以获得接下来BEV图像的真实数据。
然后算loss
因为这里仿真器是按照预测的轨迹进行走的, 所以轨迹那项的loss是0, 这也解释了为啥前面说pre-training主要是为了学习预测轨迹, 而fine-tuing为了学习预测接下来的BEV。这里模型微调1w步。
模型评测
用的是以下的指标来评估的模型的决策能力:
- 最终位移误差指标(FDE),指的是最终预测位置与参考位置之间的距离。
- 平均位移误差指标(ADE),指的是时刻t之前所有预测位置与参考位置的均方误差。
- 最终距离参考轨迹的距离指标(FDR),指的是时刻t预测位置与参考轨迹中最近航点的距离。
- 平均距离参考轨迹的距离指标(ADR),指的是时刻t之前所有预测位置与其最近位置的均方误差。
这里评估了不同预测时段的所有指标。我们将性能与《Houston et al. 2021》中使用的基于ResNet的方法进行比较。他们的论文中只提供了FDE指标的结果。由于验证数据集中的场景数量较大,这里随机选择了其中的50个场景来测试决策基线。我们计算了这些指标的平均值
我们从以下几个指标评估的模型的运动规划能力:
1)L2误差(L2),它指的是在模拟过程中执行的轨迹和日志记录中的真实位置之间的均方误差。每个场景的模拟持续时间为t。
2)碰撞率(CR),它指的是模拟持续时间t内发生碰撞的场景比例。
3)越野率(OR),它指的是越野场景数与总场景数的比例。越野指标定义为模拟持续时间t内参考轨迹与自车之间的距离大于2米。
从上表上可以看出来, 效果是优于UniAD的, 尤其是在越野率和碰撞率上面.
驾驶场景预测
为了评估长期未来驾驶情景预测的能力,作者设计了一些实验,其中模型需要在T = 6秒内生成未来的BEV图像。在这种情况下,BEVGPT需要通过自回归方法在60个时间步内预测未来的驾驶情景,其中第一帧的BEV为基础真实数据。我们选择了四种具有挑战性的交通情景。如图所示
第一个是带有红绿灯的十字路口,车辆需要理解红灯的意义,并在十字路口前停下来。第二个是具有高动态性的十字路口,车辆需要正确通过交叉口。第三个是交通参与者较多的直路,自车应该尽可能快地向前行驶。最后一个是道路交叉口,交通信号灯由红变绿,车辆需要理解这一信息并及时启动。
原文链接:https://mp.weixin.qq.com/s/XF8eL_wt5Ss-yJLRxAQuSQ