Lesson 01 · System boundary

端到端到底“端”在哪里

先不记模型。先学会画边界:系统从哪里开始学习,到哪里结束学习,中间的信息由谁规定。

预计 25–35 分钟 零自动驾驶前置 含 4 道即时题

学完要能回答什么

给你一个自动驾驶架构图,你应该能指出:哪部分由学习得到,最终训练目标能影响多远,以及作者所谓的“端到端”是哪两个端。

分清三种系统

传统模块化、狭义端到端、现代结构化端到端。

拆掉四个等号

端到端不自动等于单网络、无模块、全可微或黑盒。

获得阅读镜头

用输入、表示、输出、学习、评测五问读后续论文。

先凭直觉想:相机图像进入一个神经网络,网络输出未来轨迹,传统 PID 控制器再把轨迹变成方向盘动作。这算端到端吗?先保留答案,读完第 4 节再回来。

1. 从一个路口开始

自车接近一个没有保护灯的左转路口。前方有车,右侧人行道上有人,路面因下雨反光。导航系统要求左转。

车辆至少要完成这些判断:

  • 哪些像素或点云来自道路、车辆、行人和交通灯;
  • 其他交通参与者接下来可能怎么运动;
  • 左转路线是否可行,应该等待还是通过;
  • 如果通过,车辆未来几秒应沿什么轨迹行驶;
  • 此刻需要多少转向、制动或驱动力。

这些问题客观存在。采用端到端方法不会让它们消失。真正变化的是:工程师是否把每个问题做成独立模块和固定接口,还是让一个学习系统根据最终驾驶目标自行决定部分表示,并联合调整多个环节。

本课的中心句:端到端讨论的不是“系统有没有内部步骤”,而是这些步骤如何连接、如何训练,以及最终目标能否改变上游表示。

2. 传统模块化流水线

模块化流水线把驾驶问题拆成有明确接口的部件。最常见的教学版本是“感知 → 预测 → 规划 → 控制”。真实系统还会有定位、地图、融合、安全监控和冗余,但这四段足以说明基本思想。

模块分别做什么

感知 perception

把原始传感器数据转成结构化场景,例如目标框、类别、速度、可行驶区域和车道。

预测 prediction

估计周围车辆和行人的未来运动,常输出多条带概率的轨迹。

规划 planning

结合路线、交通规则、预测结果和车辆约束,选择自车未来运动。

控制 control

让车辆跟随规划轨迹,把位置和速度误差转成转向、驱动与制动命令。

为什么长期采用模块化

模块有清楚的责任边界。感知团队可以检查漏检,预测团队可以检查多模态轨迹,规划团队可以检查规则和碰撞约束。某个模块出错时,日志较容易定位问题;法规或安全规则也可以显式写进规划器。

但模块接口会丢信息。感知模型通常按检测指标优化,规划器真正关心的却是“这个误差是否会改变驾驶决策”。一个远处静止物体的框偏了 20 厘米可能无关紧要,一个近处骑车人的速度偏了同样比例却可能改变制动时机。若所有模块只优化自己的平均指标,局部最优不一定等于最终驾驶最优。

技术补充:模块化系统的函数写法

设观测为 o,导航目标为 g,车辆状态为 x。一个简化流水线可写成:

scene = perception(o) future = prediction(scene) trajectory = planning(scene, future, g, x) action = control(trajectory, x)

这里最重要的不是函数数量,而是每个中间量有预先规定的语义。感知模块可能先按检测损失训练,规划器则按碰撞、舒适度和路线目标单独设计。

3. 最窄的端到端:图像直接到控制

2016 年 NVIDIA 的 “End to End Learning for Self-Driving Cars” 给出了最容易理解的定义:单个前视相机的原始像素进入卷积神经网络,网络直接预测转向命令。训练标签来自人类驾驶员的转向操作。

这类系统把两个“端”放得很远:一端是接近传感器的像素,另一端是接近执行器的控制量。工程师没有要求网络先输出车道线、车辆框或预测轨迹。误差可以从转向输出直接回传到视觉特征。

得到的东西

训练目标与驾驶动作直接相连;系统可以学习任务相关的视觉特征;中间不必传递人为规定的完整场景。

失去的东西

中间语义难检查;导航意图、约束和罕见场景难覆盖;一个动作错误不容易分解为感知、预测或规划错误。

“直接”也不表示没有图像预处理、网络层、车辆控制周期或后备安全系统。它只表示学习任务跨过了传统的人工语义接口。

4. 现代端到端常保留结构

如果端到端只允许“像素直接到方向盘”,很多现代工作都无法归入其中。OpenDriveLab 综述使用了更宽的表述:从原始传感器输入生成车辆运动计划,而不是只聚焦检测或运动预测等独立任务。注意终点变成了 motion plan,它可以是 waypoint 或未来轨迹,不必直接是方向盘。

模块化

输入:传感器

接口:显式场景与预测

输出:轨迹后再控制

训练:常分模块优化

现代端到端

输入:传感器与任务

接口:可有 BEV、目标或查询

输出:waypoint 或轨迹

训练:围绕规划联合优化

狭义端到端

输入:原始传感器

接口:主要是隐特征

输出:直接控制量

训练:动作监督贯穿网络

例子 A:轨迹后面接传统控制器

这种系统通常仍被称为端到端驾驶,因为学习链路已经从传感器跨到运动规划。控制器负责轨迹跟踪,它解决的是车辆动力学与执行问题,没有重新做场景理解和行为决策。

例子 B:一个网络里仍有多个任务

UniAD 把检测、跟踪、在线地图、运动预测、占用预测和规划放进一个网络。任务之间通过 query 接口传递信息,最终以自车规划为导向。它有清楚的内部任务,但这些任务不是互不相干的独立程序。

所以,判断现代端到端系统时不能数框图中有几个方框。要看这些方框是否共享表示,是否联合训练,以及规划目标是否能影响上游部件。

回到开头的问题

“相机 → 神经网络 → 未来轨迹 → PID → 方向盘”通常属于现代端到端。学习边界从传感器延伸到了运动计划;传统控制器留在边界外,并不取消这个称呼。若作者把端到端严格定义为传感器到执行器,它就不满足狭义定义。读论文时应写清采用哪一种边界。

5. 四个不能画的等号

常见等号为什么不成立该检查什么
端到端 = 一个网络 一个网络可以只做检测;多个子网络也可以围绕最终规划联合训练。 训练目标和梯度连接了哪些部件。
端到端 = 没有模块 现代系统常保留检测、地图、预测或 occupancy 头,让训练更稳定、结果更可检查。 模块是独立优化,还是服务共享的规划目标。
端到端 = 全部可微 轨迹后可以接不可微控制器、安全规则或车辆执行器;数据采集环境本身也未必可微。 哪些参数能通过哪些损失更新。
端到端 = 黑盒 模型可以输出目标、地图、occupancy、解释或不确定性。可观察的中间结果不保证因果可靠,但黑盒程度并非二元属性。 内部表示能否检查,解释是否真正影响决策。

另一个常见误解:端到端也不等于强化学习。NVIDIA 直接控制和大量后续工作主要从专家驾驶数据做监督或模仿学习。强化学习是获得训练信号的一种方式,端到端描述的是学习边界与系统连接方式。

6. 为什么要端到端,又为什么不全押上去

OpenDriveLab 综述把主要动机概括为:与模块化流水线相比,端到端系统可以为感知和规划联合优化特征。这个动机有吸引力,但它不是自动兑现的保证。

可能的收益

  • 视觉特征直接为最终驾驶任务服务。
  • 减少人工接口丢失的任务相关信息。
  • 可以用大规模驾驶数据统一学习多个环节。
  • 相同主干特征可被规划和辅助任务共享。

必须支付的成本

  • 需要覆盖正常驾驶、偏离恢复和罕见场景的数据。
  • 失败更难定位,平均损失会掩盖安全相关错误。
  • 训练数据中的错误相关性会被策略利用。
  • 闭环行为、约束和真实部署仍需额外验证。

一个信息瓶颈例子

设模块化系统只把“车辆 3D 框”交给规划器。框能表达位置和大小,却可能丢掉转向灯是否亮起、车轮朝向、驾驶风格或遮挡细节。端到端特征可以保留其中对规划有用的信号。但如果训练数据里“阴影”恰好经常与制动同时出现,网络也可能学到无因果意义的捷径。

所以端到端减少了人工信息瓶颈,却增加了数据与验证责任。它不是把工程问题交给神经网络后自动消失,而是把更多设计压力转移到数据、目标函数、评测和安全边界上。

7. 三个代表节点,不背模型细节

工作输入 → 输出它修补了什么应记住的边界
NVIDIA 2016 前视图像 → 转向命令 绕开人工车道检测和规划接口,直接从人类转向监督学习视觉控制。 狭义 sensor-to-control。
Conditional IL 2018 图像 + 高层命令 → 控制 单纯模仿只会沿路行驶,路口处还需要“左转、右转、直行”等导航条件。 端到端策略仍要接受任务意图。
UniAD 2023 多相机 → 多任务表示 + 规划 减少感知、预测、规划顺序堆叠造成的误差积累和任务配合不足。 现代 planning-oriented 结构化端到端。

这条变化不是简单的“模块越来越少”。早期直接控制很简洁,现代系统反而重新引入结构。区别在于结构是否围绕最终规划共同学习,而不是每个模块只追自己的局部指标。

8. 用五问框架读架构图

以后看到任何端到端自动驾驶方案,先填下面这张表。不要先问“用了哪种 Transformer”。

看什么

传感器、车辆状态、地图和导航条件。

留什么

隐特征、BEV、目标、车道或 occupancy。

输出什么

控制、waypoint、轨迹或候选评分。

怎么学

行为克隆、辅助任务、强化学习或预训练。

怎么测

日志误差、闭环仿真或真实道路测试。

套在三个系统上

系统看什么留什么输出什么怎么学怎么测
模块化示例Camera + LiDAR目标、车道、预测轨迹自车轨迹分模块监督与规则优化模块指标 + 闭环
NVIDIA 2016前视 Camera网络隐特征转向命令人类驾驶监督道路驾驶演示
UniAD 2023环视 Cameraquery 与多任务表示自车规划多任务联合训练nuScenes 离线任务

这张表只用于定位,不用于宣判谁更强。传感器、数据集、任务范围和评测方式不同,结果不能直接横向比较。

技术补充:用公式看“最终目标能影响多远”

直接控制策略可以写成:

action = πθ(observation, route, ego_state) loss = distance(action, expert_action)

结构化端到端规划器可以写成:

representation = encoderθ(observation) auxiliary_outputs = headsθ(representation) trajectory = plannerθ(representation, route, ego_state) loss = λplan Lplan + λaux Laux

规划损失 Lplan 能更新编码器和规划器;辅助损失 Laux 让表示保留目标、地图或 occupancy 信息。权重 λ 决定各训练信号的相对影响。即使模型内部有多个头,只要它们共享参数并以最终规划为主要目标,仍可属于现代端到端路线。

但“梯度能传到编码器”只说明训练连接存在,不证明闭环安全。真实车辆动作改变环境,后续状态分布会随策略变化。第 3、5 课会专门处理这个差距。

9. 即时检查

不要回看正文。先从记忆作答,答完再读解释。

题 1 · 相机 → 网络 → 轨迹 → PID → 控制,通常属于哪类?

题 2 · 判断一个方案是否端到端,最该先检查什么?

题 3 · “端到端”与“整个系统可微”的关系是?

题 4 · UniAD 保留检测和预测任务,为什么仍常被归入端到端?

10. 迁移练习:用自己的话画边界

下面有一个虚构系统:

六路相机进入共享视觉编码器。网络输出 3D 目标、车道向量和周围车辆预测轨迹,规划头读取这些表示后输出自车未来 3 秒轨迹。所有任务一起训练,但规划损失不能更新目标检测头。轨迹最后交给独立控制器。

请写 100–200 字,回答:

  1. 你会把它归为模块化、狭义端到端,还是现代端到端?
  2. 它的两个“端”在哪里?
  3. “规划损失不能更新检测头”为什么值得注意?

完成标准:不要求唯一标签,但必须说明采用的定义,并用训练连接和输出边界支持判断。把答案发给我,我会给出逐点反馈。

本课压缩

  1. 传统模块化系统由人工定义感知、预测、规划和控制接口,模块常按局部目标优化。
  2. 狭义端到端把原始传感器直接连到控制量;现代端到端通常把传感器连到 waypoint 或轨迹。
  3. 内部有检测、预测或地图任务,不会自动取消“端到端”称呼。联合训练与规划导向更能说明边界。
  4. 端到端不自动等于单网络、无模块、全可微、黑盒或强化学习。
  5. 它减少人工信息瓶颈,同时把压力转移到数据覆盖、目标设计、闭环评测和安全验证。

下一课会拆开“联合学习模型”这个大方框:相机和 LiDAR 怎样形成 BEV、目标、occupancy 等表示,以及为什么很多系统选择输出轨迹而不是方向盘。

首选资料与选读

  1. 首选:End-to-end Autonomous Driving: Challenges and Frontiers 先读摘要和总览图。此时不要顺着 270 多篇论文列表继续点。
  2. End to End Learning for Self-Driving Cars 读摘要,观察作者怎样定义 raw pixels、steering commands 和 joint optimization。
  3. End-to-end Driving via Conditional Imitation Learning 读摘要,思考为什么驾驶策略即使端到端,也需要高层导航命令。
  4. UniAD: Planning-oriented Autonomous Driving 只看主页的任务链示意图,找出检测、跟踪、地图、预测、occupancy 和规划。
  5. OpenDriveLab 资料仓库 把它当索引。当前阶段只认识 Paper Collection 和 Benchmarks 两个入口。