一句话定位

Waabi 的无监督自动驾驶世界模型:先用 VQVAE 把 LiDAR 点云压成 BEV 离散 token,再把 MaskGIT 改造成「吸收+均匀」离散扩散并行预测未来帧 token,最后经可微深度渲染解回点云——在 NuScenes / KITTI / Argoverse2 三个数据集上把点云预测 SOTA 的 Chamfer 距离砍了 65%–75%(1s) 和 >50%(3s)。ICLR 2024。

背景与定位

论文把「学世界模型」定义成对 agent 经验的序列建模:给定过去观测和当前动作,生成式地预测下一帧观测。作者指出机器人世界模型没能像 GPT 那样快速 scale,卡在两个瓶颈:

  1. 观测空间复杂无结构——自动驾驶单帧观测有上万点,选什么 loss、怎么建可算 likelihood 的生成模型都非平凡。解法照搬 NLP:先 tokenize(VQVAE),再像分类器一样预测离散索引。
  2. 生成模型要可 scale——语言模型 scale 得好但一次只解一个 token;单帧上万 token 必须并行解码,而「一次全解」会错误假设所有 token 条件独立。解法是把 MaskGIT 的迭代并行解码搬过来,并进一步把它 recast 成离散扩散。

谱系上,本文承接三条线:离散隐变量世界模型 dreamer-v2(Atari 上离散隐变量优于高斯隐变量)、Transformer 动力学 iris(用 Transformer 替 RNN)、跨域世界模型 dreamer-v3(Minecraft)。任务侧接的是「点云预测 / point cloud forecasting」这条自监督感知线(SPFNet、S2Net、ST3DCNN、4D-Occ)——给过去点云 + 未来 ego 位姿,预测未来点云观测,本质就是在 LiDAR 观测上建无监督世界模型。tokenizer 本身建立在 Waabi 自家的 UltraLiDAR(Xiong et al. 2023)之上。范式命名:tokenize-everything + discrete-diffusion 世界模型。arXiv 原标题(v1–v3,2023-11 起)为《Learning Unsupervised World Models for Autonomous Driving via Discrete Diffusion》,模型/正式名 Copilot4D 后来才加进标题(v4,2024-04)。

模型架构

两个「都很轻量」的模块:tokenizer 13M 参数(比 ResNet-34 的 21.8M 还小)、world model 39M 参数(比 ResNet-101 的 44.5M 小)。作者把「小模型拿下 SOTA」列为亮点之一。

Tokenizer(点云 VQVAE,BEV token)

  • 建模范围:ego 车周围 [−80m,80m]×[−80m,80m]×[−4.5m,4.5m];voxel 尺寸 15.625cm × 15.625cm × 14.0625cm(xyz),沿用 UltraLiDAR。
  • Encoder:voxel-wise PointNet(把 max-pool 换成 sum + LayerNorm 的置换不变聚合,特征维 64)→ 3D 特征体 1024×1024×64×64 → 沿 z 轴聚合成 2D BEV pillar → Swin Transformer backbone。初始 patch=4、2 层 Swin(dim=128, heads=8)得 256×256×128;Patch Merging 把 patch 4→8、6 层 Swin(dim=256, heads=16)得 128×128×256。输出分辨率 128×128,相对初始 voxel 下采样 8×,每格管 1.25m×1.25m 的 BEV 区域。VQ 前先接 LayerNorm+GELU+Linear,并把维度升到 1024(对重建质量很关键)。
  • Codebook / VQ:词表 |V|=1024;straight-through 梯度估计器;VQ loss λ1‖sg[E(o)]−ẑ‖² + λ2‖sg[ẑ]−E(o)‖²,λ1=0.25、λ2=1.0(码本变得比特征慢)。防码本坍缩用 UltraLiDAR 的 K-Means 重启:memory bank 存最近 encoder 输出(大小=10× 码本);某码 256 次迭代没被用即判为 dead,dead 超过码本 3% 就在 memory bank 上跑 K-Means 重初始化整个码本(但每个码本至少要过 200 次迭代才允许重初始化)。
  • Decoder(本文新颖点):对称 Swin backbone(Patch Merging↔Patch Upsample),输出 256×256×128 后分两支:
    • 隐式表征分支:LayerNorm+Linear 得 3D 神经特征网格 NFG,shape 512×512×64×16(每 voxel 16 维);查询任意连续坐标 (x,y,z) 用双线性插值取 16 维特征 →2 层 MLP(隐层 32, ReLU)→sigmoid 得占据值 α∈[0,1];沿射线 r(h)=p+hd 用可微深度渲染 D=Σ wi hi, wi=αi·Π(1−αj) 出深度。深度用 L1 loss,另加一项鼓励权重 wi 集中在表面 ε=0.4m 内。
    • 粗重建分支:LayerNorm+Linear 输出 1024×1024×64 的二值 voxel-占据 logits(bias 初始化 −5.0,因为大多 voxel 是空的),推理时用于 spatial skipping 加速射线采点(BEV max-pool 因子 8 提召回,只在非空 voxel 内采点)。

World Model(时空 Transformer 离散扩散)

  • 输入/输出:128×128 个 BEV token 进,128×128×1024 维 logits 出(1024=词表大小)。embedding 层与最终 softmax 层 weight tying
  • 架构:U-Net 三级分辨率(1×/2×/4× 下采样),特征维 (256,384,512)、heads (8,12,16)(固定每头 32 维)。空间注意力用 Swin、时间注意力用 GPT-2 block(同一空间位置跨帧 attend),每 2 个空间块接 1 个时间块。跨层上采样用自定义 Level Merging(借 Patch Merging 设计 + 残差)。整体仿 GPT-2:每级 = 残差之和 → 最终 LayerNorm → 最终 Linear,从而直接套用语言模型的初始化/优化策略。全部 pre-norm;除 Swin 的 QKV Linear 外去掉所有 Linear 的 bias(LLaMA 风格)。
  • Action 条件:动作 = ego 车 SE(3) 位姿(4×4 矩阵);flatten 成 16 维 → Linear→LayerNorm→Linear,加到对应时间帧所有特征位置的开头。再叠 ViT 式空间绝对位置编码 + 可学习时间位置编码。
  • 一致性/记忆:时间维用因果 mask;CFG(见下)通过把时间序列长度 +1、对新增帧用 identity mask 实现无条件生成分支,一次前向即可。因果 + 时空分解使过去帧只需缓存时间块的 KV。

数据

  • 数据集:NuScenes、KITTI Odometry、Argoverse2 LiDAR——三个常用大规模自动驾驶数据集。纯无监督,只用未标注 LiDAR 点云 + ego 未来位姿(作动作),不需要框/分割标注。
  • 协议(沿用 4D-Occ / Khurana et al. 2023):每数据集分别为 1s 和 3s 预测各训一个模型。KITTI / Argoverse2:输入 5 过去帧、输出 5 未来帧(跨 1s 或 3s)。NuScenes 用 2Hz:1s 预测=2 过去帧→2 未来帧,3s 预测=6 过去帧→6 未来帧。
  • 动作标注:动作即 ego 车位姿序列,直接来自数据集里程计/位姿,无需人工标注。
  • 训练目标混合(三选一,每轮随机采样,见下)——不是数据配比而是任务配比,50/40/10。
  • 配比 / 比例:作者未披露训练用总帧数/小时数等绝对规模数字(只给 batch size 与迭代数,见 Infra)。Argoverse2 评测用均匀子采样的 4000 帧(val 与 test 各 4000)。

训练方法

Tokenizer

端到端最小化 Lvq + LrenderLrender = E_r[‖D−Dgt‖1 + 1(|hi−Dgt|>ε)‖wi‖² ] + BCE(v, vgt)(深度 L1 + 表面集中项 + 粗重建分支的二元交叉熵)。

把 MaskGIT 变成离散扩散(核心方法贡献)

作者用 Campbell et al. (2022) 的命题,证明 D3PM 式参数化下 ELBO 可再下界成一个「几乎就是 MaskGIT loss」的形式,差别只有两点:(1) 为让后验 q(xk|x0)xk≠x0 时良定义,非 mask 位置需要加均匀扩散噪声;(2) loss 不只加在 mask 位置。由此把 MaskGIT 升级成 absorbing-uniform 离散扩散

  • 训练(Algorithm 1):对 x0 随机 mask ⌈γ(u0)N⌉ 个 token(γ(u)=cos(uπ/2) 余弦调度),再对剩余 token 注入至多 η%=20 的均匀噪声(随机码本 token),用交叉熵重建 x0。η 固定,控制非 mask token 的最低信噪比。
  • 采样(Algorithm 2):从全 mask 出发,每步预测 x̃0,用 log pθ(x̃0)+Gumbel·k/K 打分(非 mask 位置置 +∞ 保证不回退到 mask),保留 top-M;关键新增能力是可迭代重采样/修正已解码 token(MaskGIT 做不到)。采样用 top-3 logits 而非 vanilla 采样。相比需训两个模型的 token-critic 类做法,本法只训一个模型即可修正 token。
  • CFG:分类器无关扩散引导,logits_cfg = logits(·|c) + w·(logits(·|c) − logits(·)),条件 c=过去 agent 历史。

世界模型的混合训练目标(Figure 4)

每次迭代随机采样一种目标:

  1. 50%:条件于过去、去噪未来(future prediction)。
  2. 40%:过去与未来联合去噪(更难的预训练任务,保证过去条件不完美时也能预测)。
  3. 10%:每帧独立去噪,不管过去未来(学无条件生成模型,供 CFG 用)。

时间注意力 mask 随目标切换:目标 1、2 用因果 mask;目标 3 用单位矩阵(每帧只看自己)。推理时仍自回归一次预测一帧,每帧用 Algorithm 2 + CFG。

关键超参

Transformer 初始化用 MT-NLG 的 fan-in(std=√(1/3H),最接近 GPT-1),并做 GPT-2 式残差缩放(每级按残差数 L 把残差前 Linear 权重乘 √(1/L))。优化器 AdamW,β2=0.95,weight decay 1e-4(bias/embedding/LayerNorm 不衰减),linear warmup + cosine decay(最低到峰值 10%),交叉熵带 0.1 label smoothing。Tokenizer:lr 1e-3、warmup 4000 iter、grad clip 0.1、batch 16、cosine 长度 0.4M iter。World model:lr 1e-3、warmup 2000 iter、grad clip 5.0、batch 8、cosine 长度 0.75M iter。所有数据集共用同一套超参。

Infra(训练 / 推理工程)

  • GPU 数量 / GPU-hours / 并行策略 / 精度未披露(论文与官方博客均未给出训练用卡型、卡数、训练时长或并行/混合精度方案)。可推断的只有相对规模:模型极小(tokenizer 13M、world model 39M),batch 8–16、iter 数 0.4M–0.75M。
  • 推理:每帧 128×128 token,10 步扩散即可(平均每步并行解码约 1600 个新 token);解码器侧用 spatial skipping(BEV max-pool 因子 8)+ 粗重建分支加速射线采点。CFG 靠时间序列 +1 帧、单次前向实现;过去帧只需缓存时间块 KV。具体 FPS / 控制 Hz / 端到端延迟 / 车端硬件:未披露

评测 benchmark

指标沿用点云预测惯例:Chamfer 距离、raycasting 的 L1 深度(L1 Mean / L1 Med)、相对 L1 误差率 AbsRel;作者指出旧协议的 GT 未按 ROI 裁剪会虚高误差,故在 ROI(±70m x/y、±4.5m z)内重算并额外报 L1 中位数(对离群更鲁棒)。

主结果(Table 1,主 Chamfer↓ 列;即作者强调的 ROI 内公平指标)

数据集/horizon前 SOTA(4D-Occ)Copilot4D降幅
NuScenes 1s1.410.36~74%
NuScenes 3s1.400.58~59%
KITTI 1s0.510.18~65%
KITTI 3s0.960.45~53%

(更早基线 NuScenes 1s Chamfer:SPFNet 2.24 / S2Net 1.70。Table 1 另列一组「GT 未按 ROI 裁剪」的偏高 Chamfer,作者认为其虚高、以 ROI 列为准。)

Argoverse2 val(Table 2,全部 ROI 内):1s Chamfer 4D-Occ 1.42→0.26、3s 1.99→0.55(test set Table 6 结果一致:1s 1.51→0.25、3s 2.12→0.61)。综述:1s 预测三数据集 Chamfer 降 65%–75%,3s 预测降 >50%

零样本跨数据集迁移(Table 5,AV2→KITTI):1s Chamfer 4D-Occ 2.52→0.36(≈7×)、3s 4.83→1.12(≈4.3×)——两个 horizon 均比 4D-Occ 好 >4×

消融

  • CFG(Table 3,NuScenes 3s):w=0 时 Chamfer 1.40,w=1.0 降到 0.56(−60%),w=2.0 为 0.58 —— CFG 对 Chamfer 提升最显著。
  • 改进版离散扩散 vs 原 MaskGIT(Table 4,NuScenes 3s,均 10 步采样、CFG w=2.0):MaskGIT 0.82 → 本文 0.58(−29%),得益于能迭代重采样已解码 token。
  • Tokenizer spatial skipping(Table 7,NuScenes 重建):ROI 内 Chamfer 0.148→0.082,spatial skipping 既加速又略提重建质量。

定性上(Figure 5 对比 4D-Occ):ego 车移动时新视角合成更好、能理解他车运动、能建模地面点的 LiDAR pattern;还能在反事实动作下想象不同未来(如 ego 刹车时后车也刹车)。

创新点与影响

  • 方法贡献:首次把 MaskGIT 严格 recast 为 absorbing-uniform 离散扩散——只需「非 mask 位加均匀噪声 + loss 覆盖全部位置」两处改动,就让模型在采样时能迭代修正已解码 token,且只训一个模型(无需 token-critic 的双模型)。
  • 系统贡献:给出「tokenize everything + discrete diffusion」这一可跨域的世界模型配方,并用点云预测把它落到自动驾驶;tokenizer 用隐式表征 + 可微深度渲染,比 UltraLiDAR 纯 voxel 二值预测能重建细粒度几何。
  • 影响:把自动驾驶预测从「需框/分割监督」推向「纯未标注观测的 GPT 式无监督」,成为 driving world-model / 4D 占据预测一条被反复对比的强基线(点云预测 SOTA 大幅刷新、跨数据集迁移 >4×)。官方定位为「首个面向物理世界、能在 3D 空间与时间中推理的基础模型」。
  • 作者自陈局限:3s 视界的车辆行为建模仍需改进(3s 精度低于 1s,部分源于多模态未来的固有不确定性);模型目前学不会「幻想」新驶入 ROI 的车辆;作者认为这些非框架根本缺陷,可通过加数据/算力/模型规模缓解。此外训练规模、算力与车端推理性能均未在论文披露。

原始链接

一手源存档(sources/)

  • copilot4d-waabi—blog — Waabi 官方研究页快照(sources/world-model/2023/copilot4d-waabi—blog.md,fetched 2026-07-16)
  • arXiv 2311.01017 全文 PDF:见上方 arXiv 链接(arXiv 原文 PDF,不入 git)