From 39e1f91cce18217f8ffbb9926ebaf7ec8ca9f1a7 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 7 Sep 2023 08:19:37 -0400 Subject: [PATCH] skip override for same items, handle taesd --- modules/processing.py | 18 ++++++++++++++++-- modules/script_loading.py | 2 -- modules/sd_vae.py | 2 ++ modules/ui.py | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index eadbd52fc..50870d405 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -461,7 +461,6 @@ def create_infotext(p: StableDiffusionProcessing, all_prompts, all_seeds, all_su index = position_in_batch + iteration * p.batch_size if all_negative_prompts is None: all_negative_prompts = p.all_negative_prompts - vae = (None if not shared.opts.add_model_name_to_info or modules.sd_vae.loaded_vae_file is None else os.path.splitext(os.path.basename(modules.sd_vae.loaded_vae_file))[0]) if p.full_quality else 'TAESD' comment = ', '.join(comments) if comments is not None and type(comments) is list else None args = { @@ -475,7 +474,7 @@ def create_infotext(p: StableDiffusionProcessing, all_prompts, all_seeds, all_su "Parser": shared.opts.prompt_attention, "Model": None if (not shared.opts.add_model_name_to_info) or (not shared.sd_model.sd_checkpoint_info.model_name) else shared.sd_model.sd_checkpoint_info.model_name.replace(',', '').replace(':', ''), "Model hash": getattr(p, 'sd_model_hash', None if (not shared.opts.add_model_hash_to_info) or (not shared.sd_model.sd_model_hash) else shared.sd_model.sd_model_hash), - "VAE": vae, + "VAE": (None if not shared.opts.add_model_name_to_info or modules.sd_vae.loaded_vae_file is None else os.path.splitext(os.path.basename(modules.sd_vae.loaded_vae_file))[0]) if p.full_quality else 'TAESD', "Variation seed": None if p.subseed_strength == 0 else all_subseeds[index], "Variation strength": None if p.subseed_strength == 0 else p.subseed_strength, "Seed resize from": None if p.seed_resize_from_w == 0 or p.seed_resize_from_h == 0 else f"{p.seed_resize_from_w}x{p.seed_resize_from_h}", @@ -574,13 +573,28 @@ def process_images(p: StableDiffusionProcessing) -> Processed: if not hasattr(p.sd_model, 'sd_checkpoint_info'): return None stored_opts = {} + for k, v in p.override_settings.copy().items(): + orig = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default + if orig == v or os.path.splitext(orig)[0] == v: + p.override_settings.pop(k, None) for k in p.override_settings.keys(): stored_opts[k] = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default try: # if no checkpoint override or the override checkpoint can't be found, remove override entry and load opts checkpoint if p.override_settings.get('sd_model_checkpoint', None) is not None and modules.sd_models.checkpoint_aliases.get(p.override_settings.get('sd_model_checkpoint')) is None: + shared.log.warning(f"Override not found: checkpoint={p.override_settings.get('sd_model_checkpoint', None)}") p.override_settings.pop('sd_model_checkpoint', None) modules.sd_models.reload_model_weights() + if p.override_settings.get('sd_model_refiner', None) is not None and modules.sd_models.checkpoint_aliases.get(p.override_settings.get('sd_model_refiner')) is None: + shared.log.warning(f"Override not found: refiner={p.override_settings.get('sd_model_refiner', None)}") + p.override_settings.pop('sd_model_refiner', None) + modules.sd_models.reload_model_weights() + if p.override_settings.get('sd_vae', None) is not None: + if p.override_settings.get('sd_vae', None) == 'TAESD': + p.full_quality = False + # p.override_settings.pop('sd_vae', None) + if len(p.override_settings.keys()) > 0: + shared.log.debug(f'Override: {p.override_settings}') for k, v in p.override_settings.items(): setattr(shared.opts, k, v) if k == 'sd_model_checkpoint': diff --git a/modules/script_loading.py b/modules/script_loading.py index dd8170ff2..b28f6b65d 100644 --- a/modules/script_loading.py +++ b/modules/script_loading.py @@ -21,8 +21,6 @@ def preload_extensions(extensions_dir, parser): if not os.path.isdir(extensions_dir): return for dirname in sorted(os.listdir(extensions_dir)): - # if dirname in opts.get('disabled_extensions', []): # TODO: preload happens before opts are parsed - # continue if dirname in preloaded: continue preloaded.append(dirname) diff --git a/modules/sd_vae.py b/modules/sd_vae.py index b1f9f546a..d632618a1 100644 --- a/modules/sd_vae.py +++ b/modules/sd_vae.py @@ -111,6 +111,8 @@ def find_vae_near_checkpoint(checkpoint_file): def resolve_vae(checkpoint_file): + if shared.opts.sd_vae == 'TAESD': + return None, None if shared.cmd_opts.vae is not None: # 1st return shared.cmd_opts.vae, 'forced' if shared.opts.sd_vae == "None": # 2nd diff --git a/modules/ui.py b/modules/ui.py index fe0c8aa3b..5ab6158f7 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -487,6 +487,7 @@ def create_ui(startup_timer = None): (height, "Size-2"), (subseed, "Variation seed"), (subseed_strength, "Variation strength"), + (full_quality, "Full quality"), (clip_skip, "Clip skip"), (latent_index, "Latent sampler"), (latent_index, "Secondary sampler"), @@ -847,6 +848,7 @@ def create_ui(startup_timer = None): (height, "Size-2"), (subseed, "Variation seed"), (subseed_strength, "Variation strength"), + (full_quality, "Full quality"), (clip_skip, "Clip skip"), (latent_index, "Latent sampler"), (latent_index, "Secondary sampler"),