什么是"端到端"?
端到端 = 传感器输入直接到控制输出,中间没有人工设计的模块边界
传统:感知 → 预测 → 规划 → 控制(四个独立模块,各管各的)
端到端:摄像头/雷达 → 一个网络搞定 → 方向盘/油门/刹车
“端"指的是输入端(传感器)和输出端(控制),“端到端"就是从输入直接到输出,一以贯之。严格来说,端到端自动驾驶希望用一个统一的神经网络,直接把多视角图像、激光雷达点云等原始信号,映射成车辆的控制指令(轨迹点、方向盘转角、油门刹车)。
需要注意的是,现实工业落地里的"端到端"是一个相对概念:从最纯粹的"图像到方向盘"到保留部分任务结构(感知、规划)的方案,都可以被叫作端到端。下文我们会看到,这条光谱其实是端到端技术演进的主线。
为什么要走向端到端?
模块化方案的瓶颈
传统 pipeline 看似清晰,实则问题重重:
| 问题 | 说明 |
|---|---|
| 误差累积 | 感知漏检一个目标 → 预测错 → 规划错,错误层层放大 |
| 信息瓶颈 | 模块间只传结构化结果(如 bbox、轨迹),丢失丰富原始信息 |
| 无法联合优化 | 每个模块单独训练,无法为最终目标做全局优化 |
| 计算冗余 | 多个模块重复提取相似特征,BEV 特征反复重算 |
| 上游误差不可回传 | 规划模块错了,没法反向告诉感知"你应该看清一点” |
端到端的卖点:把所有环节揉成一个网络,朝着"开得安全"这一个唯一目标一起优化。 梯度可以从最终的规划/控制 loss 一路回传到最前面的视觉编码器,让感知为规划服务。
端到端的三个发展阶段
🥚 阶段一:隐式端到端(Implicit E2E)
直接用一个大网络从图像回归出轨迹或控制量,网络内部不显式地做感知、预测等任务。这一阶段以早期探索为主。
代表工作与思路:
| 工作 | 核心做法 |
|---|---|
| NVIDIA PilotNet(DAVE-2,2016) | 一个小 CNN 直接从单目图像回归方向盘角度,开启"行为克隆"先河 |
| Conditional Affordance Learning(CAC,2019) | 用 affordance 中间量(车距、航向)约束网络,缓解纯回归的发散 |
| Learning by Cheating(LBC,2019) | 先用"特权信息"训教师网络,再蒸馏到只用视觉的学生网络 |
| MP0 / Urban Driver(2022) | 在向量化场景上直接做策略学习,引入 RL/IL 框架 |
隐式 E2E 的主要问题:
- 黑盒:内部完全不可解释,出事没法定位
- 难训练:直接回归控制量监督信号太弱,容易陷入局部最优
- 效果不稳定:泛化性差,遇到没见过的场景容易"翻车”
但它奠定了"用网络直接输出动作“这一思路,是后续所有端到端工作的鼻祖。
🏗️ 阶段二:显式端到端(Explicit E2E)—— 当下主流
网络内部保留感知、预测、规划的任务结构,但用梯度让它们联合优化。既有端到端的优势,又保留一定可解释性。核心思想是"任务级联合,而非模块级独立”。
代表工作:
| 模型 | 特点 |
|---|---|
| UniAD(2023,CVPR Best Paper) | 首个完整的任务级端到端框架,奠定方向 |
| VAD(2023,ICLR 2024) | 向量化的端到端,高效优雅 |
| PARA-Drive | 并行多任务 |
| SparseDrive(2024) | 稀疏化设计,提速降耗 |
| AD-MLP / ego-MLP | 简洁的轨迹回归 baseline |
🚀 阶段三:生成式 / 大模型端到端 —— 前沿
引入扩散模型、VLM、世界模型,让端到端具备生成能力和推理能力。这一阶段的特征是"从确定性回归走向多模态分布,从纯感知映射走向带推理的决策"。
代表工作:
| 模型 | 特点 |
|---|---|
| DiffusionDrive(2024) | 用 Flow Matching / 扩散做多模态轨迹生成 |
| DriveVLM | VLM 驱动的端到端推理 |
| EMMA(Wayve,2024) | 多模态大模型做端到端,统一感知+规划 |
| GoalFlow / Diffusion Planner | 扩散做目标导向的轨迹生成 |
显式端到端三大代表作深入剖析
🏛️ UniAD:任务级端到端的奠基者
UniAD(Unified Autonomous Driving)是首个把"跟踪 → 在线建图 → 运动预测 → 占用预测 → 规划"五大任务串成一个网络的方案。它的几个关键设计:
- Query-based 串联:所有任务通过 query 这一接口连接。Track Query 把检测/跟踪结果传给 Motion Forecasting,再传给 Occupancy,最后 Planner 通过 ego query 直接消费所有信息。
- 梯度贯通:规划 loss 可以一路反传到最前面的图像 backbone,感知模块"被迫"为规划服务。
- 辅助监督:检测、跟踪、建图、运动预测、占用都有显式监督,避免规划信号过弱导致退化。
- 占有预测当"安全网":Occupancy Map 用来表达 Planner 没想到的障碍物(如静态路障),降低碰撞。
为什么 UniAD 拿了 Best Paper?因为它第一次证明了"端到端 + 多任务监督"能稳定跑通,并定义了后续两年显式 E2E 的基本范式。
🧩 VAD:向量化带来的效率革命
UniAD 强归强,但又慢又重(推理 ~30Hz 都很勉强)。VAD(Vectorized Auto-Driving)的核心贡献是用向量化场景表示替代密集栅格化表示:
- Vectorized Map / Agent:地图元素(车道线、边界)和动态目标用矢量(折线、关键点)表示,而不是稠密的栅格图。
- 大幅降算力:VAD-Base / VAD-Tiny 比 UniAD 快 2~4 倍,显存占用大幅下降,更适合上车。
- Ego Query 规划:用一个 ego-vehicle query 与场景 query 交互,回归自车未来轨迹。
- 多任务辅助:保留地图矢量化、agent 矢量化的监督,帮助学到结构化场景理解。
一句话总结:VAD 把 UniAD 的"重任务联合"做到了"轻量可上车",是显式端到端工业落地的关键一步。
🪶 SparseDrive:把稀疏化做到极致
SparseDrive 进一步把"算力"打下来,思路是全程稀疏:
- 稀疏检测:放弃稠密 BEV,用一组稀疏的 centerness query 直接在 3D 空间里检测目标。
- 稀疏时空预测:只对 detected agent 做运动预测,不再对每个 BEV 网格算未来。
- 两阶段规划:先粗规划,再用 motion planner 精修,避免一次回归不稳。
- 性能/效率双赢:在 nuScenes / NAVSIM 上同时拿到高规划指标和低延迟。
三者放在一起对比:
| 维度 | UniAD | VAD | SparseDrive |
|---|---|---|---|
| 场景表示 | 密集 BEV + Query | 向量化 | 全稀疏 |
| 速度 | 慢 | 中 | 快 |
| 可上车性 | 弱 | 中 | 强 |
| 历史地位 | 范式定义 | 工程化里程碑 | 极致效率 |
🎨 扩散模型与 DiffusionDrive
为什么用扩散做轨迹规划?
传统规划头常用确定性回归:一个 MLP 输出一条轨迹。但真实驾驶本质是多模态的——同样的场景,你既可以刹车、也可以变道、也可以匀速绕行,没有唯一正确答案。确定性回归会出现:
- 模式平均:网络把"刹车"和"变道"两条最优解平均,得到一条不合理轨迹(比如撞墙)
- 无法表达不确定性:只给一条线,下游无法做风险评估
扩散模型(Diffusion)天然适合多模态分布建模:采样 N 次就能得到 N 条不同的合理轨迹,再通过评分函数(碰撞、舒适度、合规性)挑最好的。
Flow Matching 的优势
经典的 DDPM 扩散需要上百步去噪,太慢,做不了实时规划。Flow Matching(流匹配) 作为扩散的近亲,有几个明显优势:
| 维度 | 经典扩散(DDPM) | Flow Matching |
|---|---|---|
| 采样步数 | 几十~上百步 | 几步即可 |
| 训练稳定性 | 受噪声调度影响大 | 更稳定 |
| 路径设计 | 固定的加噪/去噪 | 可学习的概率路径 |
| 理论基础 | Score Matching | Vector Field 回归 |
DiffusionDrive 的核心就是把 Flow Matching 用在轨迹生成上:
- 用 条件流匹配(Conditional Flow Matching) 在 ego query 的引导下,把一个简单先验分布(如高斯)“流"到目标轨迹分布
- 一次前向能输出多模态候选轨迹
- 用 collision / comfort / similarity 等代价函数打分选最优
- 在 NAVSIM / nuPlan 上拿到 SOTA 级 PD(Progress + Distance)分数
直觉理解:扩散/Flow Matching 让规划从"画一条线"升级成"画一片合理的可能性云,再挑最稳的那条”。这正是端到端走向不确定性感知的关键一步。
📊 Loss 设计与训练策略
多任务 Loss 权衡
显式 E2E 同时优化多个任务,loss 形式通常长这样:
L_total = w_plan * L_planning + w_det * L_detection
+ w_track * L_tracking + w_map * L_mapping
+ w_motion * L_motion + w_occ * L_occupancy
关键难点:这些 loss 的量级、收敛速度差异巨大。规划 loss 几米、检测 loss 几十、占用 loss 几百,直接相加会被某一项主导。常用解法:
- Uncertainty Weighting(Kendall et al.):让网络自动学习每个任务的权重,与任务的同方差不确定性挂钩。
- GradNorm / DWA:动态调节权重,让各任务梯度量级平衡。
- 分阶段训练:先预训练感知/预测,再冻结 backbone 微调规划(curriculum 思路)。
规划 loss 本身通常包含:
- L2 / ADE / FDE:与人类驾驶轨迹的位移误差
- 碰撞惩罚:与动态/静态障碍物的碰撞 soft penalty
- 舒适度约束:jerk(急动度)、横向加速度惩罚
- 方向/航向一致性:避免轨迹折返
课程学习(Curriculum Learning)
从简单到复杂逐步加难度:
- 直道 + 少车 → 2. 路口转弯 → 3. 拥堵变道 → 4. 极端长尾
这种渐进式训练能显著提升收敛稳定性,避免一开始就让网络在复杂场景里"懵掉"。
数据增强
- 场景扰动:随机扰动周围车辆位置、速度,扩宽数据分布
- 时序抖动:对历史帧做时间抖动,提升时序鲁棒性
- 图像层增强:颜色、噪声、模糊、遮挡,模拟不同天气/光照
- 生成式增强:用世界模型(GAIA、DriveDreamer)合成罕见场景,弥补长尾
📈 评测体系:开环 vs 闭环
端到端怎么评?这其实是个比训练更难的问题。
开环评测(Open-Loop)
给定数据集中的历史帧,让模型预测未来轨迹,与 ground truth 比较。常用指标:
| 指标 | 含义 |
|---|---|
| L1 / L2 误差 | 预测轨迹与 GT 在各时间步的位移误差(米) |
| ADE | Average Displacement Error,全程平均 |
| FDE | Final Displacement Error,终点误差 |
| Collision Rate | 与已知障碍物的碰撞率(静态/动态分别算) |
典型 benchmark:nuScenes Planning、NAVSIM、nuPlan。
⚠️ 开环的核心缺陷:模型只预测一步、不实际执行,不会进入"我变了 → 别人也会变"的反应链。在开环上刷高分,不代表真的能开车。NAVSIM 引入 PD(Progress + Distance) 指标,部分缓解了"模型原地不动也得低分"的问题,是当前更合理的开环评估。
闭环评测(Closed-Loop)
把模型放进仿真器里真正开车,与其它智能体交互。常用平台:
| 仿真器 | 特点 |
|---|---|
| CARLA | 研究界主流,渲染偏游戏化,与真实差距大 |
| nuPlan | 真实日志驱动的闭环,含 reactive agents |
| NAVSIM | nuScenes 衍生,非反应式(半闭环) |
| 私有仿真器 | 特斯拉、Wayve 等自建,最接近真实 |
闭环指标:完成率、违规率、碰撞率、舒适性、接管次数。这才是真正考验"能不能开"的评测。
理想评测 = 开环看精度 + 闭环看行为 + 实路看长尾,三者缺一不可。
⚠️ 端到端的四大挑战
1. 可解释性
黑盒网络出事了,没法定位是哪个环节出错。监管和安全验证很难做。
解法思路:
- 显式端到端,保留任务结构,可以分别看感知/预测/规划的中间输出
- 注意力可视化、 saliency map 做 post-hoc 解释
- VLA / CoT(Chain-of-Thought)让模型"说出理由",提供语言级可解释性
2. 数据需求巨大
端到端是"数据饥饿型"方案,需要海量优质驾驶数据,长尾场景几乎采不全。
解法思路:
- 世界模型生成数据补长尾(GAIA、DriveDreamer、MagicDrive)
- 自动标注、弱监督、半监督降低人工成本
- 影子模式:车上跑旧方案,收集真实触发,回灌训练
- 跨车队的联邦学习与数据共享
3. 安全验证
模块化系统可以逐模块做单元测试。端到端只能整体测,怎么保证它在所有场景下都安全?目前没有成熟的验证体系。
解法思路:
- 基于场景库的覆盖性测试(ODD 边界、对抗样本)
- 形式化验证(formal verification)的初步探索
- 影子模式 + 离线对比,持续监测与人类/旧策略的差异
- 冗余系统(safety cage / rule-based fallback)兜底关键场景
4. 训练稳定性
大网络端到端训练容易崩,学习率、loss 权衡、数据配比都需要精心调参。
解法思路:
- 课程学习从易到难
- 多任务 loss 自适应加权(uncertainty weighting)
- 分阶段训练:感知预训练 → 冻结 → 规划微调
- 梯度裁剪、loss scaling、混合精度训练
🔮 未来趋势:两个关键融合方向
方向一:VLM + 端到端(让系统"看懂")
纯视觉端到端能"看见",但不一定"看懂"。比如它识别到前方有锥桶,但不懂"因为施工所以要变道"。把 VLM/VLA 引入端到端,让系统具备语义推理能力:
- DriveVLM:VLM 做场景理解与思维链推理,输出结构化决策,再交给传统 planner 执行
- EMMA:用 Gemini 类多模态大模型统一感知+规划,多任务输出
- VLA 直接出动作:视觉 + 语言 → 动作,一步到位(参考 π0、OpenVLA)
这一方向最大的工程挑战是LLM 推理太慢,车端实时性要求几十毫秒响应。当前解法:蒸馏小模型、推理加速(量化、KV cache)、关键场景才上 LLM。
方向二:世界模型 + 端到端(让系统"预演")
世界模型给端到端装上**“想象力”**:
- Model-based Planning:策略网络在决策前,先用世界模型"推演"几个候选动作的后果,选最安全的那条(类似人类"三思而后行")
- 闭环训练:世界模型当仿真器,让策略在生成的未来里学习,不再受限于固定数据集
- 数据飞轮:世界模型生成 → 训练策略 → 策略采集新场景 → 训练更好的世界模型
终极愿景:VLM 负责"理解与决策",世界模型负责"预测与预演",端到端网络负责"执行",三者融合成一个真正像人一样开车的系统。
🆚 三代演进对比
| 维度 | 模块化 Pipeline | 显式端到端 | 大模型 / 生成式端到端 |
|---|---|---|---|
| 代表 | 传统方案 | UniAD / VAD / SparseDrive | DiffusionDrive / VLA / EMMA |
| 场景表示 | 结构化中间结果 | Query / 向量 / 稀疏 | Token / 表征 / 多模态分布 |
| 输出 | 确定性轨迹 | 确定性轨迹 | 多模态轨迹分布 + 推理 |
| 优化方式 | 各模块独立 | 任务级联合优化 | 联合优化 + 大规模预训练 |
| 可解释性 | 强 | 中(保留任务结构) | 中~强(可输出 CoT) |
| 效果上限 | 次优 | 工程上 SOTA | 潜力最大 |
| 落地难度 | 低 | 中 | 高(算力/数据/延迟) |
小结
端到端不是银弹,但代表了**“用数据和学习取代人工规则”的大趋势。当下最务实的路线是显式端到端**(保留任务结构,UniAD/VAD/SparseDrive 这条主线),同时向生成式 + 大模型方向探索(DiffusionDrive、VLA、世界模型融合)。
理解了端到端的这条演进线,再回头看 VLA 和世界模型,你会发现它们正是端到端走向"智能化"的两个关键拼图——VLA 给它"脑子",世界模型给它"想象力"。
💡 这个系列会持续深入。下期可以聊聊具体的 loss 设计、某篇论文的实现细节,或者 NAVSIM 上怎么刷分。