Upload 7 files
Browse filesupload checkpoints
README.md
CHANGED
|
@@ -1,3 +1,98 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<div align="center">
|
| 2 |
+
|
| 3 |
+
# DI-PCG: Diffusion-based Efficient Inverse Procedural Content Generation for High-quality 3D Asset Creation
|
| 4 |
+
|
| 5 |
+
<a href="https://thuzhaowang.github.io/projects/DI-PCG"><img src="https://img.shields.io/static/v1?label=Project%20Page&message=Github&color=blue&logo=github-pages"></a> <a href=""><img src="https://img.shields.io/badge/ArXiv-2404.07191-brightgreen"></a> <a href="https://huggingface.co/TencentARC/DI-PCG"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Model_Card-Huggingface-orange"></a> <a href="https://huggingface.co/spaces/TencentARC/DI-PCG"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Gradio%20Demo-Huggingface-orange"></a><br>
|
| 6 |
+
|
| 7 |
+
**[Wang Zhao<sup>1</sup>](https://thuzhaowang.github.io), [Yan-Pei Cao<sup>2</sup>](https://yanpei.me/), [Jiale Xu<sup>1</sup>](https://bluestyle97.github.io/), [Yuejiang Dong<sup>1,3</sup>](https://scholar.google.com.hk/citations?user=0i7bPj8AAAAJ&hl=zh-CN), [Ying Shan<sup>1</sup>](https://scholar.google.com/citations?user=4oXBp9UAAAAJ&hl=en)**
|
| 8 |
+
|
| 9 |
+
<sup>1</sup>ARC Lab, Tencent PCG   <sup>2</sup>VAST   <sup>3</sup>Tsinghua University
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
</div>
|
| 14 |
+
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
## 🚩 Overview
|
| 18 |
+
This repository contains code release for our technical report "DI-PCG: Diffusion-based Efficient Inverse Procedural Content Generation for High-quality 3D Asset Creation".
|
| 19 |
+
|
| 20 |
+
<p align="center">
|
| 21 |
+
<img src="misc/teaser.png" >
|
| 22 |
+
</p>
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
## ⚙️ Installation
|
| 26 |
+
First clone this repository with [Infinigen](https://github.com/princeton-vl/infinigen) as the submodule:
|
| 27 |
+
```
|
| 28 |
+
git clone -r https://github.com/TencentARC/DI-PCG.git
|
| 29 |
+
cd DI-PCG
|
| 30 |
+
git submodule update --init --recursive
|
| 31 |
+
```
|
| 32 |
+
We recommend using anaconda to install the dependencies:
|
| 33 |
+
```
|
| 34 |
+
conda create -n di-pcg python=3.10.14
|
| 35 |
+
conda activate di-pcg
|
| 36 |
+
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=11.8 -c pytorch -c nvidia
|
| 37 |
+
pip install -r requirements.txt
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
## 🚀 Usage
|
| 41 |
+
For a quick start, try the huggingface gradio demo [here](https://huggingface.co/spaces/TencentARC/DI-PCG).
|
| 42 |
+
|
| 43 |
+
### Download models
|
| 44 |
+
We provide the pretrained diffusion models for chair, vase, table, basket, flower and dandelion. You can download them from [model card]() and put them in `./pretrained_models/`.
|
| 45 |
+
|
| 46 |
+
Alternatively, the inference script will automatically download the pretrained models for you.
|
| 47 |
+
|
| 48 |
+
### Local gradio demo
|
| 49 |
+
To run the gradio demo locally, run:
|
| 50 |
+
```
|
| 51 |
+
python app.py
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
### Inference
|
| 55 |
+
To run the inference demo, simply use:
|
| 56 |
+
```
|
| 57 |
+
python ./scripts/sample_diffusion.py --config ./configs/demo/chair_demo.yaml
|
| 58 |
+
```
|
| 59 |
+
This script processes all the chair images in the `./examples/chair` folder and saves the generated 3D models and their rendered images in `./logs`.
|
| 60 |
+
|
| 61 |
+
To generate other categories, use the corresponding YAML config file such as `vase_demo.yaml`. Currently we supprt `chair`, `table`, `vase`, `basket`, `flower` and `dandelion` generators developped by [Infinigen](https://github.com/princeton-vl/infinigen).
|
| 62 |
+
```
|
| 63 |
+
python ./scripts/sample_diffusion.py --config ./configs/demo/vase_demo.yaml
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
### Training
|
| 67 |
+
We train a diffusion model for each procedural generator. The training data is generated by randomly sampling the PCG and render multi-view images. To prepare the training data, run:
|
| 68 |
+
```
|
| 69 |
+
python ./scripts/prepare_data.py --generator ChairFactory --save_root /path/to/save/training/data
|
| 70 |
+
```
|
| 71 |
+
Replace `ChairFactory` with other category options as detailed in the `./scripts/prepare_data.py` file. This script also conducts offline augmentation and saves the extracted DINOv2 features for each image, which may consume a lot of disk storage. You can adjust the number of the generated data and the render configurations accordingly.
|
| 72 |
+
|
| 73 |
+
After generating the training data, start the training by:
|
| 74 |
+
```
|
| 75 |
+
python ./scripts/train_diffusion.py --config ./configs/train/chair_train.yaml
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
### Use your own PCG
|
| 79 |
+
DI-PCG is general for any procedural generator. To train a diffusion model for your PCG, you need to implement the `get_params_dict`, `update_params`, `spawn_assets`, `finalize_assets` functions and place your PCG in `./core/assets/`. Also change the `num_params` in your training YAML config file.
|
| 80 |
+
|
| 81 |
+
If you have any question, feel free to open an issue or contact us.
|
| 82 |
+
|
| 83 |
+
## :books: Citation
|
| 84 |
+
|
| 85 |
+
If you find our work useful for your research or applications, please cite using this BibTeX:
|
| 86 |
+
|
| 87 |
+
```BibTeX
|
| 88 |
+
@article{zhao2024dipcg,
|
| 89 |
+
title={DI-PCG: Diffusion-based Efficient Inverse Procedural Content Generation for High-quality 3D Asset Creation},
|
| 90 |
+
author={Zhao, Wang and Cao, Yanpei and Xu, Jiale and Dong, Yuejiang and Shan, Ying},
|
| 91 |
+
journal={arXiv preprint },
|
| 92 |
+
year={2024}
|
| 93 |
+
}
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
## 🤗 Acknowledgements
|
| 97 |
+
|
| 98 |
+
DI-PCG is built on top of some awesome open-source projects: [Infinigen](https://github.com/princeton-vl/infinigen), [Fast-DiT](https://github.com/chuanyangjin/fast-DiT). We sincerely thank them all.
|
basket.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c6b583ff2eac05c38a879182fd50b08cdcf40cf60f2e16f4f967f76550c49900
|
| 3 |
+
size 122190864
|
chair.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cb0459af69b78ec7262510a204eb80e848e06ba259e0669548f059c43c101c8e
|
| 3 |
+
size 122243152
|
dandelion.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7f9f7050580c8265671afef0ede6c14fbc514abf7f9566c4047f9ba6bb2d4785
|
| 3 |
+
size 122192464
|
flower.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6f7d27d0844ea52f668ea86fd2bd958764a51b934383bcdc85bcae19eed556d6
|
| 3 |
+
size 122183248
|
table.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:938c9e1f2643584fe61d42aca77c86d10e95ee09d2f54ed798c2920349ce528e
|
| 3 |
+
size 122198608
|
vase.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:02ef09f8c3113ea0371e47d5ea87c5c66442aeb2208447e70a567bc93b2510cc
|
| 3 |
+
size 122187856
|