一句话定位

WoVoGen 先用一个隐扩散世界模型,根据自车动作把过去的 4D「世界体」(occupancy + HD map 堆成的体素栅格)滚动预测到未来,再把体素体渲染采样成每路相机的 2D 特征去驱动 ControlNet 生成环视视频——用显式体素中间层同时换取帧间时序一致性与相机间几何一致性(ECCV 2024,Fudan University)。

背景与定位

驾驶场景生成此前分两条路:渲染式方法(有显式 3D/4D 结构、一致性强但多样性差、难处理光照天气)和扩散式方法(多样性高、但常年只喂 HD map / 3D 框这类稀疏条件,导致场景理解不完整)。WoVoGen 的定位是给扩散模型也配上一个稠密的显式世界结构做条件,把两条路的优点接起来。

同期与前后坐标:

  • drivedreamer(DriveDreamer,2023-09):本文在 Table 1 直接对比的基线之一(FID 52.6 / FVD 452.0),走 HDMap + 3D 框稀疏条件路线,且是单视角视频。
  • DriveGAN(Kim et al.,NeurIPS 2021):GAN 路线基线(FID 73.4 / FVD 502.3)。
  • magicdrive(Gao et al.,2023-10,MagicDrive):同期多视角布局可控生成,同样用 HD map / 3D 框稀疏条件,但不含世界模型式的未来预测分支。
  • drive-wm-driving-into-the-future(Drive-WM,CVPR 2024):稍晚把多视角一致视频接上真实端到端规划器做闭环验证。
  • WoVoGen 与这些工作的区别在于:它自己内生一个体素世界模型分支去预测未来场景结构(不需要每帧都有 ground-truth HD map/3D 框输入),并用稠密体素而非稀疏框/地图做生成条件,因此天然带有跨相机的几何一致性。

模型架构

总体分两条分支(Fig. 2):世界模型分支(预测未来 4D 世界体)+ 世界体感知生成分支(渲染出环视视频)。

世界体(World Volume)表示:稠密体素栅格 𝒲 ∈ ℝ^{Z×H×W×C},由两部分拼接而成——

  • 语义占据栅格 𝒪 ∈ ℝ^{Z×H×W×C_occ}(3D occupancy,每体素一个类别标签);
  • 道路地图 ℳ ∈ ℝ^{1×H×W×C_map}(HD map,仅在高度零平面,沿 Z 轴零填充对齐),道路元素与语义类别都编码进 RGB(C_map=3)。

世界模型分支(Latent world diffusion)

  • 先训一个 VAE 式 autoencoder(vq-regularization),把单帧 3D 世界体压缩成 2D 潜表示 z_w(下采样因子 s 直接取等于 Z,即把高度维压没得到 2D 潜编码),再堆叠时间轴得到 2D 时序潜序列。
  • 扩散 UNet(DDPM)在此潜空间学习「过去世界体 + 驾驶动作 → 未来世界体」的条件分布:过去世界体经同一编码器编码后与噪声潜 z_i 通道拼接;驾驶动作(速度 v、转向角 a)经 Fourier embedding token 化,再过一个浅 Transformer 精炼,最后通过 cross-attention 注入 UNet(Fig. 3a 的 action attention block)。
  • 联合建模连续帧:不是逐帧独立扩散,而是对未来 N_future 帧世界体建模联合分布 p(𝒲_{N_past+1..N_past+N_future} | 𝒲_{1..N_past}; 𝒜)。为此把 Stable Diffusion 的空间 Transformer block 扩展成时空版:spatial self-attn → temporal self-attn(对第二维 n 做 attention)→ action cross-attn → FFN,四段残差堆叠。

世界体感知 2D 特征(World volume-aware 2D feature)

  • 用 CLIP 把体素类别标签编码成语义特征,PCA 降维后过 SPConv(稀疏卷积)得到世界体特征 ℱ_w = SPConv(PCA(CLIP(𝒲)))。
  • 相机体素采样:按每路相机内外参构造视锥体网格 p_c(D_c×H_c×W_c),从 ℱ_w 插值采样得 ℱ_cam,再对深度通道做 squeeze-and-excitation 后沿深度维求和,压成 2D 图像特征 ℱ_img(对应式 4–6)。

世界体感知扩散生成

  • 基于 ControlNet,把 ℱ_img 作为控制信号注入预训练 Stable Diffusion(v2.1, 512-ema-pruned 权重,见官方仓库权重名)
  • Panoptic diffusion:六路相机(前左/前/前右/后右/后/后左)的 ℱ_img 直接在空间上拼接成一张 2×3 网格的全景特征 ℱ_pano,解码目标也相应变成一张拼接全景图,把「多视角间一致性」问题转化为「单张大图内部一致性」问题。
  • 场景引导:文本 prompt(天气/地点/场景描述)走 CLIP 文本特征,接入 LDM 中间层做跨模态引导(同 LDM 做法)。
  • 物体引导:把世界体的体素类别投影到每个相机像面得到逐类掩码 m_class(附录 A 式 9–11,用相机外参的逆变换 + 深度反比的方形 patch 模拟体素投影,超参数 δ 的比例常数 d=375),再用 cross-attention 把该类别的 CLIP 特征只注入掩码覆盖的 latent token(对应 bus/car/pedestrian/truck/construction/vegetation 六类)。
  • 时序一致性(视频生成):先训单帧多相机生成模型(不含时序模块),再新增时序注意力 block 并只训这个新 block、冻结其余权重做微调(Fig. 3 右侧)。

数据

  • 数据集:nuScenes(700 训练视频 + 150 验证视频,六路环视相机)。
  • Occupancy 真值:CVPR 2023 3D Occupancy Prediction Challenge 标注,语义类别与 nuScenes-lidarseg 对齐。
  • HD map:由全局地图结合自车 pose 转出车身系局部地图,并与 occupancy 精确对齐。
  • 图像分辨率:训练分辨率 256×448;视频训练取连续 6 帧
  • 文本条件:用结构化模板拼接场景描述——“Drive in {weather description} in {location}. The driving scene is in {environment description}, captured by multi-view camera.”,方括号内容取自 nuScenes 自带的场景标注。
  • 未披露 world volume 的具体体素分辨率(Z×H×W 数值)与 BEV 感知范围的具体米数。

训练方法

目标函数:标准 DDPM ε-预测 L2 loss(式 8),一切条件 c 作为额外输入注入噪声预测器。

四阶段训练流水线(均在 8×NVIDIA A6000 上):

  1. 世界体 autoencoder:30,000 迭代(vq-regularization + 重建损失,encoder/decoder 训完之后冻结)。
  2. 世界体扩散(latent world diffusion,预测未来世界体):50,000 迭代
  3. 单帧多相机生成模型训练(ControlNet + panoptic diffusion + scene/object guidance,不含时序模块):50,000 迭代
  4. 视频时序微调(新增时序注意力 block,冻结其余权重只训该 block):3,500 迭代

推理流程:先用真实数据初始化 3 帧世界体,再结合驾驶动作序列滚动生成后续世界体(每次生成 3 帧),迭代得到「准长序列」世界体视频,最终解码为多视角相机视频。

Infra(训练 / 推理工程)

  • GPU:8× NVIDIA A6000。GPU-hours、并行策略(是否 DDP/模型并行)、训练精度(fp16/bf16/fp32)均未披露
  • 底座权重:Stable Diffusion v2.1(512-ema-pruned checkpoint,见官方代码 add_weight.py 用法),ControlNet 结构接入。
  • 推理:多步扩散去噪;推理 FPS / 控制频率 / 端到端延迟 / 边缘硬件均未披露(定位为离线数据生成/编辑工具,非实时仿真或车端部署)。
  • 代码:官方仓库 fudan-zvg/WoVoGen 已开源(含 nuscenes_convertor.py 生成世界体、clip_convertor.py 生成物体引导掩码、train_single_frame.py 训练脚本),依赖 Python 3.9 + torch 2.1.0。

评测 benchmark

全部为论文一手结果,均在 nuScenes 验证集。

图像/视频生成质量(论文 Table 1,FID↓ / FVD↓)

方法Multi-viewMulti-frameFID↓FVD↓
DriveGAN73.4502.3
DriveDreamer52.6452.0
Ours (single-frame)27.6-
Ours (video)-417.7

论文原话强调:其单帧结果 FID 27.6 明显低于 DriveGAN 与 DriveDreamer,而”这些方法局限于生成单视角相机图像”(原文措辞,与上表 DriveGAN 一行标注的 Multi-view ✓ 并置略有出入,此处按论文表格与原句如实转录,不代为调和);视频结果 FVD 417.7 全表最低。WoVoGen 是表中唯一同时勾选 Multi-view 与 Multi-frame 两栏的方法。

下游任务:3D 目标检测数据增强(附录 Table 2,BEVDet 为基线,仅测 car/truck/bus 三类车辆)

训练数据mAP_v↑mATE_v↓mASE_v↓mAOE_v↓mAVE_v↓mAAE_v↓
原始 nuScenes34.969.220.417.9124.628.6
+ WoVoGen 生成数据36.268.620.115.7123.428.1

mAP 提升 1.3 个点,最大改善来自朝向误差 mAOE(17.9→15.7)。

消融 1:物体引导(附录 Table 3,CLIP FID↓)

设置FID_clip↓
无 object guidance20.3
有 object guidance12.8

物体引导带来 7.5 的 FID_clip 下降,验证指定物体的像素级位置控制确有效。

消融 2:时序微调(附录 Fig. 9,仅定性)——去掉时序微调后单帧模型在前后相机视频中物体/背景外观明显不连续,加上时序 block 后帧间一致性显著改善;未给量化指标。

创新点与影响

  • 显式 4D 世界体做扩散条件:把稀疏的 HD map/3D 框升级为稠密体素占据+地图栅格,一次性提供跨相机、跨时间的统一几何参照,天然缓解多视角/多帧一致性问题。
  • 两阶段解耦(世界体预测 → 视频渲染):世界模型分支不依赖每帧 ground-truth 条件,只需初始几帧真值 + 未来动作序列即可自回归滚动生成,具备真正的「想象未来场景」能力,而非纯粹条件重建。
  • Panoptic diffusion 的全景拼接技巧:把多视角一致性问题转化为单图内部一致性问题,是一个简单但论文自证有效的工程设计。
  • 可编辑性:因为条件是显式体素体,可以直接在世界体层面增删物体、旋转相机外参,实现语义级场景编辑与新视角生成(Fig. 6),这是稀疏条件方法(HD map/3D 框)较难做到的。
  • 论文自陈局限:未披露 GPU-hours/训练精度/推理延迟等工程细节;世界体的空间分辨率与 BEV 覆盖范围未给出具体数值;视频质量评测(FVD 417.7)没有与 Drive-WM 等同期多视角视频工作直接比较(因为 WoVoGen 投稿/公开时间早于或与之接近,比较对象只有单视角的 DriveGAN/DriveDreamer);下游 3D 检测验证只覆盖车辆三类,未测行人等类别;ControlNet+SD2.1 的推理速度天然较慢,论文没有给出面向闭环仿真或实时性的评估。

原始链接

一手源存档(sources/)

  • wovogen—github-readme — GitHub README(摘要、pipeline 图、Get started 训练脚本、BibTeX),来源 https://github.com/fudan-zvg/WoVoGen
  • 论文全文:arXiv:2312.02934(arXiv 原文 PDF,不入 git;正文与附录数字均取自 arXiv HTML 全文,含 Table 1/2/3 的 HTML 表格结构核对)