ThemeStation:从少量示例生成主题感知的3D资产
新闻:我们的论文已被SIGGRAPH 2024录用!
项目主页 | 论文 | 视频
王振伟、王腾飞、Gerhard Hancke、刘子纬和刘永进。
摘要
现实世界的应用通常需要大量具有一致主题的3D资产。虽然从文本或图像生成通用3D内容方面已取得了显著进展,但根据输入的3D示例的共同主题合成定制3D资产仍是一个悬而未决的挑战性问题。在这项工作中,我们提出了ThemeStation,一种新颖的主题感知3D到3D生成方法。ThemeStation基于给定的少量示例合成定制3D资产,有两个目标:1)统一性,生成与给定示例主题一致的3D资产;2)多样性,生成高度变化的3D资产。为此,我们设计了一个两阶段框架,首先绘制概念图像,然后进行参考信息指导的3D建模阶段。我们提出了一种新颖的双重分数蒸馏(DSD)损失,以共同利用输入示例和合成概念图像的先验知识。大量实验和用户研究证实,ThemeStation在生成多样化的主题感知3D模型方面优于先前的工作,质量令人印象深刻。ThemeStation还支持各种应用,如可控的3D到3D生成。
概述
待办事项(最新更新:2024/04/26)
- 发布渲染代码
- 发布StageI概念图像生成代码
- 发布StageII参考信息指导的3D资产建模代码
- 更新我们的代码以支持更强大的图像到3D模型,如InstantMesh/CRM来获得初始3D
安装
- 设置:
conda create -n themestation python==3.10
conda activate themestation
pip install -r requirements.txt
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
-
我们使用Wonder3D来获得初始3D模型。
- 将检查点下载到
Wonder3D/ckpts
文件夹。 - 确保你有以下模型。
Wonder3D |-- ckpts |-- unet |-- scheduler.bin ...
- 将检查点下载到
-
(可选,推荐)安装ninja以加速CUDA扩展的编译:
pip install ninja
-
(可选)tiny-cuda-nn的安装可能需要将pip降级到23.0.1
-
Stable Diffusion。我们使用预训练的2D Stable Diffusion 2.1模型的扩散先验。开始时,你可能需要一个huggingface token来访问模型,或使用
huggingface-cli login
命令。
准备
-
将参考3D模型放在
data/reference_models/models
下,并安装Blender3.2.2 -
渲染图像以生成概念图像:
cd data/reference_models
sh render_script/render_single_concept.sh obj文件名 blender路径 仰角
# 例如:
# sh render_script/render_single_concept.sh 20 owl.glb ~/blender-3.2.2-linux-x64/blender
- 渲染图像以学习参考先验:
# RGB
cd data/reference_models
sh render_script/render_single_ref_rgb.sh obj文件名 blender路径
# 法线 (可选)
cd data/reference_models
sh render_script/render_single_ref_normal.sh obj文件名 blender路径
# 例如:
# sh render_script/render_single_ref_rgb.sh owl.glb ~/blender-3.2.2-linux-x64/blender
- 确保你有以下文件。
ThemeStation
| -- data
| -- reference_models
| -- renderings
| -- elevation_n (用于生成仰角为n的概念图像)
| -- 物体名称
| -- 000.png
...
| -- elevation_rand (用于学习参考先验)
| -- 物体名称
| -- 000.png
...
| -- normals_000_0001.png (可选)
...
推理
第一阶段:概念图像生成
目前,你可以简单地使用Freepik-reimagine来根据给定3D示例的正面渲染图生成概念图像。
我们还在下面展示了我们论文中介绍的步骤:
- 要生成概念图像,运行:
cd dreambooth
sh scripts/generate_concept.sh 20 # 20是仰角,为你自己的数据编辑这个模板
# 对于使用文本的可控3D到3D生成,运行:
sh scripts/generate_concept_control.sh 20
# 结果保存在`dreambooth/outputs/...`
- 选择你喜欢的概念图像,使用Clipdrop或Photoshop移除背景,并将最终的概念图像(透明背景)放在
data/concept_images
下
第二阶段:参考信息指导的3D资产建模
运行ThemeStation,根据概念图像和参考模型生成最终的3D模型。
- 运行特定的概念图像
sh scrips/run.sh # 为你自己的数据编辑这个模板脚本
- 批量运行概念图像
sh scrips/run_batch.sh # 为你自己的数据编辑这个模板脚本
- 导出网格
sh scripts/export_mesh.sh # 为你自己的数据编辑这个模板脚本
引用
如果你发现这个代码对你的研究有帮助,请引用:
@article{wang2024themestation,
title={ThemeStation: Generating Theme-Aware 3D Assets from Few Exemplars},
author={Zhenwei Wang and Tengfei Wang and Gerhard Hancke and Ziwei Liu and Rynson W.H. Lau},
booktitle={ACM SIGGRAPH},
year={2024}
}
致谢
我们大量借鉴了以下代码库。非常感谢这些作者分享他们的代码。