MagicDrive-V2
MagicDrive-V2 是一款专为自动驾驶领域设计的开源视频生成模型,能够创建高分辨率、长时段的街道场景视频。针对现有技术在生成长视频时面临的扩展性不足及控制条件融合困难等痛点,它成功实现了在复杂驾驶场景中生成具备多样 3D 几何结构和多视角一致性的高质量视频。
该工具基于先进的 DiT(Diffusion Transformer)架构,核心亮点在于引入了流匹配(Flow Matching)技术以提升模型扩展能力,并采用渐进式训练策略来应对复杂场景挑战。通过独特的时空条件编码机制,MagicDrive-V2 能对视频生成的空间与时间潜在变量进行精准控制,从而显著提升了生成画面的真实感与连贯性。
MagicDrive-V2 主要面向自动驾驶算法研究人员、计算机视觉开发者以及相关领域的学术探索者。它不仅支持在 nuScenes 数据集上进行训练与推理,后续还将适配 Waymo 数据集,是构建高保真驾驶仿真环境、测试感知算法及合成训练数据的理想选择。目前项目已开放核心代码与部分预训练权重,并在 ICCV 2025 上获得认可,适合希望深入探索可控视频生成技术的专业人士使用。
使用场景
某自动驾驶算法团队正在构建高保真仿真测试平台,急需生成涵盖极端天气与复杂路况的长序列街景视频,以训练感知模型并验证系统安全性。
没有 MagicDrive-V2 时
- 分辨率与时长受限:现有生成工具难以同时兼顾高分辨率与长帧数,生成的视频往往模糊且短暂,无法模拟真实驾驶中的远距离感知需求。
- 3D 几何控制缺失:缺乏对车辆、行人等物体三维位置的精准控制,导致生成的交通场景逻辑混乱,难以复现特定的危险工况(如鬼探头)。
- 多视角不一致:在生成环视或多摄像头数据时,不同视角间的画面存在明显撕裂或内容冲突,破坏了传感器融合算法的训练基础。
- 极端场景覆盖不足:依赖真实数据采集成本高昂且难以覆盖罕见长尾场景(如暴雨夜间的施工路段),导致模型在边缘案例上表现脆弱。
使用 MagicDrive-V2 后
- 高清长视频生成:基于 DiT 架构与流匹配技术,MagicDrive-V2 能稳定输出高分辨率、长时段的街景视频,清晰呈现远处路标与细微纹理。
- 自适应时空控制:通过空间 - 时间条件编码,团队可精确指定车辆轨迹与行人动作,轻松构建符合物理规律的复杂交互场景。
- 多视角高度一致:工具确保了前后左右各摄像头视角的几何一致性,直接生成可用于多传感器融合训练的高质量同步数据流。
- 无限场景泛化:利用其强大的生成能力,团队低成本合成了大量雨雪雾等极端天气下的长尾场景,显著提升了感知模型的鲁棒性。
MagicDrive-V2 通过突破分辨率、时长与控制精度的瓶颈,将自动驾驶仿真数据的生产效率与质量提升至全新维度,大幅降低了实车路测的风险与成本。
运行环境要求
- Linux
- 必需
- 支持 NVIDIA (A800, H20) 或 Huawei Ascend (910b)
- NVIDIA 需 CUDA 11.8 (A800) 或 12.4 (H20)
- Ascend 需 CANN 8.0RC2
- 推理高分辨率长视频推荐多卡并行(如 8 卡),显存需求较高,可通过 cpu_offload 优化
未说明(建议 64GB+ 以处理大型数据集和缓存)

快速开始
MagicDrive-V2
本仓库包含论文的实现:
MagicDrive-V2:基于自适应控制的自动驾驶高分辨率长视频生成
高瑞源(https://gaoruiyuan.com/)1, 陈凯(https://kaichen1998.github.io/)2, 肖博(https://www.linkedin.com/in/bo-xiao-19909955/?originalSubdomain=ie)3, 洪兰青(https://scholar.google.com.sg/citations?user=2p7x6OUAAAAJ&hl=en)4, 李振国(https://scholar.google.com/citations?user=XboZC1AAAAAJ&hl=en)4, 徐强(https://cure-lab.github.io/)1
1香港中文大学 2香港科技大学 3华为云 4华为诺亚方舟实验室
https://github.com/user-attachments/assets/4c915eca-6583-422e-9a1a-1eebb9379ff4
摘要
简而言之 MagicDrive-V2 能够生成具有多样化 3D 几何控制和多视角一致性的高分辨率、长时长街景视频。
扩散模型的快速发展极大地推动了视频合成技术的进步,尤其是在可控视频生成领域,这对于自动驾驶等应用至关重要。然而,现有方法在可扩展性以及控制条件的整合方式上存在局限性,难以满足自动驾驶场景中对高分辨率、长时长视频的需求。本文我们提出了基于 DiT 架构的全新方法——MagicDrive-V2,以应对这些挑战。我们的方法通过流匹配提升了可扩展性,并采用渐进式训练策略来处理复杂场景。通过引入时空条件编码,MagicDrive-V2 实现了对时空潜在变量的精确控制。全面的实验表明,该方法在生成更高分辨率、更多帧数的真实街景视频方面表现出色。MagicDrive-V2 显著提升了视频生成质量和时空控制能力,从而拓展了其在自动驾驶相关任务中的应用潜力。
最新消息
- [2025年6月26日] MagicDrive-V2 被 ICCV 2025 接收 :tada: 。为与论文名称保持一致,我们将此仓库更名为 MagicDrive-V2。
- [2025年1月27日] 我们在项目页面更新了 Waymo 开放数据集上的微调结果。立即查看!
- [2024年12月7日] 第三阶段检查点及用于训练和推理的 nuScenes 元数据发布!
- [2024年12月3日] 训练与推理代码发布!我们稍后会更新 README 中的链接。
- [2024年11月22日] 论文和项目页面正式发布!请访问 https://gaoruiyuan.com/MagicDrive-V2/
待办事项
- 训练与推理代码
- 第三阶段预训练权重及 nuScenes 元数据
- 第一、二阶段预训练权重(后续发布)
- 使用 Waymo 数据集进行升级
快速入门
环境搭建
克隆本仓库
git clone https://github.com/flymin/MagicDrive-V2.git
代码已在 A800/H20/Ascend 910b 服务器上测试通过。请按照以下步骤设置 Python 环境:
[!注意]
请使用pip来配置环境。我们不建议直接使用conda+yaml进行环境配置。
NVIDIA 服务器 逐步指南:
- 确保您的环境中已安装以下包:
torch==2.4.0 torchvision==0.19.0 # 可能需要从源码编译 apex (https://github.com/NVIDIA/apex) # 选择合适的轮子包或从源码编译 xformers>=0.0.27 flash-attn>=2.6.3 - 安装 ColossalAI
git clone https://github.com/flymin/ColossalAI.git git checkout pt2.4 && git pull cd ColossalAI BUILD_EXT=1 pip install . - 安装其他依赖
pip install -r requirements/requirements.txt
更多详细信息请参考以下 YAML 文件:
- A800:
requirements/a800_cu118.yaml - H20:
requirements/h20_cu124.yaml
Ascend 服务器 逐步指南:
- 确保您的环境中已安装以下包(请参考 此页面 设置 PyTorch 环境):
# 基于 CANN 8.0RC2 torch==2.3.1 torchvision==0.18.1 torch-npu==2.3.1 apex (https://gitee.com/ascend/apex) # 选择合适的轮子包或从源码编译 xformers==0.0.27 - 安装 ColossalAI
# 我们移除了对 `bitsandbytes` 的依赖。 git clone https://github.com/flymin/ColossalAI.git git checkout ascend && git pull cd ColossalAI BUILD_EXT=1 pip install . - 安装其他依赖
pip install -r requirements/requirements.txt
更多详细信息请参阅 requirements/910b_cann8.0.RC2_aarch64.yaml。
预训练权重
VAE:我们使用来自 THUDM/CogVideoX-2b 的 3DVAE。您只需下载 vae 子文件夹即可。
文本编码器:我们使用来自 google/t5-v1_1-xxl 的 T5 编码器。
请按以下结构组织这些文件:
${CODE_ROOT}/pretrained/
├── CogVideoX-2b
│ └── vae
└── t5-v1_1-xxl
MagicDrive-V2 检查点
请从 flymin/MagicDriveDiT-stage3-40k-ft 下载第三阶段检查点,并将其放置在 ${CODE_ROOT}/ckpts/ 目录下,如下所示:
${CODE_ROOT}/ckpts/
└── MagicDriveDiT-stage3-40k-ft
准备数据
我们按照 bevfusion 的说明 类似的方式准备 nuScenes 数据集。具体步骤如下:
从 nuScenes 官网 下载 nuScenes 数据集,并将其放置在
./data/目录下。你应该会看到以下文件结构:${CODE_ROOT}/data/nuscenes ├── can_bus ├── maps ├── mini ├── samples ├── sweeps ├── v1.0-mini └── v1.0-trainval从 flymin/MagicDriveDiT-nuScenes-metadata 下载用于
mmdet的元数据。否则
请按照 MagicDrive-t 的方法将标注插值到 12Hz,并使用
tools/prepare_data/prepare_dataset.sh中的命令自行生成元数据。如果你已经拥有来自 MagicDrive-t 的元数据文件,可以使用
tools/prepare_data/add_box_id.py添加实例 ID 键。相关命令可在tools/prepare_data/prepare_dataset.sh中找到。你的数据文件夹应如下所示:
${CODE_ROOT}/data ├── nuscenes │ ├── ... │ └── interp_12Hz_trainval └── nuscenes_mmdet3d-12Hz ├── nuscenes_interp_12Hz_infos_train_with_bid.pkl └── nuscenes_interp_12Hz_infos_val_with_bid.pkl(可选)为了加速数据加载,我们准备了 BEV 地图的 h5 格式缓存文件。
说明
这些缓存文件可以通过
tools/prepare_data/prepare_map_aux.py使用configs/cache_gen中的不同配置生成。例如:python tools/prepare_data/prepare_map_aux.py +cache_gen=map_cache_gen_interp \ +process=val +subfix=8x200x200_12Hz完整的命令可在
tools/prepare_data/prepare_dataset.sh中找到。请确保将生成的缓存文件移动到正确的位置。我们的默认路径是:
${CODE_ROOT}/data/nuscenes_map_aux_12Hz ├── train_8x200x200_12Hz.h5 (25G) ├── train_8x400x400_12Hz.h5 (99G) ├── val_8x200x200_12Hz.h5 (5.3G) └── val_8x400x400_12Hz.h5 (22G)
尝试 MagicDrive-V2
大多数情况下,你可以在 GPU 服务器和 Ascend 服务器上使用相同的命令。
推理模型以进行生成
# ${GPUS} 可以是 1/2/4/8,用于序列并行。
# ${CFG} 可以是位于 `configs/magicdrive/inference/` 中的任何配置文件。
# ${PATH_TO_MODEL} 可以是 `ema.pt` 文件的路径,或检查点中 `model` 文件的路径。
# ${FRAME} 可以是 1/9/17/33/65/129/full...(8n+1)。1 表示单张图像;full 表示 nuScenes 的全长。
# 如果 GPU 显存充足,可以省略 `cpu_offload=true` 和 `scheduler.type=rflow-slice`。
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
torchrun --standalone --nproc_per_node ${GPUS} scripts/inference_magicdrive.py ${CFG} \
--cfg-options model.from_pretrained=${PATH_TO_MODEL} num_frames=${FRAME} \
cpu_offload=true scheduler.type=rflow-slice
有关 GPU 显存要求的更多信息,请参阅 FAQ。
例如,要以最高分辨率(848x1600)生成全长视频(20秒@12fps),使用 8 张 H20/A800 显卡:
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True torchrun --standalone --nproc_per_node 8 \
scripts/inference_magicdrive.py \
configs/magicdrive/inference/fullx848x1600_stdit3_CogVAE_boxTDS_wCT_xCE_wSST.py \
--cfg-options model.from_pretrained=./ckpts/MagicDriveDiT-stage3-40k-ft/ema.pt \
num_frames=full cpu_offload=true scheduler.type=rflow-slice
其他生成选项:
-
force_daytime: (bool) 强制生成白天场景。 -
force_rainy: (bool) 强制生成雨天场景。 -
force_night: (bool) 强制生成夜晚场景。 -
allow_class: (list) 限制生成的类别。 -
del_box_ratio: (float) 随机删除部分框以进行生成。 -
drop_nearest_car: (int) 在生成过程中删除距离最近的 N 辆车。
推理模型以进行测试
我们按照 W-CODA2024 Track2 的格式生成视频,并使用已建立的基准进行测试。在生成之前,请确保评估用的元数据已准备好,如下所示:
${CODE_ROOT}/data/nuscenes_mmdet3d-12Hz
├── nuscenes_interp_12Hz_infos_track2_eval.pkl # 可从 Track2 页面下载
└── nuscenes_interp_12Hz_infos_track2_eval_with_bid.pkl # 可由本项目生成或下载。
使用 8 张 GPU/NPU 生成视频:
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True # 对于 GPU
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True # 对于 NPU
torchrun --standalone --nproc_per_node 8 scripts/test_magicdrive.py \
configs/magicdrive/test/17-16x848x1600_stdit3_CogVAE_boxTDS_wCT_xCE_wSST_map0_fsp8_cfg2.0.py \
--cfg-options model.from_pretrained=${PATH_TO_MODEL} tag=${TAG}
训练 MagicDrive-V2
使用 32 张 A800/H20 显卡启动训练:
# 请将“xx”替换为实际的 rank 和 ip
# ${config} 可以是 `configs/magicdrive/train` 中的任意配置文件。
# 例如:configs/magicdrive/train/stage3_higher-b-v3.1-12Hz_stdit3_CogVAE_boxTDS_wCT_xCE_wSST_bs4_lr1e-5_sp4simu8.py
torchrun --nproc-per-node=8 --nnode=4 --node_rank=xx --master_addr xx --master_port 18836 \
scripts/train_magicdrive.py ${config} --cfg-options num_workers=2 prefetch_factor=2
我们还使用 64 张 Ascend 910b 来训练第 2 阶段,相关配置可在 configs/magicdrive/npu_64g 中找到。
此外,我们还提供了调试配置,用于测试你的环境和数据加载流程:
# 例如(使用 4 张 A800)
# ${config} 可以是 `configs/magicdrive/train` 中的任意配置文件。
# 例如:configs/magicdrive/train/stage3_higher-b-v3.1-12Hz_stdit3_CogVAE_boxTDS_wCT_xCE_wSST_bs4_lr1e-5_sp4simu8.py
bash scripts/launch_1node.sh 4 ${config} --cfg-options debug=true
# 通过设置 `vsdebug=true` 并使用 1 个进程,你可以使用 VSCode 的“附加模式”进行调试。
注意:sp=4(第 3 阶段)至少需要 4 张 GPU 才能运行。
引用我们
@inproceedings{gao2025magicdrive-v2,
title={{MagicDrive-V2}: High-Resolution Long Video Generation for Autonomous Driving with Adaptive Control},
author={Gao, Ruiyuan and Chen, Kai and Xiao, Bo and Hong, Lanqing and Li, Zhenguo and Xu, Qiang},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
year={2025}
}
致谢
我们采用了以下开源项目:
- BEVFusion:用于处理3D边界框和BEV地图的数据加载器
- Open-Sora:STDiT3模型及训练框架
- ColossalAI:用于并行计算和Zero2优化的框架
- CogVideoX:我们使用了他们的CogVAE
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备