A pytorch implementation of "X-Oscar: A Progressive Framework for High-quality Text-guided 3D Animatable Avatar Generation"
Recent advancements in automatic 3D avatar generation guided by text have made significant progress. However, existing methods have limitations such as oversaturation and low-quality output. To address these challenges, we propose X-Oscar, a progressive framework for generating high-quality animatable avatars from text prompts. It follows a sequential Geometry->Texture->Animation paradigm, simplifying optimization through step-by-step generation. To tackle oversaturation, we introduce Adaptive Variational Parameter (AVP), representing avatars as an adaptive distribution during training. Additionally, we present Avatar-aware Score Distillation Sampling (ASDS), a novel technique that incorporates avatar-aware noise into rendered images for improved generation quality during optimization. Extensive evaluations confirm the superiority of X-Oscar over existing text-to-3D and text-to-avatar approaches.
https://github.com/LinZhekai/X-Oscar/assets/149573107/a7520940-2429-4f6c-abbe-9b04d4f2d355
Tips: It is recommended to follow the version I provided to reproduce 100%.
git clone git@github.com:LinZhekai/X-Oscar.git
cd X-Oscar
conda env create --file environment.yml
conda activate XOscar
pip install -r requirements.txt
cd smplx
python setup.py install
# download omnidata normal and depth prediction model
mkdir data/omnidata
cd data/omnidata
gdown '1Jrh-bRnJEjyMCS7f-WsaFlccfPjJPPHI&confirm=t' # omnidata_dpt_depth_v2.ckpt
gdown '1wNxVO4vVbDEMEpnAi_jwQObf2MFodcBR&confirm=t' # omnidata_dpt_normal_v2.ckpt
We follow a similar way to TADA to construct data.
(Download the SMPLX_NEUTRAL_2020.npz and put it into ./data/smplx/)
(Download the VPoser v2.0 and update expr_dir in lib/dlmesh_XOscar.py)
# You can change the save path in the config/*yaml files
python -m apps.run_XOscar --config configs/XOscar.yaml --name XOscar_{subject's name} --text "{text prompt}"
# Following is an example, similar ones can be found in scripts/script.sh
python -m apps.run_XOscar --config configs/XOscar.yaml --name XOscar_Flash --text "Flash from DC"
# If you have changed the save path in the config files, you also need to change the ckpt_files under this python file
python -m apps.anime --subject "subject's name" --prompt "text prompt" --motion_type "aist, talkshow or mdm"
python -m apps.anime --subject "Flash" --prompt "Flash from DC" --motion_type "aist"
## โค๏ธ Acknowledgement
Code in this repository is built upon several public repositories. Thanks for the wonderful work [TADA](https://github.com/TingtingLiao/TADA).
## โญ๏ธ BibTeX
If you find this work useful for your research, please cite:
@article{ma2024x, title={X-Oscar: A Progressive Framework for High-quality Text-guided 3D Animatable Avatar Generation}, author={Ma, Yiwei and Lin, Zhekai and Ji, Jiayi and Fan, Yijun and Sun, Xiaoshuai and Ji, Rongrong}, journal={arXiv preprint arXiv:2405.00954}, year={2024} }