GaussianDreamer:通过连接2D和3D扩散模型实现文本到3D高斯的快速生成 (CVPR 2024)
项目页面 | arxiv 论文
GaussianDreamer:通过连接2D和3D扩散模型实现文本到3D高斯的快速生成
易陶然1,
房杰敏2‡,王俊杰2,吴冠骏3, 谢凌曦2,
张晓鹏2,刘文钰1,田琦2 , 王兴刚1‡✉
1华中科技大学电子信息与通信学院 2华为公司 3华中科技大学计算机学院
‡项目负责人。✉通讯作者。
近年来,基于文本提示生成3D资产取得了令人印象深刻的成果。2D和3D扩散模型都可以帮助根据提示生成不错的3D对象。3D扩散模型具有良好的3D一致性,但它们的质量和泛化性受限,因为可训练的3D数据昂贵且难以获得。2D扩散模型具有很强的泛化能力和精细生成能力,但3D一致性难以保证。本文尝试通过最新的显式高效的3D高斯散点表示法来连接这两种扩散模型的强大功能。我们提出了一个快速的3D对象生成框架,命名为GaussianDreamer,其中3D扩散模型提供初始化先验,2D扩散模型丰富几何和外观。引入了噪声点增长和颜色扰动操作来增强初始化的高斯。我们的GaussianDreamer可以在一块GPU上在15分钟内生成高质量的3D实例或3D头像,比以往的方法快得多,同时生成的实例可以实时渲染。
🦾 更新
- 2024年6月26日:我们发布了改进质量极大的GaussianDreamerPro,可以无缝集成到动画/模拟管道中🚀。
- 2024年5月14日:在T3Bench上更新方法的结果,详情请参见arxiv论文。
- 2024年3月8日:我们还提供了一个GaussianDreamer的threestudio扩展,感谢程新华的贡献。
- 2024年2月27日:被CVPR 2024接收。
- 2023年12月6日:更新arxiv论文。
- 2023年11月27日:更新了colab和huggingface演示。
- 2023年11月27日:发布基于点云和地面初始化的结果。现在我们支持在Unity游戏引擎中导入生成的3D资产,感谢UnityGaussianSplatting的帮助。详情请见项目页面。
- 2023年10月24日:发布基于SMPL的初始化结果。详情请见项目页面。
- 2023年10月21日:修复了一些安装问题,感谢李思旷、Tawfik Boujeh和ashawkey。你可以在diff分支中查看详细信息。
- 2023年10月16日:发布了初步代码,可能仍然存在一些问题,欢迎提出问题。
😀 演示
Colab演示:(感谢camenduru。)
🚀 开始入门
安装 按照以下步骤安装3D Gaussian Splatting和Shap-E:
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117
pip install ninja
pip install -r requirements.txt
git clone https://github.com/hustvl/GaussianDreamer.git
cd GaussianDreamer
pip install ./gaussiansplatting/submodules/diff-gaussian-rasterization
pip install ./gaussiansplatting/submodules/simple-knn
git clone https://github.com/openai/shap-e.git
cd shap-e
pip install -e .
下载Cap3D的微调Shap-E ,并将其放置在 ./load
文件夹中
快速开始
文本到3D生成
python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="一只狐狸"
# 如果你想将生成的3D资产导入到Unity游戏引擎中。
python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="一只狐狸" system.sh_degree=3
文本到头像生成
python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="张开双臂的蜘蛛侠" system.load_type=1
# 如果你想将生成的3D资产导入到Unity游戏引擎中。
python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="张开双臂的蜘蛛侠" system.load_type=1 system.sh_degree=3
应用
借助UnityGaussianSplatting,将生成的3D资产导入Unity游戏引擎,成为游戏和设计素材。
🏁 评估
我们使用ViT相似度和T3Bench评估了我们的模型,结果如下。
ViT 相似度
方法 | ViT-L/14 $\uparrow$ | ViT-bigG-14 $\uparrow$ | 生成时间 $\downarrow$ |
---|---|---|---|
Shap-E | 20.51 | 32.21 | 6秒 |
DreamFusion | 23.60 | 37.46 | 1.5小时 |
ProlificDreamer | 27.39 | 42.98 | 10小时 |
Instant3D | 26.87 | 41.77 | 20秒 |
我们的方法 | 27.23 $\pm$ 0.06 | 41.88 $\pm$ 0.04 | 15分钟 |
T3Bench
方法 | 时间 | 单一对象 | 有背景的单一对象 | 多对象 | 平均 |
---|---|---|---|---|---|
SJC | -- | 24.7 | 19.8 | 11.7 | 18.7 |
DreamFusion | 6小时 | 24.4 | 24.6 | 16.1 | 21.7 |
Fantasia3D | 6小时 | 26.4 | 27.0 | 18.5 | 24.0 |
LatentNeRF | 15分钟 | 33.1 | 30.6 | 20.6 | 28.1 |
Magic3D | 5.3小时 | 37.0 | 35.4 | 25.7 | 32.7 |
ProlificDreamer | 10小时 | 49.4 | 44.8 | 35.8 | 43.3 |
我们的方法 | 15分钟 | 54.0 | 48.6 | 34.5 | 45.7 |
📑 引用
如果您发现本仓库/工作对您的研究有帮助,欢迎引用本文并给个⭐。 我们的一些源代码借鉴了Threestudio,3DGS,depth-diff-gaussian-rasterization的工作。我们真诚感谢这些作者的出色工作。
@inproceedings{yi2023gaussiandreamer,
title={GaussianDreamer: Fast Generation from Text to 3D Gaussians by Bridging 2D and 3D Diffusion Models},
author={Taoran Yi and Jiemin Fang and Junjie Wang and Guanjun Wu and Lingxi Xie and Xiaopeng Zhang and Wenyu Liu and Qi Tian and Xinggang Wang},
year = {2024},
booktitle = {CVPR}
}