Spaces:
Running
on
A10G
Running
on
A10G
File size: 4,568 Bytes
0531772 ff0340e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
---
license: apache-2.0
title: CharacterGen
sdk: gradio
emoji: π
colorFrom: gray
colorTo: red
pinned: false
short_description: Gradio demo of CharacterGen (SIGGRAPH 2024)
---
# CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Calibration
This is the official codebase of SIGGRAPH'24 (TOG) [CharacterGen](https://charactergen.github.io/).
![teaser](./materials/teaser.png)
- [x] Rendering Script of VRM model, including blender and three-js.
- [x] Inference code for 2D generation stage.
- [x] Inference code for 3D generation stage.
## Quick Start
### 1. Prepare environment
`pip install -r requirements.txt`
### 2. Download the weight
Install `huggingface-cli` first.
```bash
huggingface-cli download --resume-download zjpshadow/CharacterGen --include 2D_Stage/* --local-dir .
huggingface-cli download --resume-download zjpshadow/CharacterGen --include 3D_Stage/* --local-dir .
```
If you find mistakes on download, you can download all the reporitory and move to the right folder.
### 3. Run the script
#### Run the whole pipeline
```bash
python webui.py
```
#### Only Run 2D Stage
```bash
cd 2D_Stage
python webui.py
```
#### Only Run 3D Stage
```bash
cd 3D_Stage
python webui.py
```
## Get the Anime3D Dataset
Due to the policy, we cannot redistribute the raw data of VRM format 3D character.
You can download the vroid dataset follow [PAniC-3D](https://github.com/ShuhongChen/panic3d-anime-reconstruction) instruction.
And the you can render the script with blender or three-js with our released rendering script.
### Blender
First, you should install [Blender](https://www.blender.org/) and [the VRM addon for Blender](https://github.com/saturday06/VRM-Addon-for-Blender).
The you can render the VRM and export the obj of VRM under some fbx animation.
```bash
blender -b --python render_script/blender/render.py importVrmPath importFbxPath outputFolder [is_apose]
```
The last input argument represents whether you use apose; if used, output apose; otherwise, output the action of any frame in the fbx.
### [three-vrm](https://github.com/pixiv/three-vrm)
**Much quicker than blender VRM add-on.**
Install [Node.js](https://nodejs.org/) first to use the npm environment.
```bash
cd render_script/three-js
npm install three @pixiv/three-vrm
```
If you want to render depth-map images of VRM, you should replace three-vrm with [my version](/home/zjp/CharacterGen/render_script/three-js/src/three-vrm.js).
Fisrt, run the backend to catch the data from the frontend (default port is `17070`), remember to change the folder path.
```bash
pip install fastapi uvicorn aiofiles pillow numpy
python up_backend.py
```
Second, run the frontend to render the images.
```bash
npm run dev
```
The open the website http://localhost:5173/, it use 2 threads to render the image, which costs about 1 day.
## Our Result
| Single Input Image | 2D Multi-View Images | 3D Character |
|-------|-------|-------|
| ![](./materials/input/1.png) | ![](./materials/ours_multiview/1.png) | <img alt="threestudio" src="./materials/videos/1.gif" width="100%"> |
| ![](./materials/input/2.png) | ![](./materials/ours_multiview/2.png) | <img alt="threestudio" src="./materials/videos/2.gif" width="100%"> |
| ![](./materials/input/3.png) | ![](./materials/ours_multiview/3.png) | <img alt="threestudio" src="./materials/videos/3.gif" width="100%"> |
# Acknowledgements
This project is built upon **[Tune-A-Video](https://github.com/showlab/Tune-A-Video)** and **[TripoSR](https://github.com/VAST-AI-Research/TripoSR)**.
And the rendering scripts is build upon **[three-vrm](https://github.com/pixiv/three-vrm)** and **[VRM-Addon-for-Blender](https://github.com/saturday06/VRM-Addon-for-Blender)**.
Thanks very much to many friends for their unselfish help with our work. We're extremely grateful to **[Yuanchen](https://github.com/bennyguo)**, **[Yangguang](https://scholar.google.com/citations?user=a7AMvgkAAAAJ)**, and **Yuan Liang** for their guidance on code details and ideas.
We thank all the authors for their great repos and help.
# Citation
If you find our code or paper helps, please consider citing:
```bibtex
@article{peng2024charactergen,
title ={CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Canonicalization},
author ={Hao-Yang Peng and Jia-Peng Zhang and Meng-Hao Guo and Yan-Pei Cao and Shi-Min Hu},
journal ={ACM Transactions on Graphics (TOG)},
year ={2024},
volume ={43},
number ={4},
doi ={10.1145/3658217}
}
``` |