From f829e96343ba22d75f69dac2e3864289b9f86257 Mon Sep 17 00:00:00 2001 From: catboxanon <122327233+catboxanon@users.noreply.github.com> Date: Sat, 2 Sep 2023 03:25:27 -0400 Subject: [PATCH 1/7] Add separate VAE support (#308) --- adetailer/args.py | 8 +++++++ adetailer/ui.py | 52 +++++++++++++++++++++++++++++++------------ scripts/!adetailer.py | 8 +++++++ 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/adetailer/args.py b/adetailer/args.py index 42e60a4..ea22b99 100644 --- a/adetailer/args.py +++ b/adetailer/args.py @@ -61,6 +61,8 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid): ad_cfg_scale: NonNegativeFloat = 7.0 ad_use_checkpoint: bool = False ad_checkpoint: Optional[str] = None + ad_use_vae: bool = False + ad_vae: Optional[str] = None ad_use_sampler: bool = False ad_sampler: str = "DPM++ 2M Karras" ad_use_noise_multiplier: bool = False @@ -142,6 +144,10 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid): "ADetailer use separate checkpoint", ["ADetailer use separate checkpoint", "ADetailer checkpoint"], ) + ppop( + "ADetailer use separate VAE", + ["ADetailer use separate VAE", "ADetailer VAE"], + ) ppop( "ADetailer use separate sampler", ["ADetailer use separate sampler", "ADetailer sampler"], @@ -216,6 +222,8 @@ _all_args = [ ("ad_cfg_scale", "ADetailer CFG scale"), ("ad_use_checkpoint", "ADetailer use separate checkpoint"), ("ad_checkpoint", "ADetailer checkpoint"), + ("ad_use_vae", "ADetailer use separate VAE"), + ("ad_vae", "ADetailer VAE"), ("ad_use_sampler", "ADetailer use separate sampler"), ("ad_sampler", "ADetailer sampler"), ("ad_use_noise_multiplier", "ADetailer use separate noise multiplier"), diff --git a/adetailer/ui.py b/adetailer/ui.py index b186ed7..870a8cb 100644 --- a/adetailer/ui.py +++ b/adetailer/ui.py @@ -30,6 +30,7 @@ class WebuiInfo: t2i_button: gr.Button i2i_button: gr.Button checkpoints_list: Callable + vae_list: Callable def gr_interactive(value: bool = True): @@ -441,27 +442,50 @@ def inpainting(w: Widgets, n: int, is_img2img: bool, webui_info: WebuiInfo): ) with gr.Column(variant="compact"): - w.ad_use_sampler = gr.Checkbox( - label="Use separate sampler" + suffix(n), + w.ad_use_vae = gr.Checkbox( + label="Use separate VAE (experimental)" + suffix(n), value=False, visible=True, - elem_id=eid("ad_use_sampler"), + elem_id=eid("ad_use_vae"), ) - w.ad_sampler = gr.Dropdown( - label="ADetailer sampler" + suffix(n), - choices=webui_info.sampler_names, - value=webui_info.sampler_names[0], + vaes = ["Use same VAE"] + try: + vaes.extend(webui_info.vae_list()) + except Exception: + vaes.extend([]) + + w.ad_vae = gr.Dropdown( + label="ADetailer VAE" + suffix(n), + choices=vaes, + value=vaes[0], visible=True, - elem_id=eid("ad_sampler"), + elem_id=eid("ad_vae"), ) - w.ad_use_sampler.change( - gr_interactive, - inputs=w.ad_use_sampler, - outputs=w.ad_sampler, - queue=False, - ) + + with gr.Row(), gr.Column(variant="compact"): + w.ad_use_sampler = gr.Checkbox( + label="Use separate sampler" + suffix(n), + value=False, + visible=True, + elem_id=eid("ad_use_sampler"), + ) + + w.ad_sampler = gr.Dropdown( + label="ADetailer sampler" + suffix(n), + choices=webui_info.sampler_names, + value=webui_info.sampler_names[0], + visible=True, + elem_id=eid("ad_sampler"), + ) + + w.ad_use_sampler.change( + gr_interactive, + inputs=w.ad_use_sampler, + outputs=w.ad_sampler, + queue=False, + ) with gr.Row(): with gr.Column(variant="compact"): diff --git a/scripts/!adetailer.py b/scripts/!adetailer.py index 5309c38..9b0b1c8 100644 --- a/scripts/!adetailer.py +++ b/scripts/!adetailer.py @@ -126,6 +126,7 @@ class AfterDetailerScript(scripts.Script): t2i_button=txt2img_submit_button, i2i_button=img2img_submit_button, checkpoints_list=modules.sd_models.checkpoint_tiles, + vae_list=modules.shared_items.sd_vae_items, ) components, infotext_fields = adui(num_models, is_img2img, webui_info) @@ -318,6 +319,13 @@ class AfterDetailerScript(scripts.Script): and args.ad_checkpoint not in ("None", "Use same checkpoint") ): d["sd_model_checkpoint"] = args.ad_checkpoint + + if ( + args.ad_use_vae + and args.ad_vae + and args.ad_vae not in ("None", "Use same VAE") + ): + d["sd_vae"] = args.ad_vae return d def get_initial_noise_multiplier(self, p, args: ADetailerArgs) -> float | None: From 27591dfbe78928ab166029f12ac2fb01c15e02ad Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sat, 2 Sep 2023 16:26:02 +0900 Subject: [PATCH 2/7] stype: apply pre-commit --- adetailer/ui.py | 1 - 1 file changed, 1 deletion(-) diff --git a/adetailer/ui.py b/adetailer/ui.py index 870a8cb..c92a754 100644 --- a/adetailer/ui.py +++ b/adetailer/ui.py @@ -463,7 +463,6 @@ def inpainting(w: Widgets, n: int, is_img2img: bool, webui_info: WebuiInfo): elem_id=eid("ad_vae"), ) - with gr.Row(), gr.Column(variant="compact"): w.ad_use_sampler = gr.Checkbox( label="Use separate sampler" + suffix(n), From a7d6559710466ecf8a01bc5a8c95da66473bf9e7 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sat, 2 Sep 2023 16:37:34 +0900 Subject: [PATCH 3/7] chore: update tools --- .pre-commit-config.yaml | 2 +- .vscode/extensions.json | 1 + Taskfile.yml | 4 ++++ install.py | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0d889b0..053e187 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ repos: - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.0.286" + rev: "v0.0.287" hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/.vscode/extensions.json b/.vscode/extensions.json index b73cc80..f18738d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,5 +3,6 @@ "ms-python.black-formatter", "kevinrose.vsc-python-indent", "charliermarsh.ruff", + "shardulm94.trailing-spaces" ] } diff --git a/Taskfile.yml b/Taskfile.yml index 70786f2..70e0d35 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -21,3 +21,7 @@ tasks: lint: cmds: - pre-commit run -a + + update: + cmds: + - "{{.PYTHON}} -m pip install -U ultralytics mediapipe ruff pre-commit black" diff --git a/install.py b/install.py index 9751baa..62c73d7 100644 --- a/install.py +++ b/install.py @@ -44,7 +44,7 @@ def run_pip(*args): def install(): deps = [ # requirements - ("ultralytics", "8.0.167", None), + ("ultralytics", "8.0.168", None), ("mediapipe", "0.10.3", None), ("rich", "13.0.0", None), # mediapipe From 64ea03e571e2dfc1557ecea2de1ade85c7d6fc2d Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sat, 2 Sep 2023 16:50:03 +0900 Subject: [PATCH 4/7] fix: vaes --- adetailer/__version__.py | 2 +- adetailer/ui.py | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/adetailer/__version__.py b/adetailer/__version__.py index bf51285..3379b4e 100644 --- a/adetailer/__version__.py +++ b/adetailer/__version__.py @@ -1 +1 @@ -__version__ = "23.9.1" +__version__ = "23.9.2.dev0" diff --git a/adetailer/ui.py b/adetailer/ui.py index c92a754..45799e1 100644 --- a/adetailer/ui.py +++ b/adetailer/ui.py @@ -29,8 +29,8 @@ class WebuiInfo: sampler_names: list[str] t2i_button: gr.Button i2i_button: gr.Button - checkpoints_list: Callable - vae_list: Callable + checkpoints_list: Callable[..., list[str]] + vae_list: Callable[..., list[str]] def gr_interactive(value: bool = True): @@ -449,11 +449,7 @@ def inpainting(w: Widgets, n: int, is_img2img: bool, webui_info: WebuiInfo): elem_id=eid("ad_use_vae"), ) - vaes = ["Use same VAE"] - try: - vaes.extend(webui_info.vae_list()) - except Exception: - vaes.extend([]) + vaes = ["Use same VAE", *webui_info.vae_list()] w.ad_vae = gr.Dropdown( label="ADetailer VAE" + suffix(n), From 645c67e3ffaeba240c6f4d1e344d0660dff4e3e4 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sun, 10 Sep 2023 22:07:02 +0900 Subject: [PATCH 5/7] fix: function -> list --- adetailer/ui.py | 12 ++++-------- scripts/!adetailer.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/adetailer/ui.py b/adetailer/ui.py index 45799e1..b05e3aa 100644 --- a/adetailer/ui.py +++ b/adetailer/ui.py @@ -29,8 +29,8 @@ class WebuiInfo: sampler_names: list[str] t2i_button: gr.Button i2i_button: gr.Button - checkpoints_list: Callable[..., list[str]] - vae_list: Callable[..., list[str]] + checkpoints_list: list[str] + vae_list: list[str] def gr_interactive(value: bool = True): @@ -427,11 +427,7 @@ def inpainting(w: Widgets, n: int, is_img2img: bool, webui_info: WebuiInfo): elem_id=eid("ad_use_checkpoint"), ) - ckpts = ["Use same checkpoint"] - try: - ckpts.extend(webui_info.checkpoints_list(use_short=True)) - except TypeError: - ckpts.extend(webui_info.checkpoints_list()) + ckpts = ["Use same checkpoint", *webui_info.checkpoints_list] w.ad_checkpoint = gr.Dropdown( label="ADetailer checkpoint" + suffix(n), @@ -449,7 +445,7 @@ def inpainting(w: Widgets, n: int, is_img2img: bool, webui_info: WebuiInfo): elem_id=eid("ad_use_vae"), ) - vaes = ["Use same VAE", *webui_info.vae_list()] + vaes = ["Use same VAE", *webui_info.vae_list] w.ad_vae = gr.Dropdown( label="ADetailer VAE" + suffix(n), diff --git a/scripts/!adetailer.py b/scripts/!adetailer.py index 9b0b1c8..544e7b2 100644 --- a/scripts/!adetailer.py +++ b/scripts/!adetailer.py @@ -120,13 +120,20 @@ class AfterDetailerScript(scripts.Script): num_models = opts.data.get("ad_max_models", 2) ad_model_list = list(model_mapping.keys()) sampler_names = [sampler.name for sampler in all_samplers] + + try: + checkpoint_list = modules.sd_models.checkpoint_tiles(use_shorts=True) + except TypeError: + checkpoint_list = modules.sd_models.checkpoint_tiles() + vae_list = modules.shared_items.sd_vae_items() + webui_info = WebuiInfo( ad_model_list=ad_model_list, sampler_names=sampler_names, t2i_button=txt2img_submit_button, i2i_button=img2img_submit_button, - checkpoints_list=modules.sd_models.checkpoint_tiles, - vae_list=modules.shared_items.sd_vae_items, + checkpoints_list=checkpoint_list, + vae_list=vae_list, ) components, infotext_fields = adui(num_models, is_img2img, webui_info) From c06ea455dc59fb1a0667c45ae0cd6d0cee09f5f4 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sun, 10 Sep 2023 22:13:48 +0900 Subject: [PATCH 6/7] chore: update versions --- .pre-commit-config.yaml | 2 +- install.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 053e187..8d30896 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,6 +14,6 @@ repos: args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.7.0 + rev: 23.9.0 hooks: - id: black diff --git a/install.py b/install.py index 62c73d7..426d8fe 100644 --- a/install.py +++ b/install.py @@ -44,7 +44,7 @@ def run_pip(*args): def install(): deps = [ # requirements - ("ultralytics", "8.0.168", None), + ("ultralytics", "8.0.173", None), ("mediapipe", "0.10.3", None), ("rich", "13.0.0", None), # mediapipe From 9e52dea03da07dc7fb9a17c358d05e6cba693627 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sun, 10 Sep 2023 22:14:47 +0900 Subject: [PATCH 7/7] chore: v23.9.2 --- CHANGELOG.md | 5 +++++ adetailer/__version__.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e84c60..89909b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2023-09-10 + +- v23.9.2 +- (실험적) VAE 선택 기능 + ## 2023-09-01 - v23.9.1 diff --git a/adetailer/__version__.py b/adetailer/__version__.py index 3379b4e..0a9df8e 100644 --- a/adetailer/__version__.py +++ b/adetailer/__version__.py @@ -1 +1 @@ -__version__ = "23.9.2.dev0" +__version__ = "23.9.2"