IT3D: Peningkatan Pembuatan Teks-ke-3D dengan Sintesis Tampilan Eksplisit (AAAI 2024) .
Yiwen Chen, Chi Zhang, Xiaofeng Yang, Zhongang Cai, Gang Yu, Lei Yang, Guosheng Lin
Arxiv
Kemajuan terbaru dalam teknik Text-to-3D didorong oleh menyaring pengetahuan dari model difusi teks-ke-gambar (LDM) yang besar dan kuat. Meskipun demikian, pendekatan Text-to-3D yang ada sering kali menghadapi tantangan seperti saturasi yang berlebihan, detail yang tidak memadai, dan keluaran yang tidak realistis. Studi ini menyajikan strategi baru yang memanfaatkan gambar multi-tampilan yang disintesis secara eksplisit untuk mengatasi masalah ini. Pendekatan kami melibatkan pemanfaatan saluran gambar-ke-gambar, yang didukung oleh LDM, untuk menghasilkan gambar berkualitas tinggi berdasarkan rendering model 3D kasar. Meskipun sebagian besar gambar yang dihasilkan dapat mengatasi masalah-masalah yang disebutkan di atas, tantangan seperti inkonsistensi tampilan dan variasi konten yang signifikan masih ada karena sifat generatif yang melekat pada model difusi besar, sehingga menimbulkan kesulitan besar dalam memanfaatkan gambar-gambar ini secara efektif. Untuk mengatasi rintangan ini, kami menganjurkan pengintegrasian diskriminator bersama dengan strategi pelatihan ganda Diffusion-GAN yang baru untuk memandu pelatihan model 3D. Untuk diskriminator yang tergabung, gambar multi-tampilan yang disintesis dianggap sebagai data nyata, sedangkan rendering model 3D yang dioptimalkan berfungsi sebagai data palsu. Kami melakukan serangkaian eksperimen komprehensif yang menunjukkan efektivitas metode kami dibandingkan pendekatan dasar.
git clone https://github.com/buaacyw/IT3D-text-to-3D.git
cd IT3D-text-to-3D
conda create -n it3d python==3.8
conda activate it3d
pip install -r requirements.txt
pip install ./raymarching
pip install ./shencoder
pip install ./freqencoder
pip install ./gridencoder
Anda perlu mendaftarkan akun Wandb jika Anda belum memilikinya.
wandb login
Untuk saluran gambar-ke-gambar, Kami telah mengimplementasikan Stadiffusion Image2Image dan ControlNetv1.1.
Dalam percobaan kami, Controlnet selalu memberikan hasil yang lebih baik. Jika Anda ingin menggunakan Controlnet sebagai saluran gambar-ke-gambar, Anda perlu mengunduh model dari sini dengan mengikuti instruksi dari ControlNetv1.1.
Misalnya, jika Anda ingin menggunakan Controlnet yang dikondisikan pada softedge, Anda perlu mengunduh control_v11p_sd15_softedge.yaml
dan control_v11p_sd15_softedge.pth
dan meletakkannya di folder ctn_models
. Selain itu, Anda perlu mengunduh Stable Diffusion 1.5 model v1-5-pruned.ckpt
dan meletakkannya di folder ctn_models
.
Semua demo kami (model kasar dan model halus) dilatih dalam resolusi 512. Pada resolusi 512, dibutuhkan sekitar 30G untuk melatih model kasar (vanilla Stable Dreamfusion) dan 35G untuk menyempurnakannya dengan IT3D. Anda dapat menurunkan konsumsi memori dengan:
--h
dan --w
. Meskipun hal ini akan mengurangi penggunaan memori secara signifikan, hal ini juga akan menyebabkan penurunan kinerja yang signifikan. Dibutuhkan sekitar 10G untuk IT3D dalam resolusi 64.--nerf l1
. Pengaturan default kami adalah --nerf l2
.--max_steps
. Pengaturan default kami adalah --max_steps 384
--ctn_sample_batch_size
.--text
dan --seed
. Sayangnya, melatih model kasar yang bebas dari masalah Janus sering kali memerlukan banyak upaya.--latent_iter_ratio 0.1
.--g_loss_weight
. Anda perlu menurunkan --g_loss_weight
jika kumpulan data yang dihasilkan terlalu beragam. Anda dapat memperbesar --g_loss_weight
untuk kumpulan data berkualitas tinggi.--g_loss_decay_begin_step
dan --g_loss_decay_step
. Dalam pengaturan default, kami menyetel GAN untuk 7500 langkah dan kemudian membuangnya. Kami melepaskan pos pemeriksaan model kasar kami. Buka zip ke dalam folder ckpts
. Semua pos pemeriksaan ini dilatih dalam pengaturan model kasar default kami.
Pada A6000 kami, diperlukan waktu 6 menit untuk menghasilkan kumpulan data 640 gambar menggunakan SD-I2I, dan 25 menit menggunakan Controlnet.
# # Refine a coarse NeRF
# --no_cam_D: camera free discriminator, camera pose won't be input to discriminator
# --g_loss_decay_begin_step: when to decay the weight of discrimination loss
# --real_save_path: path to generated dataset
# Jasmine
python main.py -O --text " a bunch of white jasmine " --workspace jas_ctn --ckpt ckpts/jas_df_ep0200.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/jas_ctn
# Use stable diffusion img2img pipeline instead of Controlnet
python main.py -O --text " a bunch of white jasmine " --workspace jas_sd --ckpt ckpts/jas_df_ep0200.pth --no_cam_D --gan --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/jas_sd
# Iron Man
python main.py -O --text " a 3D model of an iron man, highly detailed, full body " --workspace iron_ctn --ckpt ckpts/iron_man_df_ep0400.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 45000 --real_save_path generated_dataset/iron_ctn
# Darth Vader
python main.py -O --text " Full-body 3D model of Darth Vader, highly detailed " --workspace darth_ctn --ckpt ckpts/darth_df_ep0200.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/darth_ctn
# Hulk
python main.py -O --text " 3D model of hulk, highly detailed " --workspace hulk_ctn --ckpt ckpts/hulk_df_ep0200.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/hulk_ctn
# Ablation Experiment in Paper
# Note: our default setting is sds loss + decayed gan loss. gan loss weight will be decayed to zero after 7500 steps (depending on g_loss_decay_begin_step)
# only l2 loss
python main.py -O --text " 3D model of hulk, highly detailed " --workspace hulk_ctn_l2 --ckpt ckpts/hulk_df_ep0200.pth --no_cam_D --gan --ctn --l2_weight 100.0 --l2_decay_begin_step 25000 --l2_decay_step 2500 --l2_weight_end 0.0 --sds_weight_end 0.0 --g_loss_decay_begin_step 0 --real_save_path generated_dataset/hulk_ctn
# l2 loss + sds loss
python main.py -O --text " 3D model of hulk, highly detailed " --workspace hulk_ctn_l2_sds --ckpt ckpts/hulk_df_ep0200.pth --no_cam_D --gan --ctn --l2_weight 100.0 --l2_decay_begin_step 25000 --l2_decay_step 2500 --l2_weight_end 0.0 --g_loss_decay_begin_step 0 --real_save_path generated_dataset/hulk_ctn
# only GAN
python main.py -O --text " 3D model of hulk, highly detailed " --workspace hulk_ctn_only_gan --ckpt ckpts/hulk_df_ep0200.pth --no_cam_D --gan --ctn --sds_weight_end 0.0 --real_save_path generated_dataset/hulk_ctn
# Edit to red Hulk, change --text
python main.py -O --text " a red hulk, red skin, highly detailed " --workspace hulk_red_ctn --ckpt ckpts/hulk_df_ep0200.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/hulk_ctn
# # Generate Dataset and DMTET Mesh
# generate dataset
python main.py -O --text " a bunch of blue rose, highly detailed " --workspace rose_blue_ctn --ckpt ckpts/rose_df_ep0200.pth --gan --ctn --no_cam_D --iters 0 --real_save_path generated_dataset/rose_blue_ctn
# DMTET Mesh
python main.py -O --text " a bunch of blue rose, highly detailed " --workspace rose_blue_ctn_dm --gan --ctn --no_cam_D --g_loss_decay_begin_step 5000 --g_loss_decay_step 5000 --init_with ckpts/rose_df_ep0200.pth --dmtet --init_color --real_save_path generated_dataset/rose_blue_ctn
# # Train your own coarse NeRF
python main.py -O --text " a bunch of white jasmine " --workspace jas
# Refine it
python main.py -O --text " a bunch of white jasmine " --workspace jas_ctn --ckpt jas/checkpoints/df_ep0200.pth --no_cam_D --gan --ctn --g_loss_decay_begin_step 25000 --real_save_path generated_dataset/jas_ctn
Kemungkinan hyperparameter yang perlu Anda ubah:
Kode kami didasarkan pada repo yang luar biasa ini:
Stabil-Dreamfusion
@misc{stable-dreamfusion,
Author = {Jiaxiang Tang},
Year = {2022},
Note = {https://github.com/ashawkey/stable-dreamfusion},
Title = {Stable-dreamfusion: Text-to-3D with Stable-diffusion}
}
EG3D
@inproceedings{Chan2022,
author = {Eric R. Chan and Connor Z. Lin and Matthew A. Chan and Koki Nagano and Boxiao Pan and Shalini De Mello and Orazio Gallo and Leonidas Guibas and Jonathan Tremblay and Sameh Khamis and Tero Karras and Gordon Wetzstein},
title = {Efficient Geometry-aware {3D} Generative Adversarial Networks},
booktitle = {CVPR},
year = {2022}
}
jaringan kendali
@misc{zhang2023adding,
title={Adding Conditional Control to Text-to-Image Diffusion Models},
author={Lvmin Zhang and Maneesh Agrawala},
year={2023},
eprint={2302.05543},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Jika Anda merasa karya ini bermanfaat, kutipan akan dihargai melalui:
@misc{chen2023it3d,
title={IT3D: Improved Text-to-3D Generation with Explicit View Synthesis},
author={Yiwen Chen and Chi Zhang and Xiaofeng Yang and Zhongang Cai and Gang Yu and Lei Yang and Guosheng Lin},
year={2023},
eprint={2308.11473},
archivePrefix={arXiv},
primaryClass={cs.CV}
}