Diffusion4D:通过视频扩散模型实现快速时空一致的4D生成
Diffusion4D:通过视频扩散模型实现快速时空一致的4D生成的官方实现。
[项目页面] | [Arxiv] | [视频 (Youtube)] | [视频 (Bilibili)] | [Huggingface 数据集]
图像到4D
文本到4D
3D到4D
新闻
- 2024.6.28:发布了从精选objaverse-xl渲染的数据,包括动态3D的轨道视频和前视图的单目视频。
- 2024.6.4:发布了从精选objaverse-1.0渲染的数据,包括动态3D的轨道视频、静态3D的轨道视频和前视图的单目视频。
- 2024.5.27:发布了对象元数据和数据准备代码!
- 2024.5.26:在arxiv上发布!
4D数据集准备
我们从Objaverse-1.0和Objaverse-XL的庞大3D数据集中收集了一个大规模、高质量的动态3D(4D)数据集。我们应用了一系列经验规则来精选源数据集。您可以在我们的论文中找到更多详细信息。在这部分,我们将发布选定的4D资产,包括:
- 选定的高质量4D对象ID。
- 使用Blender的渲染脚本,提供可选设置以渲染您的个性化数据。
- 由我们团队渲染的objaverse-1.0 4D图像和objaverse-xl 4D图像,以节省您的GPU时间。使用8个GPU和总共16个线程,渲染精选的objaverse-1.0数据集花费了5.5天,objaverse-xl数据集大约花费了30天。
4D数据集ID/元数据
我们首先从Objaverse-1.0(42k)和Objaverse-xl(323k)收集了365k个动态3D资产。然后我们精选了一个高质量的子集来训练我们的模型。
objaverse-1.0中所有动画对象的未精选42k ID在rendering/src/ObjV1_all_animated.txt
中。objaverse-1.0中精选的约12k动画对象ID在rendering/src/ObjV1_curated.txt
中。
objaverse-xl中动画对象(323k)的元数据可以在huggingface中找到。我们还发布了objaverse-xl的GitHub子集中所有成功渲染对象的元数据。
对于文本到4D生成,描述文本来自Cap3D工作。
4D数据集渲染脚本
- 克隆仓库并进入渲染目录:
git clone https://github.com/VITA-Group/Diffusion4D.git && \
cd rendering
- 下载Blender:
wget https://download.blender.org/release/Blender3.2/blender-3.2.2-linux-x64.tar.xz && \
tar -xf blender-3.2.2-linux-x64.tar.xz && \
rm blender-3.2.2-linux-x64.tar.xz
- 下载4D对象
pip install objaverse
python download.py --id_path src/sample.txt
请在download.py
中将objaverse._VERSIONED_PATH
更改为您想存储glb文件的路径。默认情况下,它将被下载到obj_v1/
。
- 渲染4D图像
python render.py --obj_path "./obj_v1/glbs" \
--save_dir './output' \
--gpu_num 8 \
--frame_num 24 \
--azimuth_aug 1 \
--elevation_aug 0 \
--resolution 256 \
--mode_multi 1 \
--mode_static 1 \
--mode_front_view 0 \
--mode_four_view 0
脚本说明:
--obj_path
步骤3中下载的对象路径。保持与您的'BASE_PATH'相同。--save_dir
保存目录。--gpu_num
用于渲染的GPU编号。--frame_num
要渲染的帧数。例如,24表示渲染从'time=0'到'time=24'的图像。您可以设置更多或更少的帧,但动作会在某个时间步停止,每种情况都不同。因此,我们不建议设置大量帧。--azimuth_aug
如果设为1,使用方位角增强。图像将从随机方位角渲染。否则,设为0。--elevation_aug
如果设为1,使用仰角增强。图像将从随机仰角渲染。否则,设为0。--resolution
图像分辨率。我们设置为256*256。如果您想要更高分辨率,可以设置512或1024。--mode_multi
如果设为1,使用多视图渲染模式。图像将从'time 0,view 0'渲染到'time T,view T'。否则,设为0。--mode_static
如果设为1,使用多静态视图渲染模式。图像将从'time 0,view 0'渲染到'time 0,view T'。否则,设为0。--mode_front_view
如果设为1,使用前视图渲染模式。图像将从'time 0,view front'渲染到'time T,view front'。前视图会随方位角增强变化。否则,设为0。--mode_four_view
如果设为1,使用四视图渲染模式。图像将从'time 0,view front,left,right,back'渲染到'time T,view front,left,right,back'。否则,设为0。
输出说明:
├── output
│ | object1
│ ├── multi_frame0-23.png #mode_multi输出
│ ├── multi0-23.json #mode_multi相机
│
│ ├── multi_static_frame0-23.png #mode_static输出
│ ├── static0-23.json #mode_static相机
│
│ # 可选
│ ├── front_frame0-23.png #mode_front_view输出
│ ├── front.json #mode_front_view相机
│ ├── front/left/right/back_frame0-23.png #mode_four_view输出
│ ├── front/left/right/back.json #mode_four_view相机
│
│ | object2
│ ....
│ | object3
│ ....
我们的渲染脚本基于[point-e]和[Objaverse]的渲染脚本。非常感谢所有作者的分享!
其他代码即将发布!
致谢 本项目基于众多杰出的研究成果和开源贡献。我们衷心感谢所有作者慷慨分享他们的工作!
- https://github.com/alibaba/VideoMV
- https://github.com/hustvl/4DGaussians
- https://github.com/graphdeco-inria/gaussian-splatting
- https://github.com/graphdeco-inria/diff-gaussian-rasterization
- https://objaverse.allenai.org/objaverse-1.0/
- https://github.com/allenai/objaverse-xl
- https://github.com/crockwell/Cap3D
- https://github.com/openai/point-e
如果您发现这个仓库/工作/数据集对您的研究有帮助,请考虑引用该论文并为该仓库加星⭐。
@article{liang2024diffusion4d,
title={Diffusion4D: Fast Spatial-temporal Consistent 4D Generation via Video Diffusion Models},
author={Liang, Hanwen and Yin, Yuyang and Xu, Dejia and Liang, Hanxue and Wang, Zhangyang and Plataniotis, Konstantinos N and Zhao, Yao and Wei, Yunchao},
journal={arXiv preprint arXiv:2405.16645},
year={2024}
}