World4Drive: End-to-End Autonomous Driving via Intention-aware Physical Latent World Model
Paper: arXiv:2507.00603 Code: ucaszyp/World4Drive Code reference:
master@cffb51a(2025-10-30)
1. Motivation (研究动机)
端到端自动驾驶希望从多视角相机输入直接输出未来规划轨迹,把感知、预测和规划放在一个可微网络里优化;但主流高性能方法通常仍然依赖人工感知标注,例如 3D box、HD map、occupancy 或对象级 QA。这类监督一方面昂贵,另一方面会让“端到端”的优势被中间表征工程削弱:模型可能学会复用被标注好的物体和道路结构,却没有学到如何仅从原始视觉流中形成可用于规划的物理世界理解。World4Drive 的出发点正是这个缺口:如果没有人工感知标签,模型仍需要一种足够信息化的世界表征,能够表达空间位置、语义障碍物、时间演化以及多模态驾驶意图,否则轨迹头只是对视觉特征做模仿学习,难以在复杂交通场景中做可靠选择。
论文把先前 perception-free latent world model 的问题归纳为两个层面。第一,像 LAW 这类方法把原始相机特征压成单模态 latent,然后用时间自监督学习未来 latent;这种 latent 虽然避免了人工标注,却缺少明确的 3D 几何和开放词汇语义先验,因此对障碍物、可行驶区域、夜晚或雨天等外观变化的理解不足。第二,自动驾驶规划天然是多意图的:左转、右转、直行命令下,每个命令又可能有多个安全轨迹;如果世界模型只预测一个未来状态,它无法像人类司机一样“先想象不同动作会导致怎样的世界,再选最合理的动作”。因此 World4Drive 试图把“意图”放入世界模型本身,而不是只在最后的轨迹分类头上做多模态输出。
Figure 1 解读:这张图强调 World4Drive 的收敛效率和最终性能相对 PerAct 的优势。横轴是训练 epoch,纵轴是以 World4Drive 最低 L2 error 归一化后的性能比例;论文声称 World4Drive 用 3.75× 更少的训练 epoch 达到等价性能,并最终取得 1.18× 的峰值性能。这不是单纯的优化技巧,而是作者用来支撑核心动机的证据:引入视觉基础模型的空间—语义先验后,latent world model 更早形成可规划的物理表征,减少了从纯视觉时序自监督中“盲学”场景结构的成本。
World4Drive 的核心问题可以表述为:给定当前多视角图像 、历史视觉上下文和轨迹词表,如何在不使用人工感知标注的情况下,生成 个候选意图轨迹 ,同时预测这些动作对应的未来 latent world state ,再用一个自监督的世界模型选择器选出最合理轨迹。这里的“自监督”不是完全无监督规划,因为最终轨迹仍用 expert trajectory 做 imitation loss;它指的是场景表征和 world-model 选择信号来自未来帧 latent 的对齐,而不是来自人工 3D box / HD map 标注。这个设定对自动驾驶有现实意义:人工标注最贵的部分是细粒度感知,未来图像和 ego 轨迹则更容易从车队数据中获得。
论文把方法归入 end-to-end planning,但它更接近“以 latent world model 作为规划评估器”的路线。传统端到端方法常把规划头接在 BEV 或 sparse scene representation 后面;World4Drive 则认为规划头本身需要一个对未来物理世界演化的内在检验机制。它不是显式生成未来图像,也不是输出占用网格,而是在 latent space 中预测未来多视角 token,并用这些 token 与真实未来帧编码出来的 latent 做距离比较。这样做保留了 world model 的自监督训练信号,又避免了像视频生成 world model 那样承担像素级重建开销。
2. Idea (核心思想)
核心洞见:World4Drive 把“多意图轨迹生成”和“未来世界 latent 预测”绑定为同一个选择问题——每个候选轨迹不仅要靠 imitation loss 接近人类轨迹,还要能够让当前 latent world model 预测出与真实未来帧一致的 latent;最能解释未来世界的意图,被用来监督 selector,并在推理时由 selector 直接排名。
这个思想与 LAW 的关键差异在于,LAW 更像是用单一未来 latent 做 scene representation regularization,而 World4Drive 显式枚举意图,并为每个意图预测对应的未来 latent。假设当前场景中车辆可以保守直行、轻微避让或更大幅度绕行,单一 latent world model 会把这些可能性平均掉;World4Drive 则把轨迹候选 通过 action token 输入 world dreamer,得到 ,然后比较它与真实未来 latent 的距离。这样,轨迹不是只由当前观测拟合出来,而是通过“动作导致的未来状态是否合理”来评估。
Figure 2 解读:整体框架分为 Driving World Encoding、Intention-aware World Model Dreamer 和 World Model Selector。左侧从当前图像 提取物理 latent 与意图 token;中间在不同意图下生成轨迹并预测未来 latent;右侧 selector 比较预测 latent 与真实未来 latent,得到重建损失和用于训练 ScoreNet 的伪标签。图中“Detach”的未来 latent 表明真实未来编码作为自监督目标,不反向驱动未来分支本身生成捷径;真正被优化的是当前世界模型、意图条件预测器和 selector。
“Physical” 体现在两类外部先验:Metric3D v2 给出 metric depth,用相机内外参把像素深度前向投影到 ego 坐标系;Grounded-SAM 给出开放词汇伪语义 mask,用交叉熵增强 latent 的语义理解。作者没有把这些先验当作最终感知输出,也不要求人工标注;它们只是训练时帮助视觉 latent 学到几何位置和语义障碍信息。因此 World4Drive 的 perception-free 不是完全不用任何外部模型,而是不依赖人工 perception annotation。这个边界很重要:论文的性能提升部分来自强基础模型先验,复现时需要准备 depth 和 semantic pseudo-label 流程。
“Intention-aware” 体现在轨迹词表与多模态 planning query。论文从轨迹 vocabulary 的终点做 k-means,得到三类 driving command(left / right / straight)下每类 个 intention point;默认 。这些点经 sinusoidal position encoding 后,与随机初始化的 ego query 相加,再经过 self-attention 得到 。直观上,轨迹词表提供了“可能怎么开”的离散先验,而世界 latent 提供“当前场景允许怎么开”的上下文。
方法的另一个关键设计是 selector 的训练信号。训练阶段,World4Drive 可以看到未来帧,因此可以编码真实未来 latent ,并计算每个候选预测 latent 的 MSE / KL / cosine 距离;距离最小的候选索引 被当作 selector 分类网络的目标。推理阶段未来帧不可见,模型只依赖 ScoreNet 输出 ,选择分数最高的候选轨迹。这让训练与推理之间形成一个 teacher-student 结构:训练时用真实未来 latent 选“哪种意图最解释未来”,推理时学习从当前 latent 和候选未来 latent 预测这个选择。
3. Method (方法)
3.1 Driving World Encoding:把图像编码成带物理先验的 latent
输入是时间 的多视角图像 。图像 backbone 先产生多视角 feature ;论文在 nuScenes 设置中使用 ResNet-50,6 个 surround-view 图像,代码配置中 hidden dimension 为 256、num_views=6、num_spatial_token=240。与直接把 当 latent 不同,World4Drive 在 上叠加两个先验。
语义分支使用 Grounded-SAM 生成伪语义标签 。论文写作中称其输入为感兴趣对象 prompt,输出 2D boxes 和 semantic mask,并保留高置信度标签以减少噪声;训练时用 做交叉熵约束。源码中这一部分落在 SimpleWayDecoderHead.forward:_deconv 对每个 view 的特征上采样,_semantic_head 输出 semantic_pred;loss_semantic 对每个 view 的预测和 mask 做 F.cross_entropy,在 W4D.forward_pts_train 中乘以 semantic_loss_weight=0.05 写入 loss_sematic。论文公式中总损失给出 ,而当前开源配置实现中语义权重是 0.05;这是论文和 first-version code 的一个需要注意的差异。
空间分支使用 Metric3D v2 估计多视角 depth map ,再结合相机内参和 lidar/camera 外参做前向投影。论文公式为:先得到 3D position map ,再用 sinusoidal position encoding 和 MLP 得到 ,最后 。源码中 backproject_patch 将 depth resize 到 patch grid,计算 下的 camera coordinates,再通过 lidar2cam^{-1} 投到 ego/lidar 坐标,输出每个 patch 的 3D 点;Ego3DPositionEmbeddingMLP 对这些点做 frequency encoding 和 MLP。这个实现比只用图像平面位置编码更接近“物理”坐标系,因此 selector 比较 latent 时包含空间尺度信息。
Figure 3 解读:Context Encoder 由 3D spatial encoding 和 semantic understanding 两条支路组成。上半部分通过 metric depth、camera intrinsic/extrinsic 和 sinusoidal/MLP position embedding,把每个视觉 patch 绑定到 ego 坐标中的 3D 位置;下半部分通过 Grounded-SAM 伪 mask 提供 object-level 语义监督。图的重点不是输出显式检测结果,而是让 latent token 在进入 temporal aggregation 前已经包含“哪里有物体、物体大致在哪里”的先验。
时间聚合模块保留上一时刻的 ,用 cross-attention 聚合到当前特征,得到世界 latent:。源码里 prev_view_feat 缓存上一帧 view feature,_temp_decoder[i] 对每个 camera view 分别做 cross-attention,然后把结果 reshape 成 final_view_feat。配置中的 queue_length=4 和训练/测试数据 pipeline 的 interval_2frames=True 表明模型实际使用带间隔的历史帧队列;补充材料说明 nuScenes 原始 6-view 图像从 resize 到 ,再 pad 到 ,backbone 后得到 的特征供后续网络使用。
3.2 Intention Encoder 与多模态轨迹生成
意图编码从轨迹词表 出发。论文设定 ,其中 来自 k-means 后 intention point 的 sinusoidal embedding。源码中 waypoint_mode_ref 存储三类 command × 六个 mode × 六个 waypoint × 2D 坐标的参考轨迹;waypoint_mode_query 对参考轨迹终点或模式位置做 sine embedding 和 MLP,然后与 waypoint_query_feat 相加,再经过 ego_attn 与 wp_attn 聚合 final_view_feat。轨迹头 waypoint_head 输出每个意图的未来 waypoint,waypoint_cls_head 输出 mode 分类分数。
论文中的轨迹生成公式为:,随后 action encoder 把轨迹转为 intention-aware action token 。源码实现中,cur_waypoint 是每个 mode 的增量轨迹,world model 使用 cur_waypoint.cumsum(-2) 作为累计轨迹输入;这说明 code 把 action 更具体地实现为累计位移序列,而不是只用一个抽象 action embedding。loss_3d 会把预测轨迹和 GT 轨迹都做 cumulative sum,用最终位置距离选出最接近 GT 的 mode,再对轨迹和分类做监督。
3.3 Intention-aware World Model Dreamer 与 Selector
World Model Dreamer 的目标是在每个意图 下预测未来世界 latent:。论文公式为 ,其中 是可学习 query, 是 timestamp interval,默认 。源码中 _wm_query_embedding 为每个 mode 建立 embedding,_wm_decoder[i] 对 query 和 input_tokens 做解码;wm_prediction 将当前 spatial view latent 与累计轨迹拼接/编码后生成每个候选未来 latent,返回形状注释为 [B, 6, 6, 240, 256],即 batch、mode、view、token、feature。
Selector 的训练过程是 World4Drive 最值得关注的地方。训练时,历史帧先通过 obtain_history_feat 预测当前帧的多模态 latent;当前帧再被真实编码为 cur_img_feat。W4D.forward_pts_train 对每个 mode 计算 loss_reconstruction、loss_kl 和 loss_cosine,并堆成 loss_rec_tensor/loss_kl_tensor/loss_cos_tensor。select_optimal_modality 将三类 latent loss 相加,再可选叠加最终位移误差 FDE(当前调用里 weight_tm=0.0,所以主要按 latent 距离选),取 total loss 最小的 mode 作为 prev_best_idx。随后模型把该 mode 的 latent loss 乘 wm_loss_weight=0.2,并用 loss_wm_cls(prev_pred_img_cls, prev_best_idx) 的 focal loss 训练 ScoreNet。
Figure 4 解读:Selector 图展示了训练时“预测未来 latent—真实未来 latent—距离比较—选择轨迹”的闭环。每个候选意图产生一个 latent 和一个轨迹;真实未来帧编码出的 latent 作为自监督参照,距离最小的候选被选为合理意图,并通过 reconstruction loss 和 focal loss 分别训练 latent prediction 与 ScoreNet。推理时没有真实未来 latent,因此只保留 ScoreNet 的排序能力;这也是为什么 selector 需要在训练中学习“latent 距离最小”这个伪标签。
整体损失在论文中写为 ,默认 。开源代码对应关系是:loss_sematic、loss_rec/loss_kl/loss_cos、loss_wm_cls、loss_waypoint/loss_waypoint_cls。此外,代码还加入 loss_wm_diversity,对 mode 间 normalized latent cosine similarity 超过阈值 0.7 的部分做惩罚,避免多模态 latent 塌缩到相同未来。这个 diversity loss 在论文主文没有重点展开,但从实现看它服务于多意图候选的可分性。
# Python-style pseudocode distilled from projects/mmdet3d_plugin/W4D/W4D.py
# and projects/mmdet3d_plugin/W4D/dense_heads/waypoint_query_decoder_simple.py
for batch in dataloader:
prev_imgs, cur_img, future_img = split_temporal_queue(batch["img"])
prev_latent, prev_future_latents, prev_scores, prev_trajs = model.encode_and_dream(prev_imgs, depth=batch["prev_depth"])
cur_latent, cur_trajs, cur_scores, cur_future_latents, semantic_pred = model.encode_and_dream(cur_img, depth=batch["depth"])
latent_losses = []
for k in range(num_modes):
latent_losses.append(
mse_or_rec(prev_future_latents[k], cur_latent.detach())
+ kl(prev_future_latents[k], cur_latent.detach())
+ cosine(prev_future_latents[k], cur_latent.detach())
)
selected_k = argmin(latent_losses) # training-time selector target
loss = (
semantic_ce(semantic_pred, pseudo_mask) * semantic_weight
+ latent_losses[selected_k] * wm_loss_weight
+ focal(prev_scores, selected_k)
+ waypoint_loss(cur_trajs, selected_k, expert_traj)
+ diversity_loss(cur_future_latents)
)
loss.backward()
# inference: no future frame is available
cur_trajs, score_net_logits = model(cur_img)
plan = cur_trajs[argmax(score_net_logits)]Code reference:
master@cffb51a(2025-10-30)
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| W4D detector wrapper, temporal queue, train/test loss assembly | projects/mmdet3d_plugin/W4D/W4D.py | W4D, forward_pts_train, simple_test_pts |
| Intention query, waypoint head, world-model dreamer, selector losses | projects/mmdet3d_plugin/W4D/dense_heads/waypoint_query_decoder_simple.py | SimpleWayDecoderHead.forward, wm_prediction, select_optimal_modality |
| 3D position encoding from depth | projects/mmdet3d_plugin/W4D/dense_heads/pos3d.py | Ego3DPositionEmbeddingMLP, backproject_patch caller |
| Cross-attention building block | projects/mmdet3d_plugin/W4D/dense_heads/CrossAttention.py | CrossAttention |
| nuScenes model/training config | projects/configs/w4d/default.py | model, data, optimizer, runner |
| Distributed training launcher | tools/nusc_my_train.sh, train.sh | 8-GPU launch, work-dir, resume checkpoint |
代码搜索结论:arXiv 页面和 WebSearch 均指向公开仓库 ucaszyp/World4Drive;GitHub API tree 在 master 上返回 450 个 blob。当前仓库是 first version,README 只给出 nuScenes 训练/测试流程,NavSim 代码或完整伪标签生成脚本并未完全展开;因此上面的伪代码与实现映射主要锚定 nuScenes / W4D 分支。
4. Experimental Setup (实验设置)
论文使用两个基准。Open-loop nuScenes 包含 1000 个真实驾驶视频,轨迹以 2Hz 采样、评估 3 秒 horizon,指标是 displacement error L2 和 collision rate CR。Closed-loop NavSim 基于 OpenScene,含 1192 个训练场景和 136 个测试场景,总计超过 100,000 keyframes;预测轨迹以 2Hz 采样 4 秒 horizon,并通过 LQR controller 插值执行,指标是 PDMS。PDMS 由 no at-fault collision (NC)、drivable area compliance (DAC)、time-to-collision (TTC)、comfort 和 ego progress (EP) 组成,补充材料给出公式:,其中 NC 和 DAC 是乘性门控项。
nuScenes 训练遵循 VAD-Tiny 配置,使用 ResNet-50 处理 6 个环视相机,驾驶命令为 left/right/straight,每个命令预测 6 条规划轨迹,并选择 world model score 最高的轨迹作为最终输出。论文主文写明训练 12 epochs、8 张 NVIDIA 3090、总 batch size 8、初始学习率 ;开源 projects/configs/w4d/default.py 中当前值为 total_epochs=24、samples_per_gpu=1、workers_per_gpu=8、AdamW lr=4e-5、cosine annealing、500 iter linear warmup、gradient clip 35,并在 train.sh 中用 8 张 GPU 启动。这个差异可能来自公开 first-version code 的后续整理或不同实验 run,笔记中复现时应优先记录实际 launch/config 数字,而论文数字用于理解报告结果。
NavSim 设置使用 stitched front / front-left / front-right 图像,最终 resize 到 ,并拼接 ego status ,其中 是 left/right/straight one-hot 命令, 是速度和加速度。模型使用 ResNet-34 提取图像特征,训练 60 epochs、8 张 3090、总 batch size 64。论文说明 LAW 没有开源,因此作者在相同设置下重实现 LAW 用于 NavSim 对比;这意味着 closed-loop 对 LAW 的比较不是直接引用官方 checkpoint,而是作者复现版本。
视觉基础模型方面,主文使用 Metric3D v2 giant 做 metric depth,Grounded-SAM 做 semantic segmentation。补充材料对 Metric3D v1 ConvTiny、Metric3D v2 Small 和 Metric3D v2 Giant 做消融:ConvTiny 为 L2 0.50 / collision 0.19,Small 为 0.51 / 0.20,Giant 为 0.50 / 0.16。结论是 depth 模型规模对 L2 影响不大,但 Giant 的碰撞率最好,说明几何先验的“有无”比模型大小更关键,而更强 depth 对安全性仍有增益。
补充材料还给出 timestamp interval 的消融: 时 L2 0.55 / collision 0.35, 时 0.50 / 0.16, 时 0.52 / 0.24。解释是间隔太短时未来变化不足,难以学习有效 temporal context;间隔太长时预测未来场景更困难。重建损失方面,MSE 单独使用取得 L2 0.50 / collision 0.16,KL 单独使用 L2 0.50 / collision 0.17,cosine 单独使用 L2 0.52 / collision 0.20;作者因此选择 MSE 作为主要 latent distance,尽管代码 first version 同时记录 KL 和 cosine。
5. Experimental Results (实验结果)
主结果显示,World4Drive 在不使用人工感知标注的 perception-free 设置下达到最强 open-loop nuScenes 表现。与 LAW perception-free 相比,World4Drive 的平均 L2 从 0.61m 降到 0.50m,约 18.0%/18.2% 相对下降;平均 collision rate 从 0.30% 降到 0.16%,下降 46.7%。分时间点看,World4Drive L2 为 1s 0.23、2s 0.47、3s 0.81、Avg 0.50,CR 为 1s 0.02、2s 0.12、3s 0.33、Avg 0.16。这个结果甚至低于一些需要感知标注的方法的碰撞率,例如 UniAD Avg CR 0.31、VAD 0.23、PPAD 0.19、GenAD 0.19;它与 LAW perception-based 的 Avg L2 0.49 接近,但 CR 从 0.19 进一步降到 0.16。
NavSim closed-loop 结果中,World4Drive 只用 camera 输入,PDMS 为 85.1,优于 UniAD 83.4、PARA-Drive 84.0、LTF 83.8、Transfuser 84.0、VADv2 80.9、Hydra-MDP 83.0、LAW perception-free 83.8,但低于 DiffusionDrive 88.1。分项上 World4Drive 为 NC 97.4、DAC 94.3、TTC 92.8、comfort 100.0、EP 79.9。作者强调其 DAC 和 TTC 提升说明 spatial awareness 与 drivable-area 理解更好;但也要注意 DiffusionDrive 使用 camera + lidar,在输入模态上更强,因此 World4Drive 的优势主要应与 camera-only 和 perception-free 方法比较。
Figure 5 解读:定性图展示 World4Drive 和 LAW 在转弯与多意图选择场景中的差异。由于 World4Drive 不输出显式感知结果,图中的 perception annotations 是为了可视化而渲染的 ground truth,不代表模型依赖这些标签。上半部分强调转弯时 World4Drive 的轨迹更安全;下半部分展示 selector 能在多条候选 intention trajectory 中选择更合理的一条,这与方法部分“用 latent world model 评估轨迹”相对应。
组件消融支持了三个关键判断。第一,在 LAW-like 单模态 world model 基线中,L2/CR 为 0.61/0.30;加入 intention-aware world model 后变为 0.55/0.25,说明多意图建模本身有益。第二,加入 depth spatial prior 后 L2 进一步到 0.51,但 collision 0.29 未明显下降,说明几何位置主要帮助轨迹拟合;加入 semantic prior 后 collision 明显改善,完整模型 0.50/0.16,说明语义障碍理解对安全性更关键。第三,只加 intentions 而没有 world modeling 的 row 5 反而是 0.61/0.36,说明多轨迹候选如果没有世界模型评估,可能增加不安全选择;World4Drive 的收益来自 intention 与 world model 的耦合,而不是“多输出几条轨迹”本身。
不同环境条件下,World4Drive 在 All/Day/Sunny/Rainy 的 L2 均优于 LAW,在 Night L2 为 0.76,差于 LAW 的 0.67,但 Night collision 为 0.08,仍显著优于 LAW 的 0.22。雨天 collision 从 LAW 0.16 降到 0.05,论文给出的相对下降为 68.8%;夜晚 collision 下降 63.7%。这组结果表明 foundation-model prior 对安全性比对轨迹 L2 更稳定:在夜晚场景,模型可能预测路径与人类轨迹偏差较大,但更少碰撞。按驾驶动作看,World4Drive 在 straight 上 L2 0.48 / CR 0.14,相比 LAW 的 0.58 / 0.29 改善明显;左转和右转 L2 也有改善,但幅度较小,说明复杂转弯场景仍是难点。
可扩展性消融显示,ResNet-34/256 维为 0.52/0.25,ResNet-50/128 为 0.55/0.27,ResNet-50/256 为 0.50/0.16,ResNet-50/384 为 0.49/0.10,ResNet-101/256 为 0.47/0.14。作者据此认为 World4Drive 同时受益于 backbone scale 和 hidden dimension scale;这与一些只靠加宽 hidden dimension 收益更大的端到端方法不同,因为 World4Drive 的 latent 直接用于 future prediction 与 trajectory evaluation,更多视觉容量能更直接地进入规划决策。
局限性主要有四点。第一,方法依赖 Metric3D 和 Grounded-SAM 生成伪 depth/semantic,虽然不需要人工感知标注,但训练管线并不轻量;若基础模型在新域失败,world latent 也可能偏。第二,selector 训练时使用真实未来帧 latent,推理时使用 ScoreNet 预测,仍存在 train-test gap;ScoreNet 是否能在长尾场景中可靠替代真实未来距离,需要更多 closed-loop 验证。第三,补充材料的 failure case 指出 NuScenes 中存在错误 driving command 标注,例如左转场景被标为直行,导致 World4Drive 生成低质量轨迹;这说明该方法对 command label 质量敏感。第四,公开仓库 first version 目前文档较简,配置与论文报告数字存在差异,NavSim 和伪标签生成细节不如主文完整,复现者需要额外核对数据预处理、depth/semantic 缓存和 checkpoint resume 设置。
总体评价:World4Drive 的贡献不在于提出一个新的显式 3D 世界表示,而在于把基础模型提供的物理先验、多意图轨迹词表和 latent future prediction 合并成一个可训练的规划选择器。它适合归入 Physical AI / Embodied & Driving Simulation,因为论文真正关注的是具身驾驶系统如何利用物理世界 latent 来“想象—评估—选择”动作,而不是单纯的视频生成或通用 world model benchmark。对于后续工作,最值得跟进的是:是否可以减少对外部 depth/semantic 模型的离线依赖;selector 能否在更长 horizon 或交互式 closed-loop 中保持稳定;以及 latent distance 目标是否能替换为更直接的安全/舒适闭环反馈。