综合介绍
GenXD 是一个开源项目,由新加坡国立大学(NUS)和微软团队开发。它专注于生成任意 3D 和 4D 场景,解决真实世界中 3D 和 4D 生成因数据不足和模型设计复杂带来的难题。项目通过分析相机和对象运动,结合大规模真实数据,构建了一个灵活的生成框架。GenXD 提供了首个开源 4D 数据集 CamVid-30K,包含 3 万多段视频的相机姿态和运动信息。用户可以用它生成符合相机轨迹的视频或一致的 3D 视图。项目已于 2025 年 1 月被 ICLR 2025 接收,并在 GitHub 上获得广泛关注,适合研究者和开发者使用。
功能列表
- 生成任意 3D 场景,支持多视角一致的 3D 视图输出。
- 生成 4D 动态场景,可制作随时间变化的视频。
- 分解相机和对象运动,确保生成内容自然流畅。
- 提供 CamVid-30K 数据集,支持动态 3D 和 4D 任务研究。
- 支持多种条件输入(如图像或少量视图),灵活调整生成结果。
- 将 3D 视图转换为可编辑的数字资产。
- 集成多视角时间模块,优化 3D 和 4D 数据融合。
使用帮助
GenXD 是一个研究型开源框架,用户需在本地搭建环境才能使用。以下是详细的安装和操作指南,帮助用户快速上手。
安装流程
GenXD 需要编程环境支持,适合有一定技术基础的用户。安装步骤如下:
- 准备基础环境
- 确保电脑安装 Python 3.10 或更高版本。
- 安装 Git,用于下载代码。在终端运行:
git clone https://github.com/HeliosZhao/GenXD.git
- 进入项目目录:
cd GenXD
- 安装核心依赖
- 安装 PyTorch(推荐版本 2.1.2,带 CUDA 支持)。运行:
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
- 安装其他依赖(如 diffusers 0.30.3)。运行:
pip install -r requirements.txt
- 如果
requirements.txt
未提供,可参考官方说明安装 NumPy、OpenCV 等库。
- 安装 PyTorch(推荐版本 2.1.2,带 CUDA 支持)。运行:
- 下载预训练模型
- 从 Hugging Face 下载模型:
pip install -U "huggingface_hub[cli]" huggingface-cli download Yuyang-z/genxd --local-dir ./genxd-model
- 将模型文件放入项目目录下的
genxd-model
文件夹。
- 从 Hugging Face 下载模型:
- 下载数据集
- CamVid-30K 数据集可在 Hugging Face 下载:
- VIPSeg 子集和 OpenVid 子集见 https://huggingface.co/datasets/Yuyang-z/CamVid-30K。
- WebVid-10M 子集因限制无法提供,需自行获取。
- 下载后解压到
data/camvid-30k
文件夹。
- CamVid-30K 数据集可在 Hugging Face 下载:
- 检查环境
- 确保有 NVIDIA GPU,运行:
python -c "import torch; print(torch.cuda.is_available())"
输出
True
表示环境正常。
- 确保有 NVIDIA GPU,运行:
使用主要功能
GenXD 支持多种生成任务,以下是具体操作方法。
1. 自定义图像生成 3D 场景
- 准备输入:将图像(PNG 或 JPG 格式)放入
example-images
文件夹。 - 设置相机模式:支持
forward
(前进)和orbit
(环绕)两种模式。 - 运行命令:
DATA_ROOT="example-images"
OUTPUT_DIR="outputs/example-images"
accelerate launch --main_process_port 1223 inference.py
diffusion.pretrain_unet="./genxd-model"
diffusion.output_dir="$OUTPUT_DIR"
+evaluator.data_name="static_cam_single"
+evaluator.data_root="$DATA_ROOT"
+evaluator.camera_info.mode="forward"
+evaluator.camera_info.elevation=0.
+evaluator.camera_info.azimuth_range=[-30,30]
+evaluator.focal=1.0938
+evaluator.camera_info.radius=2.0
- 结果查看:生成的多视角 3D 视图保存在
outputs/example-images
,可用 Blender 等工具打开。
2. 少样本 3D 场景生成
- 准备数据:下载 ReconFusion 数据集(https://huggingface.co/datasets/Yuyang-z/reconfusion-torch),解压到
data/reconfusion-torch/re10k
。 - 第一步:生成相机轨迹:
python tools/pose_traj_generate.py -d data/reconfusion-torch/re10k -o outputs/pose_dataset --save_data_pose -sx 0.2 0.4 -0.2 -0.4 -sz 0.2 0.4 -0.2 -0.4 -n 18
- 第二步:生成视图:
accelerate launch --main_process_port 1224 inference.py
diffusion.pretrain_unet="./genxd-model"
diffusion.output_dir="outputs/re10k-group"
+evaluator.data_name="reconfgroup"
+evaluator.data_root="data/reconfusion-torch/re10k"
+evaluator.pose_dir="outputs/pose_dataset/re10k"
+evaluator.num_context_views=3
+evaluator.n_views=3
+evaluator.save_target_only=True
+evaluator.pad_to_square=True
- 结果查看:生成的 3D 视图在
outputs/re10k-group
。
3. 生成 4D 动态场景
- 准备数据:使用 CamVid-30K 数据集中的视频,放入
data/camvid-30k
。 - 运行命令:需根据具体任务调整参数,示例命令参考 GitHub 更新。
- 结果查看:生成视频保存在指定输出目录。
特色功能操作
分解相机和对象运动
- GenXD 使用多视角时间模块分离相机和对象运动。
- 运行示例:
python motion_decompose.py --input data/camvid-30k/sample_video --output outputs/motion_data
- 用途:生成的运动数据可用于调整 4D 场景。
CamVid-30K 数据集使用
- 数据结构:解压后包含图像和 COLMAP 文件(如
cameras.bin
)。 - 加载数据:放入
data/camvid-30k
,运行测试脚本:
python test_dataset.py --dataset data/camvid-30k
注意事项
- GPU 内存需 16GB 以上,生成 4D 任务耗时较长。
- 检查最新代码更新,官方于 2025 年 3 月 26 日发布预训练模型。
- 如遇问题,可联系 <yuyangzhao98@gmail.com>。
应用场景
- 科研实验
- 研究者用 GenXD 测试 3D 和 4D 生成算法,验证新模型效果。
- 虚拟内容创作
- 创作者生成动态场景,用于动画或虚拟现实项目。
- 教育培训
- 学生用 CamVid-30K 数据集学习计算机视觉和生成技术。
QA
- GenXD 是免费的吗?
- 是的,它是 Apache-2.0 许可的开源项目。
- 需要联网使用吗?
- 不需要,安装后可在本地运行。
- 生成结果真实吗?
- 不完全真实,模型无法达到完美真实感,仅限研究使用。