From f06735797b304562824b9f7c7b173d89e3f66db4 Mon Sep 17 00:00:00 2001 From: "(CK)" <48079849+x-CK-x@users.noreply.github.com> Date: Sun, 16 Jul 2023 22:08:25 -0400 Subject: [PATCH] webui added w/demo & docs --- README.md | 481 ++++++++++++++++++++++++---------------------- environment.yaml | 42 ++-- ui/first-tab.png | Bin 0 -> 49350 bytes ui/second-tab.png | Bin 0 -> 86335 bytes utils.py | 41 ++++ webui.py | 307 +++++++++++++++++++++++++++++ 6 files changed, 617 insertions(+), 254 deletions(-) create mode 100644 ui/first-tab.png create mode 100644 ui/second-tab.png create mode 100644 utils.py create mode 100644 webui.py diff --git a/README.md b/README.md index 6b8067b..ff097bf 100644 --- a/README.md +++ b/README.md @@ -1,235 +1,248 @@ -# AnimateDiff - -This repository is the official implementation of [AnimateDiff](https://arxiv.org/abs/2307.04725). - -**[AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning](https://arxiv.org/abs/2307.04725)** -
-Yuwei Guo, -Ceyuan Yang*, -Anyi Rao, -Yaohui Wang, -Yu Qiao, -Dahua Lin, -Bo Dai - -

*Corresponding Author

- -[Arxiv Report](https://arxiv.org/abs/2307.04725) | [Project Page](https://animatediff.github.io/) - -## Todo -- [x] Code Release -- [x] Arxiv Report -- [x] GPU Memory Optimization -- [ ] Gradio Interface - - - -## Common Issues -
-Installation -Please ensure the installation of [xformer](https://github.com/facebookresearch/xformers) that is applied to reduce the inference memory. -
- -
-Various resolution or number of frames -Currently, we recommend users to generate animation with 16 frames and 512 resolution that are aligned with our training settings. Notably, various resolution/frames may affect the quality more or less. -
- -
-Animating a given image -We totally agree that animating a given image is an appealing feature, which we would try to support officially in future. For now, you may enjoy other efforts from the [talesofai](https://github.com/talesofai/AnimateDiff). -
- -
-Contributions from community -Contributions are always welcome!! We will create another branch which community could contribute to. As for the main branch, we would like to align it with the original technical report:) -
- - - -## Setup for Inference - -### Prepare Environment -~~Our approach takes around 60 GB GPU memory to inference. NVIDIA A100 is recommanded.~~ - -***We updated our inference code with xformers and a sequential decoding trick. Now AnimateDiff takes only ~12GB VRAM to inference, and run on a single RTX3090 !!*** - -``` -git clone https://github.com/guoyww/AnimateDiff.git -cd AnimateDiff - -conda env create -f environment.yaml -conda activate animatediff -``` - -### Download Base T2I & Motion Module Checkpoints -We provide two versions of our Motion Module, which are trained on stable-diffusion-v1-4 and finetuned on v1-5 seperately. -It's recommanded to try both of them for best results. -``` -git lfs install -git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 models/StableDiffusion/ - -bash download_bashscripts/0-MotionModule.sh -``` -You may also directly download the motion module checkpoints from [Google Drive](https://drive.google.com/drive/folders/1EqLC65eR1-W-sGD0Im7fkED6c8GkiNFI?usp=sharing), then put them in `models/Motion_Module/` folder. - -### Prepare Personalize T2I -Here we provide inference configs for 6 demo T2I on CivitAI. -You may run the following bash scripts to download these checkpoints. -``` -bash download_bashscripts/1-ToonYou.sh -bash download_bashscripts/2-Lyriel.sh -bash download_bashscripts/3-RcnzCartoon.sh -bash download_bashscripts/4-MajicMix.sh -bash download_bashscripts/5-RealisticVision.sh -bash download_bashscripts/6-Tusun.sh -bash download_bashscripts/7-FilmVelvia.sh -bash download_bashscripts/8-GhibliBackground.sh -``` - -### Inference -After downloading the above peronalized T2I checkpoints, run the following commands to generate animations. The results will automatically be saved to `samples/` folder. -``` -python -m scripts.animate --config configs/prompts/1-ToonYou.yaml -python -m scripts.animate --config configs/prompts/2-Lyriel.yaml -python -m scripts.animate --config configs/prompts/3-RcnzCartoon.yaml -python -m scripts.animate --config configs/prompts/4-MajicMix.yaml -python -m scripts.animate --config configs/prompts/5-RealisticVision.yaml -python -m scripts.animate --config configs/prompts/6-Tusun.yaml -python -m scripts.animate --config configs/prompts/7-FilmVelvia.yaml -python -m scripts.animate --config configs/prompts/8-GhibliBackground.yaml -``` - -To generate animations with a new DreamBooth/LoRA model, you may create a new config `.yaml` file in the following format: -``` -NewModel: - path: "[path to your DreamBooth/LoRA model .safetensors file]" - base: "[path to LoRA base model .safetensors file, leave it empty string if not needed]" - - motion_module: - - "models/Motion_Module/mm_sd_v14.ckpt" - - "models/Motion_Module/mm_sd_v15.ckpt" - - steps: 25 - guidance_scale: 7.5 - - prompt: - - "[positive prompt]" - - n_prompt: - - "[negative prompt]" -``` -Then run the following commands: -``` -python -m scripts.animate --config [path to the config file] -``` - -## Gallery -Here we demonstrate several best results we found in our experiments. - - - - - - - - -
-

Model:ToonYou

- - - - - - - - -
-

Model:Counterfeit V3.0

- - - - - - - - -
-

Model:Realistic Vision V2.0

- - - - - - - - -
-

Model: majicMIX Realistic

- - - - - - - - -
-

Model:RCNZ Cartoon

- - - - - - - - -
-

Model:FilmVelvia

- -#### Community Cases -Here are some samples contributed by the community artists. Create a Pull Request if you would like to show your results here😚. - - - - - - - - - -
-

-Character Model:Yoimiya -(with an initial reference image, see WIP fork for the extended implementation.) - - - - - - - - - -
-

-Character Model:Paimon; -Pose Model:Hold Sign

- -## BibTeX -``` -@article{guo2023animatediff, - title={AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning}, - author={Guo, Yuwei and Yang, Ceyuan and Rao, Anyi and Wang, Yaohui and Qiao, Yu and Lin, Dahua and Dai, Bo}, - journal={arXiv preprint arXiv:2307.04725}, - year={2023} -} -``` - -## Contact Us -**Yuwei Guo**: [guoyuwei@pjlab.org.cn](mailto:guoyuwei@pjlab.org.cn) -**Ceyuan Yang**: [yangceyuan@pjlab.org.cn](mailto:yangceyuan@pjlab.org.cn) -**Bo Dai**: [daibo@pjlab.org.cn](mailto:daibo@pjlab.org.cn) - -## Acknowledgements +# AnimateDiff + +This repository is the official implementation of [AnimateDiff](https://arxiv.org/abs/2307.04725). + +**[AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning](https://arxiv.org/abs/2307.04725)** +
+Yuwei Guo, +Ceyuan Yang*, +Anyi Rao, +Yaohui Wang, +Yu Qiao, +Dahua Lin, +Bo Dai + +

*Corresponding Author

+ +[Arxiv Report](https://arxiv.org/abs/2307.04725) | [Project Page](https://animatediff.github.io/) + +## Todo +- [x] Code Release +- [x] Arxiv Report +- [x] GPU Memory Optimization +- [ ] Gradio Interface + + + +## Common Issues +
+Installation +Please ensure the installation of [xformer](https://github.com/facebookresearch/xformers) that is applied to reduce the inference memory. +
+ +
+Various resolution or number of frames +Currently, we recommend users to generate animation with 16 frames and 512 resolution that are aligned with our training settings. Notably, various resolution/frames may affect the quality more or less. +
+ +
+Animating a given image +We totally agree that animating a given image is an appealing feature, which we would try to support officially in future. For now, you may enjoy other efforts from the [talesofai](https://github.com/talesofai/AnimateDiff). +
+ +
+Contributions from community +Contributions are always welcome!! We will create another branch which community could contribute to. As for the main branch, we would like to align it with the original technical report:) +
+ + + +## Setup for Inference + +### Prepare Environment +~~Our approach takes around 60 GB GPU memory to inference. NVIDIA A100 is recommanded.~~ + +***We updated our inference code with xformers and a sequential decoding trick. Now AnimateDiff takes only ~12GB VRAM to inference, and run on a single RTX3090 !!*** + +``` +git clone https://github.com/guoyww/AnimateDiff.git +cd AnimateDiff + +conda env create -f environment.yaml +conda activate animatediff +``` + +### Download Base T2I & Motion Module Checkpoints +We provide two versions of our Motion Module, which are trained on stable-diffusion-v1-4 and finetuned on v1-5 seperately. +It's recommanded to try both of them for best results. +``` +git lfs install +git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 models/StableDiffusion/ + +bash download_bashscripts/0-MotionModule.sh +``` +You may also directly download the motion module checkpoints from [Google Drive](https://drive.google.com/drive/folders/1EqLC65eR1-W-sGD0Im7fkED6c8GkiNFI?usp=sharing), then put them in `models/Motion_Module/` folder. + +### Prepare Personalize T2I +Here we provide inference configs for 6 demo T2I on CivitAI. +You may run the following bash scripts to download these checkpoints. +``` +bash download_bashscripts/1-ToonYou.sh +bash download_bashscripts/2-Lyriel.sh +bash download_bashscripts/3-RcnzCartoon.sh +bash download_bashscripts/4-MajicMix.sh +bash download_bashscripts/5-RealisticVision.sh +bash download_bashscripts/6-Tusun.sh +bash download_bashscripts/7-FilmVelvia.sh +bash download_bashscripts/8-GhibliBackground.sh +``` + +### Inference +After downloading the above peronalized T2I checkpoints, run the following commands to generate animations. The results will automatically be saved to `samples/` folder. +``` +python -m scripts.animate --config configs/prompts/1-ToonYou.yaml +python -m scripts.animate --config configs/prompts/2-Lyriel.yaml +python -m scripts.animate --config configs/prompts/3-RcnzCartoon.yaml +python -m scripts.animate --config configs/prompts/4-MajicMix.yaml +python -m scripts.animate --config configs/prompts/5-RealisticVision.yaml +python -m scripts.animate --config configs/prompts/6-Tusun.yaml +python -m scripts.animate --config configs/prompts/7-FilmVelvia.yaml +python -m scripts.animate --config configs/prompts/8-GhibliBackground.yaml +``` + +### Optionally Run with WebUI +Configure yaml options, model settings & generate animations as desired. +``` +python webui.py +``` + + + + + + +
+ +To generate animations with a new DreamBooth/LoRA model, you may create a new config `.yaml` file in the following format: +``` +NewModel: + path: "[path to your DreamBooth/LoRA model .safetensors file]" + base: "[path to LoRA base model .safetensors file, leave it empty string if not needed]" + + motion_module: + - "models/Motion_Module/mm_sd_v14.ckpt" + - "models/Motion_Module/mm_sd_v15.ckpt" + + steps: 25 + guidance_scale: 7.5 + + prompt: + - "[positive prompt]" + + n_prompt: + - "[negative prompt]" +``` +Then run the following commands: +``` +python -m scripts.animate --config [path to the config file] +``` + +## Gallery +Here we demonstrate several best results we found in our experiments. + + + + + + + + +
+

Model:ToonYou

+ + + + + + + + +
+

Model:Counterfeit V3.0

+ + + + + + + + +
+

Model:Realistic Vision V2.0

+ + + + + + + + +
+

Model: majicMIX Realistic

+ + + + + + + + +
+

Model:RCNZ Cartoon

+ + + + + + + + +
+

Model:FilmVelvia

+ +#### Community Cases +Here are some samples contributed by the community artists. Create a Pull Request if you would like to show your results here😚. + + + + + + + + + +
+

+Character Model:Yoimiya +(with an initial reference image, see WIP fork for the extended implementation.) + + + + + + + + + +
+

+Character Model:Paimon; +Pose Model:Hold Sign

+ +## BibTeX +``` +@article{guo2023animatediff, + title={AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning}, + author={Guo, Yuwei and Yang, Ceyuan and Rao, Anyi and Wang, Yaohui and Qiao, Yu and Lin, Dahua and Dai, Bo}, + journal={arXiv preprint arXiv:2307.04725}, + year={2023} +} +``` + +## Contact Us +**Yuwei Guo**: [guoyuwei@pjlab.org.cn](mailto:guoyuwei@pjlab.org.cn) +**Ceyuan Yang**: [yangceyuan@pjlab.org.cn](mailto:yangceyuan@pjlab.org.cn) +**Bo Dai**: [daibo@pjlab.org.cn](mailto:daibo@pjlab.org.cn) + +## Acknowledgements Codebase built upon [Tune-a-Video](https://github.com/showlab/Tune-A-Video). \ No newline at end of file diff --git a/environment.yaml b/environment.yaml index 2e2e36a..a675b3f 100644 --- a/environment.yaml +++ b/environment.yaml @@ -1,20 +1,22 @@ -name: animatediff -channels: - - pytorch - - xformers -dependencies: - - python=3.10 - - pytorch==1.12.1 - - torchvision==0.13.1 - - torchaudio==0.12.1 - - cudatoolkit=11.3 - - xformers - - pip - - pip: - - diffusers[torch]==0.11.1 - - transformers==4.25.1 - - imageio==2.27.0 - - gdown - - einops - - omegaconf - - safetensors +name: animatediff +channels: + - pytorch + - xformers +dependencies: + - python=3.10 + - pytorch==1.12.1 + - torchvision==0.13.1 + - torchaudio==0.12.1 + - cudatoolkit=11.3 + - xformers + - pip + - pip: + - diffusers[torch]==0.11.1 + - transformers==4.25.1 + - imageio==2.27.0 + - gdown + - einops + - omegaconf + - safetensors + - pyyaml + - gradio=3.36.1 \ No newline at end of file diff --git a/ui/first-tab.png b/ui/first-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..6f89e1ddb6454b05241adbc54ad0df309af3d401 GIT binary patch literal 49350 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 GQ~l1KF=nEyDhn+KUduhx4X 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 literal 0 HcmV?d00001 diff --git a/ui/second-tab.png b/ui/second-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..78c1a4869c41dfcd5719ea64642c9bd173a6059f GIT binary patch literal 86335 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

0ZSXAw^ze3hwz#Pj-)#N(Guo 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�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 Fe*h_C2Co1B literal 0 HcmV?d00001 diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..90435d6 --- /dev/null +++ b/utils.py @@ -0,0 +1,41 @@ +import copy +import os +import subprocess as sub +import gdown +import yaml + +def yaml_to_dict(filename): + with open(filename, 'r') as file: + data = yaml.safe_load(file) + return copy.deepcopy(data) + +def dict_to_yaml(data, filename): + with open(filename, 'w') as file: + yaml.safe_dump(data, file) + +def download_from_drive_gdown(file_id, output_path): + url = f'https://drive.google.com/uc?id={file_id}' + gdown.download(url, output_path, quiet=False) + +def verbose_print(text): + print(f"{text}") + +def create_dirs(arb_path): + if not os.path.exists(arb_path): + os.makedirs(arb_path) + +def make_all_dirs(list_of_paths): + for path in list_of_paths: + create_dirs(path) + +def execute(cmd): + popen = sub.Popen(cmd, stdout=sub.PIPE, universal_newlines=True) + for stdout_line in iter(popen.stdout.readline, ""): + yield stdout_line + popen.stdout.close() + return_code = popen.wait() + if return_code: + raise sub.CalledProcessError(return_code, cmd) + +def is_windows(): + return os.name == 'nt' diff --git a/webui.py b/webui.py new file mode 100644 index 0000000..9481404 --- /dev/null +++ b/webui.py @@ -0,0 +1,307 @@ +import argparse +import gradio as gr +import copy +import os +import glob + +import utils as help + +sep = '\\' if help.is_windows() else '/' +all_motion_model_opts = ["mm_sd_v14.ckpt", "mm_sd_v15.ckpt"] + +def get_available_motion_models(): + motion_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "Motion_Module")) + motion_model_opts = sorted([ckpt for ckpt in glob.glob(os.path.join(motion_model_opts_path, f"*.ckpt"))]) + return motion_model_opts + +def get_available_sd_models(): + sd_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "StableDiffusion")) + sd_model_opts = sorted([safetensor.split(sep)[-1] for safetensor in glob.glob(os.path.join(sd_model_opts_path, f"*.safetensors"))]) + return sd_model_opts + +def get_available_db_models(): + db_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "DreamBooth_LoRA")) + db_model_opts = sorted([safetensor.split(sep)[-1] for safetensor in glob.glob(os.path.join(db_model_opts_path, f"*.safetensors"))]) + return db_model_opts + +def get_db_config(): + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + return sorted([(prompt_yaml.split(sep)[-1]) for prompt_yaml in glob.glob(os.path.join(prompt_configs_path, f"*.yaml"))]) + +def get_sd_config(): + inference_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "inference") + return sorted([(inference_yaml.split(sep)[-1]) for inference_yaml in glob.glob(os.path.join(inference_configs_path, f"*.yaml"))]) + +def set_motion_model(menu_opt: gr.SelectData): + model_name = menu_opt.value + motion_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "Motion_Module")) + motion_model_opts = sorted([ckpt for ckpt in glob.glob(os.path.join(motion_model_opts_path, f"*.ckpt"))]) + motion_model_map = {"mm_sd_v14.ckpt": "1RqkQuGPaCO5sGZ6V6KZ-jUWmsRu48Kdq", + "mm_sd_v15.ckpt": "1ql0g_Ys4UCz2RnokYlBjyOYPbttbIpbu"} + if not os.path.join(motion_model_opts_path, model_name) in motion_model_opts: # download + help.download_from_drive_gdown(motion_model_map[model_name], os.path.join(motion_model_opts_path, model_name)) + return gr.update(value=os.path.join(motion_model_opts_path, model_name)) # model path + +def set_sd_model(menu_opt: gr.SelectData): + model_name = menu_opt.value + sd_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "StableDiffusion")) + return gr.update(value=os.path.join(sd_model_opts_path, model_name)), gr.update(value=os.path.join(sd_model_opts_path, model_name)) # sd path, pretrained path + +def set_db_model(menu_opt: gr.SelectData): + model_name = menu_opt.value + db_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "DreamBooth_LoRA")) + return gr.update(value=os.path.join(db_model_opts_path, model_name)) # db path + +def update_available_sd_models(): + sd_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "StableDiffusion")) + sd_model_opts = sorted([safetensor.split(sep)[-1] for safetensor in glob.glob(os.path.join(sd_model_opts_path, f"*.safetensors"))]) + return gr.update(choices=sd_model_opts) + +def update_available_db_models(): + db_model_opts_path = os.path.join(os.getcwd(), os.path.join("models", "DreamBooth_LoRA")) + db_model_opts = sorted([safetensor.split(sep)[-1] for safetensor in glob.glob(os.path.join(db_model_opts_path, f"*.safetensors"))]) + return gr.update(choices=db_model_opts) + +def update_sd_config(): + inference_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "inference") + return gr.update(choices=sorted([(inference_yaml.split(sep)[-1]) for inference_yaml in glob.glob(os.path.join(inference_configs_path, f"*.yaml"))])) + +def update_db_config(): + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + return gr.update(choices=sorted([(prompt_yaml.split(sep)[-1]) for prompt_yaml in glob.glob(os.path.join(prompt_configs_path, f"*.yaml"))])) + +def load_db_config(filename: gr.SelectData): + filename = filename.value + + global prompt_config_dict + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + # populate the dictionary + prompt_config_dict = help.yaml_to_dict(os.path.join(prompt_configs_path, f"{filename}")) + + name_only = list(prompt_config_dict.keys())[0] + help.verbose_print(f"Config Key Name:\t{name_only}") + + # return populated UI components + config_name = name_only + + motion_model_path = list(prompt_config_dict[name_only]["motion_module"])[0] + + + base_path = str(prompt_config_dict[name_only]["base"]) + db_path = str(prompt_config_dict[name_only]["path"]) + steps = int(prompt_config_dict[name_only]["steps"]) + guidance_scale = float(prompt_config_dict[name_only]["guidance_scale"]) + lora_alpha = float(prompt_config_dict[name_only]["lora_alpha"]) if "lora_alpha" in prompt_config_dict[name_only] else 1.0 + + seed_list = list(prompt_config_dict[name_only]["seed"]) + prompt_list = list(prompt_config_dict[name_only]["prompt"]) + n_prompt_list = list(prompt_config_dict[name_only]["n_prompt"]) + + seed1 = str(seed_list[0]) if len(seed_list) > 0 else "-1" + prompt1 = str(prompt_list[0]) if len(prompt_list) > 0 else "" + n_prompt1 = str(n_prompt_list[0]) if len(n_prompt_list) > 0 else "" + seed2 = str(seed_list[1]) if len(seed_list) > 1 else "-1" + prompt2 = str(prompt_list[1]) if len(prompt_list) > 1 else "" + n_prompt2 = str(n_prompt_list[1]) if len(n_prompt_list) > 1 else "" + seed3 = str(seed_list[2]) if len(seed_list) > 2 else "-1" + prompt3 = str(prompt_list[2]) if len(prompt_list) > 2 else "" + n_prompt3 = str(n_prompt_list[2]) if len(n_prompt_list) > 2 else "" + seed4 = str(seed_list[3]) if len(seed_list) > 3 else "-1" + prompt4 = str(prompt_list[3]) if len(prompt_list) > 3 else "" + n_prompt4 = str(n_prompt_list[3]) if len(n_prompt_list) > 3 else "" + help.verbose_print(f"Done Loading Prompt Config!") + + motion_model_dropdown = gr.update(value=motion_model_path.split(sep)[-1]) + sd_model_dropdown = gr.update(value=base_path.split(sep)[-1]) + db_model_dropdown = gr.update(value=db_path.split(sep)[-1]) + pretrained_model_path = gr.update(value=base_path) + + return config_name, motion_model_path, base_path, db_path, steps, guidance_scale, lora_alpha, \ + seed1, prompt1, n_prompt1, seed2, prompt2, n_prompt2, seed3, prompt3, n_prompt3, seed4, prompt4, n_prompt4, \ + motion_model_dropdown, sd_model_dropdown, db_model_dropdown, pretrained_model_path + +def save_db_config(filename): + global prompt_config_dict + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + help.dict_to_yaml(copy.deepcopy(prompt_config_dict), os.path.join(prompt_configs_path, f"{filename}.yaml")) + help.verbose_print(f"Done Creating NEW Prompt Config!") + +def save_prompt_dict(config_name, motion_model_path, base_path, db_path, steps, guidance_scale, lora_alpha, + seed1, prompt1, n_prompt1, seed2, prompt2, n_prompt2, seed3, prompt3, n_prompt3, seed4, prompt4, n_prompt4): + global prompt_config_dict + prompt_config_dict[config_name] = {} + prompt_config_dict[config_name]["base"] = base_path + prompt_config_dict[config_name]["path"] = db_path + + prompt_config_dict[config_name]["motion_module"] = [] + prompt_config_dict[config_name]["motion_module"].append(motion_model_path) + + prompt_config_dict[config_name]["seed"] = [0] * 4 + prompt_config_dict[config_name]["steps"] = steps + prompt_config_dict[config_name]["guidance_scale"] = guidance_scale + prompt_config_dict[config_name]["lora_alpha"] = lora_alpha + + + prompt_config_dict[config_name]["prompt"] = [""]*4 + prompt_config_dict[config_name]["n_prompt"] = [""]*4 + + prompt_config_dict[config_name]["seed"][0] = int(seed1) + prompt_config_dict[config_name]["prompt"][0] = prompt1 + prompt_config_dict[config_name]["n_prompt"][0] = n_prompt1 + prompt_config_dict[config_name]["seed"][1] = int(seed2) + prompt_config_dict[config_name]["prompt"][1] = prompt2 + prompt_config_dict[config_name]["n_prompt"][1] = n_prompt2 + prompt_config_dict[config_name]["seed"][2] = int(seed3) + prompt_config_dict[config_name]["prompt"][2] = prompt3 + prompt_config_dict[config_name]["n_prompt"][2] = n_prompt3 + prompt_config_dict[config_name]["seed"][3] = int(seed4) + prompt_config_dict[config_name]["prompt"][3] = prompt4 + prompt_config_dict[config_name]["n_prompt"][3] = n_prompt4 + + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + help.dict_to_yaml(copy.deepcopy(prompt_config_dict), os.path.join(prompt_configs_path, f"{config_name}.yaml")) + help.verbose_print(f"Done Updating Prompt Config!") + +def animate(pretrained_model_path, frame_count, width, height, inference_yaml_select, prompt_yaml_select): + prompt_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "prompts") + inference_configs_path = os.path.join(os.path.join(os.getcwd(), "configs"), "inference") + + command_str = f"python -m scripts.animate --config {os.path.join(prompt_configs_path, prompt_yaml_select)}" + if pretrained_model_path is not None and len(pretrained_model_path) > 0: + command_str += f" --pretrained_model_path {pretrained_model_path}" + command_str += f" --L {frame_count}" + command_str += f" --W {width}" + command_str += f" --H {height}" + if inference_yaml_select is not None and len(inference_yaml_select) > 0: + command_str += f" --inference_config {os.path.join(inference_configs_path, inference_yaml_select)}" + + help.verbose_print(f"Running Command:\t{command_str}") + for line in help.execute(command_str.split(" ")): + help.verbose_print(line) + help.verbose_print(f"Done Generating!") + +def build_ui(): + with gr.Blocks() as demo: + with gr.Tab("Model Selection & Setup"): + with gr.Row(): + motion_model_dropdown = gr.Dropdown(interactive=True, label="Select Motion Model", info="Downloads model if not present", choices=all_motion_model_opts) + sd_model_dropdown = gr.Dropdown(interactive=True, label="Select Stable Diffusion Model", info="At user/s discretion to download", choices=get_available_sd_models()) + db_model_dropdown = gr.Dropdown(interactive=True, label="Select LoRA/Dreambooth Model", info="At user/s discretion to download", choices=get_available_db_models()) + with gr.Row(): + pretrained_model_path = gr.Textbox(info="Pretrained Model Path", interactive=True, show_label=False) + with gr.Row(): + frame_count = gr.Slider(info="Total Frames", minimum=0, maximum=1000, step=1, value=16, show_label=False) + width = gr.Slider(info="Width", minimum=0, maximum=4096, step=1, value=512, show_label=False) + height = gr.Slider(info="Height", minimum=0, maximum=4096, step=1, value=512, show_label=False) + with gr.Row(): + inference_yaml_select = gr.Dropdown(info='YAML Select', interactive=True, choices=get_sd_config(), show_label=False) + animate_button = gr.Button(value="Generate", variant='primary') + + with gr.Tab("LoRA/Dreambooth Prompt Config"): + with gr.Row(): + config_save = gr.Button(value="Apply & Save Settings", variant='primary') + create_prompt_yaml = gr.Button(value="Create Prompt Config", variant='secondary') + with gr.Row(): + prompt_yaml_select = gr.Dropdown(info='YAML Select', interactive=True, choices=get_db_config(), show_label=False) + config_name = gr.Textbox(info="Config Name", interactive=True, show_label=False) + motion_model_path = gr.Textbox(info="Motion Model Path", interactive=True, show_label=False) + with gr.Row(): + base_path = gr.Textbox(info="Base Model Path", interactive=True, show_label=False) + db_path = gr.Textbox(info="LoRA/Dreambooth Path", interactive=True, show_label=False) + with gr.Row(): + steps = gr.Slider(info="Steps", minimum=0, maximum=1000, step=1, value=25, show_label=False) + with gr.Row(): + guidance_scale = gr.Slider(info="Guidance Scale", minimum=0.0, maximum=100.0, step=0.05, value=6.5, show_label=False) + lora_alpha = gr.Slider(info="LoRA Alpha", minimum=0.0, maximum=1.0, step=0.025, value=1.0, show_label=False) + with gr.Accordion("Prompt 1", visible=True, open=False): + with gr.Column(): + seed1 = gr.Textbox(info="Seed", interactive=True, show_label=False) + prompt1 = gr.Textbox(info="Prompt", interactive=True, show_label=False) + n_prompt1 = gr.Textbox(info="Negative Prompt", interactive=True, show_label=False) + with gr.Accordion("Prompt 2", visible=True, open=False): + with gr.Column(): + seed2 = gr.Textbox(info="Seed", interactive=True, show_label=False) + prompt2 = gr.Textbox(info="Prompt", interactive=True, show_label=False) + n_prompt2 = gr.Textbox(info="Negative Prompt", interactive=True, show_label=False) + with gr.Accordion("Prompt 3", visible=True, open=False): + with gr.Column(): + seed3 = gr.Textbox(info="Seed", interactive=True, show_label=False) + prompt3 = gr.Textbox(info="Prompt", interactive=True, show_label=False) + n_prompt3 = gr.Textbox(info="Negative Prompt", interactive=True, show_label=False) + with gr.Accordion("Prompt 4", visible=True, open=False): + with gr.Column(): + seed4 = gr.Textbox(info="Seed", interactive=True, show_label=False) + prompt4 = gr.Textbox(info="Prompt", interactive=True, show_label=False) + n_prompt4 = gr.Textbox(info="Negative Prompt", interactive=True, show_label=False) + + motion_model_dropdown.select(fn=set_motion_model, inputs=[], outputs=[motion_model_path]) + sd_model_dropdown.select(fn=set_sd_model, inputs=[], outputs=[base_path, pretrained_model_path]) + db_model_dropdown.select(fn=set_db_model, inputs=[], outputs=[db_path]) + prompt_yaml_select.select(fn=load_db_config, inputs=[], + outputs=[config_name, motion_model_path, base_path, db_path, steps, guidance_scale, lora_alpha, + seed1, prompt1, n_prompt1, seed2, prompt2, n_prompt2, seed3, prompt3, n_prompt3, + seed4, prompt4, n_prompt4, motion_model_dropdown, sd_model_dropdown, + db_model_dropdown, pretrained_model_path]).then( + fn=update_db_config, inputs=[], outputs=[prompt_yaml_select]) + create_prompt_yaml.click(fn=save_db_config, inputs=[config_name], outputs=[]) + config_save.click(fn=save_prompt_dict, inputs=[config_name, motion_model_path, base_path, db_path, steps, guidance_scale, lora_alpha, + seed1, prompt1, n_prompt1, seed2, prompt2, n_prompt2, seed3, prompt3, n_prompt3, seed4, prompt4, n_prompt4], + outputs=[]) + animate_button.click(fn=animate, inputs=[pretrained_model_path, frame_count, width, height, inference_yaml_select, prompt_yaml_select], outputs=[]) + return demo + +def UI(**kwargs): + # Show the interface + launch_kwargs = {} + if not kwargs.get('username', None) == '': + launch_kwargs['auth'] = ( + kwargs.get('username', None), + kwargs.get('password', None), + ) + if kwargs.get('server_port', 0) > 0: + launch_kwargs['server_port'] = kwargs.get('server_port', 0) + if kwargs.get('share', True): + launch_kwargs['share'] = True + + print(launch_kwargs) + demo.queue().launch(**launch_kwargs) + +if __name__ == "__main__": + # init client & server connection + HOST = "127.0.0.1" + + parser = argparse.ArgumentParser() + parser.add_argument( + '--username', type=str, default='', help='Username for authentication' + ) + parser.add_argument( + '--password', type=str, default='', help='Password for authentication' + ) + parser.add_argument( + '--server_port', + type=int, + default=0, + help='Port to run the server listener on', + ) + parser.add_argument( + '--share', + action='store_true', + help='Share live gradio link', + ) + + args = parser.parse_args() + demo = build_ui() + + global prompt_config_dict + prompt_config_dict = {} + + help.verbose_print(f"Motion models available to use:\t{get_available_motion_models()}") + help.verbose_print(f"Stable Diffusion models available to use:\t{get_available_sd_models()}") + help.verbose_print(f"LoRA/Dreambooth models available to use:\t{get_available_db_models()}") + + UI( + username=args.username, + password=args.password, + server_port=args.server_port, + share=args.share, + )