From f6d67d7655be4d396194ae053c2f8bc9ec3a7680 Mon Sep 17 00:00:00 2001 From: rsl8 <138326583+rsl8@users.noreply.github.com> Date: Sun, 21 Jan 2024 07:04:44 +0100 Subject: [PATCH 01/30] Make the private log url path relative (#1948) --- webui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui.py b/webui.py index 581e3101..fadd852a 100644 --- a/webui.py +++ b/webui.py @@ -256,7 +256,7 @@ with shared.gradio_root: queue=False, show_progress=False) if not args_manager.args.disable_image_log: - gr.HTML(f'\U0001F4DA History Log') + gr.HTML(f'\U0001F4DA History Log') with gr.Tab(label='Style'): style_sorter.try_load_sorted_styles( From 79a63491fe2e0ef0186302ad182fdd9edcc1e71f Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 16:58:46 +0100 Subject: [PATCH 02/30] feat: extract attribute disable_preview --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 4 +++- modules/core.py | 4 ++-- modules/default_pipeline.py | 11 ++++++++--- webui.py | 3 ++- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 0caa3eec..8683799c 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ +adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -6,11 +6,11 @@ disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adapt refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 35 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 34 def set_all_advanced_parameters(*args): - global disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + global adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -20,7 +20,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index b2af6712..2c3a6cfd 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -140,6 +140,7 @@ def worker(): inpaint_input_image = args.pop() inpaint_additional_prompt = args.pop() inpaint_mask_image_upload = args.pop() + disable_preview = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -766,7 +767,8 @@ def worker(): denoise=denoising_strength, tiled=tiled, cfg_scale=cfg_scale, - refiner_swap_method=refiner_swap_method + refiner_swap_method=refiner_swap_method, + disable_preview=disable_preview ) del task['c'], task['uc'], positive_cond, negative_cond # Save memory diff --git a/modules/core.py b/modules/core.py index 989b8e32..2d325559 100644 --- a/modules/core.py +++ b/modules/core.py @@ -268,7 +268,7 @@ def get_previewer(model): def ksampler(model, positive, negative, latent, seed=None, steps=30, cfg=7.0, sampler_name='dpmpp_2m_sde_gpu', scheduler='karras', denoise=1.0, disable_noise=False, start_step=None, last_step=None, force_full_denoise=False, callback_function=None, refiner=None, refiner_switch=-1, - previewer_start=None, previewer_end=None, sigmas=None, noise_mean=None): + previewer_start=None, previewer_end=None, sigmas=None, noise_mean=None, disable_preview=False): if sigmas is not None: sigmas = sigmas.clone().to(ldm_patched.modules.model_management.get_torch_device()) @@ -299,7 +299,7 @@ def ksampler(model, positive, negative, latent, seed=None, steps=30, cfg=7.0, sa def callback(step, x0, x, total_steps): ldm_patched.modules.model_management.throw_exception_if_processing_interrupted() y = None - if previewer is not None and not modules.advanced_parameters.disable_preview: + if previewer is not None and not disable_preview: y = previewer(x0, previewer_start + step, previewer_end) if callback_function is not None: callback_function(previewer_start + step, x0, x, previewer_end, y) diff --git a/modules/default_pipeline.py b/modules/default_pipeline.py index 6001d97f..5f66a36e 100644 --- a/modules/default_pipeline.py +++ b/modules/default_pipeline.py @@ -315,7 +315,7 @@ def get_candidate_vae(steps, switch, denoise=1.0, refiner_swap_method='joint'): @torch.no_grad() @torch.inference_mode() -def process_diffusion(positive_cond, negative_cond, steps, switch, width, height, image_seed, callback, sampler_name, scheduler_name, latent=None, denoise=1.0, tiled=False, cfg_scale=7.0, refiner_swap_method='joint'): +def process_diffusion(positive_cond, negative_cond, steps, switch, width, height, image_seed, callback, sampler_name, scheduler_name, latent=None, denoise=1.0, tiled=False, cfg_scale=7.0, refiner_swap_method='joint', disable_preview=False): target_unet, target_vae, target_refiner_unet, target_refiner_vae, target_clip \ = final_unet, final_vae, final_refiner_unet, final_refiner_vae, final_clip @@ -374,6 +374,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height refiner_switch=switch, previewer_start=0, previewer_end=steps, + disable_preview=disable_preview ) decoded_latent = core.decode_vae(vae=target_vae, latent_image=sampled_latent, tiled=tiled) @@ -392,6 +393,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height scheduler=scheduler_name, previewer_start=0, previewer_end=steps, + disable_preview=disable_preview ) print('Refiner swapped by changing ksampler. Noise preserved.') @@ -414,6 +416,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height scheduler=scheduler_name, previewer_start=switch, previewer_end=steps, + disable_preview=disable_preview ) target_model = target_refiner_vae @@ -440,7 +443,8 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height sampler_name=sampler_name, scheduler=scheduler_name, previewer_start=0, - previewer_end=steps + previewer_end=steps, + disable_preview=disable_preview ) print('Fooocus VAE-based swap.') @@ -479,7 +483,8 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height previewer_start=switch, previewer_end=steps, sigmas=sigmas, - noise_mean=noise_mean + noise_mean=noise_mean, + disable_preview=disable_preview ) target_model = target_refiner_vae diff --git a/webui.py b/webui.py index fadd852a..6b2265e1 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, + adps = [adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, @@ -528,6 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] + ctrls += [disable_preview] ctrls += ip_ctrls state_is_generating = gr.State(False) From 3607059224a9073d106d8865677fbf3266ccd884 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 17:01:32 +0100 Subject: [PATCH 03/30] feat: extract attribute adm_scaler_positive --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 8683799c..ee1a0eff 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ +adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -6,11 +6,11 @@ adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 34 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 33 def set_all_advanced_parameters(*args): - global adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + global adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -20,7 +20,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 2c3a6cfd..ac0dd398 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -141,6 +141,7 @@ def worker(): inpaint_additional_prompt = args.pop() inpaint_mask_image_upload = args.pop() disable_preview = args.pop() + adm_scaler_positive = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -193,7 +194,7 @@ def worker(): cfg_scale = guidance_scale = 1.0 modules.patch.adaptive_cfg = advanced_parameters.adaptive_cfg = 1.0 refiner_switch = 1.0 - modules.patch.positive_adm_scale = advanced_parameters.adm_scaler_positive = 1.0 + modules.patch.positive_adm_scale = adm_scaler_positive = 1.0 modules.patch.negative_adm_scale = advanced_parameters.adm_scaler_negative = 1.0 modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end = 0.0 steps = 8 @@ -204,7 +205,7 @@ def worker(): modules.patch.sharpness = sharpness print(f'[Parameters] Sharpness = {modules.patch.sharpness}') - modules.patch.positive_adm_scale = advanced_parameters.adm_scaler_positive + modules.patch.positive_adm_scale = adm_scaler_positive modules.patch.negative_adm_scale = advanced_parameters.adm_scaler_negative modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end print(f'[Parameters] ADM Scale = ' diff --git a/webui.py b/webui.py index 6b2265e1..c172ff3b 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, + adps = [adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview] + ctrls += [disable_preview, adm_scaler_positive] ctrls += ip_ctrls state_is_generating = gr.State(False) From 64dcdbbef3abde43aa340ba98de13b718f1f7655 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 17:02:43 +0100 Subject: [PATCH 04/30] feat: extract attribute adm_scaler_negative --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index ee1a0eff..d7ebda7f 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ +adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -6,11 +6,11 @@ adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 33 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 32 def set_all_advanced_parameters(*args): - global adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + global adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -20,7 +20,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, \ + adm_scaler_end, adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index ac0dd398..03548231 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -142,6 +142,7 @@ def worker(): inpaint_mask_image_upload = args.pop() disable_preview = args.pop() adm_scaler_positive = args.pop() + adm_scaler_negative = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -195,7 +196,7 @@ def worker(): modules.patch.adaptive_cfg = advanced_parameters.adaptive_cfg = 1.0 refiner_switch = 1.0 modules.patch.positive_adm_scale = adm_scaler_positive = 1.0 - modules.patch.negative_adm_scale = advanced_parameters.adm_scaler_negative = 1.0 + modules.patch.negative_adm_scale = adm_scaler_negative = 1.0 modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end = 0.0 steps = 8 @@ -206,7 +207,7 @@ def worker(): print(f'[Parameters] Sharpness = {modules.patch.sharpness}') modules.patch.positive_adm_scale = adm_scaler_positive - modules.patch.negative_adm_scale = advanced_parameters.adm_scaler_negative + modules.patch.negative_adm_scale = adm_scaler_negative modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end print(f'[Parameters] ADM Scale = ' f'{modules.patch.positive_adm_scale} : ' diff --git a/webui.py b/webui.py index c172ff3b..b190a282 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, + adps = [adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative] ctrls += ip_ctrls state_is_generating = gr.State(False) From 618b01764c1ae3caf84a3101d5580e115543cf6a Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 17:09:01 +0100 Subject: [PATCH 05/30] feat: extract attribute adm_scaler_end --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index d7ebda7f..e90a8295 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -adm_scaler_end, adaptive_cfg, sampler_name, \ +adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -6,11 +6,11 @@ adm_scaler_end, adaptive_cfg, sampler_name, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 32 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 31 def set_all_advanced_parameters(*args): - global adm_scaler_end, adaptive_cfg, sampler_name, \ + global adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -20,7 +20,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - adm_scaler_end, adaptive_cfg, sampler_name, \ + adaptive_cfg, sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 03548231..e0093cea 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -143,6 +143,7 @@ def worker(): disable_preview = args.pop() adm_scaler_positive = args.pop() adm_scaler_negative = args.pop() + adm_scaler_end = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -197,7 +198,7 @@ def worker(): refiner_switch = 1.0 modules.patch.positive_adm_scale = adm_scaler_positive = 1.0 modules.patch.negative_adm_scale = adm_scaler_negative = 1.0 - modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end = 0.0 + modules.patch.adm_scaler_end = adm_scaler_end = 0.0 steps = 8 modules.patch.adaptive_cfg = advanced_parameters.adaptive_cfg @@ -208,7 +209,7 @@ def worker(): modules.patch.positive_adm_scale = adm_scaler_positive modules.patch.negative_adm_scale = adm_scaler_negative - modules.patch.adm_scaler_end = advanced_parameters.adm_scaler_end + modules.patch.adm_scaler_end = adm_scaler_end print(f'[Parameters] ADM Scale = ' f'{modules.patch.positive_adm_scale} : ' f'{modules.patch.negative_adm_scale} : ' diff --git a/webui.py b/webui.py index b190a282..ba3f9d8c 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [adm_scaler_end, adaptive_cfg, sampler_name, + adps = [adaptive_cfg, sampler_name, scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end] ctrls += ip_ctrls state_is_generating = gr.State(False) From fc3da75baf77849905c8f55814f426590d9510b0 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 17:27:15 +0100 Subject: [PATCH 06/30] feat: extract attribute adaptive_cfg --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index e90a8295..314a27ca 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -adaptive_cfg, sampler_name, \ +sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -6,11 +6,11 @@ adaptive_cfg, sampler_name, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 31 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 30 def set_all_advanced_parameters(*args): - global adaptive_cfg, sampler_name, \ + global sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ @@ -20,7 +20,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - adaptive_cfg, sampler_name, \ + sampler_name, \ scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index e0093cea..6333cc56 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -144,6 +144,7 @@ def worker(): adm_scaler_positive = args.pop() adm_scaler_negative = args.pop() adm_scaler_end = args.pop() + adaptive_cfg = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -194,14 +195,14 @@ def worker(): scheduler_name = advanced_parameters.scheduler_name = 'lcm' modules.patch.sharpness = sharpness = 0.0 cfg_scale = guidance_scale = 1.0 - modules.patch.adaptive_cfg = advanced_parameters.adaptive_cfg = 1.0 + modules.patch.adaptive_cfg = adaptive_cfg = 1.0 refiner_switch = 1.0 modules.patch.positive_adm_scale = adm_scaler_positive = 1.0 modules.patch.negative_adm_scale = adm_scaler_negative = 1.0 modules.patch.adm_scaler_end = adm_scaler_end = 0.0 steps = 8 - modules.patch.adaptive_cfg = advanced_parameters.adaptive_cfg + modules.patch.adaptive_cfg = adaptive_cfg print(f'[Parameters] Adaptive CFG = {modules.patch.adaptive_cfg}') modules.patch.sharpness = sharpness diff --git a/webui.py b/webui.py index ba3f9d8c..d8d146e3 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [adaptive_cfg, sampler_name, + adps = [sampler_name, scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] ctrls += ip_ctrls state_is_generating = gr.State(False) From e54bad87f11b6dc06ac1a380c6d94b8521015394 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:00:27 +0100 Subject: [PATCH 07/30] feat: extract attribute sampler_name --- modules/advanced_parameters.py | 11 ++++------- modules/async_worker.py | 4 ++-- webui.py | 5 ++--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 314a27ca..0b6765e5 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,17 +1,15 @@ -sampler_name, \ - scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ +scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 30 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 29 def set_all_advanced_parameters(*args): - global sampler_name, \ - scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + global scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -20,8 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - sampler_name, \ - scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 6333cc56..cf8472d2 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -145,6 +145,7 @@ def worker(): adm_scaler_negative = args.pop() adm_scaler_end = args.pop() adaptive_cfg = args.pop() + sampler_name = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -191,7 +192,7 @@ def worker(): print(f'Refiner disabled in LCM mode.') refiner_model_name = 'None' - sampler_name = advanced_parameters.sampler_name = 'lcm' + sampler_name = 'lcm' scheduler_name = advanced_parameters.scheduler_name = 'lcm' modules.patch.sharpness = sharpness = 0.0 cfg_scale = guidance_scale = 1.0 @@ -244,7 +245,6 @@ def worker(): seed = int(image_seed) print(f'[Parameters] Seed = {seed}') - sampler_name = advanced_parameters.sampler_name scheduler_name = advanced_parameters.scheduler_name goals = [] diff --git a/webui.py b/webui.py index d8d146e3..a60cf2c7 100644 --- a/webui.py +++ b/webui.py @@ -446,8 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [sampler_name, - scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, + adps = [scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -528,7 +527,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name] ctrls += ip_ctrls state_is_generating = gr.State(False) From d72573aca433bbd6b6b1f93368fb409ecefc9b75 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:04:29 +0100 Subject: [PATCH 08/30] feat: extract attribute scheduler_name --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 ++--- webui.py | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 0b6765e5..ceaa8c25 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,15 +1,15 @@ -scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ +generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 29 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 28 def set_all_advanced_parameters(*args): - global scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + global generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -18,7 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index cf8472d2..2402f449 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -146,6 +146,7 @@ def worker(): adm_scaler_end = args.pop() adaptive_cfg = args.pop() sampler_name = args.pop() + scheduler_name = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -193,7 +194,7 @@ def worker(): refiner_model_name = 'None' sampler_name = 'lcm' - scheduler_name = advanced_parameters.scheduler_name = 'lcm' + scheduler_name = 'lcm' modules.patch.sharpness = sharpness = 0.0 cfg_scale = guidance_scale = 1.0 modules.patch.adaptive_cfg = adaptive_cfg = 1.0 @@ -245,8 +246,6 @@ def worker(): seed = int(image_seed) print(f'[Parameters] Seed = {seed}') - scheduler_name = advanced_parameters.scheduler_name - goals = [] tasks = [] diff --git a/webui.py b/webui.py index a60cf2c7..a6b1228f 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, + adps = [generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -527,7 +527,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name] ctrls += ip_ctrls state_is_generating = gr.State(False) From 217be190bbae0cc10fd04516270558f9e1916ee2 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:23:10 +0100 Subject: [PATCH 09/30] feat: extract attribute generate_image_grid --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 10 +++++----- webui.py | 5 +++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index ceaa8c25..cee8ac8b 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,15 +1,15 @@ -generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ +overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 28 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 27 def set_all_advanced_parameters(*args): - global generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + global overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -18,7 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 2402f449..0b9ca67b 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -69,9 +69,6 @@ def worker(): return def build_image_wall(async_task): - if not advanced_parameters.generate_image_grid: - return - results = async_task.results if len(results) < 2: @@ -279,7 +276,7 @@ def worker(): and isinstance(inpaint_input_image, dict): inpaint_image = inpaint_input_image['image'] inpaint_mask = inpaint_input_image['mask'][:, :, 0] - + if advanced_parameters.inpaint_mask_upload_checkbox: if isinstance(inpaint_mask_image_upload, np.ndarray): if inpaint_mask_image_upload.ndim == 3: @@ -824,9 +821,12 @@ def worker(): time.sleep(0.01) if len(async_tasks) > 0: task = async_tasks.pop(0) + generate_image_grid = task.args.pop(0) + try: handler(task) - build_image_wall(task) + if generate_image_grid: + build_image_wall(task) task.yields.append(['finish', task.results]) pipeline.prepare_text_encoder(async_call=True) except: diff --git a/webui.py b/webui.py index a6b1228f..71e6eabf 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height, + adps = [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -518,7 +518,8 @@ with shared.gradio_root: inpaint_strength, inpaint_respective_field ], show_progress=False, queue=False) - ctrls = [ + ctrls = [generate_image_grid] + ctrls += [ prompt, negative_prompt, style_selections, performance_selection, aspect_ratios_selection, image_number, image_seed, sharpness, guidance_scale ] From df35033cc921c790ac99d9101491e05140b3a593 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:34:06 +0100 Subject: [PATCH 10/30] feat: extract attribute overwrite_step --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index cee8ac8b..5ef144e5 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,15 +1,15 @@ -overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ +overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 27 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 26 def set_all_advanced_parameters(*args): - global overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + global overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -18,7 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_step, overwrite_switch, overwrite_width, overwrite_height, \ + overwrite_switch, overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 0b9ca67b..2e2c5829 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -144,6 +144,7 @@ def worker(): adaptive_cfg = args.pop() sampler_name = args.pop() scheduler_name = args.pop() + overwrite_step = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -338,8 +339,8 @@ def worker(): switch = int(round(steps * refiner_switch)) - if advanced_parameters.overwrite_step > 0: - steps = advanced_parameters.overwrite_step + if overwrite_step > 0: + steps = overwrite_step if advanced_parameters.overwrite_switch > 0: switch = advanced_parameters.overwrite_switch diff --git a/webui.py b/webui.py index 71e6eabf..7e9becda 100644 --- a/webui.py +++ b/webui.py @@ -429,7 +429,7 @@ with shared.gradio_root: '(default is 0, always process before any mask invert)') inpaint_mask_upload_checkbox = gr.Checkbox(label='Enable Mask Upload', value=False) invert_mask_checkbox = gr.Checkbox(label='Invert Mask', value=False) - + inpaint_ctrls = [debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate] @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, + adps = [overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step] ctrls += ip_ctrls state_is_generating = gr.State(False) From 2b1f501462892089ef7738761ccccb9dd433f563 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:38:20 +0100 Subject: [PATCH 11/30] feat: extract attribute overwrite_switch --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 5ef144e5..482d0181 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,15 +1,15 @@ -overwrite_switch, overwrite_width, overwrite_height, \ +overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 26 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 25 def set_all_advanced_parameters(*args): - global overwrite_switch, overwrite_width, overwrite_height, \ + global overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -18,7 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_switch, overwrite_width, overwrite_height, \ + overwrite_width, overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 2e2c5829..bb63426b 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -145,6 +145,7 @@ def worker(): sampler_name = args.pop() scheduler_name = args.pop() overwrite_step = args.pop() + overwrite_switch = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -342,8 +343,8 @@ def worker(): if overwrite_step > 0: steps = overwrite_step - if advanced_parameters.overwrite_switch > 0: - switch = advanced_parameters.overwrite_switch + if overwrite_switch > 0: + switch = overwrite_switch if advanced_parameters.overwrite_width > 0: width = advanced_parameters.overwrite_width diff --git a/webui.py b/webui.py index 7e9becda..59b8ad57 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_switch, overwrite_width, overwrite_height, + adps = [overwrite_width, overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step, overwrite_switch] ctrls += ip_ctrls state_is_generating = gr.State(False) From 2eed5a28f2e42a1230790729efa54564a79552e5 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:41:02 +0100 Subject: [PATCH 12/30] feat: extract attribute overwrite_width --- modules/advanced_parameters.py | 6 +++--- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 482d0181..e71cc4c4 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,4 +1,4 @@ -overwrite_width, overwrite_height, \ +overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -9,7 +9,7 @@ overwrite_width, overwrite_height, \ def set_all_advanced_parameters(*args): - global overwrite_width, overwrite_height, \ + global overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ @@ -18,7 +18,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_width, overwrite_height, \ + overwrite_height, \ overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index bb63426b..2cb4fa7a 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -146,6 +146,7 @@ def worker(): scheduler_name = args.pop() overwrite_step = args.pop() overwrite_switch = args.pop() + overwrite_width = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -346,8 +347,8 @@ def worker(): if overwrite_switch > 0: switch = overwrite_switch - if advanced_parameters.overwrite_width > 0: - width = advanced_parameters.overwrite_width + if overwrite_width > 0: + width = overwrite_width if advanced_parameters.overwrite_height > 0: height = advanced_parameters.overwrite_height diff --git a/webui.py b/webui.py index 59b8ad57..25a8321c 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_width, overwrite_height, + adps = [overwrite_height, overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step, overwrite_switch] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step, overwrite_switch, overwrite_width] ctrls += ip_ctrls state_is_generating = gr.State(False) From 9f4a00e868a6bbb73d2865517d14a56a8fc6f8e9 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:42:54 +0100 Subject: [PATCH 13/30] feat: extract attribute overwrite_height --- modules/advanced_parameters.py | 11 ++++------- modules/async_worker.py | 5 +++-- webui.py | 6 +++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index e71cc4c4..0585c4a8 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,16 +1,14 @@ -overwrite_height, \ - overwrite_vary_strength, overwrite_upscale_strength, \ +overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 25 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 24 def set_all_advanced_parameters(*args): - global overwrite_height, \ - overwrite_vary_strength, overwrite_upscale_strength, \ + global overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ @@ -18,8 +16,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_height, \ - overwrite_vary_strength, overwrite_upscale_strength, \ + overwrite_vary_strength, overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 2cb4fa7a..7110d995 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -147,6 +147,7 @@ def worker(): overwrite_step = args.pop() overwrite_switch = args.pop() overwrite_width = args.pop() + overwrite_height = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -350,8 +351,8 @@ def worker(): if overwrite_width > 0: width = overwrite_width - if advanced_parameters.overwrite_height > 0: - height = advanced_parameters.overwrite_height + if overwrite_height > 0: + height = overwrite_height print(f'[Parameters] Sampler = {sampler_name} - {scheduler_name}') print(f'[Parameters] Steps = {steps} - {switch}') diff --git a/webui.py b/webui.py index 25a8321c..b6ece454 100644 --- a/webui.py +++ b/webui.py @@ -446,8 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_height, - overwrite_vary_strength, overwrite_upscale_strength, + adps = [overwrite_vary_strength, overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] @@ -528,7 +527,8 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name, scheduler_name, overwrite_step, overwrite_switch, overwrite_width] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name] + ctrls += [scheduler_name, overwrite_step, overwrite_switch, overwrite_width, overwrite_height] ctrls += ip_ctrls state_is_generating = gr.State(False) From 22af976c5181ad57854edd9b15ebbebb828086c6 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:45:01 +0100 Subject: [PATCH 14/30] feat: extract attribute overwrite_vary_strength --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 5 +++-- webui.py | 7 ++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 0585c4a8..57c72eaa 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,14 +1,14 @@ -overwrite_vary_strength, overwrite_upscale_strength, \ +overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 24 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 23 def set_all_advanced_parameters(*args): - global overwrite_vary_strength, overwrite_upscale_strength, \ + global overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ @@ -16,7 +16,7 @@ def set_all_advanced_parameters(*args): debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_vary_strength, overwrite_upscale_strength, \ + overwrite_upscale_strength, \ mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 7110d995..656657ba 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -148,6 +148,7 @@ def worker(): overwrite_switch = args.pop() overwrite_width = args.pop() overwrite_height = args.pop() + overwrite_vary_strength = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -451,8 +452,8 @@ def worker(): denoising_strength = 0.5 if 'strong' in uov_method: denoising_strength = 0.85 - if advanced_parameters.overwrite_vary_strength > 0: - denoising_strength = advanced_parameters.overwrite_vary_strength + if overwrite_vary_strength > 0: + denoising_strength = overwrite_vary_strength shape_ceil = get_image_shape_ceil(uov_input_image) if shape_ceil < 1024: diff --git a/webui.py b/webui.py index b6ece454..506bd30c 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_vary_strength, overwrite_upscale_strength, + adps = [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] @@ -527,8 +527,9 @@ with shared.gradio_root: ctrls += [input_image_checkbox, current_tab] ctrls += [uov_method, uov_input_image] ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image] - ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg, sampler_name] - ctrls += [scheduler_name, overwrite_step, overwrite_switch, overwrite_width, overwrite_height] + ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] + ctrls += [sampler_name, scheduler_name] + ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += ip_ctrls state_is_generating = gr.State(False) From 2ab5593d71358f167cdccffda9f2ccf6590cc1a9 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:46:47 +0100 Subject: [PATCH 15/30] feat: extract attribute overwrite_upscale_strength --- modules/advanced_parameters.py | 11 ++++------- modules/async_worker.py | 5 +++-- webui.py | 4 ++-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 57c72eaa..3e1fa6ec 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,23 +1,20 @@ -overwrite_upscale_strength, \ - mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ +mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 23 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 21 def set_all_advanced_parameters(*args): - global overwrite_upscale_strength, \ - mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ + global mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - overwrite_upscale_strength, \ - mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ + mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 656657ba..698a45ef 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -149,6 +149,7 @@ def worker(): overwrite_width = args.pop() overwrite_height = args.pop() overwrite_vary_strength = args.pop() + overwrite_upscale_strength = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -524,8 +525,8 @@ def worker(): tiled = True denoising_strength = 0.382 - if advanced_parameters.overwrite_upscale_strength > 0: - denoising_strength = advanced_parameters.overwrite_upscale_strength + if overwrite_upscale_strength > 0: + denoising_strength = overwrite_upscale_strength initial_pixels = core.numpy_to_pytorch(uov_input_image) progressbar(async_task, 13, 'VAE encoding ...') diff --git a/webui.py b/webui.py index 506bd30c..b3f3b476 100644 --- a/webui.py +++ b/webui.py @@ -446,8 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [overwrite_upscale_strength, - mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, + adps = [mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls @@ -530,6 +529,7 @@ with shared.gradio_root: ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] + ctrls += [overwrite_upscale_strength] ctrls += ip_ctrls state_is_generating = gr.State(False) From cce9871cc5bf7c8c31f70241323ec2ea988177d0 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:49:29 +0100 Subject: [PATCH 16/30] feat: extract attribute mixing_image_prompt_and_vary_upscale --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 7 ++++--- webui.py | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 3e1fa6ec..d9560f4c 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,20 +1,20 @@ -mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ +mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 21 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 20 def set_all_advanced_parameters(*args): - global mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ + global mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, \ + mixing_image_prompt_and_inpaint, \ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 698a45ef..d8ac1e6b 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -150,6 +150,7 @@ def worker(): overwrite_height = args.pop() overwrite_vary_strength = args.pop() overwrite_upscale_strength = args.pop() + mixing_image_prompt_and_vary_upscale = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -254,7 +255,7 @@ def worker(): if input_image_checkbox: if (current_tab == 'uov' or ( - current_tab == 'ip' and advanced_parameters.mixing_image_prompt_and_vary_upscale)) \ + current_tab == 'ip' and mixing_image_prompt_and_vary_upscale)) \ and uov_method != flags.disabled and uov_input_image is not None: uov_input_image = HWC3(uov_input_image) if 'vary' in uov_method: @@ -322,8 +323,8 @@ def worker(): prompt = inpaint_additional_prompt + '\n' + prompt goals.append('inpaint') if current_tab == 'ip' or \ - advanced_parameters.mixing_image_prompt_and_inpaint or \ - advanced_parameters.mixing_image_prompt_and_vary_upscale: + mixing_image_prompt_and_vary_upscale or \ + advanced_parameters.mixing_image_prompt_and_inpaint: goals.append('cn') progressbar(async_task, 1, 'Downloading control models ...') if len(cn_tasks[flags.cn_canny]) > 0: diff --git a/webui.py b/webui.py index b3f3b476..0672bd0d 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint, + adps = [ mixing_image_prompt_and_inpaint, debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls @@ -529,7 +529,7 @@ with shared.gradio_root: ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] - ctrls += [overwrite_upscale_strength] + ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale] ctrls += ip_ctrls state_is_generating = gr.State(False) From 6289e5daead55a374b8bff35e0de1f201142a9d3 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:51:12 +0100 Subject: [PATCH 17/30] feat: extract attribute mixing_image_prompt_and_inpaint --- modules/advanced_parameters.py | 11 ++++------- modules/async_worker.py | 5 +++-- webui.py | 5 ++--- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index d9560f4c..3f8d51b9 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,21 +1,18 @@ -mixing_image_prompt_and_inpaint, \ - debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ +debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 20 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 19 def set_all_advanced_parameters(*args): - global mixing_image_prompt_and_inpaint, \ - debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + global debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - mixing_image_prompt_and_inpaint, \ - debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index d8ac1e6b..c05e6fbd 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -151,6 +151,7 @@ def worker(): overwrite_vary_strength = args.pop() overwrite_upscale_strength = args.pop() mixing_image_prompt_and_vary_upscale = args.pop() + mixing_image_prompt_and_inpaint = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -279,7 +280,7 @@ def worker(): progressbar(async_task, 1, 'Downloading upscale models ...') modules.config.downloading_upscale_model() if (current_tab == 'inpaint' or ( - current_tab == 'ip' and advanced_parameters.mixing_image_prompt_and_inpaint)) \ + current_tab == 'ip' and mixing_image_prompt_and_inpaint)) \ and isinstance(inpaint_input_image, dict): inpaint_image = inpaint_input_image['image'] inpaint_mask = inpaint_input_image['mask'][:, :, 0] @@ -324,7 +325,7 @@ def worker(): goals.append('inpaint') if current_tab == 'ip' or \ mixing_image_prompt_and_vary_upscale or \ - advanced_parameters.mixing_image_prompt_and_inpaint: + mixing_image_prompt_and_inpaint: goals.append('cn') progressbar(async_task, 1, 'Downloading control models ...') if len(cn_tasks[flags.cn_canny]) > 0: diff --git a/webui.py b/webui.py index 0672bd0d..000ee9fc 100644 --- a/webui.py +++ b/webui.py @@ -446,8 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [ mixing_image_prompt_and_inpaint, - debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, + adps = [debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls adps += inpaint_ctrls @@ -529,7 +528,7 @@ with shared.gradio_root: ctrls += [disable_preview, adm_scaler_positive, adm_scaler_negative, adm_scaler_end, adaptive_cfg] ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] - ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale] + ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] ctrls += ip_ctrls state_is_generating = gr.State(False) From 0bf41591a68a03c03d01c821eea4da639ba21699 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:52:41 +0100 Subject: [PATCH 18/30] feat: extract attribute debugging_cn_preprocessor --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 9 +++++---- webui.py | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 3f8d51b9..13920c32 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,18 +1,18 @@ -debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ +skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 19 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 18 def set_all_advanced_parameters(*args): - global debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + global skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index c05e6fbd..0645210c 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -152,6 +152,7 @@ def worker(): overwrite_upscale_strength = args.pop() mixing_image_prompt_and_vary_upscale = args.pop() mixing_image_prompt_and_inpaint = args.pop() + debugging_cn_preprocessor = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -648,7 +649,7 @@ def worker(): cn_img = HWC3(cn_img) task[0] = core.numpy_to_pytorch(cn_img) - if advanced_parameters.debugging_cn_preprocessor: + if debugging_cn_preprocessor: yield_result(async_task, cn_img, do_not_show_finished_images=True) return for task in cn_tasks[flags.cn_cpds]: @@ -660,7 +661,7 @@ def worker(): cn_img = HWC3(cn_img) task[0] = core.numpy_to_pytorch(cn_img) - if advanced_parameters.debugging_cn_preprocessor: + if debugging_cn_preprocessor: yield_result(async_task, cn_img, do_not_show_finished_images=True) return for task in cn_tasks[flags.cn_ip]: @@ -671,7 +672,7 @@ def worker(): cn_img = resize_image(cn_img, width=224, height=224, resize_mode=0) task[0] = ip_adapter.preprocess(cn_img, ip_adapter_path=ip_adapter_path) - if advanced_parameters.debugging_cn_preprocessor: + if debugging_cn_preprocessor: yield_result(async_task, cn_img, do_not_show_finished_images=True) return for task in cn_tasks[flags.cn_ip_face]: @@ -685,7 +686,7 @@ def worker(): cn_img = resize_image(cn_img, width=224, height=224, resize_mode=0) task[0] = ip_adapter.preprocess(cn_img, ip_adapter_path=ip_adapter_face_path) - if advanced_parameters.debugging_cn_preprocessor: + if debugging_cn_preprocessor: yield_result(async_task, cn_img, do_not_show_finished_images=True) return diff --git a/webui.py b/webui.py index 000ee9fc..a4d6b49f 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, + adps = [skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls adps += inpaint_ctrls @@ -529,6 +529,7 @@ with shared.gradio_root: ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] + ctrls += [debugging_cn_preprocessor] ctrls += ip_ctrls state_is_generating = gr.State(False) From 9f194a91fae3522854a6945f3a6093b5af428f67 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 18:54:01 +0100 Subject: [PATCH 19/30] feat: extract attribute skipping_cn_preprocessor --- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 7 ++++--- webui.py | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 13920c32..134eeba4 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,18 +1,18 @@ -skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ +controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 18 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 17 def set_all_advanced_parameters(*args): - global skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + global controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold, \ + controlnet_softness, canny_low_threshold, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 0645210c..53fda5ac 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -153,6 +153,7 @@ def worker(): mixing_image_prompt_and_vary_upscale = args.pop() mixing_image_prompt_and_inpaint = args.pop() debugging_cn_preprocessor = args.pop() + skipping_cn_preprocessor = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -644,7 +645,7 @@ def worker(): cn_img, cn_stop, cn_weight = task cn_img = resize_image(HWC3(cn_img), width=width, height=height) - if not advanced_parameters.skipping_cn_preprocessor: + if not skipping_cn_preprocessor: cn_img = preprocessors.canny_pyramid(cn_img) cn_img = HWC3(cn_img) @@ -656,7 +657,7 @@ def worker(): cn_img, cn_stop, cn_weight = task cn_img = resize_image(HWC3(cn_img), width=width, height=height) - if not advanced_parameters.skipping_cn_preprocessor: + if not skipping_cn_preprocessor: cn_img = preprocessors.cpds(cn_img) cn_img = HWC3(cn_img) @@ -679,7 +680,7 @@ def worker(): cn_img, cn_stop, cn_weight = task cn_img = HWC3(cn_img) - if not advanced_parameters.skipping_cn_preprocessor: + if not skipping_cn_preprocessor: cn_img = extras.face_crop.crop_image(cn_img) # https://github.com/tencent-ailab/IP-Adapter/blob/d580c50a291566bbf9fc7ac0f760506607297e6d/README.md?plain=1#L75 diff --git a/webui.py b/webui.py index a4d6b49f..8b940ceb 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [skipping_cn_preprocessor, controlnet_softness, + adps = [controlnet_softness, canny_low_threshold, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls adps += inpaint_ctrls @@ -529,7 +529,7 @@ with shared.gradio_root: ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] - ctrls += [debugging_cn_preprocessor] + ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor] ctrls += ip_ctrls state_is_generating = gr.State(False) From ec486443ea83bedbaf5aabc0037f7a4948961153 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:06:10 +0100 Subject: [PATCH 20/30] feat: extract attribute canny_low_threshold --- extras/preprocessors.py | 16 ++++++++-------- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 3 ++- webui.py | 5 ++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/extras/preprocessors.py b/extras/preprocessors.py index 798fe15d..05f7c2fd 100644 --- a/extras/preprocessors.py +++ b/extras/preprocessors.py @@ -3,25 +3,25 @@ import numpy as np import modules.advanced_parameters as advanced_parameters -def centered_canny(x: np.ndarray): +def centered_canny(x: np.ndarray, canny_low_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 2 and x.dtype == np.uint8 - y = cv2.Canny(x, int(advanced_parameters.canny_low_threshold), int(advanced_parameters.canny_high_threshold)) + y = cv2.Canny(x, int(canny_low_threshold), int(advanced_parameters.canny_high_threshold)) y = y.astype(np.float32) / 255.0 return y -def centered_canny_color(x: np.ndarray): +def centered_canny_color(x: np.ndarray, canny_low_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 3 and x.shape[2] == 3 - result = [centered_canny(x[..., i]) for i in range(3)] + result = [centered_canny(x[..., i], canny_low_threshold) for i in range(3)] result = np.stack(result, axis=2) return result -def pyramid_canny_color(x: np.ndarray): +def pyramid_canny_color(x: np.ndarray, canny_low_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 3 and x.shape[2] == 3 @@ -31,7 +31,7 @@ def pyramid_canny_color(x: np.ndarray): for k in [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: Hs, Ws = int(H * k), int(W * k) small = cv2.resize(x, (Ws, Hs), interpolation=cv2.INTER_AREA) - edge = centered_canny_color(small) + edge = centered_canny_color(small, canny_low_threshold) if acc_edge is None: acc_edge = edge else: @@ -54,11 +54,11 @@ def norm255(x, low=4, high=96): return x * 255.0 -def canny_pyramid(x): +def canny_pyramid(x, canny_low_threshold): # For some reasons, SAI's Control-lora Canny seems to be trained on canny maps with non-standard resolutions. # Then we use pyramid to use all resolutions to avoid missing any structure in specific resolutions. - color_canny = pyramid_canny_color(x) + color_canny = pyramid_canny_color(x, canny_low_threshold) result = np.sum(color_canny, axis=2) return norm255(result, low=1, high=99).clip(0, 255).astype(np.uint8) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 134eeba4..3614c9fe 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,18 +1,18 @@ -controlnet_softness, canny_low_threshold, canny_high_threshold, \ +controlnet_softness, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 17 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 16 def set_all_advanced_parameters(*args): - global controlnet_softness, canny_low_threshold, canny_high_threshold, \ + global controlnet_softness, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - controlnet_softness, canny_low_threshold, canny_high_threshold, \ + controlnet_softness, canny_high_threshold, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 53fda5ac..13b63bf4 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -154,6 +154,7 @@ def worker(): mixing_image_prompt_and_inpaint = args.pop() debugging_cn_preprocessor = args.pop() skipping_cn_preprocessor = args.pop() + canny_low_threshold = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -646,7 +647,7 @@ def worker(): cn_img = resize_image(HWC3(cn_img), width=width, height=height) if not skipping_cn_preprocessor: - cn_img = preprocessors.canny_pyramid(cn_img) + cn_img = preprocessors.canny_pyramid(cn_img, canny_low_threshold) cn_img = HWC3(cn_img) task[0] = core.numpy_to_pytorch(cn_img) diff --git a/webui.py b/webui.py index 8b940ceb..be0dda86 100644 --- a/webui.py +++ b/webui.py @@ -446,8 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [controlnet_softness, - canny_low_threshold, canny_high_threshold, refiner_swap_method] + adps = [controlnet_softness, canny_high_threshold, refiner_swap_method] adps += freeu_ctrls adps += inpaint_ctrls @@ -529,7 +528,7 @@ with shared.gradio_root: ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] - ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor] + ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold] ctrls += ip_ctrls state_is_generating = gr.State(False) From 2d8ca41ce53de3950e2b3494634b4743c0c723b4 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:08:54 +0100 Subject: [PATCH 21/30] feat: extract attribute canny_high_threshold --- extras/preprocessors.py | 16 ++++++++-------- modules/advanced_parameters.py | 8 ++++---- modules/async_worker.py | 3 ++- webui.py | 4 ++-- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/extras/preprocessors.py b/extras/preprocessors.py index 05f7c2fd..7720c085 100644 --- a/extras/preprocessors.py +++ b/extras/preprocessors.py @@ -3,25 +3,25 @@ import numpy as np import modules.advanced_parameters as advanced_parameters -def centered_canny(x: np.ndarray, canny_low_threshold): +def centered_canny(x: np.ndarray, canny_low_threshold, canny_high_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 2 and x.dtype == np.uint8 - y = cv2.Canny(x, int(canny_low_threshold), int(advanced_parameters.canny_high_threshold)) + y = cv2.Canny(x, int(canny_low_threshold), int(canny_high_threshold)) y = y.astype(np.float32) / 255.0 return y -def centered_canny_color(x: np.ndarray, canny_low_threshold): +def centered_canny_color(x: np.ndarray, canny_low_threshold, canny_high_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 3 and x.shape[2] == 3 - result = [centered_canny(x[..., i], canny_low_threshold) for i in range(3)] + result = [centered_canny(x[..., i], canny_low_threshold, canny_high_threshold) for i in range(3)] result = np.stack(result, axis=2) return result -def pyramid_canny_color(x: np.ndarray, canny_low_threshold): +def pyramid_canny_color(x: np.ndarray, canny_low_threshold, canny_high_threshold): assert isinstance(x, np.ndarray) assert x.ndim == 3 and x.shape[2] == 3 @@ -31,7 +31,7 @@ def pyramid_canny_color(x: np.ndarray, canny_low_threshold): for k in [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: Hs, Ws = int(H * k), int(W * k) small = cv2.resize(x, (Ws, Hs), interpolation=cv2.INTER_AREA) - edge = centered_canny_color(small, canny_low_threshold) + edge = centered_canny_color(small, canny_low_threshold, canny_high_threshold) if acc_edge is None: acc_edge = edge else: @@ -54,11 +54,11 @@ def norm255(x, low=4, high=96): return x * 255.0 -def canny_pyramid(x, canny_low_threshold): +def canny_pyramid(x, canny_low_threshold, canny_high_threshold): # For some reasons, SAI's Control-lora Canny seems to be trained on canny maps with non-standard resolutions. # Then we use pyramid to use all resolutions to avoid missing any structure in specific resolutions. - color_canny = pyramid_canny_color(x, canny_low_threshold) + color_canny = pyramid_canny_color(x, canny_low_threshold, canny_high_threshold) result = np.sum(color_canny, axis=2) return norm255(result, low=1, high=99).clip(0, 255).astype(np.uint8) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 3614c9fe..f512afc3 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,18 +1,18 @@ -controlnet_softness, canny_high_threshold, \ +controlnet_softness, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 16 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 15 def set_all_advanced_parameters(*args): - global controlnet_softness, canny_high_threshold, \ + global controlnet_softness, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate - controlnet_softness, canny_high_threshold, \ + controlnet_softness, \ refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ diff --git a/modules/async_worker.py b/modules/async_worker.py index 13b63bf4..192c44e7 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -155,6 +155,7 @@ def worker(): debugging_cn_preprocessor = args.pop() skipping_cn_preprocessor = args.pop() canny_low_threshold = args.pop() + canny_high_threshold = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -647,7 +648,7 @@ def worker(): cn_img = resize_image(HWC3(cn_img), width=width, height=height) if not skipping_cn_preprocessor: - cn_img = preprocessors.canny_pyramid(cn_img, canny_low_threshold) + cn_img = preprocessors.canny_pyramid(cn_img, canny_low_threshold, canny_high_threshold) cn_img = HWC3(cn_img) task[0] = core.numpy_to_pytorch(cn_img) diff --git a/webui.py b/webui.py index be0dda86..790b2d41 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [controlnet_softness, canny_high_threshold, refiner_swap_method] + adps = [controlnet_softness, refiner_swap_method] adps += freeu_ctrls adps += inpaint_ctrls @@ -528,7 +528,7 @@ with shared.gradio_root: ctrls += [sampler_name, scheduler_name] ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] - ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold] + ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold, canny_high_threshold] ctrls += ip_ctrls state_is_generating = gr.State(False) From cfb70c0278ec3d2d334cf76321f2b3fc2795f4a5 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:10:32 +0100 Subject: [PATCH 22/30] feat: extract attribute refiner_swap_method --- modules/advanced_parameters.py | 5 +---- modules/async_worker.py | 2 +- webui.py | 3 ++- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index f512afc3..bc5c0bd5 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,19 +1,16 @@ controlnet_softness, \ - refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 15 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 14 def set_all_advanced_parameters(*args): global controlnet_softness, \ - refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate controlnet_softness, \ - refiner_swap_method, \ freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = args diff --git a/modules/async_worker.py b/modules/async_worker.py index 192c44e7..301918c2 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -156,6 +156,7 @@ def worker(): skipping_cn_preprocessor = args.pop() canny_low_threshold = args.pop() canny_high_threshold = args.pop() + refiner_swap_method = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -238,7 +239,6 @@ def worker(): width, height = int(width), int(height) skip_prompt_processing = False - refiner_swap_method = advanced_parameters.refiner_swap_method inpaint_worker.current_task = None inpaint_parameterized = advanced_parameters.inpaint_engine != 'None' diff --git a/webui.py b/webui.py index 790b2d41..c26dcb5b 100644 --- a/webui.py +++ b/webui.py @@ -446,7 +446,7 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [controlnet_softness, refiner_swap_method] + adps = [controlnet_softness] adps += freeu_ctrls adps += inpaint_ctrls @@ -529,6 +529,7 @@ with shared.gradio_root: ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold, canny_high_threshold] + ctrls += [refiner_swap_method] ctrls += ip_ctrls state_is_generating = gr.State(False) From eb1d3938fe5774f4ada7e9d6738a7836a8880a70 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:14:42 +0100 Subject: [PATCH 23/30] feat: extract freeu_ctrls attributes freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2 --- modules/advanced_parameters.py | 5 +---- modules/async_worker.py | 15 ++++++++++----- webui.py | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index bc5c0bd5..141546b4 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,17 +1,14 @@ controlnet_softness, \ - freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 14 + inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 9 def set_all_advanced_parameters(*args): global controlnet_softness, \ - freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate controlnet_softness, \ - freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2, \ debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = args diff --git a/modules/async_worker.py b/modules/async_worker.py index 301918c2..22c33c74 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -157,6 +157,11 @@ def worker(): canny_low_threshold = args.pop() canny_high_threshold = args.pop() refiner_swap_method = args.pop() + freeu_enabled = args.pop() + freeu_b1 = args.pop() + freeu_b2 = args.pop() + freeu_s1 = args.pop() + freeu_s2 = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -698,14 +703,14 @@ def worker(): if len(all_ip_tasks) > 0: pipeline.final_unet = ip_adapter.patch_model(pipeline.final_unet, all_ip_tasks) - if advanced_parameters.freeu_enabled: + if freeu_enabled: print(f'FreeU is enabled!') pipeline.final_unet = core.apply_freeu( pipeline.final_unet, - advanced_parameters.freeu_b1, - advanced_parameters.freeu_b2, - advanced_parameters.freeu_s1, - advanced_parameters.freeu_s2 + freeu_b1, + freeu_b2, + freeu_s1, + freeu_s2 ) all_steps = steps * image_number diff --git a/webui.py b/webui.py index c26dcb5b..75bc7ceb 100644 --- a/webui.py +++ b/webui.py @@ -447,7 +447,6 @@ with shared.gradio_root: freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] adps = [controlnet_softness] - adps += freeu_ctrls adps += inpaint_ctrls def dev_mode_checked(r): @@ -530,6 +529,7 @@ with shared.gradio_root: ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold, canny_high_threshold] ctrls += [refiner_swap_method] + ctrls += freeu_ctrls ctrls += ip_ctrls state_is_generating = gr.State(False) From 4ce27aeb0fbf257a119359dee481fd8a223d61bb Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:20:04 +0100 Subject: [PATCH 24/30] feat: extract inpaint_ctrls attributes debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate --- modules/advanced_parameters.py | 12 +++--------- modules/async_worker.py | 32 ++++++++++++++++++++------------ webui.py | 2 +- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index 141546b4..a9cd1f31 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,15 +1,9 @@ -controlnet_softness, \ - debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = [None] * 9 +controlnet_softness, = [None] def set_all_advanced_parameters(*args): - global controlnet_softness, \ - debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate + global controlnet_softness - controlnet_softness, \ - debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine, inpaint_strength, inpaint_respective_field, \ - inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate = args + controlnet_softness = args return diff --git a/modules/async_worker.py b/modules/async_worker.py index 22c33c74..0af88794 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -162,6 +162,14 @@ def worker(): freeu_b2 = args.pop() freeu_s1 = args.pop() freeu_s2 = args.pop() + debugging_inpaint_preprocessor = args.pop() + inpaint_disable_initial_latent = args.pop() + inpaint_engine = args.pop() + inpaint_strength = args.pop() + inpaint_respective_field = args.pop() + inpaint_mask_upload_checkbox = args.pop() + invert_mask_checkbox = args.pop() + inpaint_erode_or_dilate = args.pop() cn_tasks = {x: [] for x in flags.ip_list} for _ in range(4): @@ -246,7 +254,7 @@ def worker(): skip_prompt_processing = False inpaint_worker.current_task = None - inpaint_parameterized = advanced_parameters.inpaint_engine != 'None' + inpaint_parameterized = inpaint_engine != 'None' inpaint_image = None inpaint_mask = None inpaint_head_model_path = None @@ -294,7 +302,7 @@ def worker(): inpaint_image = inpaint_input_image['image'] inpaint_mask = inpaint_input_image['mask'][:, :, 0] - if advanced_parameters.inpaint_mask_upload_checkbox: + if inpaint_mask_upload_checkbox: if isinstance(inpaint_mask_image_upload, np.ndarray): if inpaint_mask_image_upload.ndim == 3: H, W, C = inpaint_image.shape @@ -303,10 +311,10 @@ def worker(): inpaint_mask_image_upload = (inpaint_mask_image_upload > 127).astype(np.uint8) * 255 inpaint_mask = np.maximum(inpaint_mask, inpaint_mask_image_upload) - if int(advanced_parameters.inpaint_erode_or_dilate) != 0: - inpaint_mask = erode_or_dilate(inpaint_mask, advanced_parameters.inpaint_erode_or_dilate) + if int(inpaint_erode_or_dilate) != 0: + inpaint_mask = erode_or_dilate(inpaint_mask, inpaint_erode_or_dilate) - if advanced_parameters.invert_mask_checkbox: + if invert_mask_checkbox: inpaint_mask = 255 - inpaint_mask inpaint_image = HWC3(inpaint_image) @@ -317,7 +325,7 @@ def worker(): if inpaint_parameterized: progressbar(async_task, 1, 'Downloading inpainter ...') inpaint_head_model_path, inpaint_patch_model_path = modules.config.downloading_inpaint_models( - advanced_parameters.inpaint_engine) + inpaint_engine) base_model_additional_loras += [(inpaint_patch_model_path, 1.0)] print(f'[Inpaint] Current inpaint model is {inpaint_patch_model_path}') if refiner_model_name == 'None': @@ -581,19 +589,19 @@ def worker(): inpaint_image = np.ascontiguousarray(inpaint_image.copy()) inpaint_mask = np.ascontiguousarray(inpaint_mask.copy()) - advanced_parameters.inpaint_strength = 1.0 - advanced_parameters.inpaint_respective_field = 1.0 + inpaint_strength = 1.0 + inpaint_respective_field = 1.0 - denoising_strength = advanced_parameters.inpaint_strength + denoising_strength = inpaint_strength inpaint_worker.current_task = inpaint_worker.InpaintWorker( image=inpaint_image, mask=inpaint_mask, use_fill=denoising_strength > 0.99, - k=advanced_parameters.inpaint_respective_field + k=inpaint_respective_field ) - if advanced_parameters.debugging_inpaint_preprocessor: + if debugging_inpaint_preprocessor: yield_result(async_task, inpaint_worker.current_task.visualize_mask_processing(), do_not_show_finished_images=True) return @@ -639,7 +647,7 @@ def worker(): model=pipeline.final_unet ) - if not advanced_parameters.inpaint_disable_initial_latent: + if not inpaint_disable_initial_latent: initial_latent = {'samples': latent_fill} B, C, H, W = latent_fill.shape diff --git a/webui.py b/webui.py index 75bc7ceb..ddab05f2 100644 --- a/webui.py +++ b/webui.py @@ -447,7 +447,6 @@ with shared.gradio_root: freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] adps = [controlnet_softness] - adps += inpaint_ctrls def dev_mode_checked(r): return gr.update(visible=r) @@ -530,6 +529,7 @@ with shared.gradio_root: ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold, canny_high_threshold] ctrls += [refiner_swap_method] ctrls += freeu_ctrls + ctrls += inpaint_ctrls ctrls += ip_ctrls state_is_generating = gr.State(False) From 18446dc3a5c96c5252270b760a5a7eb4f42d306f Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:23:22 +0100 Subject: [PATCH 25/30] wip: add TODOs --- modules/patch.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/patch.py b/modules/patch.py index 2e2409c5..84f82950 100644 --- a/modules/patch.py +++ b/modules/patch.py @@ -28,6 +28,8 @@ from ldm_patched.ldm.modules.diffusionmodules.openaimodel import forward_timeste from modules.patch_precision import patch_all_precision from modules.patch_clip import patch_all_clip +# TODO make these parameters dynamic: +# TODO sharpness, adm_scaler_end, positive_adm_scale, negative_adm_scale, adaptive_cfg + controlnet_softness sharpness = 2.0 From 78d2ec8d778356b1a4178333e3f330c067fdc9bf Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 19:52:25 +0100 Subject: [PATCH 26/30] chore: cleanup code --- modules/advanced_parameters.py | 4 +--- modules/async_worker.py | 13 ++++++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py index a9cd1f31..bbd00b22 100644 --- a/modules/advanced_parameters.py +++ b/modules/advanced_parameters.py @@ -1,9 +1,7 @@ -controlnet_softness, = [None] +controlnet_softness = None def set_all_advanced_parameters(*args): global controlnet_softness controlnet_softness = args - - return diff --git a/modules/async_worker.py b/modules/async_worker.py index 0af88794..ece207d8 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -31,7 +31,6 @@ def worker(): import extras.preprocessors as preprocessors import modules.inpaint_worker as inpaint_worker import modules.constants as constants - import modules.advanced_parameters as advanced_parameters import extras.ip_adapter as ip_adapter import extras.face_crop import fooocus_version @@ -218,13 +217,13 @@ def worker(): refiner_model_name = 'None' sampler_name = 'lcm' scheduler_name = 'lcm' - modules.patch.sharpness = sharpness = 0.0 - cfg_scale = guidance_scale = 1.0 - modules.patch.adaptive_cfg = adaptive_cfg = 1.0 + sharpness = 0.0 + guidance_scale = 1.0 + adaptive_cfg = 1.0 refiner_switch = 1.0 - modules.patch.positive_adm_scale = adm_scaler_positive = 1.0 - modules.patch.negative_adm_scale = adm_scaler_negative = 1.0 - modules.patch.adm_scaler_end = adm_scaler_end = 0.0 + adm_scaler_positive = 1.0 + adm_scaler_negative = 1.0 + adm_scaler_end = 0.0 steps = 8 modules.patch.adaptive_cfg = adaptive_cfg From f3222b0f274bf8296a6f74e1e2e5b87198e51ac3 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 20:09:24 +0100 Subject: [PATCH 27/30] feat: extract attribute controlnet_softness --- extras/preprocessors.py | 1 - modules/advanced_parameters.py | 7 ------- modules/async_worker.py | 4 ++++ modules/core.py | 1 - modules/patch.py | 8 ++++---- webui.py | 6 +----- 6 files changed, 9 insertions(+), 18 deletions(-) delete mode 100644 modules/advanced_parameters.py diff --git a/extras/preprocessors.py b/extras/preprocessors.py index 7720c085..0aa83109 100644 --- a/extras/preprocessors.py +++ b/extras/preprocessors.py @@ -1,6 +1,5 @@ import cv2 import numpy as np -import modules.advanced_parameters as advanced_parameters def centered_canny(x: np.ndarray, canny_low_threshold, canny_high_threshold): diff --git a/modules/advanced_parameters.py b/modules/advanced_parameters.py deleted file mode 100644 index bbd00b22..00000000 --- a/modules/advanced_parameters.py +++ /dev/null @@ -1,7 +0,0 @@ -controlnet_softness = None - - -def set_all_advanced_parameters(*args): - global controlnet_softness - - controlnet_softness = args diff --git a/modules/async_worker.py b/modules/async_worker.py index ece207d8..9b198442 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -156,6 +156,7 @@ def worker(): canny_low_threshold = args.pop() canny_high_threshold = args.pop() refiner_swap_method = args.pop() + controlnet_softness = args.pop() freeu_enabled = args.pop() freeu_b1 = args.pop() freeu_b2 = args.pop() @@ -232,6 +233,9 @@ def worker(): modules.patch.sharpness = sharpness print(f'[Parameters] Sharpness = {modules.patch.sharpness}') + modules.patch.controlnet_softness = controlnet_softness + print(f'[Parameters] ControlNet Softness = {modules.patch.controlnet_softness}') + modules.patch.positive_adm_scale = adm_scaler_positive modules.patch.negative_adm_scale = adm_scaler_negative modules.patch.adm_scaler_end = adm_scaler_end diff --git a/modules/core.py b/modules/core.py index 2d325559..957a9152 100644 --- a/modules/core.py +++ b/modules/core.py @@ -16,7 +16,6 @@ import ldm_patched.modules.controlnet import modules.sample_hijack import ldm_patched.modules.samplers import ldm_patched.modules.latent_formats -import modules.advanced_parameters from ldm_patched.modules.sd import load_checkpoint_guess_config from ldm_patched.contrib.external import VAEDecode, EmptyLatentImage, VAEEncode, VAEEncodeTiled, VAEDecodeTiled, \ diff --git a/modules/patch.py b/modules/patch.py index 84f82950..2d5ebb51 100644 --- a/modules/patch.py +++ b/modules/patch.py @@ -17,7 +17,6 @@ import ldm_patched.controlnet.cldm import ldm_patched.modules.model_patcher import ldm_patched.modules.samplers import ldm_patched.modules.args_parser -import modules.advanced_parameters as advanced_parameters import warnings import safetensors.torch import modules.constants as constants @@ -37,11 +36,12 @@ adm_scaler_end = 0.3 positive_adm_scale = 1.5 negative_adm_scale = 0.8 +controlnet_softness = 0.25 + adaptive_cfg = 7.0 global_diffusion_progress = 0 eps_record = None - def calculate_weight_patched(self, patches, weight, key): for p in patches: alpha = p[0] @@ -359,10 +359,10 @@ def patched_cldm_forward(self, x, hint, timesteps, context, y=None, **kwargs): h = self.middle_block(h, emb, context) outs.append(self.middle_block_out(h, emb, context)) - if advanced_parameters.controlnet_softness > 0: + if controlnet_softness > 0: for i in range(10): k = 1.0 - float(i) / 9.0 - outs[i] = outs[i] * (1.0 - advanced_parameters.controlnet_softness * k) + outs[i] = outs[i] * (1.0 - controlnet_softness * k) return outs diff --git a/webui.py b/webui.py index ddab05f2..aa4a58dc 100644 --- a/webui.py +++ b/webui.py @@ -11,7 +11,6 @@ import modules.async_worker as worker import modules.constants as constants import modules.flags as flags import modules.gradio_hijack as grh -import modules.advanced_parameters as advanced_parameters import modules.style_sorter as style_sorter import modules.meta_parser import args_manager @@ -446,8 +445,6 @@ with shared.gradio_root: freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95) freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2] - adps = [controlnet_softness] - def dev_mode_checked(r): return gr.update(visible=r) @@ -527,7 +524,7 @@ with shared.gradio_root: ctrls += [overwrite_step, overwrite_switch, overwrite_width, overwrite_height, overwrite_vary_strength] ctrls += [overwrite_upscale_strength, mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint] ctrls += [debugging_cn_preprocessor, skipping_cn_preprocessor, canny_low_threshold, canny_high_threshold] - ctrls += [refiner_swap_method] + ctrls += [refiner_swap_method, controlnet_softness] ctrls += freeu_ctrls ctrls += inpaint_ctrls ctrls += ip_ctrls @@ -584,7 +581,6 @@ with shared.gradio_root: generate_button.click(lambda: (gr.update(visible=True, interactive=True), gr.update(visible=True, interactive=True), gr.update(visible=False, interactive=False), [], True), outputs=[stop_button, skip_button, generate_button, gallery, state_is_generating]) \ .then(fn=refresh_seed, inputs=[seed_random, image_seed], outputs=image_seed) \ - .then(advanced_parameters.set_all_advanced_parameters, inputs=adps) \ .then(fn=generate_clicked, inputs=ctrls, outputs=[progress_html, progress_window, progress_gallery, gallery]) \ .then(lambda: (gr.update(visible=True, interactive=True), gr.update(visible=False, interactive=False), gr.update(visible=False, interactive=False), False), outputs=[generate_button, stop_button, skip_button, state_is_generating]) \ From 177075ff7bc43ac392edc3e7826d8e238fdd471b Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 21:13:44 +0100 Subject: [PATCH 28/30] feat: extract remaining attributes, do not use globals in patch --- modules/async_worker.py | 45 ++++++++++++++---------- modules/default_pipeline.py | 6 ++-- modules/patch.py | 69 ++++++++++++++++++------------------- 3 files changed, 63 insertions(+), 57 deletions(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index 9b198442..790ec118 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -1,5 +1,6 @@ import threading - +import os +from modules.patch import PatchSettings, patch_settings class AsyncTask: def __init__(self, args): @@ -42,6 +43,9 @@ def worker(): get_image_shape_ceil, set_image_shape_ceil, get_shape_ceil, resample_image, erode_or_dilate from modules.upscaler import perform_upscale + pid = os.getpid() + print(f'Started worker with PID {pid}') + try: async_gradio_app = shared.gradio_root flag = f'''App started successful. Use the app with {str(async_gradio_app.local_url)} or {str(async_gradio_app.server_name)}:{str(async_gradio_app.server_port)}''' @@ -227,22 +231,22 @@ def worker(): adm_scaler_end = 0.0 steps = 8 - modules.patch.adaptive_cfg = adaptive_cfg - print(f'[Parameters] Adaptive CFG = {modules.patch.adaptive_cfg}') - - modules.patch.sharpness = sharpness - print(f'[Parameters] Sharpness = {modules.patch.sharpness}') - - modules.patch.controlnet_softness = controlnet_softness - print(f'[Parameters] ControlNet Softness = {modules.patch.controlnet_softness}') - - modules.patch.positive_adm_scale = adm_scaler_positive - modules.patch.negative_adm_scale = adm_scaler_negative - modules.patch.adm_scaler_end = adm_scaler_end + print(f'[Parameters] Adaptive CFG = {adaptive_cfg}') + print(f'[Parameters] Sharpness = {sharpness}') + print(f'[Parameters] ControlNet Softness = {controlnet_softness}') print(f'[Parameters] ADM Scale = ' - f'{modules.patch.positive_adm_scale} : ' - f'{modules.patch.negative_adm_scale} : ' - f'{modules.patch.adm_scaler_end}') + f'{adm_scaler_positive} : ' + f'{adm_scaler_negative} : ' + f'{adm_scaler_end}') + + patch_settings[pid] = PatchSettings( + sharpness, + adm_scaler_end, + adm_scaler_positive, + adm_scaler_negative, + controlnet_softness, + adaptive_cfg + ) cfg_scale = float(guidance_scale) print(f'[Parameters] CFG = {cfg_scale}') @@ -815,9 +819,9 @@ def worker(): ('Sharpness', sharpness), ('Guidance Scale', guidance_scale), ('ADM Guidance', str(( - modules.patch.positive_adm_scale, - modules.patch.negative_adm_scale, - modules.patch.adm_scaler_end))), + modules.patch.patch_settings[pid].positive_adm_scale, + modules.patch.patch_settings[pid].negative_adm_scale, + modules.patch.patch_settings[pid].adm_scaler_end))), ('Base Model', base_model_name), ('Refiner Model', refiner_model_name), ('Refiner Switch', refiner_switch), @@ -860,6 +864,9 @@ def worker(): except: traceback.print_exc() task.yields.append(['finish', task.results]) + finally: + if pid in modules.patch.patch_settings: + del modules.patch.patch_settings[os.getpid()] pass diff --git a/modules/default_pipeline.py b/modules/default_pipeline.py index 5f66a36e..2f45667c 100644 --- a/modules/default_pipeline.py +++ b/modules/default_pipeline.py @@ -425,7 +425,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height decoded_latent = core.decode_vae(vae=target_model, latent_image=sampled_latent, tiled=tiled) if refiner_swap_method == 'vae': - modules.patch.eps_record = 'vae' + modules.patch.patch_settings[os.getpid()].eps_record = 'vae' if modules.inpaint_worker.current_task is not None: modules.inpaint_worker.current_task.unswap() @@ -463,7 +463,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height denoise=denoise)[switch:] * k_sigmas len_sigmas = len(sigmas) - 1 - noise_mean = torch.mean(modules.patch.eps_record, dim=1, keepdim=True) + noise_mean = torch.mean(modules.patch.patch_settings[os.getpid()].eps_record, dim=1, keepdim=True) if modules.inpaint_worker.current_task is not None: modules.inpaint_worker.current_task.swap() @@ -493,5 +493,5 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height decoded_latent = core.decode_vae(vae=target_model, latent_image=sampled_latent, tiled=tiled) images = core.pytorch_to_numpy(decoded_latent) - modules.patch.eps_record = None + modules.patch.patch_settings[os.getpid()].eps_record = None return images diff --git a/modules/patch.py b/modules/patch.py index 2d5ebb51..100613a8 100644 --- a/modules/patch.py +++ b/modules/patch.py @@ -27,20 +27,27 @@ from ldm_patched.ldm.modules.diffusionmodules.openaimodel import forward_timeste from modules.patch_precision import patch_all_precision from modules.patch_clip import patch_all_clip -# TODO make these parameters dynamic: -# TODO sharpness, adm_scaler_end, positive_adm_scale, negative_adm_scale, adaptive_cfg + controlnet_softness -sharpness = 2.0 +class PatchSettings: + def __init__(self, + sharpness=2.0, + adm_scaler_end=0.3, + positive_adm_scale=1.5, + negative_adm_scale=0.8, + controlnet_softness=0.25, + adaptive_cfg=7.0): + self.sharpness = sharpness + self.adm_scaler_end = adm_scaler_end + self.positive_adm_scale = positive_adm_scale + self.negative_adm_scale = negative_adm_scale + self.controlnet_softness = controlnet_softness + self.adaptive_cfg = adaptive_cfg + self.global_diffusion_progress = 0 + self.eps_record = None -adm_scaler_end = 0.3 -positive_adm_scale = 1.5 -negative_adm_scale = 0.8 -controlnet_softness = 0.25 +patch_settings = {} -adaptive_cfg = 7.0 -global_diffusion_progress = 0 -eps_record = None def calculate_weight_patched(self, patches, weight, key): for p in patches: @@ -203,14 +210,12 @@ class BrownianTreeNoiseSamplerPatched: def compute_cfg(uncond, cond, cfg_scale, t): - global adaptive_cfg - - mimic_cfg = float(adaptive_cfg) + mimic_cfg = float(patch_settings[os.getpid()].adaptive_cfg) real_cfg = float(cfg_scale) real_eps = uncond + real_cfg * (cond - uncond) - if cfg_scale > adaptive_cfg: + if cfg_scale > patch_settings[os.getpid()].adaptive_cfg: mimicked_eps = uncond + mimic_cfg * (cond - uncond) return real_eps * t + mimicked_eps * (1 - t) else: @@ -218,13 +223,11 @@ def compute_cfg(uncond, cond, cfg_scale, t): def patched_sampling_function(model, x, timestep, uncond, cond, cond_scale, model_options=None, seed=None): - global eps_record - if math.isclose(cond_scale, 1.0) and not model_options.get("disable_cfg1_optimization", False): final_x0 = calc_cond_uncond_batch(model, cond, None, x, timestep, model_options)[0] - if eps_record is not None: - eps_record = ((x - final_x0) / timestep).cpu() + if patch_settings[os.getpid()].eps_record is not None: + patch_settings[os.getpid()].eps_record = ((x - final_x0) / timestep).cpu() return final_x0 @@ -233,16 +236,16 @@ def patched_sampling_function(model, x, timestep, uncond, cond, cond_scale, mode positive_eps = x - positive_x0 negative_eps = x - negative_x0 - alpha = 0.001 * sharpness * global_diffusion_progress + alpha = 0.001 * patch_settings[os.getpid()].sharpness * patch_settings[os.getpid()].global_diffusion_progress positive_eps_degraded = anisotropic.adaptive_anisotropic_filter(x=positive_eps, g=positive_x0) positive_eps_degraded_weighted = positive_eps_degraded * alpha + positive_eps * (1.0 - alpha) final_eps = compute_cfg(uncond=negative_eps, cond=positive_eps_degraded_weighted, - cfg_scale=cond_scale, t=global_diffusion_progress) + cfg_scale=cond_scale, t=patch_settings[os.getpid()].global_diffusion_progress) - if eps_record is not None: - eps_record = (final_eps / timestep).cpu() + if patch_settings[os.getpid()].eps_record is not None: + patch_settings[os.getpid()].eps_record = (final_eps / timestep).cpu() return x - final_eps @@ -257,8 +260,6 @@ def round_to_64(x): def sdxl_encode_adm_patched(self, **kwargs): - global positive_adm_scale, negative_adm_scale - clip_pooled = ldm_patched.modules.model_base.sdxl_pooled(kwargs, self.noise_augmentor) width = kwargs.get("width", 1024) height = kwargs.get("height", 1024) @@ -266,11 +267,11 @@ def sdxl_encode_adm_patched(self, **kwargs): target_height = height if kwargs.get("prompt_type", "") == "negative": - width = float(width) * negative_adm_scale - height = float(height) * negative_adm_scale + width = float(width) * patch_settings[os.getpid()].negative_adm_scale + height = float(height) * patch_settings[os.getpid()].negative_adm_scale elif kwargs.get("prompt_type", "") == "positive": - width = float(width) * positive_adm_scale - height = float(height) * positive_adm_scale + width = float(width) * patch_settings[os.getpid()].positive_adm_scale + height = float(height) * patch_settings[os.getpid()].positive_adm_scale def embedder(number_list): h = self.embedder(torch.tensor(number_list, dtype=torch.float32)) @@ -324,7 +325,7 @@ def patched_KSamplerX0Inpaint_forward(self, x, sigma, uncond, cond, cond_scale, def timed_adm(y, timesteps): if isinstance(y, torch.Tensor) and int(y.dim()) == 2 and int(y.shape[1]) == 5632: - y_mask = (timesteps > 999.0 * (1.0 - float(adm_scaler_end))).to(y)[..., None] + y_mask = (timesteps > 999.0 * (1.0 - float(patch_settings[os.getpid()].adm_scaler_end))).to(y)[..., None] y_with_adm = y[..., :2816].clone() y_without_adm = y[..., 2816:].clone() return y_with_adm * y_mask + y_without_adm * (1.0 - y_mask) @@ -359,19 +360,17 @@ def patched_cldm_forward(self, x, hint, timesteps, context, y=None, **kwargs): h = self.middle_block(h, emb, context) outs.append(self.middle_block_out(h, emb, context)) - if controlnet_softness > 0: + if patch_settings[os.getpid()].controlnet_softness > 0: for i in range(10): k = 1.0 - float(i) / 9.0 - outs[i] = outs[i] * (1.0 - controlnet_softness * k) + outs[i] = outs[i] * (1.0 - patch_settings[os.getpid()].controlnet_softness * k) return outs def patched_unet_forward(self, x, timesteps=None, context=None, y=None, control=None, transformer_options={}, **kwargs): - global global_diffusion_progress - self.current_step = 1.0 - timesteps.to(x) / 999.0 - global_diffusion_progress = float(self.current_step.detach().cpu().numpy().tolist()[0]) + patch_settings[os.getpid()].global_diffusion_progress = float(self.current_step.detach().cpu().numpy().tolist()[0]) y = timed_adm(y, timesteps) @@ -485,7 +484,7 @@ def patch_all(): if ldm_patched.modules.model_management.directml_enabled: ldm_patched.modules.model_management.lowvram_available = True ldm_patched.modules.model_management.OOM_EXCEPTION = Exception - + patch_all_precision() patch_all_clip() From 21f4767c65a70aeef9ac5b67eb538b22b739e537 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 21:14:54 +0100 Subject: [PATCH 29/30] fix: resolve circular import, patch_all now in async_worker --- modules/async_worker.py | 5 ++++- modules/core.py | 5 ----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index 790ec118..24f5b6f7 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -1,6 +1,9 @@ import threading import os -from modules.patch import PatchSettings, patch_settings +from modules.patch import PatchSettings, patch_settings, patch_all + +patch_all() + class AsyncTask: def __init__(self, args): diff --git a/modules/core.py b/modules/core.py index 957a9152..7a29d988 100644 --- a/modules/core.py +++ b/modules/core.py @@ -1,8 +1,3 @@ -from modules.patch import patch_all - -patch_all() - - import os import einops import torch From 031b1f8b112121b60abd6bde2f50f92dbb26cf99 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Mon, 22 Jan 2024 21:20:17 +0100 Subject: [PATCH 30/30] chore: cleanup pid code --- modules/async_worker.py | 2 +- modules/patch.py | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/modules/async_worker.py b/modules/async_worker.py index 24f5b6f7..3d57dbf2 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -869,7 +869,7 @@ def worker(): task.yields.append(['finish', task.results]) finally: if pid in modules.patch.patch_settings: - del modules.patch.patch_settings[os.getpid()] + del modules.patch.patch_settings[pid] pass diff --git a/modules/patch.py b/modules/patch.py index 100613a8..3c2dd8f4 100644 --- a/modules/patch.py +++ b/modules/patch.py @@ -210,12 +210,13 @@ class BrownianTreeNoiseSamplerPatched: def compute_cfg(uncond, cond, cfg_scale, t): - mimic_cfg = float(patch_settings[os.getpid()].adaptive_cfg) + pid = os.getpid() + mimic_cfg = float(patch_settings[pid].adaptive_cfg) real_cfg = float(cfg_scale) real_eps = uncond + real_cfg * (cond - uncond) - if cfg_scale > patch_settings[os.getpid()].adaptive_cfg: + if cfg_scale > patch_settings[pid].adaptive_cfg: mimicked_eps = uncond + mimic_cfg * (cond - uncond) return real_eps * t + mimicked_eps * (1 - t) else: @@ -223,11 +224,13 @@ def compute_cfg(uncond, cond, cfg_scale, t): def patched_sampling_function(model, x, timestep, uncond, cond, cond_scale, model_options=None, seed=None): + pid = os.getpid() + if math.isclose(cond_scale, 1.0) and not model_options.get("disable_cfg1_optimization", False): final_x0 = calc_cond_uncond_batch(model, cond, None, x, timestep, model_options)[0] - if patch_settings[os.getpid()].eps_record is not None: - patch_settings[os.getpid()].eps_record = ((x - final_x0) / timestep).cpu() + if patch_settings[pid].eps_record is not None: + patch_settings[pid].eps_record = ((x - final_x0) / timestep).cpu() return final_x0 @@ -236,16 +239,16 @@ def patched_sampling_function(model, x, timestep, uncond, cond, cond_scale, mode positive_eps = x - positive_x0 negative_eps = x - negative_x0 - alpha = 0.001 * patch_settings[os.getpid()].sharpness * patch_settings[os.getpid()].global_diffusion_progress + alpha = 0.001 * patch_settings[pid].sharpness * patch_settings[pid].global_diffusion_progress positive_eps_degraded = anisotropic.adaptive_anisotropic_filter(x=positive_eps, g=positive_x0) positive_eps_degraded_weighted = positive_eps_degraded * alpha + positive_eps * (1.0 - alpha) final_eps = compute_cfg(uncond=negative_eps, cond=positive_eps_degraded_weighted, - cfg_scale=cond_scale, t=patch_settings[os.getpid()].global_diffusion_progress) + cfg_scale=cond_scale, t=patch_settings[pid].global_diffusion_progress) - if patch_settings[os.getpid()].eps_record is not None: - patch_settings[os.getpid()].eps_record = (final_eps / timestep).cpu() + if patch_settings[pid].eps_record is not None: + patch_settings[pid].eps_record = (final_eps / timestep).cpu() return x - final_eps @@ -265,13 +268,14 @@ def sdxl_encode_adm_patched(self, **kwargs): height = kwargs.get("height", 1024) target_width = width target_height = height + pid = os.getpid() if kwargs.get("prompt_type", "") == "negative": - width = float(width) * patch_settings[os.getpid()].negative_adm_scale - height = float(height) * patch_settings[os.getpid()].negative_adm_scale + width = float(width) * patch_settings[pid].negative_adm_scale + height = float(height) * patch_settings[pid].negative_adm_scale elif kwargs.get("prompt_type", "") == "positive": - width = float(width) * patch_settings[os.getpid()].positive_adm_scale - height = float(height) * patch_settings[os.getpid()].positive_adm_scale + width = float(width) * patch_settings[pid].positive_adm_scale + height = float(height) * patch_settings[pid].positive_adm_scale def embedder(number_list): h = self.embedder(torch.tensor(number_list, dtype=torch.float32)) @@ -335,6 +339,7 @@ def timed_adm(y, timesteps): def patched_cldm_forward(self, x, hint, timesteps, context, y=None, **kwargs): t_emb = ldm_patched.ldm.modules.diffusionmodules.openaimodel.timestep_embedding(timesteps, self.model_channels, repeat_only=False).to(x.dtype) emb = self.time_embed(t_emb) + pid = os.getpid() guided_hint = self.input_hint_block(hint, emb, context) @@ -360,10 +365,10 @@ def patched_cldm_forward(self, x, hint, timesteps, context, y=None, **kwargs): h = self.middle_block(h, emb, context) outs.append(self.middle_block_out(h, emb, context)) - if patch_settings[os.getpid()].controlnet_softness > 0: + if patch_settings[pid].controlnet_softness > 0: for i in range(10): k = 1.0 - float(i) / 9.0 - outs[i] = outs[i] * (1.0 - patch_settings[os.getpid()].controlnet_softness * k) + outs[i] = outs[i] * (1.0 - patch_settings[pid].controlnet_softness * k) return outs