1. 写在前面
今天分享一篇自动驾驶领域的论文VADv2(End-to-End Vectorized Autonomous Driving via Probabilistic Planning), 基于矢量表征和概率规划的E2E架构,2024年2月份华中科技大和地平线合作的一篇文章, 在经典的端到端模型架构上作出了基于概率规划去输出规划轨迹的改进,更好的建模场景的不确定性。
- 论文地址: https://arxiv.org/pdf/2402.13243
- GitHub地址: https://hgao-cv.github.io/VADv2
内容如下
- 1. 写在前面
- 2. 传统自动驾驶 VS 端到端自动驾驶
- 3. 前期工作
- 3.1 MapTR
- 3.2 PIP网络
- 3.3 VAD架构
- 3.3.1 Abstact & Introduction
- 3.3.2 模型架构
- 4. VADv2
- 4.1 论文动机
- 4.2 方法论
- 4.2.1 模型
- 4.2.2 Scene Encoder
- 4.2.3 概率规划
- 4.2.4 思路来源
- 4.2.5 Planning词典的构建
- 4.2.6 训练损失
- 4.2.7 推理阶段
- 4.3. 实验
- 4.3.1 闭环结果
- 4.3.2 开环结果
- 4.3.3 定性定量
- 5. 小总
Ok, let’s go!
2. 传统自动驾驶 VS 端到端自动驾驶
VAD是一个经典的端到端自动驾驶的模型结构框架, 介绍具体结构之前,先简单了解下端到端自动驾驶和传统自动驾驶的区别:
定义 | 特点 | |
---|---|---|
传统自动驾驶 | 感知、预测、规控解耦,每个模块独立优化 | (1) 每个模块需要单独的encoder, 存在大量冗余计算,每个模块难度会下降 (2) 模块间梯度断开,仅传递指定特征(检测框), 存在信息丢失和误差累计,影响模型最终性能 |
端到端自动驾驶 | 统一的感知-预测-规划网络,多任务联合优化 | (1) 共享的Backbone, 大幅降低计算开销 (2) 规划任务的梯度可反转到raw data, 所有上游任务均可以为规划性能服务 (3) 端到端模型是data-driven, 对人工设计的依赖小,无需人工设计各种复杂的规则逻辑 |
3. 前期工作
VADv2是在VAD的基础上进行的改进,模型架构沿用了VAD上面的模型架构, 而VAD又采用了他们之间提出的一些技术,所以这个部分,主要是先大概介绍下作者团队之前的一些工作。这些工作不会详细整理, 感兴趣的可以看对应的论文。
3.1 MapTR
这是个在线预测的地图方案(端到端在线局部建图),地图在自动驾驶领域中的重要性不言而喻, 主要负责给自动驾驶提供自车的位置以及周围的环境等信息, 在传统自驾领域里面用的是高精地图, 精度非常高,但是标注和维护的成本非常搞。这篇论文的工作是提出了一个能实时在线建图的方案, 用模型的力量取代之前人工的一些工作。
- 输入: 周视的图像(7V) + lidiar点云数据
- 输出: 矢量化的道路结构(人行道, 车道分割线,路边界)
优点:
- 传感器 + 模型, cost 低
- 端到端输出, 自动化
主要有两篇paper:
-
MapTRv1: https://arxiv.org/abs/2208.14437(地图的物理层级建模,比如道路分割线)
-
MapTRv2: https://arxiv.org/pdf/2308.05736(地图的物理层级+逻辑层级(道路中心线)中心线,路口处各种先)
-
代码:https://github.com/hustvl/MapTR
3.2 PIP网络
有了在线的建图方案之后, 作者团队又进了一步, 把建图方案和轨迹预测相结合来证明在线建图方案的有效性,所以基于这个想法作了实验, 提出了PIP网络(Perceive, Interact, Predict: Learning Dynamic and Static Clues for End-to-End Motion Prediction: 基于动静态场景元素交互的端到端轨迹预测)(在线预测地图+轨迹预测方案)
- paper:https://arxiv.org/pdf/2212.02181
- 输入:周视的6V图片,提取出Map Query, Agent Query
- 核心: 地图信息和Motion信息设计, 作到agent与地图元素更好的交互
- 充分利用显式地图元素和隐式query的矢量化地图元素特征
- 针对预测地图(非高精地图)设计交互策略, 需要规避预测地图产生的误差对模型的影响
- Agent-wise normalization: 多目标的轨迹预测,每个目标在场景中位置不同,所以把每个目标周围的地图元素放缩到每个目标为中心的坐标系下
- Filtering:
- 过滤掉confindence score低的地图元素
- 针对距离范围的过滤,使得每个目标只关注周围的地图元素
- 交互:
-
作完检测, agent query包含目标的特征,这里又引入了一个轨迹模态的query(mode query), 来捕捉不同的驾驶意图下的轨迹特征, 两者合并,得到用来作轨迹预测的motion query
-
Mtion之间交互 + 地图信息交互
-
更新后的Motion query, 用来预测未来的车辆轨迹
-
- 结论: 在线地图也能有效的提升轨迹预测方法,接近使用高精地图方案, 证明在线地图的可行性
多模态的endpoint轨迹预测可视化(6模态的轨迹预测)
- 轨迹预测的中点可视化
- 原始的车辆朝向归一化,统一朝前
3.3 VAD架构
在前面两篇工作的基础上,2023年2月份该团队提出了一个经典的端到端模型架构VAD: Vectorized Scene Representation for Efficient Autonomous Driving,矢量化的场景表征的planning方案,把自车规划的工作也加入了进来。(在线建图 + Motion预测 + 自车规划)
- paper:https://arxiv.org/pdf/2303.12077(ICCV.2023)
主要创新点:
- 首次提出基于矢量化环境表征的端到端感知+预测+规控的方案
- 提出三项矢量化规划约束,训练阶段优化planning安全性
- 无需高精地图和人工设计的后处理步骤
- 基于Transformer架构和统一的Query 表征,扩展性强
3.3.1 Abstact & Introduction
简介 | 优/缺点 | 典型 | |
---|---|---|---|
已有方案 | 依赖密集的栅格化场景表示,比如OCC、语义Map | 1. 计算量大 2. 缺少instance级别的结构化信息 | UniAD |
新方案 | 将整个驾驶场景矢量化 | 1. instance级别的规划约束,提升了规划安全性 2. 运行速度更快 3.矢量化场景表示优于栅格化。因为矢量化的道路信息已经能够表达道路结构,矢量化的障碍物信息已经能够用于碰撞检测,同时计算量更小 4.矢量化结果同时被规划隐式和显式的使用,隐性feature会用于规划模型,同时显式结果也会给到规划做规划约束,碰撞约束、车道线约束、车道方向约束 | VAD |
矢量化的场景信息建模, 矢量化 VS 栅格化(预测方面的两个研究方向)
定义 | 特点 | |
---|---|---|
栅格化 | 1. 驾驶场景表征为渲染图的形式 2. 重感知, 相对降低规控模块的负但,引入了很多后处理测量,导致网络鲁棒性稍差 3. 占有图网络 | 1. 像素级别的预测,计算量大(比如与驾驶无关区域,场景路边等,栅格化表征都需要作预测) 2. 丢失实例级别的特征(比如道路拓扑结构, 在栅格化场景表征中是pixel, 没有方向信息和连接性) 3. 规控方面用的也比较多,原因是易于和现有的安全后处理策略结合(比如,基于占有图(occupcy)预测,仅可在可行区域规划轨迹) |
矢量化 | 1. 场景作抽象,把动静态场景元素编码成向量的形式 2. 轨迹预测领域大规模使用 | 1. 极大降低网络计算量(场景做了抽象, 与场景无关的要素不编码, 矢量表征 相比与 Pixel, 语义层级更高,信息更丰富) 2. 矢量化表征容易和Transformer结合 3. 更高效的场景表征, 保留实例级别特征(比如车辆的速度信息,道路方向等都可以编码到向量中) |
3.3.2 模型架构
架构总结
模块 | 模型结构 | 输入/输出 | loss设计 |
---|---|---|---|
BEV Encoder | 参考Bev Former, 采用了ResNet50 | 输入: 多视角的图片 输出: BEV Feature | |
Vectorized Motion Transformer | 输入:BEV feature 输出:agent’s attributes (location, class score, orientation, etc.)和每个agent的多条未来轨迹 | Motion Loss: 1. L1 loss: 作为回归loss预测agent的回归属性,比如location,orientation 2. forcal loss预测agent的class 3. l1 loss作为预测轨迹和真实轨迹的距离 4. forcal loss用于多模态之间的分类 Motion会给其他agent预测多条轨迹,有最小FDE的会被作为representative trajectory。Loss计算既考虑了轨迹距离,也考虑了多轨迹的分类loss | |
Vectorized Map Transformer | 输入:BEV feature 输出:Map vectors(只考虑3种,车道分隔线、道路边界和人行横道) | Map loss (Lmap) 1.Manhattan distance 2. map classification loss | |
Planning Transformer | 输入:three kinds of driving commands: turn left, turn right and go straight, Ego status,Updated Agent Query Updated Map Query 输出:自车未来一段时间的预测轨迹,一般6s | 1. imitation learning loss: 预测自车轨迹和真值自车轨迹的loss (Limi) 2. Ego-Agent Collision Constraint: 自车和他车的碰撞Loss (Lcol) 3. Ego-Boundary Overstepping Constraint: 自车轨迹和车道线的loss (Lbd) 4. Ego-Lane Directional Constraint: 自车轨迹和车道行驶方向的loss (Ldir) |
重点细节
- Map Query + Vectorized Map Transformer 是前面的MapTR方案
- Agent Query + Vectorized Motion Transformer 是前面PIP的方案
- 创新点:
- 加了一个Planning Transformer(端到端架构)
- 提取ego query(随机初始化) ,分别和Motion agent query 与 Map query分别交互,提取驾驶场景中用到的动态 和 静态的信息, query间隐式特征的交互
- 加 自车的状态信息 + 导航的信息 预测自车的轨迹信息
- 显示特征(motion的轨迹 + 地图的元素道路拓扑) 作约束,提出了3种约束,以loss的形式体现并惩罚,监督模型训练,使得网络模型获取一个驾驶的先验信息。- Map Query + Vectorized Map Transformer 是前面的MapTR方案
- Ego-Agent碰撞约束 (Ego-Agent Collision Constraint):自车和它车是否碰撞,保证与它车的纵向和横向的安全距离
- 自我边界超越约束 (Ego-Boundary Overstepping Constraint): 与道路边界保持一个安全距离
- 通道方向约束 (Ego-Lane Directional Constraint):预测出来的轨迹要和车道线的方向尽量一致, 车头偏离车道线方向太多,不合理(角度约束)
- Ego-Agent碰撞约束 (Ego-Agent Collision Constraint):自车和它车是否碰撞,保证与它车的纵向和横向的安全距离
- 加了一个Planning Transformer(端到端架构)
模型训练
结果
和其他模型的对比结果:
模型自己的定型定量等实验
4. VADv2
4.1 论文动机
自动驾驶的决策规划存在天然不确定性, 主要来自:
- 场景的不确定性(同一个场景,自车可能有多种选择)
- 人类行为的不确定性(司机的驾驶习惯和行为)
这些隐式的因素很难直接被建模出来(左边两张图)。
判别式建模 VS 概率建模
特点 | 优/缺点 | 典型 | |
---|---|---|---|
判别式建模 | 1. 输出一条确定性的轨迹, 场景与轨迹之间,建模的是一种确定性关系 2. Loss function追求的与轨迹的l2误差最小 例子: 同一个场景, 可能司机两次作出了不同的轨迹,判别式建模,可能会在两个轨迹间作一个折中 | 确定性建模基于的假设是环境和行为之间有确定的相关性, 但实际上很多场景,人类的行为是多变的 1. 不能很好的处理非凸的可行性空间(决策不只一种)情景, 这时候可能兼顾多种决策,输出折中结果,导致安全问题 2. 倾向于输出训练数据中看到的最多的主导轨迹或者行为 | VADv1及之前的方案 |
概率建模 | 1. 建模场景下不同action的分布, 最后根据场景选择概率更大的action 2. 根据不同策略,选择想要的轨迹 | 1. 更加丰富的监督信号:不仅监督正样本,也监督了planning vocabulary的所有候选 2. 会输出多种预测结果, 比较灵活,能更好的匹配规则进一步处理 | VADv2 |
4.2 方法论
4.2.1 模型
模型架构
总结
模块 | 模型结构 | 输入/输出 | Loss设计 |
---|---|---|---|
Encoder | 输入:multi-view image sequence 输出:一组Scene Tokens map token: the vectorized representation of the map (including lane centerline, lane divider, road boundary, and pedestrian crossing). agent token: other traffic participants’ motion information (including location, orientation, size, speed, and multi-mode future trajectories). traffic element token: the states of traffic elements. In CARLA, we consider two types of traffic signals: traffic light signals and stop signs. image token | Scene Token Loss: Map tokens, agent tokens, and traffic element tokens are supervised with corresponding supervision signals to make sure they explicitly encode corresponding high-level information. | |
Planning Transformer | MLP Transformer | 输入:Scene Tokens, Ego state, Navi info 输出:多条轨迹及每个轨迹的概率 轨迹分布词表:we collect all the planning actions in driving demonstrations and adopt the furthest trajectory sampling to select N representative actions to serve as the planning vocabulary. Each trajectory in V is sampled from driving demonstrations and thus naturally satisfies the kinematic constraints of the ego vehicle, which means that when the trajectory is converted into control signals (steer, throttle, and brake), the control signal values do not exceed the feasible range. By default, N isset to 4096. 根据驾驶演示得来,所以轨迹肯定能够转换为有效的控制信号;使用最远轨迹抽样法;N取值是4096 驾驶轨迹分布真值:训练数据中轨迹概率分布 | Distribution Loss: 输出的轨迹概率分布与训练数据中的轨迹概率分布的KL散度 Conflict Loss: 与其他agent的轨迹冲突、与车道线的边界冲突 |
创新点:
- 提出planning vocabulary
- Action Space是所有可行的空间, 离散化成词典, vocabulary的每个action对应一条轨迹
- 根据数据集中的分布,来判断当前场景下, 可行action的概率,让模型建模action的分布
前向传播过程:
给定某个特定的场景,模型要学习到和行为之间的相关性, 预测轨迹的一个分布,从而决定有哪些行为是可行的
4.2.2 Scene Encoder
Image本身是稀疏, 信息是低层级的, 所以通过各种Encoder对场景特征进行编码,获取instance-level的token, 获得高级别的特征,主要有4中tokens(见图):
- Map Tokens: 地图表征信息, 道路中心线,分道线,道路边界等路网拓扑
- Agent Tokens: 其他交通参与者(位置,方向,大小,速度,状态,行为,轨迹等)
- Image Tokens: 多视图,场景信息
- Traffic Element Tokens: 交通元素(信号灯, 标志牌)
其他: 导航信息和自车的一些状态特帧,也通过NLP编码成Embedding。
4.2.3 概率规划
对于planning中的不确定性,采用了一种概率规划。
Planning action的空间是高维连续的,直接建模不可行,所以基于收集的大量轨迹数据,对planning的动作空间离散化。具体做法:
-
在驾驶场景的数据集中,收集了所有的planning actions(轨迹)
-
采样N个有代表性行为轨迹, 构成了一个planning词典 V = a i N V = {a^i}^N V=aiN(默认 N = 4096 N=4096 N=4096)
-
轨迹点(N,2)需要编码到高维空间,因为后面要和场景表征token进行交互
- 借鉴Ne