一、这篇论文在讲什么?
核心问题:AI司机的"偏科"痛点
现在的端到端自动驾驶(E2E-AD)界有个普遍的怪现象:“应试教育"满分,“实战上路"拉胯。
- 开环测试(开卷考试):给一段历史视频,让 AI 画出未来的行驶轨迹(Waypoints)。大家都画得很好,碰撞率(Collision Rate)极低,甚至能降到 0.1%。
- 闭环测试(实车上路):把 AI 扔进仿真软件(比如 Bench2Drive)里真刀真枪地开。结果呢?成功率不到 35%!遇到路口就犹豫不决(超时死机),遇到突发情况就抓瞎。
问题根源
作者一针见血地指出:目前的 AI 在"规划(Planning)“时,和"感知(Perception)“的交互太弱了!而且预测出来的轨迹太单调(只有稀疏的几个点),根本不够用来做精细的车辆控制。
HiP-AD 的答案
用 “分层多粒度预测” + “顺着轨迹看图像(PDA)” + “三合一圆桌会议(统一解码器)”,彻底打通感知与规划的任督二脉
二、核心方法:老司机的三大独门绝技
绝技一:多把量尺看世界 —— 分层与多粒度规划
以前的 AI 预测轨迹,就是每秒打几个点(时间路点,Temporal Waypoints)。这就好比司机只知道"我 3 秒后要到那个路口”,但他不知道这 3 秒内方向盘该打几度。
HiP-AD 彻底改变了玩法,它不仅预测时间,还把轨迹拆解成了 三大维度(模态),并且每个维度都有 不同的颗粒度:
| 模态 | 关注点 | 颗粒度划分 | 用途 |
|---|---|---|---|
| 空间路点 | “路径"怎么走 | 密集(2m一个点)& 稀疏(5m一个点) | 密集点做精准方向盘微调(横向控制),稀疏点看宏观大局 |
| 时间路点 | “什么时候到哪” | 高频(5Hz)& 低频(2Hz) | 高频应对紧急情况,低频规划长程 |
| 驾驶风格路点 | “车速和动作” | 慢/中/快(0-4, 4-10, 10+ m/s) | 应对超车、紧急刹车等复杂场景 |
控车策略:AI 会用空间路点控制方向盘(横向),用时间和驾驶风格路点控制油门刹车(纵向),完美解决由于轨迹点太稀疏导致的"车辆犹豫"问题!
绝技二:指哪打哪的目光 —— 规划可变形注意力(PDA)
以前的 AI 规划器在看周围环境时,是"全局乱瞟”(Global Attention),不仅计算量大,还容易抓不到重点。
HiP-AD 的做法极其聪明——它利用了几何学物理规律:
- 先把系统预测出的 3D 未来轨迹点(Waypoints),通过相机参数,投影映射到 2D 的多视角环视图像上
- 然后,只在这些 “车轮即将压过” 的图像物理位置附近,去采样提取图像特征
生动比喻:
这就像老司机在开车时,目光会死死盯住自己即将开过去的那条车道线和前方的障碍物,而不是去看天上的云彩。
数学表达:
$$\text{PDA}(Q_p, F) = \sum_{i \in \mathcal{V}} \text{DeformAttn}(Q_p, \mathcal{P}(A_p), F_i)$$规划主脑有一条预测出的未来 3D 轨迹($A_p$)。它把这条未来轨迹用函数 $\mathcal{P}$ 投影到多视角的图像($F$)上,然后只在"未来车轮即将压过的图像像素点"周围提取特征!
绝技三:超级大脑圆桌会议 —— 统一解码器(Unified Decoder)
传统的框架是流水线作业:先做感知(找车、找线)→ 再做预测 → 最后做规划。不仅慢,信息还会衰减。
HiP-AD 搞了一个 “单解码器”,把所有任务拉进一个群里并行开会!
入场的三大"代表”(输入配置)
| 代表 | 符号 | 职责 | 初始坐标(Anchors) |
|---|---|---|---|
| 🚗 动态物体代表 | Agent Query ($Q_a$) | 找周围移动的车、人 | 3D 边界框(Box Anchors) |
| 🛣️ 静态地图代表 | Map Query ($Q_m$) | 找车道线、斑马线 | 聚类算法生成的折线(Polyline Anchors) |
| 🧠 自动驾驶主脑代表 | Planning Query ($Q_p$) | 决定咱们自己的车往哪开 | 未来 $T$ 个时间点的行驶轨迹折线 |
圆桌会议的三大议程
每个 Decoder Layer 都包含以下三个关键环节:
🕒 议程一:翻阅历史案卷 —— 时序交互模块
老司机开车绝不能只看眼前,得记得上一秒旁边有辆车想加塞。
技术动作:
- 代表们(Queries)首先会和 上一帧历史保留下来的重要特征 进行 交叉注意力(Cross-Attention) 计算
- 为了防止历史信息太多把脑袋撑爆,系统用了一个 Top-$k$ 选择机制,只保留上一帧最有价值的线索
- 给主脑开小灶:规划代表(Planning Query)不但要回顾自己的历史,还会额外增加一次跨任务的 Cross-Attention,专门去盯住历史帧里的感知信息
🗣️ 议程二:圆桌激烈讨论 —— 协同交互模块
看完历史,大家得互相通气了。主脑需要知道哪里有车、哪里是实线,才能规划路线。
核心技术细节 —— 几何物理融合(公式 1):
$$\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{C}} - \tau D\right)V$$常规的注意力机制只有前半部分,决定谁和谁更相关。但这里多了一个极其关键的 “惩罚项”:$- \tau D$
- $D$ 是什么? 两个物体在真实 3D 物理世界里的 欧几里得距离(比如动态车与车之间、车与车道线之间)
- $\tau$ 是什么? 通过多层感知机(MLP)学习出来的系数
- 精妙之处:如果一辆车离你很远($D$ 很大),那么它在注意力分数里就会被狠狠扣分。这强迫 AI 司机 “把有限的注意力集中在离自己最近、最危险的物体上”!
主脑的特权:这个距离惩罚对感知代表有效,但对 规划代表没有距离限制!为什么?因为作为最高决策者,规划主脑必须有统揽全局的视野。
🎯 议程三:去图像里找证据 —— 任务可变形注意力模块
讨论出了初步结果,代表们需要带着目前的猜测,去原始的摄像机画面里 “精准取证”,刷新自己的认知。
感知代表的做法:把 3D 锚点顺着预设高度,利用相机参数 投影到 2D 环视图像上,然后在投影落下的那个点附近采样提取图像特征。
规划主脑的终极奥义(PDA):
- 把预测的"未来 3D 行驶轨迹路点"投影到多个摄像头画面上
- 让主脑自己学习:在轨迹周围哪些像素点最值得关注?
- 目光死死盯住"车轮即将压过的未来路线"周围的画面!提取图像特征。
三、伪代码实现:老司机的脑神经
import torch
import torch.nn.functional as F
def Unified_Decoder(
image_features, # [多视角环视图像特征 F] (监控录像)
queries, # [动态物体Qa, 静态地图Qm, 规划主脑Qp] (拿着清单的代表)
anchors, # [动态框Aa, 静态线段Am, 未来轨迹Ap] (各自关注的3D物理坐标)
history_memory, # [上一帧存下来的重要记忆]
camera_params, # [相机的内外参矩阵] (用于3D到2D的投影)
num_layers=6 # 会议通常要开好几轮 (堆叠6层Decoder)
):
# --- 会议前奏:代表入场 ---
Qa, Qm, Qp = queries
Aa, Am, Ap = anchors
# 🔄 开始循环开会:每一层 Decoder 都在进行信息的深度融合
for layer in range(num_layers):
# =========================================================
# 🕒 议程一:时序交互模块 (Temporal Interaction Module)
# 目标:"温故知新",看看上一秒发生了什么。
# =========================================================
# 1. 脑容量有限,用 Top-k 机制挑选上一帧最有价值的记忆点
hist_k_agent, hist_k_map, hist_k_plan = select_top_k(history_memory)
# 2. 感知代表各自查阅自己的历史卷宗 (Cross-Attention)
Qa = CrossAttention(query=Qa, key=hist_k_agent, value=hist_k_agent)
Qm = CrossAttention(query=Qm, key=hist_k_map, value=hist_k_map)
# 💡 3. 【老司机的特权】规划主脑不仅看自己的历史轨迹,
# 还要盯着历史的感知环境!
Qp_self_hist = CrossAttention(query=Qp, key=hist_k_plan, value=hist_k_plan)
Qp_perc_hist = CrossAttention(
query=Qp,
key=concat(hist_k_agent, hist_k_map),
value=concat(hist_k_agent, hist_k_map)
)
Qp = combine_features(Qp_self_hist, Qp_perc_hist)
# =========================================================
# 🗣️ 议程二:协同交互模块 (Collaborative Interaction Module)
# 目标:统一的圆桌会议,互相通气,引入"物理距离惩罚"!
# =========================================================
# 1. 把所有人拉进一个群里
Q_all = concat(Qa, Qm, Qp)
A_all = concat(Aa, Am, Ap)
# 2. 计算纯粹的注意力分数 (谁跟谁有关联)
attn_scores = torch.matmul(Q_all, Q_all.transpose(-2, -1)) / math.sqrt(C)
# 💡 3. 【核心技术细节:公式(1)】计算真实物理世界中 3D 锚点之间的距离矩阵 D
D_matrix = calc_euclidean_distance_3d(A_all, A_all)
# ⚠️ 【主脑特权掩码】规划主脑(Qp)看所有人都不受距离限制
D_matrix = apply_planning_mask(D_matrix, mask_value=0.0)
# 4. 用一个小网络学习一个动态系数 tau (控制惩罚力度)
tau = MLP(Q_all)
# 5. 施加物理距离惩罚!距离越远的物体,注意力得分被扣得越惨
penalized_scores = attn_scores - (tau * D_matrix)
attn_weights = F.softmax(penalized_scores, dim=-1)
# 6. 根据惩罚后的权重,大家交换情报
Q_all_updated = torch.matmul(attn_weights, Q_all)
# 7. 散会,大家拿着更新后的情报各自归位
Qa, Qm, Qp = split_queries(Q_all_updated)
# =========================================================
# 🎯 议程三:任务可变形注意力模块 (Task Deformable Attention Module)
# 目标:拿着讨论结果,去图像画面里"精准取证"。
# =========================================================
# 1. 感知代表去找车和线:把 3D 的框和线投影到 2D 图像上
P_a_2d = project_3D_to_2D(Aa, camera_params)
P_m_2d = project_3D_to_2D(Am, camera_params)
Qa = DeformableAttention(query=Qa, reference_points=P_a_2d, features=image_features)
Qm = DeformableAttention(query=Qm, reference_points=P_m_2d, features=image_features)
# 💡 2. 【核心技术细节:公式(2) PDA】规划主脑的终极绝技!
# 把预测的"未来3D行驶轨迹路点"投影到多个摄像头画面上
P_p_2d = project_trajectory_to_2D(Ap, camera_params, predefined_heights)
# 让主脑自己学习:在轨迹周围哪些像素点最值得关注?
sampling_offsets, sampling_weights = MLP_predict_offsets_weights(Qp)
# 施展 PDA:目光死死盯住"车轮即将压过的未来路线"周围的画面!
Qp = PDA_DeformableAttention(
query=Qp,
reference_points=P_p_2d,
offsets=sampling_offsets,
weights=sampling_weights,
features=image_features
)
# 🔄 层级收尾:更新代表们的 3D 坐标锚点
Aa = update_anchors(Aa, Qa)
Am = update_anchors(Am, Qm)
Ap = update_anchors(Ap, Qp) # 轨迹越来越精确
# 🚪 整个开会流程结束,输出给外面的业务部门 (Heads) 去执行
update_history_memory(Qa, Qm, Qp)
return Qa, Qm, Qp
伪代码里的三个"高光时刻”
-
议程一中的
combine_features(Qp_self_hist, Qp_perc_hist):规划时不仅记得自己上一秒想怎么走,还 直接 调取了上一秒周围环境的原始记忆,没有中间商赚差价。 -
议程二中的
penalized_scores = attn_scores - (tau * D_matrix):这就是论文里最惊艳的 几何物理融合。它强迫网络变成一个真正的司机——“不要看天上飞的鸟,看离你保险杠只有半米远的那辆车!” -
议程三中的
PDA_DeformableAttention:传统的网络是在图像上撒网捞鱼,而这里是 “按图索骥”。沿着预测轨迹投影到 2D 上的路线,只在这个轨迹的左右两边提取图像特征。
四、秘密训练法:对齐匹配(Align Matching)
因为搞出了几十种不同粒度、不同模态的预测轨迹,训练的时候 AI 容易"精神分裂”,到底哪个才是最准的?
对齐匹配机制(公式 6):
- 在训练时,采用 “赢家通吃”(Winner-takes-all) 的策略
- 先在所有的轨迹预测组里,找到和真实人类轨迹(Ground Truth)差距最小(L2 距离最小)的那组作为"学霸(Reference)"
- 然后,强迫其他所有的粒度组,都向这个"学霸"的模态对齐,共享匹配结果,把梯度有效地反向传播回去
五、战绩揭晓(实验结果)
这位练成神功的 HiP-AD 老司机去考场了,结果直接"屠榜"!
闭环终极测验(Bench2Drive 数据集)
| 指标 | HiP-AD | 第二名(DriveTransformer) |
|---|---|---|
| 成功率 | 72.7% | 35%(翻了一倍多) |
| 驾驶得分 | 88.3 | 远超所有现有端到端模型 |
特殊技能考核
| 高难度科目 | 成功率 |
|---|---|
| 紧急刹车 | 83.33% |
| 超车 | 84.44% |
| 汇入车流 | 50% |
不再像以前的模型那样遇到复杂路况就死机!
开环基础测验(nuScenes 数据集)
- 碰撞率:0.01% - 0.05%(极低)
- 感知和预测任务也拿到了顶尖分数,证明底盘依然极度扎实
六、总结与局限
一句话总结
HiP-AD 通过 “分层多粒度预测” + “顺着轨迹看图像(PDA)” + “三合一圆桌会议(统一解码器)”,彻底打通了感知与规划的任督二脉,解决了端到端自动驾驶在闭环仿真中不敢开、不会开的难题。
局限性(论文坦诚)
- 遇到后方突然高速冲过来的车辆时,系统有时候还是会反应不及(这确实也是人类司机的盲区)
- 目前还在仿真阶段,真车路测将是未来的星辰大海
参考来源
- 原论文:HiP-AD: Hierarchical and Multi-granularity Planning with Deformable Attention for End-to-End Autonomous Driving
- 讨论:Gemini 3.1 Pro Preview 对话记录