DrivingDiffusion
基于 3D 布局的多视角驾驶场景视频生成,ECCV 2024 论文官方实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 3D 布局的多视角驾驶场景视频生成,ECCV 2024 论文官方实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
自动驾驶行业正面临一个残酷的现实:高质量多视角驾驶视频数据的采集成本极高。一辆搭载 6 个摄像头(覆盖 360°视野)的数据采集车,配备专业标注团队,每小时的数据采集成本动辄数千元。而要训练一个能应对复杂城市场景的感知模型,往往需要数十万小时的多视角视频。
更棘手的是,这些数据还需要精确的 3D 标注——车道线、障碍物、信号灯的真实 3D 位置。在雨雪天气、夜晚、隧道等极端场景下,数据更是稀缺。
DrivingDiffusion 正是为解决这一困境而生:利用扩散模型,直接根据 3D 布局信息,生成逼真的多视角驾驶视频。输入一段地图级别的 3D 布局,输出 6 个摄像头视角、时序连贯的视频帧——不需要真实车辆上路,不需要标注工人蹲守。
图1:DrivingDiffusion 训练与推理总流程(来源:项目官网 drivingdiffusion.github.io)
DrivingDiffusion 来自一篇被 ECCV 2024 接收的论文(arXiv:2310.07771),由多视角图像生成、多视角视频生成两条 pipeline 级联组成。
核心问题定义:给定 3D 空间布局(包括车道线、可行驶区域、3D 物体边界框),生成 N 个相机视角、T 个时间帧的视频序列,要求:
技术路线选择:项目基于 Stable Diffusion v1-4 的潜空间扩散架构进行改造。为什么不用纯像素空间?因为 1024×1024 的单帧图像在 RGB 像素空间就有 3M 维度,而潜空间维度约 4×64×64=16K,diffusion 过程快了数十倍。团队在 diffusers 库基础上大量魔改了 Transformer 和 UNet 结构,说明这是一个深度定制而非简单微调的工程。
DrivingDiffusion 的 pipeline 设计体现了清晰的工程分解思想,将复杂的多视角视频生成拆解为三个相对独立的阶段:
这是整个系统的起点。给定 3D 布局信息,生成所有 6 个相机视角的第一帧关键图(Key Frame)。
关键技术创新:
固定住第一帧的多视角关键图后,对每个相机单独生成时序视频。这一步共享同一个 Temporal Model,但不同相机有独立的 Camera Embedding 来区分视角。
关键技术创新:
通过时序滑窗算法(Sliding Window),在保持跨视角一致性的前提下,延长视频长度。每生成一个新窗口,就与已有部分进行特征层面的融合。
代码仓库 diffusers_custom 目录是对 HuggingFace diffusers 库的一次深度分叉,包含约 329 个 Python 文件,规模相当可观。
核心模型文件(按重要性排序):
| 文件 | 说明 | 作用 |
|---|---|---|
unet_3d_condition.py | ~32KB | 核心 3D UNet,支持时序维度和多条件注入 |
transformer_2d.py | ~23KB | Transformer 块,处理空间维度的注意力计算 |
transformer_temporal.py | — | 时序 Transformer,处理时间维度的注意力 |
attention_processor.py | — | 注意力处理器,支持 Cross-View Attn 等多种模式 |
autoencoder_kl.py | — | VAE 编码器,将图像压缩到潜空间 |
Pipeline 层次:
diffusers_custom/pipelines/ 下实现了 alt_diffusion(替代 Stable Diffusion)、animatediff(动画生成)、audio_diffusion(音频生成)等多条 pipelineAutoPipelineForImage2Image、AutoPipelineForText2Image 等自动 pipeline 机制也被集成进来数据支持:目前官方支持 nuScenes 数据集(自动驾驶领域最大的开源数据集之一)。nuScenes 本身需要申请下载,含 1000 个场景的完整多视角数据。
README 明确指出:DrivingDiffusion 的训练配置是 8 张 NVIDIA A100(80GB)。这个算力需求直接表明这是一个面向研究机构和大厂的项目,而非个人开发者可以轻易复现的成果。
推理阶段的要求会低一些,但仍需要至少 16GB 显存的 GPU(如 RTX 3090 或 A5000)才能运行单帧生成。多帧视频生成需要更多显存。
环境配置(README 原文):
conda create -n dridiff python=3.8
conda activate dridiff
pip install -r requirements.txt
但实际检查发现 requirements.txt 为空,这说明依赖管理可能通过 setup.py 或直接 pip install 实现,需要进一步探索 setup.py 或 pyproject.toml。
作为一个研究项目,DrivingDiffusion 存在以下局限:
DrivingDiffusion 代表的不仅是单篇论文,更是一种趋势:用生成式 AI 合成自动驾驶训练数据。
具体来说,该方向的价值体现在:
该项目获得了 562 GitHub Stars,在 ECCV 2024 发表,论文在 arXiv 上的引用量也在持续增长。作为自动驾驶视频生成领域的先行者之一,它为后续的 DriveDreamer、MotionCtrl 等项目奠定了技术基础。
技术栈总结: