一句话定位
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 上):
- 世界体 autoencoder:30,000 迭代(vq-regularization + 重建损失,encoder/decoder 训完之后冻结)。
- 世界体扩散(latent world diffusion,预测未来世界体):50,000 迭代。
- 单帧多相机生成模型训练(ControlNet + panoptic diffusion + scene/object guidance,不含时序模块):50,000 迭代。
- 视频时序微调(新增时序注意力 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-view | Multi-frame | FID↓ | FVD↓ |
|---|---|---|---|---|
| DriveGAN | ✓ | 73.4 | 502.3 | |
| DriveDreamer | ✓ | 52.6 | 452.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↓ |
|---|---|---|---|---|---|---|
| 原始 nuScenes | 34.9 | 69.2 | 20.4 | 17.9 | 124.6 | 28.6 |
| + WoVoGen 生成数据 | 36.2 | 68.6 | 20.1 | 15.7 | 123.4 | 28.1 |
mAP 提升 1.3 个点,最大改善来自朝向误差 mAOE(17.9→15.7)。
消融 1:物体引导(附录 Table 3,CLIP FID↓)
| 设置 | FID_clip↓ |
|---|---|
| 无 object guidance | 20.3 |
| 有 object guidance | 12.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 的推理速度天然较慢,论文没有给出面向闭环仿真或实时性的评估。
原始链接
- arXiv abstract:https://arxiv.org/abs/2312.02934
- arXiv PDF:https://arxiv.org/pdf/2312.02934
- 代码:https://github.com/fudan-zvg/WoVoGen
- HF 论文页:https://huggingface.co/papers/2312.02934 (已核实:截至存档时该页返回 404,尚未被任何 HF repo 引用登记)
一手源存档(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 表格结构核对)