一、这篇论文在讲什么?
核心问题
端到端自动驾驶的多模态规划中,江湖上原本分为两派:
| 派系 | 代表方法 | 优点 | 缺点 |
|---|---|---|---|
| 静态词表派 | VADv2、Hydra-MDP、DriveSuprim | 算力友好,简单高效 | 颗粒度太粗,动作空间覆盖不足 |
| 动态生成派 | ipad(回归)、DiffusionDrive、GoalFlow(扩散/流匹配) | 极其精细,性能霸榜 | 模型臃肿,需要额外网络或疯狂迭代降噪 |
作者的灵魂拷问
动态生成真的是必需的吗?如果我把静态词表塞得密不透风,能不能打败它们?
SparseDriveV2 的答案
静态词表只要足够密,打分机制就能一统天下! 纯粹的打分范式(Purely Scoring-based),照样拿 SOTA!
形象的比喻:
- 动态生成派:像一个"现场作画"的艺术家,每次都要从头画一幅精细的作品,耗时耗力
- SparseDriveV2:像一个"菜单点菜"的食客,只要菜单够厚(词表够密),就能精准选中自己想要的那道菜
二、暴力扩容实验:用数据说话
为了验证"静态词表的潜力是无穷的"这个猜想,作者拿经典的 Hydra-MDP 模型做了一场"大力出奇迹"实验:
| 轨迹锚点数量 | NAVSIM v2 EPDMS 得分 |
|---|---|
| 1024 | 85.02 |
| 2048 | ↑ |
| 4096 | ↑ |
| 8192 | ↑ |
| 16384 | 87.35 |
| 32768 | 💥 OOM(显存爆了) |
结论:性能一路看涨,完全没有遇到瓶颈!限制它的只是你的算力和显存!
于是,SparseDriveV2 闪亮登场,它带来了两个改变游戏规则的核心创新,彻底打破了这个内存墙。
三、核心方法:两大创新
创新一:可扩展的词汇表征 —— 轨迹"解剖术"
一条轨迹包含两个维度:
- 空间几何:你去哪儿?(路径)
- 时间演进:你开多快?(速度)
既然完整的轨迹太多会导致内存爆炸,那就把它们拆了!
轨迹因式分解(Factorization)
| 组成部分 | 定义 | 采样方式 |
|---|---|---|
| 几何路径 (Path, $p$) | 剥离时间,只看地上的车辙印 | 在最大空间长度 $S_{max}$ 内,每隔固定空间间隔 $\Delta s$ 采一个点 |
| 速度配置 (Velocity, $v$) | 剥离空间,只看迈速表 | 在总时间 $T$ 内,每隔固定时间 $\Delta t$ 记录一个平均速度 |
积木重组:如何还原轨迹?
当需要还原轨迹时,通过计算时间步 $t$ 时的累计行驶距离:
$$s_t = \sum v_k \Delta t$$然后在路径 $p$ 上进行距离插值,就能完美拼出完整的时空轨迹 $\tau$!
形象比喻:就像玩乐高积木,你不需要为每种组合单独准备一个成品,只需要准备有限数量的"路径积木"和"速度积木",然后按需组装即可!
创新二:丝滑的打分策略 —— 大浪淘沙
面对几十万条轨迹,一个一个打分肯定会死机,于是作者设计了**“漏斗式"打分法**:
┌─────────────────────────────────────────────────────┐
│ 第一层:场景编码 (Scene Encoding) │
│ - 用 ResNet 提取多视角图像特征 │
│ - 编码自车状态 │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 第二层:粗粒度解耦打分 (Coarse Factorized Scoring) │
│ - 路径打分:MLP + 场景特征 → Top-K_p 个路径 │
│ - 速度打分:MLP + 场景特征 → Top-K_v 个速度 │
│ - 筛掉离谱组合(高速上猛打方向盘、拥堵路段狂飙) │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 第三层:细粒度轨迹打分 (Fine-Grained Scoring) │
│ - 轨迹重条件化(Re-conditioning) │
│ - 可变形聚合(Deformable Aggregation) │
│ - 高精度时空依赖推理 │
│ → 选出最终冠军轨迹 │
└─────────────────────────────────────────────────────┘
为什么需要"轨迹重条件化”?
高速行驶和急转弯之间存在物理冲突,路径和速度不是绝对独立的!
所以作者引入了轨迹重条件化(Trajectory Re-conditioning),用可变形聚合让组合后的轨迹特征再次与场景特征互动,进行高精度的时空依赖推理,最终给出精准打分!
四、词汇构建:从数据到锚点
两步聚类法
作者在海量人类驾驶数据中,用 K-Means 聚类算法 分别聚类出:
- $N_p$ 个路径锚点:代表人类常见的行驶路径形态
- $N_v$ 个速度锚点:代表人类常见的速度配置
奇迹时刻:排列组合
把它们两两排列组合!
$$\text{总轨迹数} = N_p \times N_v$$只需极小的内存,就能组合出包含几十万条候选轨迹的超高密度轨迹词表!
五、训练与推理
训练秘籍
损失函数:基于距离的软分类交叉熵损失(CE Loss)
| 评估维度 | 距离度量 |
|---|---|
| 路径评估 | 点到点的平均平方距离($L_2$ 距离) |
| 速度评估 | 绝对误差($L_1$ 距离) |
| 细粒度轨迹评估 | $L_2$ 距离 |
额外监督:还请了一位"基于规则的老师(Rule-based Teacher)“来传授心法:
- 安全性
- 行驶进度
- 舒适度
- 交通规则遵守度
使用二元交叉熵(BCE)损失进行监督。
推理流程
综合这些分数,选出"选秀冠军"直接控车!
六、实验设置:赛场与装备
主战场 NAVSIM
| 配置 | 数值 |
|---|---|
| 路径词表 $N_p$ | 1024(1米间隔,最长50米) |
| 速度词表 $N_v$ | 256(0.5秒间隔,最长4秒) |
| 总候选轨迹 | 262,144 条 |
| 与前人对比 | 比常用的 8192 个锚点密 32 倍! |
推流过滤魔法
26万条轨迹怎么算?
| 层级 | 筛选策略 | 结果 |
|---|---|---|
| 第一层 | Top 128 路径 + Top 64 速度 | 筛掉大部分离谱组合 |
| 第二层 | Top 20 路径 + Top 20 速度(v2加速:Top 10 速度) | 形成高质量子集 |
| 最终 | 细粒度打分 | 只给 400 条最靠谱的轨迹打分 |
轻量级装备
| 配置项 | 数值 |
|---|---|
| 骨干网络 | ResNet-34(仅 21.8M 参数) |
| 输入分辨率 | 256 x 512 |
| 训练设备 | 8 张 NVIDIA L20 GPU |
| Batch Size | 128 |
| 学习率 | $1 \times 10^{-4}$ |
| 权重衰减 | 0 |
| 训练 Epochs | 10 |
七、主打战绩:越级挑战
NAVSIM v1 榜单
PDMS 终极高分:92.0
- 完爆其他打分方法和动态生成方法
- “以下犯上”:用袖珍的 ResNet-34 干翻了配备 V2-99 骨干网络(96.9M参数)的 GoalFlow 和 Hydra-MDP!
NAVSIM v2 榜单
| 模型 | EPDMS 分数 |
|---|---|
| SparseDriveV2 | 90.1 |
| DiffusionDriveV2(前任霸主) | 87.5 |
特别是在 EP(驾驶进度) 指标上进步神速,证明了致密词表真的能覆盖更广的动作空间!
Bench2Drive(闭环测试)
| 指标 | 分数 |
|---|---|
| 驾驶得分 | 89.15 |
| 成功率 | 70.00% |
| 多能力得分 | 67.67% |
全面碾压 TCP-traj 和 DriveAdapter 等一众强敌,展现了强大的复杂场景泛化能力。
八、消融实验:抽丝剥茧
词表密度实验
| 词表大小 | EPDMS 分数 |
|---|---|
| 512 × 128 | 88.7 |
| … | ↑ |
| 1024 × 256 | 90.1 |
结论:词表越密,效果越好!
关键组件实验
| 配置 | 效果 |
|---|---|
| 可变形聚合(DFA) | ✅ 提升 |
| 轨迹重条件化(Re-conditioning) | ✅ 提升 |
| DFA + Re-conditioning | 🏆 黄金搭档 |
九、附录彩蛋:Bench2Drive 闭环实验细节
配置调整
| 配置项 | 数值 |
|---|---|
| 路径锚点最大长度 | 15 米 |
| 速度视野 | 3 秒 |
| 骨干网络 | ResNet-50 |
| 训练设备 | 16 张 L20 显卡 |
| 输入 | 6 个摄像头(256 x 704) |
| 辅助任务 | 3D 目标检测、在线建图、运动预测 |
两段式训练
- 第一阶段:100 个 Epoch 的感知训练
- 第二阶段:10 个 Epoch 的感知与规划联合训练(纯模仿学习,没用规则老师监督)
学习率分别为 $4 \times 10^{-4}$ 和 $3 \times 10^{-4}$。
如何控车?
| 控制维度 | 策略 |
|---|---|
| 横向控制 | “随速可变目标距离”:$d = 0.5 \times \text{自车速度} + 2.5$,寻找路径上的预瞄点打方向盘 |
| 纵向控制 | 直接取速度配置里的第一个速度作为目标油门/刹车 |
定性结果展示
与基线相比(红线),SparseDriveV2 的轨迹(蓝线):
- 更贴近人类老司机(绿线)
- 急转弯更平滑
- 交通效率更高
- 不会像呆子一样停在原地!
坦诚的局限性:在缺乏导航信息的情况下,系统偶尔也会"迷路”。
十、个人思考与疑问
值得学习的亮点
- 极简哲学:用最纯粹的打分思路,证明了"简单方法 + 大规模"可以打败"复杂方法 + 小规模"
- 因式分解的智慧:把轨迹拆成路径和速度两个维度,巧妙地绕过了显存爆炸的问题
- 漏斗式打分:三层筛选机制既保证了计算效率,又没有牺牲最终精度
待探索的问题
- 词表密度的极限:如果显存继续增大,词表密到什么程度会开始出现边际效应递减?
- 路径和速度的耦合:重条件化机制是否可以进一步优化,更好地捕捉两者的深层关联?
- 与扩散模型的融合:能否将 SparseDriveV2 的致密词表思想与扩散模型的生成能力结合起来?
参考链接
- 论文原文:https://arxiv.org/pdf/2603.29163
- 相关工作:Hydra-MDP, VADv2, DiffusionDrive, GoalFlow