1 问题定义:预测什么?
1.1 预测任务的数学表述
运动预测的数学形式是:给定自车周围 N 个智能体的历史状态序列和场景上下文,预测它们在未来的位置序列。形式化表示为:
其中:
- X_i = 智能体 i 的历史观测轨迹,通常为 [(x,y) 坐标序列] 或更丰富的状态向量
- M = 地图信息,包括车道线、路缘、交叉口、交通信号等
- I = 交互信息,智能体之间的相互影响
- Y_i = 智能体 i 的未来轨迹,长度为 T 的 (x,y) 或 (x,y,θ,v) 序列
1.2 输出的多种形式
| 输出类型 | 描述 | 典型用途 |
|---|---|---|
| 确定性轨迹 | 单条最优轨迹 | 简单场景、确定性预测 |
| 多模态轨迹 | K 条候选轨迹 + 概率 | 真实场景的不确定性建模 |
| 概率分布 | 高斯混合模型或扩散分布 | 连续概率建模 |
| 占用网格 | 未来每个栅格被占用的概率 | 无需显式轨迹 |
| 交互概率 | 变道概率、让行概率等 | 行为决策层 |
核心挑战在于多模态性:一个智能体可能有多种合理行为——直行、左转、靠边停车。预测模型必须捕获这种不确定性。
2 输入类型详解
2.1 智能体历史信息
历史轨迹是最基础的输入。通常取过去 1-3 秒(10-30 帧)的观测:
- 位置坐标 (x, y):绝对坐标或相对坐标
- 朝向角 θ:决定航向
- 速度 v 和加速度 a:运动学信息
- 转向灯状态:隐含意图
- 类型标签:车辆、行人、自行车(影响运动模型)
特征编码方式通常包括:
- LSTM/GRU:序列编码,捕获时序依赖
- 1D CNN:以卷积处理时间维度,并行高效
- Transformer Encoder:自注意力建模帧间关系
- 速度叠加:对时间戳做正弦编码融入特征
2.2 地图信息
高精地图(HD Map)或在线重建地图为预测提供道路拓扑约束:
- 车道中心线:智能体极大概率沿车道行驶
- 车道边界与连接关系:左转/直行/右转的道口关系
- 交叉口拓扑:交叉口中的通行优先级
- 交通信号灯状态:红灯停、绿灯行
地图编码演进:
| 方法 | 思路 | 代表工作 |
|---|---|---|
| 栅格化 | 将地图渲染为图像,用 CNN 编码 | 早期方案 |
| 向量化 | 用多段线(polyline)表示车道,GNN/Transformer 编码 | LaneGCN, VectorNet |
| 隐式编码 | 直接用 transformer 处理点集,不显式建图 | SceneTransformer |
2.3 交互信息
智能体之间并非独立运动,而是相互影响:
- 自车-他车交互:自车行为影响他车决策(如让行、抢行)
- 他车-他车交互:周围车辆之间的相互作用
- 交互建模方式:
- Social Pooling:将周围智能体特征汇聚到目标智能体
- 相对位置编码:将其他智能体以目标为中心编码
- 全局注意力:所有智能体之间做 full attention
- Interaction Transformer:显式设计交互注意力层
一个重要的洞察:在马路上,大多数车辆的行为主要由道路拓扑决定,交互只在近距离(如路口、合流区)才显著。交互建模收益在稀疏场景下有限。
3 经典架构演进
3.1 LaneGCN(2020)
核心思路:将地图车道线构建为图结构,用图卷积网络(GCN)进行消息传递。
- 地图编码:车道中心线 → 节点特征,相邻车道间连边
- 智能体编码:1D CNN 编码历史轨迹
- 交互融合:智能体节点与车道节点之间做 attention,融合地图信息
- 预测头:输出多模态轨迹及其置信度
贡献:首次系统性地将高精地图以图结构引入预测网络,奠定了"智能体特征 + 地图特征 → 交互融合 → 轨迹解码"的经典范式。
局限:图结构固定,难以处理车道拓扑的动态变化;对复杂交互场景表现有限。
3.2 VectorNet(2020)
核心思路:将所有元素(车道线、轨迹点、交通标志)统一编码为向量化多段线(polyline),用 GNN 做次图级编码,再用全局注意力交互。
- 统一表征:无论是车道还是轨迹,一律用 polyline + 节点属性表示
- 分层编码:先 polyline 内部做节点级注意力,再做 graph-level 的全局交互
- 灵活性:可处理任意数量/类型的输入元素
贡献:提出"向量化"这一通用范式,后续大量工作(如 HDGT、LaneGCN 改进版)都沿用此思路。
3.3 SceneTransformer(2022)
核心思路:将所有场景元素(智能体、车道线)的时空轨迹摊平为标记序列,用纯 Transformer 建模。
- 将所有智能体所有时间步的观测和车道线点视为一组 token
- Scene-level attention:所有 token 之间做自注意力
- 输出:从学习的查询向量解码未来轨迹
贡献:证明了纯 Transformer 也能在预测任务上达到 SOTA,不需要显式的图结构。
局限:计算量巨大(O(N²)),场景中元素越多越慢。
3.4 Wayformer(2023)
核心思路:在 SceneTransformer 基础上引入场景融合注意力(Scene Fusion Attention),解决计算效率问题。
- 将不同模态(智能体、车道线)分别编码,再通过交叉注意力融合
- 使用因果掩码和注意力降采样降低计算复杂度
- 支持多种输入模态的灵活组合
贡献:在保持 Transformer 表达力的同时,将复杂度降到可落地水平。
4 多智能体预测
4.1 边际预测 vs 联合预测
| 方式 | 定义 | 特点 |
|---|---|---|
| 边际预测 | 对每个智能体独立预测其未来轨迹 | 简单,但忽略智能体间依赖 |
| 联合预测 | 同时预测所有智能体的未来轨迹 | 保持一致性,但输出空间指数增长 |
边际预测(Marginal Prediction):
优点:N 个预测头独立并行,计算高效。 缺点:预测结果之间可能相互矛盾(两条轨迹占用同一空间)。
联合预测(Joint Prediction):
优点:保持场景级一致性。 缺点:联合空间巨大,需要精巧的分解策略。
4.2 隐式交互建模
实践中大多数方法走中间路线——在特征层面建模交互,在输出层面做边际预测:
- 所有智能体共享场景编码器(交互自然被编码进特征)
- 每个智能体从共享特征中解码自身轨迹
- 轨迹之间的一致性通过特征共享隐式保证
典型代表:SceneTransformer、Wayformer 都采用这种"隐式交互"范式。
4.3 Interaction-Aware 评估指标
多智能体预测的评估比单智能体复杂:
| 指标 | 含义 |
|---|---|
| minADE / minFDE | 最优轨迹的平均/最终位移误差 |
| Miss Rate | 所有预测均偏离真值超过阈值 |
| mAP | 基于场景的碰撞率评估 |
| Joint minFDE | 联合预测下所有智能体的联合误差 |
| Collision Rate | 预测轨迹之间的碰撞比例 |
一个好的多智能体预测器不仅需要低 ADE,还需要低碰撞率。
5 目标条件预测
5.1 为什么需要目标条件预测
常规预测直接从历史预测未来,而目标条件预测(Goal-conditioned Prediction)分为两步:
- 预测智能体的终点目标(如路口出口位置、停车位置)
- 基于目标反推完整轨迹
5.2 方法流程
目标预测头输出:
- K 个候选目标点 (x_g, y_g)
- 每个目标的概率 P(g_k | history)
轨迹补全可以通过:
- 恒速外推 + 目标导向修正
- 条件 VAE:给定目标生成完整轨迹
- 扩散模型:以目标为条件去噪
- 热力图:在 BEV 空间预测每个栅格作为终点的概率
5.3 典型工作
- TNT(Target-driveN Trajectory):预测目标 → 补全 → 评分
- DenseTNT:基于密集目标预测,不依赖稀疏锚点
- HOME:将目标预测建模为 heatmap 输出
- MTR(Motion Transformer):用 learned query 作为目标锚点,注意力解码轨迹
5.4 优势
- 显式建模终点不确定性(先定终点,再定路径)
- 易于融入场景约束(终点不能在马路外)
- 计算效率高(只需预测终点而非整条轨迹)
6 轨迹评分机制
6.1 为什么需要评分
多模态预测产生 K 条候选轨迹后,必须评估每条轨迹的合理性:
- 场景合理性:是否与地图一致?是否避障?
- 行为合理性:速度是否合理?转向是否平滑?
- 概率分配:K 条轨迹应形成概率分布
6.2 评分方法分类
| 方法 | 描述 |
|---|---|
| 基于分类 | 每条轨迹对应一个置信度 score,通过 cross-entropy 训练 |
| 基于能量 | 用能量函数衡量轨迹质量,低能量 = 高合理性 |
| 基于 NMS | 生成大量候选 → NMS 去重 → 保留高质量轨迹 |
| 基于排序 | 学习一个 trajectory ranker,对候选排序 |
6.3 目标概率 vs 轨迹似然
目标概率(Goal Probability):
- 预测智能体到达每个候选终点的概率
- 隐式假设:终点决定轨迹质量
- 常用于 goal-conditioned 方法
轨迹似然(Trajectory Likelihood):
- 直接对整条轨迹赋概率值
- 常用 Gaussian Mixture Model 表示
- 每条轨迹在整个场景下的联合似然
实践中,终点概率比轨迹似然更可靠——终点不确定性维度低,更容易准确建模。
7 从预测到规划
7.1 预测结果如何输入到规划器
在传统模块化范式中,预测结果是规划的输入:
规划器需要处理:
- 概率化的其他智能体轨迹:规划器需要做风险感知规划
- 交互不确定性:其他智能体可能对自车行为做出反应
- 时间一致性:预测和规划在时间轴上对齐
7.2 路径上最危险的智能体
实际系统中,规划器不需要对周围所有智能体同等关注:
- 关注具有路径冲突的智能体(crossing path、merging path)
- TTC(Time-to-Collision)小于阈值的智能体需要紧急处理
- 非冲突路径的智能体用最简单的运动模型(匀速)预测即可
7.3 预测与规划的闭环问题
预测模型通常假设其他智能体不会自车行为改变其行为——这叫预测的 open-loop 假设。
但现实中:
- 自车刹车 → 后车也会刹车
- 自车加速 → 旁车可能让行
所以预测和规划之间存在一个交互闭环问题。处理方式:
- 交互感知预测:将自车规划的未来轨迹作为预测器输入条件
- Game-theoretic planning:将其他智能体建模为理性博弈方
- 端到端联合建模:预测和规划共享一个网络,自然耦合
8 趋势:预测正在被端到端规划吸收
8.1 传统预测的尴尬地位
预测模块在传统架构中似乎不可或缺,但它存在根本性困局:
- 预测误差直接伤害下游规划:预测偏一点,规划就错
- 无法为规划优化而调整:预测器看不到规划 loss
- 过度预测:许多场景下规划只需要"知道有车在那就够了"
8.2 端到端学习中的预测角色
在端到端框架中,预测不再是一个独立模块:
| 框架 | 预测的处理方式 |
|---|---|
| UniAD | 显式预测周围轨迹,作为规划的先验 |
| VAD | 向量化场景 token,隐式编码未来信息 |
| VLA | 大模型直接输出规划轨迹,不显式预测 |
| E2E Planner | 完全跳过预测,直接从感知到规划 |
8.3 根本转变
从"感知 → 预测 → 规划"三级 pipeline 到感知 → 规划直接映射,预测逐渐从"必需模块"降级为"可选的正则化监督信号"。
现阶段的主流共识:
- 完全不需要预测的端到端方案在复杂交互场景(路口博弈)中仍显吃力
- 最佳的方案可能是隐式预测——将未来信息编码进场景表示,但不显式输出轨迹
- 随着模型容量提升和训练数据丰富,预测独立存在的必要性持续降低
9 总结
| 维度 | 要点 |
|---|---|
| 问题定义 | 给定历史 + 地图 + 交互 → 预测未来多模态轨迹 |
| 经典架构 | LaneGCN(图卷积)→ VectorNet(向量化)→ SceneTransformer(纯 Transformer)→ Wayformer(高效融合) |
| 多智能体 | 边际预测 vs 联合预测,特征级交互建模是主流 |
| 目标条件 | 先预测终点,再补全轨迹,降低不确定性维度 |
| 评分机制 | 目标概率比轨迹似然更可靠,能量模型是当前热点 |
| 与规划关系 | 传统作为输入,端到端范式中预测模块逐渐被吸收 |
| 未来趋势 | 隐式预测 + 端到端联合建模,预测专业化走向终点 |
一句话总结:运动预测的本质是从历史中推断意图,经典架构的核心贡献在于"如何让地图信息参与学习",当前趋势是预测从独立模块演变为端到端规划中的隐式组件。