From f8bf163246fc97c41083fcc58ff176787e2a51ff Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Mar 2024 21:16:28 +0000 Subject: [PATCH 001/125] changes --- requirements_versions.txt | 3 +++ screenshot.png | Bin 420577 -> 0 bytes webui-user.sh | 8 ++++---- webui.sh | 2 +- webuidetection.sh | 29 +++++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 5 deletions(-) delete mode 100644 screenshot.png create mode 100755 webuidetection.sh diff --git a/requirements_versions.txt b/requirements_versions.txt index 5e30b5ea18b..17203da4c07 100644 --- a/requirements_versions.txt +++ b/requirements_versions.txt @@ -23,8 +23,11 @@ safetensors==0.4.2 scikit-image==0.21.0 spandrel==0.1.6 tomesd==0.1.3 +markupsafe==2.0.1 torch torchdiffeq==0.2.3 torchsde==0.2.6 transformers==4.30.2 httpx==0.24.1 +xformers==0.0.23.post1 +insightface diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 47a1be4ec43e315f3e47139b10b0f9a8045904f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420577 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

=*CnLUC)+o834@H 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

Process images in a directory on the same machine where the server is running." + - "
Use an empty output directory to save pictures normally instead of writing to the output directory." + - f"
Add inpaint batch mask directory to enable inpaint batch processing." - f"{hidden}

" - ) - img2img_batch_input_dir = gr.Textbox(label="Input directory", **shared.hide_dirs, elem_id="img2img_batch_input_dir") - img2img_batch_output_dir = gr.Textbox(label="Output directory", **shared.hide_dirs, elem_id="img2img_batch_output_dir") - img2img_batch_inpaint_mask_dir = gr.Textbox(label="Inpaint batch mask directory (required for inpaint batch processing only)", **shared.hide_dirs, elem_id="img2img_batch_inpaint_mask_dir") + with gr.Tabs(elem_id="img2img_batch_source"): + img2img_batch_source_type = gr.Textbox(visible=False, value="upload") + with gr.TabItem('Upload', id='batch_upload', elem_id="img2img_batch_upload_tab") as tab_batch_upload: + img2img_batch_upload = gr.Files(label="Files", interactive=True, elem_id="img2img_batch_upload") + with gr.TabItem('From directory', id='batch_from_dir', elem_id="img2img_batch_from_dir_tab") as tab_batch_from_dir: + hidden = '
Disabled when launched with --hide-ui-dir-config.' if shared.cmd_opts.hide_ui_dir_config else '' + gr.HTML( + "

Process images in a directory on the same machine where the server is running." + + "
Use an empty output directory to save pictures normally instead of writing to the output directory." + + f"
Add inpaint batch mask directory to enable inpaint batch processing." + f"{hidden}

" + ) + img2img_batch_input_dir = gr.Textbox(label="Input directory", **shared.hide_dirs, elem_id="img2img_batch_input_dir") + img2img_batch_output_dir = gr.Textbox(label="Output directory", **shared.hide_dirs, elem_id="img2img_batch_output_dir") + img2img_batch_inpaint_mask_dir = gr.Textbox(label="Inpaint batch mask directory (required for inpaint batch processing only)", **shared.hide_dirs, elem_id="img2img_batch_inpaint_mask_dir") + tab_batch_upload.select(fn=lambda: "upload", inputs=[], outputs=[img2img_batch_source_type]) + tab_batch_from_dir.select(fn=lambda: "from dir", inputs=[], outputs=[img2img_batch_source_type]) with gr.Accordion("PNG info", open=False): - img2img_batch_use_png_info = gr.Checkbox(label="Append png info to prompts", **shared.hide_dirs, elem_id="img2img_batch_use_png_info") + img2img_batch_use_png_info = gr.Checkbox(label="Append png info to prompts", elem_id="img2img_batch_use_png_info") img2img_batch_png_info_dir = gr.Textbox(label="PNG info directory", **shared.hide_dirs, placeholder="Leave empty to use input directory", elem_id="img2img_batch_png_info_dir") img2img_batch_png_info_props = gr.CheckboxGroup(["Prompt", "Negative prompt", "Seed", "CFG scale", "Sampler", "Steps", "Model hash"], label="Parameters to take from png info", info="Prompts from png info will be appended to prompts set in ui.") @@ -759,6 +766,8 @@ def select_img2img_tab(tab): img2img_batch_use_png_info, img2img_batch_png_info_props, img2img_batch_png_info_dir, + img2img_batch_source_type, + img2img_batch_upload, ] + custom_inputs, outputs=[ output_panel.gallery, From 58eec83a546b8d61500c7b801cb0bdbe7650f6a6 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Thu, 16 May 2024 16:39:02 -0400 Subject: [PATCH 070/125] Fully prevent use_checkpoint --- modules/sd_models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..a33fa7c33f8 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -551,6 +551,11 @@ def repair_config(sd_config): karlo_path = os.path.join(paths.models_path, 'karlo') sd_config.model.params.noise_aug_config.params.clip_stats_path = sd_config.model.params.noise_aug_config.params.clip_stats_path.replace("checkpoints/karlo_models", karlo_path) + # Do not use checkpoint for inference. + # This helps prevent extra performance overhead on checking parameters. + # The perf overhead is about 100ms/it on 4090. + sd_config.model.params.network_config.params.use_checkpoint = False + def rescale_zero_terminal_snr_abar(alphas_cumprod): alphas_bar_sqrt = alphas_cumprod.sqrt() From 2a8a60c2c50473f0ece5804d4a2cde0d1ff3d35e Mon Sep 17 00:00:00 2001 From: huchenlei Date: Thu, 16 May 2024 19:50:06 -0400 Subject: [PATCH 071/125] Add --precision half cmd option --- modules/cmd_args.py | 2 +- modules/devices.py | 24 ++++++++++++++++++++++++ modules/sd_hijack_unet.py | 29 ++++++++++++++++++++++------- modules/sd_hijack_utils.py | 26 +++++++++++++++----------- modules/sd_models.py | 1 + modules/shared_init.py | 8 ++++++++ 6 files changed, 71 insertions(+), 19 deletions(-) diff --git a/modules/cmd_args.py b/modules/cmd_args.py index 016a33d1057..58c5e5d5b10 100644 --- a/modules/cmd_args.py +++ b/modules/cmd_args.py @@ -41,7 +41,7 @@ parser.add_argument("--lowram", action='store_true', help="load stable diffusion checkpoint weights to VRAM instead of RAM") parser.add_argument("--always-batch-cond-uncond", action='store_true', help="does not do anything") parser.add_argument("--unload-gfpgan", action='store_true', help="does not do anything.") -parser.add_argument("--precision", type=str, help="evaluate at this precision", choices=["full", "autocast"], default="autocast") +parser.add_argument("--precision", type=str, help="evaluate at this precision", choices=["full", "half", "autocast"], default="autocast") parser.add_argument("--upcast-sampling", action='store_true', help="upcast sampling. No effect with --no-half. Usually produces similar results to --no-half with better performance while using less memory.") parser.add_argument("--share", action='store_true', help="use share=True for gradio and make the UI accessible through their site") parser.add_argument("--ngrok", type=str, help="ngrok authtoken, alternative to gradio --share", default=None) diff --git a/modules/devices.py b/modules/devices.py index e4f671ac659..7de34ac51c3 100644 --- a/modules/devices.py +++ b/modules/devices.py @@ -114,6 +114,9 @@ def enable_tf32(): cpu: torch.device = torch.device("cpu") fp8: bool = False +# Force fp16 for all models in inference. No casting during inference. +# This flag is controlled by "--precision half" command line arg. +force_fp16: bool = False device: torch.device = None device_interrogate: torch.device = None device_gfpgan: torch.device = None @@ -127,6 +130,8 @@ def enable_tf32(): def cond_cast_unet(input): + if force_fp16: + return input.to(torch.float16) return input.to(dtype_unet) if unet_needs_upcast else input @@ -206,6 +211,11 @@ def autocast(disable=False): if disable: return contextlib.nullcontext() + if force_fp16: + # No casting during inference if force_fp16 is enabled. + # All tensor dtype conversion happens before inference. + return contextlib.nullcontext() + if fp8 and device==cpu: return torch.autocast("cpu", dtype=torch.bfloat16, enabled=True) @@ -269,3 +279,17 @@ def first_time_calculation(): x = torch.zeros((1, 1, 3, 3)).to(device, dtype) conv2d = torch.nn.Conv2d(1, 1, (3, 3)).to(device, dtype) conv2d(x) + + +def force_model_fp16(): + """ + ldm and sgm has modules.diffusionmodules.util.GroupNorm32.forward, which + force conversion of input to float32. If force_fp16 is enabled, we need to + prevent this casting. + """ + assert force_fp16 + import sgm.modules.diffusionmodules.util as sgm_util + import ldm.modules.diffusionmodules.util as ldm_util + sgm_util.GroupNorm32 = torch.nn.GroupNorm + ldm_util.GroupNorm32 = torch.nn.GroupNorm + print("ldm/sgm GroupNorm32 replaced with normal torch.nn.GroupNorm due to `--precision half`.") diff --git a/modules/sd_hijack_unet.py b/modules/sd_hijack_unet.py index 2101f1a0415..41955313a31 100644 --- a/modules/sd_hijack_unet.py +++ b/modules/sd_hijack_unet.py @@ -36,7 +36,7 @@ def cat(self, tensors, *args, **kwargs): # Below are monkey patches to enable upcasting a float16 UNet for float32 sampling def apply_model(orig_func, self, x_noisy, t, cond, **kwargs): - + """Always make sure inputs to unet are in correct dtype.""" if isinstance(cond, dict): for y in cond.keys(): if isinstance(cond[y], list): @@ -45,7 +45,11 @@ def apply_model(orig_func, self, x_noisy, t, cond, **kwargs): cond[y] = cond[y].to(devices.dtype_unet) if isinstance(cond[y], torch.Tensor) else cond[y] with devices.autocast(): - return orig_func(self, x_noisy.to(devices.dtype_unet), t.to(devices.dtype_unet), cond, **kwargs).float() + result = orig_func(self, x_noisy.to(devices.dtype_unet), t.to(devices.dtype_unet), cond, **kwargs) + if devices.unet_needs_upcast: + return result.float() + else: + return result class GELUHijack(torch.nn.GELU, torch.nn.Module): @@ -64,12 +68,11 @@ def hijack_ddpm_edit(): if not ddpm_edit_hijack: CondFunc('modules.models.diffusion.ddpm_edit.LatentDiffusion.decode_first_stage', first_stage_sub, first_stage_cond) CondFunc('modules.models.diffusion.ddpm_edit.LatentDiffusion.encode_first_stage', first_stage_sub, first_stage_cond) - ddpm_edit_hijack = CondFunc('modules.models.diffusion.ddpm_edit.LatentDiffusion.apply_model', apply_model, unet_needs_upcast) + ddpm_edit_hijack = CondFunc('modules.models.diffusion.ddpm_edit.LatentDiffusion.apply_model', apply_model) unet_needs_upcast = lambda *args, **kwargs: devices.unet_needs_upcast -CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.apply_model', apply_model, unet_needs_upcast) -CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', lambda orig_func, timesteps, *args, **kwargs: orig_func(timesteps, *args, **kwargs).to(torch.float32 if timesteps.dtype == torch.int64 else devices.dtype_unet), unet_needs_upcast) + if version.parse(torch.__version__) <= version.parse("1.13.2") or torch.cuda.is_available(): CondFunc('ldm.modules.diffusionmodules.util.GroupNorm32.forward', lambda orig_func, self, *args, **kwargs: orig_func(self.float(), *args, **kwargs), unet_needs_upcast) CondFunc('ldm.modules.attention.GEGLU.forward', lambda orig_func, self, x: orig_func(self.float(), x.float()).to(devices.dtype_unet), unet_needs_upcast) @@ -81,5 +84,17 @@ def hijack_ddpm_edit(): CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.encode_first_stage', first_stage_sub, first_stage_cond) CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.get_first_stage_encoding', lambda orig_func, *args, **kwargs: orig_func(*args, **kwargs).float(), first_stage_cond) -CondFunc('sgm.modules.diffusionmodules.wrappers.OpenAIWrapper.forward', apply_model, unet_needs_upcast) -CondFunc('sgm.modules.diffusionmodules.openaimodel.timestep_embedding', lambda orig_func, timesteps, *args, **kwargs: orig_func(timesteps, *args, **kwargs).to(torch.float32 if timesteps.dtype == torch.int64 else devices.dtype_unet), unet_needs_upcast) +CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.apply_model', apply_model) +CondFunc('sgm.modules.diffusionmodules.wrappers.OpenAIWrapper.forward', apply_model) + + +def timestep_embedding_cast_result(orig_func, timesteps, *args, **kwargs): + if devices.unet_needs_upcast and timesteps.dtype == torch.int64: + dtype = torch.float32 + else: + dtype = devices.dtype_unet + return orig_func(timesteps, *args, **kwargs).to(dtype=dtype) + + +CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', timestep_embedding_cast_result) +CondFunc('sgm.modules.diffusionmodules.openaimodel.timestep_embedding', timestep_embedding_cast_result) diff --git a/modules/sd_hijack_utils.py b/modules/sd_hijack_utils.py index 79bf6e46862..546f2eda4ec 100644 --- a/modules/sd_hijack_utils.py +++ b/modules/sd_hijack_utils.py @@ -1,7 +1,11 @@ import importlib + +always_true_func = lambda *args, **kwargs: True + + class CondFunc: - def __new__(cls, orig_func, sub_func, cond_func): + def __new__(cls, orig_func, sub_func, cond_func=always_true_func): self = super(CondFunc, cls).__new__(cls) if isinstance(orig_func, str): func_path = orig_func.split('.') @@ -20,13 +24,13 @@ def __new__(cls, orig_func, sub_func, cond_func): print(f"Warning: Failed to resolve {orig_func} for CondFunc hijack") pass self.__init__(orig_func, sub_func, cond_func) - return lambda *args, **kwargs: self(*args, **kwargs) - def __init__(self, orig_func, sub_func, cond_func): - self.__orig_func = orig_func - self.__sub_func = sub_func - self.__cond_func = cond_func - def __call__(self, *args, **kwargs): - if not self.__cond_func or self.__cond_func(self.__orig_func, *args, **kwargs): - return self.__sub_func(self.__orig_func, *args, **kwargs) - else: - return self.__orig_func(*args, **kwargs) + return lambda *args, **kwargs: self(*args, **kwargs) + def __init__(self, orig_func, sub_func, cond_func): + self.__orig_func = orig_func + self.__sub_func = sub_func + self.__cond_func = cond_func + def __call__(self, *args, **kwargs): + if not self.__cond_func or self.__cond_func(self.__orig_func, *args, **kwargs): + return self.__sub_func(self.__orig_func, *args, **kwargs) + else: + return self.__orig_func(*args, **kwargs) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..9c59091683a 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -403,6 +403,7 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer model.float() model.alphas_cumprod_original = model.alphas_cumprod devices.dtype_unet = torch.float32 + assert shared.cmd_opts.precision != "half", "Cannot use --precision half with --no-half" timer.record("apply float()") else: vae = model.first_stage_model diff --git a/modules/shared_init.py b/modules/shared_init.py index 935e3a21cf2..a6ad0433d6f 100644 --- a/modules/shared_init.py +++ b/modules/shared_init.py @@ -31,6 +31,14 @@ def initialize(): devices.dtype_vae = torch.float32 if cmd_opts.no_half or cmd_opts.no_half_vae else torch.float16 devices.dtype_inference = torch.float32 if cmd_opts.precision == 'full' else devices.dtype + if cmd_opts.precision == "half": + msg = "--no-half and --no-half-vae conflict with --precision half" + assert devices.dtype == torch.float16, msg + assert devices.dtype_vae == torch.float16, msg + assert devices.dtype_inference == torch.float16, msg + devices.force_fp16 = True + devices.force_model_fp16() + shared.device = devices.device shared.weight_load_location = None if cmd_opts.lowram else "cpu" From 47f1d42a7e77259e2e7418ae8f941718c55cfd25 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Thu, 16 May 2024 20:06:04 -0400 Subject: [PATCH 072/125] Fix for SD15 models --- modules/sd_models.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index a33fa7c33f8..cda142bdd3c 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -553,8 +553,11 @@ def repair_config(sd_config): # Do not use checkpoint for inference. # This helps prevent extra performance overhead on checking parameters. - # The perf overhead is about 100ms/it on 4090. - sd_config.model.params.network_config.params.use_checkpoint = False + # The perf overhead is about 100ms/it on 4090 for SDXL. + if hasattr(sd_config.model.params, "network_config"): + sd_config.model.params.network_config.params.use_checkpoint = False + if hasattr(sd_config.model.params, "unet_config"): + sd_config.model.params.unet_config.params.use_checkpoint = False def rescale_zero_terminal_snr_abar(alphas_cumprod): From 01491d303ce216820513c5cee998801359b8cbba Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Fri, 17 May 2024 10:36:08 -0400 Subject: [PATCH 073/125] Keep sigmas on CPU --- modules/sd_samplers_kdiffusion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_samplers_kdiffusion.py b/modules/sd_samplers_kdiffusion.py index b45f85b07a8..228de49449e 100644 --- a/modules/sd_samplers_kdiffusion.py +++ b/modules/sd_samplers_kdiffusion.py @@ -115,7 +115,7 @@ def get_sigmas(self, p, steps): if scheduler.need_inner_model: sigmas_kwargs['inner_model'] = self.model_wrap - sigmas = scheduler.function(n=steps, **sigmas_kwargs, device=shared.device) + sigmas = scheduler.function(n=steps, **sigmas_kwargs) if discard_next_to_last_sigma: sigmas = torch.cat([sigmas[:-2], sigmas[-1:]]) From 10f2407f48fa3a8bbd299068e5f67108f272b87d Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 18 May 2024 00:44:02 +0900 Subject: [PATCH 074/125] xyz csv skipinitialspace --- scripts/xyz_grid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index b9fd66fe54b..d416e4c0759 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -212,7 +212,7 @@ def list_to_csv_string(data_list): def csv_string_to_list_strip(data_str): - return list(map(str.strip, chain.from_iterable(csv.reader(StringIO(data_str))))) + return list(map(str.strip, chain.from_iterable(csv.reader(StringIO(data_str), skipinitialspace=True)))) class AxisOption: From 53d67088ee0fb190c3ae1330c2b876dedb16dd8b Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Fri, 17 May 2024 12:12:57 -0400 Subject: [PATCH 075/125] Patch timestep embedding to create tensor on-device --- modules/sd_hijack_unet.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/modules/sd_hijack_unet.py b/modules/sd_hijack_unet.py index 2101f1a0415..0dabbe0e43d 100644 --- a/modules/sd_hijack_unet.py +++ b/modules/sd_hijack_unet.py @@ -1,5 +1,7 @@ import torch from packaging import version +from einops import repeat +import math from modules import devices from modules.sd_hijack_utils import CondFunc @@ -48,6 +50,30 @@ def apply_model(orig_func, self, x_noisy, t, cond, **kwargs): return orig_func(self, x_noisy.to(devices.dtype_unet), t.to(devices.dtype_unet), cond, **kwargs).float() +# Monkey patch to create timestep embed tensor on device, avoiding a block. +def timestep_embedding(_, timesteps, dim, max_period=10000, repeat_only=False): + """ + Create sinusoidal timestep embeddings. + :param timesteps: a 1-D Tensor of N indices, one per batch element. + These may be fractional. + :param dim: the dimension of the output. + :param max_period: controls the minimum frequency of the embeddings. + :return: an [N x dim] Tensor of positional embeddings. + """ + if not repeat_only: + half = dim // 2 + freqs = torch.exp( + -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32, device=timesteps.device) / half + ) + args = timesteps[:, None].float() * freqs[None] + embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1) + if dim % 2: + embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1) + else: + embedding = repeat(timesteps, 'b -> b d', d=dim) + return embedding + + class GELUHijack(torch.nn.GELU, torch.nn.Module): def __init__(self, *args, **kwargs): torch.nn.GELU.__init__(self, *args, **kwargs) @@ -69,6 +95,7 @@ def hijack_ddpm_edit(): unet_needs_upcast = lambda *args, **kwargs: devices.unet_needs_upcast CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.apply_model', apply_model, unet_needs_upcast) +CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', timestep_embedding) CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', lambda orig_func, timesteps, *args, **kwargs: orig_func(timesteps, *args, **kwargs).to(torch.float32 if timesteps.dtype == torch.int64 else devices.dtype_unet), unet_needs_upcast) if version.parse(torch.__version__) <= version.parse("1.13.2") or torch.cuda.is_available(): CondFunc('ldm.modules.diffusionmodules.util.GroupNorm32.forward', lambda orig_func, self, *args, **kwargs: orig_func(self.float(), *args, **kwargs), unet_needs_upcast) From cc9ca67664ef72931af9a4dced88a8434c5d4f16 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Fri, 17 May 2024 13:14:26 -0400 Subject: [PATCH 076/125] Add transformer forward patch --- modules/sd_hijack_unet.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/modules/sd_hijack_unet.py b/modules/sd_hijack_unet.py index 0dabbe0e43d..c680367ebb3 100644 --- a/modules/sd_hijack_unet.py +++ b/modules/sd_hijack_unet.py @@ -74,6 +74,30 @@ def timestep_embedding(_, timesteps, dim, max_period=10000, repeat_only=False): return embedding +# Monkey patch to SpatialTransformer removing unnecessary contiguous calls. +# Prevents a lot of unnecessary aten::copy_ calls +def spatial_transformer_forward(_, self, x: torch.Tensor, context=None): + # note: if no context is given, cross-attention defaults to self-attention + if not isinstance(context, list): + context = [context] + b, c, h, w = x.shape + x_in = x + x = self.norm(x) + if not self.use_linear: + x = self.proj_in(x) + x = x.permute(0, 2, 3, 1).reshape(b, h * w, c) + if self.use_linear: + x = self.proj_in(x) + for i, block in enumerate(self.transformer_blocks): + x = block(x, context=context[i]) + if self.use_linear: + x = self.proj_out(x) + x = x.view(b, h, w, c).permute(0, 3, 1, 2) + if not self.use_linear: + x = self.proj_out(x) + return x + x_in + + class GELUHijack(torch.nn.GELU, torch.nn.Module): def __init__(self, *args, **kwargs): torch.nn.GELU.__init__(self, *args, **kwargs) @@ -95,7 +119,8 @@ def hijack_ddpm_edit(): unet_needs_upcast = lambda *args, **kwargs: devices.unet_needs_upcast CondFunc('ldm.models.diffusion.ddpm.LatentDiffusion.apply_model', apply_model, unet_needs_upcast) -CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', timestep_embedding) +CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', timestep_embedding, lambda *args, **kwargs: True) +CondFunc('ldm.modules.attention.SpatialTransformer.forward', spatial_transformer_forward, lambda *args, **kwargs: True) CondFunc('ldm.modules.diffusionmodules.openaimodel.timestep_embedding', lambda orig_func, timesteps, *args, **kwargs: orig_func(timesteps, *args, **kwargs).to(torch.float32 if timesteps.dtype == torch.int64 else devices.dtype_unet), unet_needs_upcast) if version.parse(torch.__version__) <= version.parse("1.13.2") or torch.cuda.is_available(): CondFunc('ldm.modules.diffusionmodules.util.GroupNorm32.forward', lambda orig_func, self, *args, **kwargs: orig_func(self.float(), *args, **kwargs), unet_needs_upcast) From dca9007ac7a9852752d91d34d2ed1feaef6a03f2 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Fri, 17 May 2024 13:23:12 -0400 Subject: [PATCH 077/125] Fix SD15 dtype --- modules/sd_models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/sd_models.py b/modules/sd_models.py index 9c59091683a..7d4ab0fd89a 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -733,6 +733,10 @@ def load_model(checkpoint_info=None, already_loaded_state_dict=None): sd_model = instantiate_from_config(sd_config.model) sd_model.used_config = checkpoint_config + # ldm's Unet is using self.dtype to cast input tensor. If we do not overwrite + # UnetModel.dtype, it will be the default dtype from config. + # sgm's Unet is not using dtype for casting. The value will be ignored. + sd_model.model.diffusion_model.dtype = devices.dtype_unet timer.record("create model") From b57a70f37322142939f7429f287599e027108bfc Mon Sep 17 00:00:00 2001 From: huchenlei Date: Fri, 17 May 2024 13:34:04 -0400 Subject: [PATCH 078/125] Proper fix of SD15 dtype --- modules/sd_models.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 7d4ab0fd89a..26a5127cd04 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -541,7 +541,7 @@ def repair_config(sd_config): if hasattr(sd_config.model.params, 'unet_config'): if shared.cmd_opts.no_half: sd_config.model.params.unet_config.params.use_fp16 = False - elif shared.cmd_opts.upcast_sampling: + elif shared.cmd_opts.upcast_sampling or shared.cmd_opts.precision == "half": sd_config.model.params.unet_config.params.use_fp16 = True if getattr(sd_config.model.params.first_stage_config.params.ddconfig, "attn_type", None) == "vanilla-xformers" and not shared.xformers_available: @@ -733,10 +733,6 @@ def load_model(checkpoint_info=None, already_loaded_state_dict=None): sd_model = instantiate_from_config(sd_config.model) sd_model.used_config = checkpoint_config - # ldm's Unet is using self.dtype to cast input tensor. If we do not overwrite - # UnetModel.dtype, it will be the default dtype from config. - # sgm's Unet is not using dtype for casting. The value will be ignored. - sd_model.model.diffusion_model.dtype = devices.dtype_unet timer.record("create model") From 1d7448281751ea3223c681a82de8219a6fbe1d22 Mon Sep 17 00:00:00 2001 From: Logan Date: Sat, 18 May 2024 09:09:57 +1000 Subject: [PATCH 079/125] Default device for sigma tensor to CPU * Consistent with implementations in k-diffusion. * Makes this compatible with https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/15823 --- modules/sd_schedulers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 0ac1f7a21f8..4ddb778501a 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -33,7 +33,7 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): sigs += [0.0] return torch.FloatTensor(sigs).to(device) -def get_align_your_steps_sigmas(n, sigma_min, sigma_max, device): +def get_align_your_steps_sigmas(n, sigma_min, sigma_max, device='cpu'): # https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html def loglinear_interp(t_steps, num_steps): """ From 281e0a007b102c7fc9f6150fb88c95470dc25a17 Mon Sep 17 00:00:00 2001 From: Andray Date: Sat, 18 May 2024 09:13:16 +0400 Subject: [PATCH 080/125] scroll extensions table on overflow --- style.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/style.css b/style.css index f6a89b8f90d..5ec803a0411 100644 --- a/style.css +++ b/style.css @@ -807,6 +807,8 @@ table.popup-table .link{ #tab_extensions table{ border-collapse: collapse; + overflow-x: auto; + display: block; } #tab_extensions table td, #tab_extensions table th{ From feeb6802aa71fad190da2e051e50af84a94eda85 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Sat, 18 May 2024 01:22:31 -0400 Subject: [PATCH 081/125] fix case where first step skilled if skip early cond is 0 --- modules/sd_samplers_cfg_denoiser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index 082a4f63c63..d89ea2c8bfc 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -212,7 +212,7 @@ def apply_blend(current_latent): uncond = denoiser_params.text_uncond skip_uncond = False - if self.step / self.total_steps <= shared.opts.skip_early_cond: + if shared.opts.skip_early_cond != 0. and self.step / self.total_steps <= shared.opts.skip_early_cond: skip_uncond = True x_in = x_in[:-batch_size] sigma_in = sigma_in[:-batch_size] From 501ac016da8c28ff4778219f142f0622083237ce Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 18 May 2024 18:37:37 +0900 Subject: [PATCH 082/125] Reformat --- scripts/xyz_grid.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index b9fd66fe54b..b23fd4770ef 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -162,12 +162,14 @@ def fun(p, x, xs): if boolean: x = True if x.lower() == "true" else False p.override_settings[field] = x + return fun def boolean_choice(reverse: bool = False): def choice(): return ["False", "True"] if reverse else ["True", "False"] + return choice @@ -572,7 +574,7 @@ def process_axis(opt, vals, vals_dropdown): mc = re_range_count.fullmatch(val) if m is not None: start = int(m.group(1)) - end = int(m.group(2))+1 + end = int(m.group(2)) + 1 step = int(m.group(3)) if m.group(3) is not None else 1 valslist_ext += list(range(start, end, step)) @@ -725,11 +727,11 @@ def cell(x, y, z, ix, iy, iz): ydim = len(ys) if vary_seeds_y else 1 if vary_seeds_x: - pc.seed += ix + pc.seed += ix if vary_seeds_y: - pc.seed += iy * xdim + pc.seed += iy * xdim if vary_seeds_z: - pc.seed += iz * xdim * ydim + pc.seed += iz * xdim * ydim try: res = process_images(pc) @@ -797,18 +799,18 @@ def cell(x, y, z, ix, iy, iz): z_count = len(zs) # Set the grid infotexts to the real ones with extra_generation_params (1 main grid + z_count sub-grids) - processed.infotexts[:1+z_count] = grid_infotext[:1+z_count] + processed.infotexts[:1 + z_count] = grid_infotext[:1 + z_count] if not include_lone_images: # Don't need sub-images anymore, drop from list: - processed.images = processed.images[:z_count+1] + processed.images = processed.images[:z_count + 1] if opts.grid_save: # Auto-save main and sub-grids: grid_count = z_count + 1 if z_count > 1 else 1 for g in range(grid_count): # TODO: See previous comment about intentional data misalignment. - adj_g = g-1 if g > 0 else g + adj_g = g - 1 if g > 0 else g images.save_image(processed.images[g], p.outpath_grids, "xyz_grid", info=processed.infotexts[g], extension=opts.grid_format, prompt=processed.all_prompts[adj_g], seed=processed.all_seeds[adj_g], grid=True, p=processed) if not include_sub_grids: # if not include_sub_grids then skip saving after the first grid break From 969a462ac9ea52eb61b8de9fd685cc477c8b8dac Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 18 May 2024 18:27:34 +0900 Subject: [PATCH 083/125] xyz util confirm_range --- scripts/xyz_grid.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index b23fd4770ef..81c7abe9562 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -95,6 +95,17 @@ def confirm_checkpoints_or_none(p, xs): raise RuntimeError(f"Unknown checkpoint: {x}") +def confirm_range(min_val, max_val, axis_label): + """Generates a AxisOption.confirm() function that checks all values are within the specified range.""" + + def confirm_range_fun(p, xs): + for x in xs: + if not (max_val >= x >= min_val): + raise ValueError(f'{axis_label} value "{x}" out of range [{min_val}, {max_val}]') + + return confirm_range_fun + + def apply_clip_skip(p, x, xs): opts.data["CLIP_stop_at_last_layers"] = x From 24a59ad3d2f9f44130746fdfe54f9f51ba74e77f Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 18 May 2024 15:36:49 +0900 Subject: [PATCH 084/125] fix Hypertile xyz grid --- .../hypertile/scripts/hypertile_script.py | 17 ++++++- .../hypertile/scripts/hypertile_xyz.py | 51 ------------------- 2 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 extensions-builtin/hypertile/scripts/hypertile_xyz.py diff --git a/extensions-builtin/hypertile/scripts/hypertile_script.py b/extensions-builtin/hypertile/scripts/hypertile_script.py index 395d584b605..59e7f9907e5 100644 --- a/extensions-builtin/hypertile/scripts/hypertile_script.py +++ b/extensions-builtin/hypertile/scripts/hypertile_script.py @@ -1,6 +1,5 @@ import hypertile from modules import scripts, script_callbacks, shared -from scripts.hypertile_xyz import add_axis_options class ScriptHypertile(scripts.Script): @@ -93,7 +92,6 @@ def on_ui_settings(): "hypertile_max_depth_unet": shared.OptionInfo(3, "Hypertile U-Net max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile U-Net max depth").info("larger = more neural network layers affected; minor effect on performance"), "hypertile_max_tile_unet": shared.OptionInfo(256, "Hypertile U-Net max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile U-Net max tile size").info("larger = worse performance"), "hypertile_swap_size_unet": shared.OptionInfo(3, "Hypertile U-Net swap size", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}, infotext="Hypertile U-Net swap size"), - "hypertile_enable_vae": shared.OptionInfo(False, "Enable Hypertile VAE", infotext="Hypertile VAE").info("minimal change in the generated picture"), "hypertile_max_depth_vae": shared.OptionInfo(3, "Hypertile VAE max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile VAE max depth"), "hypertile_max_tile_vae": shared.OptionInfo(128, "Hypertile VAE max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile VAE max tile size"), @@ -105,5 +103,20 @@ def on_ui_settings(): shared.opts.add_option(name, opt) +def add_axis_options(): + xyz_grid = [x for x in scripts.scripts_data if x.script_class.__module__ == "xyz_grid.py"][0].module + xyz_grid.axis_options.extend([ + xyz_grid.AxisOption("[Hypertile] Unet First pass Enabled", str, xyz_grid.apply_override('hypertile_enable_unet', boolean=True), choices=xyz_grid.boolean_choice(reverse=True)), + xyz_grid.AxisOption("[Hypertile] Unet Second pass Enabled", str, xyz_grid.apply_override('hypertile_enable_unet_secondpass', boolean=True), choices=xyz_grid.boolean_choice(reverse=True)), + xyz_grid.AxisOption("[Hypertile] Unet Max Depth", int, xyz_grid.apply_override("hypertile_max_depth_unet"), confirm=xyz_grid.confirm_range(0, 3, '[Hypertile] Unet Max Depth'), choices=lambda: [str(x) for x in range(4)]), + xyz_grid.AxisOption("[Hypertile] Unet Max Tile Size", int, xyz_grid.apply_override("hypertile_max_tile_unet"), confirm=xyz_grid.confirm_range(0, 512, '[Hypertile] Unet Max Tile Size')), + xyz_grid.AxisOption("[Hypertile] Unet Swap Size", int, xyz_grid.apply_override("hypertile_swap_size_unet"), confirm=xyz_grid.confirm_range(0, 64, '[Hypertile] Unet Swap Size')), + xyz_grid.AxisOption("[Hypertile] VAE Enabled", str, xyz_grid.apply_override('hypertile_enable_vae', boolean=True), choices=xyz_grid.boolean_choice(reverse=True)), + xyz_grid.AxisOption("[Hypertile] VAE Max Depth", int, xyz_grid.apply_override("hypertile_max_depth_vae"), confirm=xyz_grid.confirm_range(0, 3, '[Hypertile] VAE Max Depth'), choices=lambda: [str(x) for x in range(4)]), + xyz_grid.AxisOption("[Hypertile] VAE Max Tile Size", int, xyz_grid.apply_override("hypertile_max_tile_vae"), confirm=xyz_grid.confirm_range(0, 512, '[Hypertile] VAE Max Tile Size')), + xyz_grid.AxisOption("[Hypertile] VAE Swap Size", int, xyz_grid.apply_override("hypertile_swap_size_vae"), confirm=xyz_grid.confirm_range(0, 64, '[Hypertile] VAE Swap Size')), + ]) + + script_callbacks.on_ui_settings(on_ui_settings) script_callbacks.on_before_ui(add_axis_options) diff --git a/extensions-builtin/hypertile/scripts/hypertile_xyz.py b/extensions-builtin/hypertile/scripts/hypertile_xyz.py deleted file mode 100644 index 9e96ae3c527..00000000000 --- a/extensions-builtin/hypertile/scripts/hypertile_xyz.py +++ /dev/null @@ -1,51 +0,0 @@ -from modules import scripts -from modules.shared import opts - -xyz_grid = [x for x in scripts.scripts_data if x.script_class.__module__ == "xyz_grid.py"][0].module - -def int_applier(value_name:str, min_range:int = -1, max_range:int = -1): - """ - Returns a function that applies the given value to the given value_name in opts.data. - """ - def validate(value_name:str, value:str): - value = int(value) - # validate value - if not min_range == -1: - assert value >= min_range, f"Value {value} for {value_name} must be greater than or equal to {min_range}" - if not max_range == -1: - assert value <= max_range, f"Value {value} for {value_name} must be less than or equal to {max_range}" - def apply_int(p, x, xs): - validate(value_name, x) - opts.data[value_name] = int(x) - return apply_int - -def bool_applier(value_name:str): - """ - Returns a function that applies the given value to the given value_name in opts.data. - """ - def validate(value_name:str, value:str): - assert value.lower() in ["true", "false"], f"Value {value} for {value_name} must be either true or false" - def apply_bool(p, x, xs): - validate(value_name, x) - value_boolean = x.lower() == "true" - opts.data[value_name] = value_boolean - return apply_bool - -def add_axis_options(): - extra_axis_options = [ - xyz_grid.AxisOption("[Hypertile] Unet First pass Enabled", str, bool_applier("hypertile_enable_unet"), choices=xyz_grid.boolean_choice(reverse=True)), - xyz_grid.AxisOption("[Hypertile] Unet Second pass Enabled", str, bool_applier("hypertile_enable_unet_secondpass"), choices=xyz_grid.boolean_choice(reverse=True)), - xyz_grid.AxisOption("[Hypertile] Unet Max Depth", int, int_applier("hypertile_max_depth_unet", 0, 3), choices=lambda: [str(x) for x in range(4)]), - xyz_grid.AxisOption("[Hypertile] Unet Max Tile Size", int, int_applier("hypertile_max_tile_unet", 0, 512)), - xyz_grid.AxisOption("[Hypertile] Unet Swap Size", int, int_applier("hypertile_swap_size_unet", 0, 64)), - xyz_grid.AxisOption("[Hypertile] VAE Enabled", str, bool_applier("hypertile_enable_vae"), choices=xyz_grid.boolean_choice(reverse=True)), - xyz_grid.AxisOption("[Hypertile] VAE Max Depth", int, int_applier("hypertile_max_depth_vae", 0, 3), choices=lambda: [str(x) for x in range(4)]), - xyz_grid.AxisOption("[Hypertile] VAE Max Tile Size", int, int_applier("hypertile_max_tile_vae", 0, 512)), - xyz_grid.AxisOption("[Hypertile] VAE Swap Size", int, int_applier("hypertile_swap_size_vae", 0, 64)), - ] - set_a = {opt.label for opt in xyz_grid.axis_options} - set_b = {opt.label for opt in extra_axis_options} - if set_a.intersection(set_b): - return - - xyz_grid.axis_options.extend(extra_axis_options) From 82884da18c8f183c4ce0e7237953303f26610370 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sun, 19 May 2024 04:55:45 +0900 Subject: [PATCH 085/125] use apply_override for Clip skip --- scripts/xyz_grid.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index b9fd66fe54b..c7cb513338c 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -264,7 +264,7 @@ def __init__(self, *args, **kwargs): AxisOption("Schedule max sigma", float, apply_override("sigma_max")), AxisOption("Schedule rho", float, apply_override("rho")), AxisOption("Eta", float, apply_field("eta")), - AxisOption("Clip skip", int, apply_clip_skip), + AxisOption("Clip skip", int, apply_override('CLIP_stop_at_last_layers')), AxisOption("Denoising", float, apply_field("denoising_strength")), AxisOption("Initial noise multiplier", float, apply_field("initial_noise_multiplier")), AxisOption("Extra noise", float, apply_override("img2img_extra_noise")), @@ -399,7 +399,6 @@ def index(ix, iy, iz): class SharedSettingsStackHelper(object): def __enter__(self): - self.CLIP_stop_at_last_layers = opts.CLIP_stop_at_last_layers self.vae = opts.sd_vae self.uni_pc_order = opts.uni_pc_order @@ -409,8 +408,6 @@ def __exit__(self, exc_type, exc_value, tb): modules.sd_models.reload_model_weights() modules.sd_vae.reload_vae_weights() - opts.data["CLIP_stop_at_last_layers"] = self.CLIP_stop_at_last_layers - re_range = re.compile(r"\s*([+-]?\s*\d+)\s*-\s*([+-]?\s*\d+)(?:\s*\(([+-]\d+)\s*\))?\s*") re_range_float = re.compile(r"\s*([+-]?\s*\d+(?:.\d*)?)\s*-\s*([+-]?\s*\d+(?:.\d*)?)(?:\s*\(([+-]\d+(?:.\d*)?)\s*\))?\s*") From 1f392517f8938e0082e189fa0c28f4eb89fb0eb2 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sun, 19 May 2024 04:59:05 +0900 Subject: [PATCH 086/125] use override for uni_pc_order --- scripts/xyz_grid.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index c7cb513338c..622cc43c3ca 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -140,7 +140,7 @@ def apply_styles(p: StableDiffusionProcessingTxt2Img, x: str, _): def apply_uni_pc_order(p, x, xs): - opts.data["uni_pc_order"] = min(x, p.steps - 1) + p.override_settings['uni_pc_order'] = min(x, p.steps - 1) def apply_face_restore(p, opt, x): @@ -400,11 +400,9 @@ def index(ix, iy, iz): class SharedSettingsStackHelper(object): def __enter__(self): self.vae = opts.sd_vae - self.uni_pc_order = opts.uni_pc_order def __exit__(self, exc_type, exc_value, tb): opts.data["sd_vae"] = self.vae - opts.data["uni_pc_order"] = self.uni_pc_order modules.sd_models.reload_model_weights() modules.sd_vae.reload_vae_weights() From 1e696b028adbd449df8c30ed760103b120ec5546 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sun, 19 May 2024 05:14:32 +0900 Subject: [PATCH 087/125] use override of sd_vae --- scripts/xyz_grid.py | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index 622cc43c3ca..4c83e92b24e 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -118,21 +118,16 @@ def apply_size(p, x: str, xs) -> None: def find_vae(name: str): - if name.lower() in ['auto', 'automatic']: - return modules.sd_vae.unspecified - if name.lower() == 'none': - return None - else: - choices = [x for x in sorted(modules.sd_vae.vae_dict, key=lambda x: len(x)) if name.lower().strip() in x.lower()] - if len(choices) == 0: - print(f"No VAE found for {name}; using automatic") - return modules.sd_vae.unspecified - else: - return modules.sd_vae.vae_dict[choices[0]] + match name := name.lower().strip(): + case 'auto', 'automatic': + return 'Automatic' + case 'none': + return 'None' + return next((k for k in modules.sd_vae.vae_dict if k.lower() == name), print(f'No VAE found for {name}; using Automatic') or 'Automatic') def apply_vae(p, x, xs): - modules.sd_vae.reload_vae_weights(shared.sd_model, vae_file=find_vae(x)) + p.override_settings['sd_vae'] = find_vae(x) def apply_styles(p: StableDiffusionProcessingTxt2Img, x: str, _): @@ -270,7 +265,7 @@ def __init__(self, *args, **kwargs): AxisOption("Extra noise", float, apply_override("img2img_extra_noise")), AxisOptionTxt2Img("Hires upscaler", str, apply_field("hr_upscaler"), choices=lambda: [*shared.latent_upscale_modes, *[x.name for x in shared.sd_upscalers]]), AxisOptionImg2Img("Cond. Image Mask Weight", float, apply_field("inpainting_mask_weight")), - AxisOption("VAE", str, apply_vae, cost=0.7, choices=lambda: ['None'] + list(sd_vae.vae_dict)), + AxisOption("VAE", str, apply_vae, cost=0.7, choices=lambda: ['Automatic', 'None'] + list(sd_vae.vae_dict)), AxisOption("Styles", str, apply_styles, choices=lambda: list(shared.prompt_styles.styles)), AxisOption("UniPC Order", int, apply_uni_pc_order, cost=0.5), AxisOption("Face restore", str, apply_face_restore, format_value=format_value), @@ -399,10 +394,9 @@ def index(ix, iy, iz): class SharedSettingsStackHelper(object): def __enter__(self): - self.vae = opts.sd_vae + pass def __exit__(self, exc_type, exc_value, tb): - opts.data["sd_vae"] = self.vae modules.sd_models.reload_model_weights() modules.sd_vae.reload_vae_weights() From 51e7122f25c276b258a8f55a64e60e5b2265287f Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sun, 19 May 2024 05:17:44 +0900 Subject: [PATCH 088/125] remove unused code --- scripts/xyz_grid.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index 4c83e92b24e..23dafd47778 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -95,17 +95,6 @@ def confirm_checkpoints_or_none(p, xs): raise RuntimeError(f"Unknown checkpoint: {x}") -def apply_clip_skip(p, x, xs): - opts.data["CLIP_stop_at_last_layers"] = x - - -def apply_upscale_latent_space(p, x, xs): - if x.lower().strip() != '0': - opts.data["use_scale_latent_for_hires_fix"] = True - else: - opts.data["use_scale_latent_for_hires_fix"] = False - - def apply_size(p, x: str, xs) -> None: try: width, _, height = x.partition('x') From 5867be2914c303c2f8ba86ff23dba4b31aeafa79 Mon Sep 17 00:00:00 2001 From: viking1304 Date: Mon, 20 May 2024 23:44:17 +0200 Subject: [PATCH 089/125] Use different torch versions for Intel and ARM Macs --- webui-macos-env.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/webui-macos-env.sh b/webui-macos-env.sh index db7e8b1a05b..ad0736378c6 100644 --- a/webui-macos-env.sh +++ b/webui-macos-env.sh @@ -11,7 +11,12 @@ fi export install_dir="$HOME" export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate" -export TORCH_COMMAND="pip install torch==2.1.0 torchvision==0.16.0" export PYTORCH_ENABLE_MPS_FALLBACK=1 +if [[ "$(sysctl -n machdep.cpu.brand_string)" =~ ^.*"Intel".*$ ]]; then + export TORCH_COMMAND="pip install torch==2.1.2 torchvision==0.16.2" +else + export TORCH_COMMAND="pip install torch==2.3.0 torchvision==0.18.0" +fi + #################################################################### From 344eda55d4550e91b1a3e95f8e669084a74c876f Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 22 May 2024 23:06:07 +0900 Subject: [PATCH 090/125] ReloadUI backgroundColor --background-fill-primary --- javascript/ui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ui.js b/javascript/ui.js index e0f5feebd6c..16faacebb8b 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -337,8 +337,8 @@ onOptionsChanged(function() { let txt2img_textarea, img2img_textarea = undefined; function restart_reload() { + document.body.style.backgroundColor = "var(--background-fill-primary)"; document.body.innerHTML = '

Reloading...

'; - var requestPing = function() { requestGet("./internal/ping", {}, function(data) { location.reload(); From 6dd53ce63dc70b3fcf7f25402d40b48f50abdf74 Mon Sep 17 00:00:00 2001 From: alcacode Date: Sun, 26 May 2024 15:36:55 +0200 Subject: [PATCH 091/125] Fix bug where file extension had an extra '.' under some circumstances Fix bug where under some circumstances an extra "." was inserted between the file base name and the file extension. The bug is triggered when the extension argument is one of "jpg", "jpeg", or "webp", and the image exceeds the format's dimension limit. Then the extension variable is set to ".png", resulting in the fullfn variable to evaluate to a string ending with "..png". --- modules/images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/images.py b/modules/images.py index c0ff8a6306a..1be176cdfad 100644 --- a/modules/images.py +++ b/modules/images.py @@ -653,7 +653,7 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i # WebP and JPG formats have maximum dimension limits of 16383 and 65535 respectively. switch to PNG which has a much higher limit if (image.height > 65535 or image.width > 65535) and extension.lower() in ("jpg", "jpeg") or (image.height > 16383 or image.width > 16383) and extension.lower() == "webp": print('Image dimensions too large; saving as PNG') - extension = ".png" + extension = "png" if save_to_dirs is None: save_to_dirs = (grid and opts.grid_save_to_dirs) or (not grid and opts.save_to_dirs and not no_prompt) From 8d6f7417385d1cacfd827800bdf02a0e8dd8f092 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 29 May 2024 03:33:32 +0900 Subject: [PATCH 092/125] #15883 -> #15882 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c16b561132..596b1ec45a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## 1.9.4 ### Bug Fixes: -* pin setuptools version to fix the startup error ([#15883](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/15883)) +* pin setuptools version to fix the startup error ([#15882](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/15882)) ## 1.9.3 From 10f8d0f84216e3642e960ea7118a5acc8a79546f Mon Sep 17 00:00:00 2001 From: eatmoreapple Date: Tue, 4 Jun 2024 15:02:13 +0800 Subject: [PATCH 093/125] feat: lora partial update precede full update. --- extensions-builtin/Lora/networks.py | 40 +++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 42b14dc239d..18809364b61 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -260,6 +260,16 @@ def load_networks(names, te_multipliers=None, unet_multipliers=None, dyn_dims=No loaded_networks.clear() + unavailable_networks = [] + for name in names: + if name.lower() in forbidden_network_aliases and available_networks.get(name) is None: + unavailable_networks.append(name) + elif available_network_aliases.get(name) is None: + unavailable_networks.append(name) + + if unavailable_networks: + update_available_networks_by_names(unavailable_networks) + networks_on_disk = [available_networks.get(name, None) if name.lower() in forbidden_network_aliases else available_network_aliases.get(name, None) for name in names] if any(x is None for x in networks_on_disk): list_available_networks() @@ -566,22 +576,16 @@ def network_MultiheadAttention_load_state_dict(self, *args, **kwargs): return originals.MultiheadAttention_load_state_dict(self, *args, **kwargs) -def list_available_networks(): - available_networks.clear() - available_network_aliases.clear() - forbidden_network_aliases.clear() - available_network_hash_lookup.clear() - forbidden_network_aliases.update({"none": 1, "Addams": 1}) - - os.makedirs(shared.cmd_opts.lora_dir, exist_ok=True) - +def process_network_files(names: list[str] | None = None): candidates = list(shared.walk_files(shared.cmd_opts.lora_dir, allowed_extensions=[".pt", ".ckpt", ".safetensors"])) candidates += list(shared.walk_files(shared.cmd_opts.lyco_dir_backcompat, allowed_extensions=[".pt", ".ckpt", ".safetensors"])) for filename in candidates: if os.path.isdir(filename): continue - name = os.path.splitext(os.path.basename(filename))[0] + # if names is provided, only load networks with names in the list + if names and name not in names: + continue try: entry = network.NetworkOnDisk(name, filename) except OSError: # should catch FileNotFoundError and PermissionError etc. @@ -597,6 +601,22 @@ def list_available_networks(): available_network_aliases[entry.alias] = entry +def update_available_networks_by_names(names: list[str]): + process_network_files(names) + + +def list_available_networks(): + available_networks.clear() + available_network_aliases.clear() + forbidden_network_aliases.clear() + available_network_hash_lookup.clear() + forbidden_network_aliases.update({"none": 1, "Addams": 1}) + + os.makedirs(shared.cmd_opts.lora_dir, exist_ok=True) + + process_network_files() + + re_network_name = re.compile(r"(.*)\s*\([0-9a-fA-F]+\)") From 25bbf31f5701b85804908a54b2f6af38a1d50f1f Mon Sep 17 00:00:00 2001 From: NouberNou Date: Thu, 6 Jun 2024 16:22:49 -0700 Subject: [PATCH 094/125] Fix for grids without comprehensive infotexts When generating grids, some scripts such as img2img loopback and ultimate SD upscale do not pass infotexts for each image since they are the same prompt. If you attempt to save those images using the saved button in the UI it will fail because it will look for the selected image info text. This fixes those errors by replicating the infotext for as many images are passed into the image list if the infotext parameter is none. --- modules/processing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/processing.py b/modules/processing.py index 76557dd7f5e..cb37a77dff2 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -569,7 +569,7 @@ def __init__(self, p: StableDiffusionProcessing, images_list, seed=-1, info="", self.all_negative_prompts = all_negative_prompts or p.all_negative_prompts or [self.negative_prompt] self.all_seeds = all_seeds or p.all_seeds or [self.seed] self.all_subseeds = all_subseeds or p.all_subseeds or [self.subseed] - self.infotexts = infotexts or [info] + self.infotexts = infotexts or [info] * len(image_list) self.version = program_version() def js(self): From 53f62674ae55e84aff4d4c9ed104ba9dce8ae887 Mon Sep 17 00:00:00 2001 From: NouberNou Date: Thu, 6 Jun 2024 16:30:01 -0700 Subject: [PATCH 095/125] Typo on edit Edited in fix in Github editor and mistyped from local copy --- modules/processing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/processing.py b/modules/processing.py index cb37a77dff2..c22da41692f 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -569,7 +569,7 @@ def __init__(self, p: StableDiffusionProcessing, images_list, seed=-1, info="", self.all_negative_prompts = all_negative_prompts or p.all_negative_prompts or [self.negative_prompt] self.all_seeds = all_seeds or p.all_seeds or [self.seed] self.all_subseeds = all_subseeds or p.all_subseeds or [self.subseed] - self.infotexts = infotexts or [info] * len(image_list) + self.infotexts = infotexts or [info] * len(images_list) self.version = program_version() def js(self): From 0769aa318a1896ccf74f57e6e943eb6b5fab5051 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 09:05:35 +0300 Subject: [PATCH 096/125] integrated edits as recommended in the PR #15804 --- modules/sd_hijack_optimizations.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/modules/sd_hijack_optimizations.py b/modules/sd_hijack_optimizations.py index 4c2dc56d45d..0269f1f5b4b 100644 --- a/modules/sd_hijack_optimizations.py +++ b/modules/sd_hijack_optimizations.py @@ -486,18 +486,7 @@ def xformers_attention_forward(self, x, context=None, mask=None, **kwargs): k_in = self.to_k(context_k) v_in = self.to_v(context_v) - def _reshape(t): - """rearrange(t, 'b n (h d) -> b n h d', h=h). - Using torch native operations to avoid overhead as this function is - called frequently. (70 times/it for SDXL) - """ - b, n, _ = t.shape # Get the batch size (b) and sequence length (n) - d = t.shape[2] // h # Determine the depth per head - return t.reshape(b, n, h, d) - - q = _reshape(q_in) - k = _reshape(k_in) - v = _reshape(v_in) + q, k, v = (t.reshape(t.shape[0], t.shape[1], h, -1) for t in (q_in, k_in, v_in)) del q_in, k_in, v_in @@ -509,7 +498,6 @@ def _reshape(t): out = out.to(dtype) - # out = rearrange(out, 'b n h d -> b n (h d)', h=h) b, n, h, d = out.shape out = out.reshape(b, n, h * d) return self.to_out(out) From 5429e4cff514df2f4cab242212ba347741eadc08 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 09:56:09 +0300 Subject: [PATCH 097/125] add proper infotext support for #15607 fix settings override not working for NGMI, s_churn, etc... --- modules/processing.py | 14 ++++++++------ modules/sd_samplers_cfg_denoiser.py | 12 +++++++----- modules/shared_options.py | 6 +++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index c22da41692f..97a7162aae2 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -238,11 +238,6 @@ def __post_init__(self): self.styles = [] self.sampler_noise_scheduler_override = None - self.s_min_uncond = self.s_min_uncond if self.s_min_uncond is not None else opts.s_min_uncond - self.s_churn = self.s_churn if self.s_churn is not None else opts.s_churn - self.s_tmin = self.s_tmin if self.s_tmin is not None else opts.s_tmin - self.s_tmax = (self.s_tmax if self.s_tmax is not None else opts.s_tmax) or float('inf') - self.s_noise = self.s_noise if self.s_noise is not None else opts.s_noise self.extra_generation_params = self.extra_generation_params or {} self.override_settings = self.override_settings or {} @@ -259,6 +254,13 @@ def __post_init__(self): self.cached_uc = StableDiffusionProcessing.cached_uc self.cached_c = StableDiffusionProcessing.cached_c + def fill_fields_from_opts(self): + self.s_min_uncond = self.s_min_uncond if self.s_min_uncond is not None else opts.s_min_uncond + self.s_churn = self.s_churn if self.s_churn is not None else opts.s_churn + self.s_tmin = self.s_tmin if self.s_tmin is not None else opts.s_tmin + self.s_tmax = (self.s_tmax if self.s_tmax is not None else opts.s_tmax) or float('inf') + self.s_noise = self.s_noise if self.s_noise is not None else opts.s_noise + @property def sd_model(self): return shared.sd_model @@ -794,7 +796,6 @@ def create_infotext(p, all_prompts, all_seeds, all_subseeds, comments=None, iter "Token merging ratio hr": None if not enable_hr or token_merging_ratio_hr == 0 else token_merging_ratio_hr, "Init image hash": getattr(p, 'init_img_hash', None), "RNG": opts.randn_source if opts.randn_source != "GPU" else None, - "NGMS": None if p.s_min_uncond == 0 else p.s_min_uncond, "Tiling": "True" if p.tiling else None, **p.extra_generation_params, "Version": program_version() if opts.add_version_to_infotext else None, @@ -890,6 +891,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed: modules.sd_hijack.model_hijack.apply_circular(p.tiling) modules.sd_hijack.model_hijack.clear_comments() + p.fill_fields_from_opts() p.setup_prompts() if isinstance(seed, list): diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index d89ea2c8bfc..f48f58a5089 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -214,12 +214,14 @@ def apply_blend(current_latent): if shared.opts.skip_early_cond != 0. and self.step / self.total_steps <= shared.opts.skip_early_cond: skip_uncond = True - x_in = x_in[:-batch_size] - sigma_in = sigma_in[:-batch_size] - - # alternating uncond allows for higher thresholds without the quality loss normally expected from raising it - if (self.step % 2 or shared.opts.s_min_uncond_all) and s_min_uncond > 0 and sigma[0] < s_min_uncond and not is_edit_model: + self.p.extra_generation_params["Skip Early CFG"] = shared.opts.skip_early_cond + elif (self.step % 2 or shared.opts.s_min_uncond_all) and s_min_uncond > 0 and sigma[0] < s_min_uncond and not is_edit_model: skip_uncond = True + self.p.extra_generation_params["NGMS"] = s_min_uncond + if shared.opts.s_min_uncond_all: + self.p.extra_generation_params["NGMS all steps"] = shared.opts.s_min_uncond_all + + if skip_uncond: x_in = x_in[:-batch_size] sigma_in = sigma_in[:-batch_size] diff --git a/modules/shared_options.py b/modules/shared_options.py index c711fa5f609..05c3d939160 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -209,8 +209,8 @@ options_templates.update(options_section(('optimizations', "Optimizations", "sd"), { "cross_attention_optimization": OptionInfo("Automatic", "Cross attention optimization", gr.Dropdown, lambda: {"choices": shared_items.cross_attention_optimizations()}), - "s_min_uncond": OptionInfo(0.0, "Negative Guidance minimum sigma", gr.Slider, {"minimum": 0.0, "maximum": 15.0, "step": 0.01}).link("PR", "https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9177").info("skip negative prompt for some steps when the image is almost ready; 0=disable, higher=faster"), - "s_min_uncond_all": OptionInfo(False, "NGMS: Skip every step").info("makes Negative Guidance minimum sigma skip negative guidance on every step instead of only half"), + "s_min_uncond": OptionInfo(0.0, "Negative Guidance minimum sigma", gr.Slider, {"minimum": 0.0, "maximum": 15.0, "step": 0.01}, infotext='NGMS').link("PR", "https://github.com/AUTOMATIC1111/stablediffusion-webui/pull/9177").info("skip negative prompt for some steps when the image is almost ready; 0=disable, higher=faster"), + "s_min_uncond_all": OptionInfo(False, "Negative Guidance minimum sigma all steps", infotext='NGMS all steps').info("By default, NGMS above skips every other step; this makes it skip all steps"), "token_merging_ratio": OptionInfo(0.0, "Token merging ratio", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}, infotext='Token merging ratio').link("PR", "https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9256").info("0=disable, higher=faster"), "token_merging_ratio_img2img": OptionInfo(0.0, "Token merging ratio for img2img", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}).info("only applies if non-zero and overrides above"), "token_merging_ratio_hr": OptionInfo(0.0, "Token merging ratio for high-res pass", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}, infotext='Token merging ratio hr').info("only applies if non-zero and overrides above"), @@ -382,7 +382,7 @@ 'uni_pc_order': OptionInfo(3, "UniPC order", gr.Slider, {"minimum": 1, "maximum": 50, "step": 1}, infotext='UniPC order').info("must be < sampling steps"), 'uni_pc_lower_order_final': OptionInfo(True, "UniPC lower order final", infotext='UniPC lower order final'), 'sd_noise_schedule': OptionInfo("Default", "Noise schedule for sampling", gr.Radio, {"choices": ["Default", "Zero Terminal SNR"]}, infotext="Noise Schedule").info("for use with zero terminal SNR trained models"), - 'skip_early_cond': OptionInfo(0, "Skip CFG during early sampling", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}, infotext="Skip Early CFG").info("CFG will be disabled (set to 1) on early steps, can both improve sample diversity/quality and speed up sampling"), + 'skip_early_cond': OptionInfo(0.0, "Ignore negative prompt during early sampling", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}, infotext="Skip Early CFG").info("disables CFG on a proportion of steps at the beginning of generation; 0=skip none; 1=skip all; can both improve sample diversity/quality and speed up sampling"), })) options_templates.update(options_section(('postprocessing', "Postprocessing", "postprocessing"), { From cd9e9e404955df19a72c832d68888db44ab7b382 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 10:13:38 +0300 Subject: [PATCH 098/125] remove unneeded tabulation --- .../Lora/ui_extra_networks_lora.py | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/extensions-builtin/Lora/ui_extra_networks_lora.py b/extensions-builtin/Lora/ui_extra_networks_lora.py index e35d90c6ea3..3e34d69dca4 100644 --- a/extensions-builtin/Lora/ui_extra_networks_lora.py +++ b/extensions-builtin/Lora/ui_extra_networks_lora.py @@ -60,19 +60,18 @@ def create_item(self, name, index=None, enable_filter=True): else: sd_version = lora_on_disk.sd_version - if shared.sd_model is not None: # still show LoRA in case an error occurs during initial model loading - if shared.opts.lora_show_all or not enable_filter: - pass - elif sd_version == network.SdVersion.Unknown: - model_version = network.SdVersion.SDXL if shared.sd_model.is_sdxl else network.SdVersion.SD2 if shared.sd_model.is_sd2 else network.SdVersion.SD1 - if model_version.name in shared.opts.lora_hide_unknown_for_versions: - return None - elif shared.sd_model.is_sdxl and sd_version != network.SdVersion.SDXL: - return None - elif shared.sd_model.is_sd2 and sd_version != network.SdVersion.SD2: - return None - elif shared.sd_model.is_sd1 and sd_version != network.SdVersion.SD1: + if shared.opts.lora_show_all or not enable_filter or not shared.sd_model: + pass + elif sd_version == network.SdVersion.Unknown: + model_version = network.SdVersion.SDXL if shared.sd_model.is_sdxl else network.SdVersion.SD2 if shared.sd_model.is_sd2 else network.SdVersion.SD1 + if model_version.name in shared.opts.lora_hide_unknown_for_versions: return None + elif shared.sd_model.is_sdxl and sd_version != network.SdVersion.SDXL: + return None + elif shared.sd_model.is_sd2 and sd_version != network.SdVersion.SD2: + return None + elif shared.sd_model.is_sd1 and sd_version != network.SdVersion.SD1: + return None return item From 510f025a01733f20ebe3997c1c3d159e6ac50148 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 4 Jun 2024 02:23:43 +0900 Subject: [PATCH 099/125] replace wsl-open with wslpath and explorer.exe --- modules/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/util.py b/modules/util.py index 0db13736cc7..768bf32d0bd 100644 --- a/modules/util.py +++ b/modules/util.py @@ -208,6 +208,6 @@ def open_folder(path): elif platform.system() == "Darwin": subprocess.Popen(["open", path]) elif "microsoft-standard-WSL2" in platform.uname().release: - subprocess.Popen(["wsl-open", path]) + subprocess.Popen(["explorer.exe", subprocess.check_output(["wslpath", "-w", path])]) else: subprocess.Popen(["xdg-open", path]) From 603509ec905a9c9ac1011e9531a9da180828fcc0 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 10:54:41 +0300 Subject: [PATCH 100/125] as per wfjsw's suggestion, revert changes for sd_hijack_checkpoint.py --- modules/sd_hijack_checkpoint.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/sd_hijack_checkpoint.py b/modules/sd_hijack_checkpoint.py index b2f05bbdcf0..2604d969f91 100644 --- a/modules/sd_hijack_checkpoint.py +++ b/modules/sd_hijack_checkpoint.py @@ -4,19 +4,16 @@ import ldm.modules.diffusionmodules.openaimodel -# Setting flag=False so that torch skips checking parameters. -# parameters checking is expensive in frequent operations. - def BasicTransformerBlock_forward(self, x, context=None): - return checkpoint(self._forward, x, context, flag=False) + return checkpoint(self._forward, x, context) def AttentionBlock_forward(self, x): - return checkpoint(self._forward, x, flag=False) + return checkpoint(self._forward, x) def ResBlock_forward(self, x, emb): - return checkpoint(self._forward, x, emb, flag=False) + return checkpoint(self._forward, x, emb) stored = [] From 07cf95c76ef052c120fbf1cfb69e3018e1cb06f8 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 11:26:34 +0300 Subject: [PATCH 101/125] update pickle safe filenames --- modules/safe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/safe.py b/modules/safe.py index b1d08a7928e..af019ffd980 100644 --- a/modules/safe.py +++ b/modules/safe.py @@ -64,8 +64,8 @@ def find_class(self, module, name): raise Exception(f"global '{module}/{name}' is forbidden") -# Regular expression that accepts 'dirname/version', 'dirname/data.pkl', and 'dirname/data/' -allowed_zip_names_re = re.compile(r"^([^/]+)/((data/\d+)|version|(data\.pkl))$") +# Regular expression that accepts 'dirname/version', 'dirname/byteorder', 'dirname/data.pkl', '.data/serialization_id', and 'dirname/data/' +allowed_zip_names_re = re.compile(r"^([^/]+)/((data/\d+)|version|byteorder|.data/serialization_id|(data\.pkl))$") data_pkl_re = re.compile(r"^([^/]+)/data\.pkl$") def check_zip_filenames(filename, names): From 1a7ffa2c76b0e68cd647c1f7f07235bcf85c985d Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 11:35:45 +0300 Subject: [PATCH 102/125] remove extra local variable --- modules/paths_internal.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/paths_internal.py b/modules/paths_internal.py index 884984c9c0a..67521f5cd5d 100644 --- a/modules/paths_internal.py +++ b/modules/paths_internal.py @@ -28,9 +28,8 @@ cmd_opts_pre = parser_pre.parse_known_args()[0] data_path = cmd_opts_pre.data_dir -models_override = cmd_opts_pre.models_dir -models_path = models_override if models_override else os.path.join(data_path, "models") +models_path = cmd_opts_pre.models_dir if cmd_opts_pre.models_dir else os.path.join(data_path, "models") extensions_dir = os.path.join(data_path, "extensions") extensions_builtin_dir = os.path.join(script_path, "extensions-builtin") config_states_dir = os.path.join(script_path, "config_states") From 547778b10f25def4e040b81942a2b23295567de3 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sat, 8 Jun 2024 12:41:28 +0300 Subject: [PATCH 103/125] possibly make NaN check cheaper --- modules/devices.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/devices.py b/modules/devices.py index 7de34ac51c3..d574975e51b 100644 --- a/modules/devices.py +++ b/modules/devices.py @@ -243,22 +243,22 @@ def test_for_nans(x, where): if shared.cmd_opts.disable_nan_check: return - if not torch.all(torch.isnan(x)).item(): + if not torch.isnan(x[(0, ) * len(x.shape)]): return if where == "unet": - message = "A tensor with all NaNs was produced in Unet." + message = "A tensor with NaNs was produced in Unet." if not shared.cmd_opts.no_half: message += " This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the \"Upcast cross attention layer to float32\" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this." elif where == "vae": - message = "A tensor with all NaNs was produced in VAE." + message = "A tensor with NaNs was produced in VAE." if not shared.cmd_opts.no_half and not shared.cmd_opts.no_half_vae: message += " This could be because there's not enough precision to represent the picture. Try adding --no-half-vae commandline argument to fix this." else: - message = "A tensor with all NaNs was produced." + message = "A tensor with NaNs was produced." message += " Use --disable-nan-check commandline argument to disable this check." From 39a6d5655f6c162e2b8da024a1719d79304332a2 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:55:07 -0400 Subject: [PATCH 104/125] patch k_diffusion to_d and strip device from schedulers --- modules/sd_schedulers.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 0c09af8d0b5..a2b9eb290a2 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -4,6 +4,12 @@ import k_diffusion +def to_d(x, sigma, denoised): + """Converts a denoiser output to a Karras ODE derivative.""" + return (x - denoised) / sigma + +k_diffusion.sampling.to_d = to_d + import numpy as np from modules import shared @@ -19,11 +25,11 @@ class Scheduler: aliases: list = None -def uniform(n, sigma_min, sigma_max, inner_model, device): +def uniform(n, sigma_min, sigma_max, inner_model): return inner_model.get_sigmas(n) -def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): +def sgm_uniform(n, sigma_min, sigma_max, inner_model): start = inner_model.sigma_to_t(torch.tensor(sigma_max)) end = inner_model.sigma_to_t(torch.tensor(sigma_min)) sigs = [ @@ -31,9 +37,9 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): for ts in torch.linspace(start, end, n + 1)[:-1] ] sigs += [0.0] - return torch.FloatTensor(sigs).to(device) + return torch.FloatTensor(sigs) -def get_align_your_steps_sigmas(n, sigma_min, sigma_max, device='cpu'): +def get_align_your_steps_sigmas(n, sigma_min, sigma_max): # https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html def loglinear_interp(t_steps, num_steps): """ @@ -59,12 +65,12 @@ def loglinear_interp(t_steps, num_steps): else: sigmas.append(0.0) - return torch.FloatTensor(sigmas).to(device) + return torch.FloatTensor(sigmas) -def kl_optimal(n, sigma_min, sigma_max, device): - alpha_min = torch.arctan(torch.tensor(sigma_min, device=device)) - alpha_max = torch.arctan(torch.tensor(sigma_max, device=device)) - step_indices = torch.arange(n + 1, device=device) +def kl_optimal(n, sigma_min, sigma_max): + alpha_min = torch.arctan(torch.tensor(sigma_min)) + alpha_max = torch.arctan(torch.tensor(sigma_max)) + step_indices = torch.arange(n + 1) sigmas = torch.tan(step_indices / n * alpha_min + (1.0 - step_indices / n) * alpha_max) return sigmas From d52a1e1a22f19c941d581b92904a99d4dd7b22c1 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:56:23 -0400 Subject: [PATCH 105/125] lint --- modules/sd_schedulers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index a2b9eb290a2..9916cf05ace 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -4,16 +4,16 @@ import k_diffusion +import numpy as np + +from modules import shared + def to_d(x, sigma, denoised): """Converts a denoiser output to a Karras ODE derivative.""" return (x - denoised) / sigma k_diffusion.sampling.to_d = to_d -import numpy as np - -from modules import shared - @dataclasses.dataclass class Scheduler: name: str From d875cda565171407e1e2dc087fb5c5140359c6ec Mon Sep 17 00:00:00 2001 From: huchenlei Date: Sat, 8 Jun 2024 22:11:11 -0400 Subject: [PATCH 106/125] Fix sdxl inpaint --- modules/processing.py | 4 ++-- modules/sd_models.py | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index 0ff6a45c0c5..dc538272116 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -115,7 +115,7 @@ def txt2img_image_conditioning(sd_model, x, width, height): return x.new_zeros(x.shape[0], 2*sd_model.noise_augmentor.time_embed.dim, dtype=x.dtype, device=x.device) else: - if getattr(sd_model.model, "is_sdxl_inpaint", False): + if sd_model.is_sdxl_inpaint: # The "masked-image" in this case will just be all 0.5 since the entire image is masked. image_conditioning = torch.ones(x.shape[0], 3, height, width, device=x.device) * 0.5 image_conditioning = images_tensor_to_samples(image_conditioning, @@ -389,7 +389,7 @@ def img2img_image_conditioning(self, source_image, latent_image, image_mask=None if self.sampler.conditioning_key == "crossattn-adm": return self.unclip_image_conditioning(source_image) - if getattr(self.sampler.model_wrap.inner_model.model, "is_sdxl_inpaint", False): + if self.sampler.model_wrap.inner_model.is_sdxl_inpaint: return self.inpainting_image_conditioning(source_image, latent_image, image_mask=image_mask) # Dummy zero conditioning if we're not using inpainting or depth model. diff --git a/modules/sd_models.py b/modules/sd_models.py index 61bd15d8f05..93ff6c5fe9e 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -386,13 +386,6 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer model.is_sd2 = not model.is_sdxl and hasattr(model.cond_stage_model, 'model') model.is_sd1 = not model.is_sdxl and not model.is_sd2 model.is_ssd = model.is_sdxl and 'model.diffusion_model.middle_block.1.transformer_blocks.0.attn1.to_q.weight' not in state_dict.keys() - # Set is_sdxl_inpaint flag. - diffusion_model_input = state_dict.get('diffusion_model.input_blocks.0.0.weight', None) - model.is_sdxl_inpaint = ( - model.is_sdxl and - diffusion_model_input is not None and - diffusion_model_input.shape[1] == 9 - ) if model.is_sdxl: sd_models_xl.extend_sdxl(model) @@ -408,6 +401,18 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer del state_dict + # Set is_sdxl_inpaint flag. + # Perform this check after model initialization to make sure state_dict + # structure is already known. + diffusion_model_input = model.model.state_dict().get( + 'diffusion_model.input_blocks.0.0.weight' + ) + model.is_sdxl_inpaint = ( + model.is_sdxl and + diffusion_model_input is not None and + diffusion_model_input.shape[1] == 9 + ) + if shared.cmd_opts.opt_channelslast: model.to(memory_format=torch.channels_last) timer.record("apply channels_last") From f89b5dbbd282091fd6b3318f3ef20cf23cf9ea3a Mon Sep 17 00:00:00 2001 From: huchenlei Date: Sat, 8 Jun 2024 22:15:37 -0400 Subject: [PATCH 107/125] nit --- modules/sd_models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 93ff6c5fe9e..af35187cdb0 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -402,8 +402,9 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer del state_dict # Set is_sdxl_inpaint flag. - # Perform this check after model initialization to make sure state_dict - # structure is already known. + # Checks Unet structure to detect inpaint model. The inpaint model's + # checkpoint state_dict does not contain the key + # 'diffusion_model.input_blocks.0.0.weight'. diffusion_model_input = model.model.state_dict().get( 'diffusion_model.input_blocks.0.0.weight' ) From 6447ff49d335edd7dccc4b75e262615ce13e76ac Mon Sep 17 00:00:00 2001 From: bluelovers Date: Sun, 9 Jun 2024 19:07:32 +0800 Subject: [PATCH 108/125] feat: save pattern add `basename` `grid` or `xyz_grid` or `img` ```py 'basename': lambda self: 'img' if self.basename == '' else self.basename, ``` --- modules/images.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/images.py b/modules/images.py index 05432e3a7f6..90c65b740c8 100644 --- a/modules/images.py +++ b/modules/images.py @@ -377,6 +377,7 @@ def get_sampler_scheduler(p, sampler): class FilenameGenerator: replacements = { + 'basename': lambda self: 'img' if self.basename == '' else self.basename, 'seed': lambda self: self.seed if self.seed is not None else '', 'seed_first': lambda self: self.seed if self.p.batch_size == 1 else self.p.all_seeds[0], 'seed_last': lambda self: NOTHING_AND_SKIP_PREVIOUS_TEXT if self.p.batch_size == 1 else self.p.all_seeds[-1], @@ -413,12 +414,13 @@ class FilenameGenerator: } default_time_format = '%Y%m%d%H%M%S' - def __init__(self, p, seed, prompt, image, zip=False): + def __init__(self, p, seed, prompt, image, zip=False, basename=""): self.p = p self.seed = seed self.prompt = prompt self.image = image self.zip = zip + self.basename = basename def get_vae_filename(self): """Get the name of the VAE file.""" @@ -649,7 +651,7 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i txt_fullfn (`str` or None): If a text file is saved for this image, this will be its full path. Otherwise None. """ - namegen = FilenameGenerator(p, seed, prompt, image) + namegen = FilenameGenerator(p, seed, prompt, image, zip=False, basename=basename) # WebP and JPG formats have maximum dimension limits of 16383 and 65535 respectively. switch to PNG which has a much higher limit if (image.height > 65535 or image.width > 65535) and extension.lower() in ("jpg", "jpeg") or (image.height > 16383 or image.width > 16383) and extension.lower() == "webp": From 6214aa7d2a84aa2a12962706579a2dba3470fb51 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 16:24:04 +0300 Subject: [PATCH 109/125] performance: check for nans in unet only once, after all steps have been completed --- modules/processing.py | 5 +++++ modules/sd_samplers_cfg_denoiser.py | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index dc538272116..65e37db0a46 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -625,6 +625,9 @@ class DecodedSamples(list): def decode_latent_batch(model, batch, target_device=None, check_for_nans=False): samples = DecodedSamples() + if check_for_nans: + devices.test_for_nans(batch, "unet") + for i in range(batch.shape[0]): sample = decode_first_stage(model, batch[i:i + 1])[0] @@ -987,6 +990,8 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed: if getattr(samples_ddim, 'already_decoded', False): x_samples_ddim = samples_ddim else: + devices.test_for_nans(samples_ddim, "unet") + if opts.sd_vae_decode_method != 'Full': p.extra_generation_params['VAE Decoder'] = opts.sd_vae_decode_method x_samples_ddim = decode_latent_batch(p.sd_model, samples_ddim, target_device=devices.cpu, check_for_nans=True) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index f48f58a5089..06d2661f4f5 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -273,8 +273,6 @@ def apply_blend(current_latent): denoised_params = CFGDenoisedParams(x_out, state.sampling_step, state.sampling_steps, self.inner_model) cfg_denoised_callback(denoised_params) - devices.test_for_nans(x_out, "unet") - if is_edit_model: denoised = self.combine_denoised_for_edit_model(x_out, cond_scale) elif skip_uncond: From e368cd2810af0c7a734c33b25549110beacdf53f Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 16:46:08 +0300 Subject: [PATCH 110/125] stylistic changes for #15978 --- modules/images.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/images.py b/modules/images.py index 90c65b740c8..3253847fed1 100644 --- a/modules/images.py +++ b/modules/images.py @@ -377,7 +377,7 @@ def get_sampler_scheduler(p, sampler): class FilenameGenerator: replacements = { - 'basename': lambda self: 'img' if self.basename == '' else self.basename, + 'basename': lambda self: self.basename or 'img', 'seed': lambda self: self.seed if self.seed is not None else '', 'seed_first': lambda self: self.seed if self.p.batch_size == 1 else self.p.all_seeds[0], 'seed_last': lambda self: NOTHING_AND_SKIP_PREVIOUS_TEXT if self.p.batch_size == 1 else self.p.all_seeds[-1], @@ -651,7 +651,7 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i txt_fullfn (`str` or None): If a text file is saved for this image, this will be its full path. Otherwise None. """ - namegen = FilenameGenerator(p, seed, prompt, image, zip=False, basename=basename) + namegen = FilenameGenerator(p, seed, prompt, image, basename=basename) # WebP and JPG formats have maximum dimension limits of 16383 and 65535 respectively. switch to PNG which has a much higher limit if (image.height > 65535 or image.width > 65535) and extension.lower() in ("jpg", "jpeg") or (image.height > 16383 or image.width > 16383) and extension.lower() == "webp": From aafbb5b403e524b94367c5893f76f834b98de26d Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 16:47:08 +0300 Subject: [PATCH 111/125] lint --- modules/sd_samplers_cfg_denoiser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index 06d2661f4f5..a86fa88eee9 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -1,5 +1,5 @@ import torch -from modules import prompt_parser, devices, sd_samplers_common +from modules import prompt_parser, sd_samplers_common from modules.shared import opts, state import modules.shared as shared From 57e6d05a43e4bdf4575e520f1a04c17e80fe58cc Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 21:18:36 +0300 Subject: [PATCH 112/125] added tool for profiling code --- modules/call_queue.py | 10 +++++++-- modules/processing.py | 5 +++-- modules/profiling.py | 46 +++++++++++++++++++++++++++++++++++++++ modules/shared_options.py | 16 ++++++++++++++ style.css | 6 ++++- 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 modules/profiling.py diff --git a/modules/call_queue.py b/modules/call_queue.py index b50931bcdb9..d22c23b317c 100644 --- a/modules/call_queue.py +++ b/modules/call_queue.py @@ -1,8 +1,9 @@ +import os.path from functools import wraps import html import time -from modules import shared, progress, errors, devices, fifo_lock +from modules import shared, progress, errors, devices, fifo_lock, profiling queue_lock = fifo_lock.FIFOLock() @@ -111,8 +112,13 @@ def f(*args, extra_outputs_array=extra_outputs, **kwargs): else: vram_html = '' + if shared.opts.profiling_enable and os.path.exists(shared.opts.profiling_filename): + profiling_html = f"
" + else: + profiling_html = '' + # last item is always HTML - res[-1] += f"

Time taken: {elapsed_text}

{vram_html}
" + res[-1] += f"

Time taken: {elapsed_text}

{vram_html}{profiling_html}
" return tuple(res) diff --git a/modules/processing.py b/modules/processing.py index 65e37db0a46..91cb94db1b9 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -16,7 +16,7 @@ from typing import Any import modules.sd_hijack -from modules import devices, prompt_parser, masking, sd_samplers, lowvram, infotext_utils, extra_networks, sd_vae_approx, scripts, sd_samplers_common, sd_unet, errors, rng +from modules import devices, prompt_parser, masking, sd_samplers, lowvram, infotext_utils, extra_networks, sd_vae_approx, scripts, sd_samplers_common, sd_unet, errors, rng, profiling from modules.rng import slerp # noqa: F401 from modules.sd_hijack import model_hijack from modules.sd_samplers_common import images_tensor_to_samples, decode_first_stage, approximation_indexes @@ -843,7 +843,8 @@ def process_images(p: StableDiffusionProcessing) -> Processed: # backwards compatibility, fix sampler and scheduler if invalid sd_samplers.fix_p_invalid_sampler_and_scheduler(p) - res = process_images_inner(p) + with profiling.Profiler(): + res = process_images_inner(p) finally: sd_models.apply_token_merging(p.sd_model, 0) diff --git a/modules/profiling.py b/modules/profiling.py new file mode 100644 index 00000000000..95b59f71a20 --- /dev/null +++ b/modules/profiling.py @@ -0,0 +1,46 @@ +import torch + +from modules import shared, ui_gradio_extensions + + +class Profiler: + def __init__(self): + if not shared.opts.profiling_enable: + self.profiler = None + return + + activities = [] + if "CPU" in shared.opts.profiling_activities: + activities.append(torch.profiler.ProfilerActivity.CPU) + if "CUDA" in shared.opts.profiling_activities: + activities.append(torch.profiler.ProfilerActivity.CUDA) + + if not activities: + self.profiler = None + return + + self.profiler = torch.profiler.profile( + activities=activities, + record_shapes=shared.opts.profiling_record_shapes, + profile_memory=shared.opts.profiling_profile_memory, + with_stack=shared.opts.profiling_with_stack + ) + + def __enter__(self): + if self.profiler: + self.profiler.__enter__() + + return self + + def __exit__(self, exc_type, exc, exc_tb): + if self.profiler: + shared.state.textinfo = "Finishing profile..." + + self.profiler.__exit__(exc_type, exc, exc_tb) + + self.profiler.export_chrome_trace(shared.opts.profiling_filename) + + +def webpath(): + return ui_gradio_extensions.webpath(shared.opts.profiling_filename) + diff --git a/modules/shared_options.py b/modules/shared_options.py index e2e02094fef..104d8a54484 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -129,6 +129,22 @@ "dump_stacks_on_signal": OptionInfo(False, "Print stack traces before exiting the program with ctrl+c."), })) +options_templates.update(options_section(('profiler', "Profiler", "system"), { + "profiling_explanation": OptionHTML(""" +Those settings allow you to enable torch profiler when generating pictures. +Profiling allows you to see which code uses how much of computer's resources during generation. +Each generation writes its own profile to one file, overwriting previous. +The file can be viewed in Chrome, or on a Perfetto web site. +Warning: writing profile can take a lot of time, up to 30 seconds, and the file itelf can be around 500MB in size. +"""), + "profiling_enable": OptionInfo(False, "Enable profiling"), + "profiling_activities": OptionInfo(["CPU"], "Activities", gr.CheckboxGroup, {"choices": ["CPU", "CUDA"]}), + "profiling_record_shapes": OptionInfo(True, "Record shapes"), + "profiling_profile_memory": OptionInfo(True, "Profile memory"), + "profiling_with_stack": OptionInfo(True, "Include python stack"), + "profiling_filename": OptionInfo("trace.json", "Profile filename"), +})) + options_templates.update(options_section(('API', "API", "system"), { "api_enable_requests": OptionInfo(True, "Allow http:// and https:// URLs for input images in API", restrict_api=True), "api_forbid_local_requests": OptionInfo(True, "Forbid URLs to local resources", restrict_api=True), diff --git a/style.css b/style.css index 467c29cdf97..64ef61bad46 100644 --- a/style.css +++ b/style.css @@ -279,7 +279,7 @@ input[type="checkbox"].input-accordion-checkbox{ display: inline-block; } -.html-log .performance p.time, .performance p.vram, .performance p.time abbr, .performance p.vram abbr { +.html-log .performance p.time, .performance p.vram, .performance p.profile, .performance p.time abbr, .performance p.vram abbr { margin-bottom: 0; color: var(--block-title-text-color); } @@ -291,6 +291,10 @@ input[type="checkbox"].input-accordion-checkbox{ margin-left: auto; } +.html-log .performance p.profile { + margin-left: 0.5em; +} + .html-log .performance .measurement{ color: var(--body-text-color); font-weight: bold; From 99e65ec6182c4e1201d16713f58c899bf26ba2ac Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 21:23:53 +0300 Subject: [PATCH 113/125] undo some changes from #15823 and fix whitespace --- modules/sd_samplers_kdiffusion.py | 4 ++-- modules/sd_schedulers.py | 28 +++++++++++++++------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/modules/sd_samplers_kdiffusion.py b/modules/sd_samplers_kdiffusion.py index 228de49449e..64e14e0c2a3 100644 --- a/modules/sd_samplers_kdiffusion.py +++ b/modules/sd_samplers_kdiffusion.py @@ -1,7 +1,7 @@ import torch import inspect import k_diffusion.sampling -from modules import sd_samplers_common, sd_samplers_extra, sd_samplers_cfg_denoiser, sd_schedulers +from modules import sd_samplers_common, sd_samplers_extra, sd_samplers_cfg_denoiser, sd_schedulers, devices from modules.sd_samplers_cfg_denoiser import CFGDenoiser # noqa: F401 from modules.script_callbacks import ExtraNoiseParams, extra_noise_callback @@ -115,7 +115,7 @@ def get_sigmas(self, p, steps): if scheduler.need_inner_model: sigmas_kwargs['inner_model'] = self.model_wrap - sigmas = scheduler.function(n=steps, **sigmas_kwargs) + sigmas = scheduler.function(n=steps, **sigmas_kwargs, device=devices.cpu) if discard_next_to_last_sigma: sigmas = torch.cat([sigmas[:-2], sigmas[-1:]]) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 9916cf05ace..0165e6a0286 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -1,19 +1,19 @@ import dataclasses - import torch - import k_diffusion - import numpy as np from modules import shared + def to_d(x, sigma, denoised): """Converts a denoiser output to a Karras ODE derivative.""" return (x - denoised) / sigma + k_diffusion.sampling.to_d = to_d + @dataclasses.dataclass class Scheduler: name: str @@ -25,11 +25,11 @@ class Scheduler: aliases: list = None -def uniform(n, sigma_min, sigma_max, inner_model): - return inner_model.get_sigmas(n) +def uniform(n, sigma_min, sigma_max, inner_model, device): + return inner_model.get_sigmas(n).to(device) -def sgm_uniform(n, sigma_min, sigma_max, inner_model): +def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): start = inner_model.sigma_to_t(torch.tensor(sigma_max)) end = inner_model.sigma_to_t(torch.tensor(sigma_min)) sigs = [ @@ -37,9 +37,10 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model): for ts in torch.linspace(start, end, n + 1)[:-1] ] sigs += [0.0] - return torch.FloatTensor(sigs) + return torch.FloatTensor(sigs).to(device) -def get_align_your_steps_sigmas(n, sigma_min, sigma_max): + +def get_align_your_steps_sigmas(n, sigma_min, sigma_max, device): # https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html def loglinear_interp(t_steps, num_steps): """ @@ -65,12 +66,13 @@ def loglinear_interp(t_steps, num_steps): else: sigmas.append(0.0) - return torch.FloatTensor(sigmas) + return torch.FloatTensor(sigmas).to(device) + -def kl_optimal(n, sigma_min, sigma_max): - alpha_min = torch.arctan(torch.tensor(sigma_min)) - alpha_max = torch.arctan(torch.tensor(sigma_max)) - step_indices = torch.arange(n + 1) +def kl_optimal(n, sigma_min, sigma_max, device): + alpha_min = torch.arctan(torch.tensor(sigma_min, device=device)) + alpha_max = torch.arctan(torch.tensor(sigma_max, device=device)) + step_indices = torch.arange(n + 1, device=device) sigmas = torch.tan(step_indices / n * alpha_min + (1.0 - step_indices / n) * alpha_max) return sigmas From d2097dbdd99aa528d8459ad7b62d3a2230a14e65 Mon Sep 17 00:00:00 2001 From: AUTOMATIC1111 <16777216c@gmail.com> Date: Sun, 9 Jun 2024 21:33:32 +0300 Subject: [PATCH 114/125] added onOptionsAvailable callback for javascript for --- javascript/ui.js | 1 + script.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/javascript/ui.js b/javascript/ui.js index 16faacebb8b..ff6f8974b0e 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -299,6 +299,7 @@ onAfterUiUpdate(function() { var jsdata = textarea.value; opts = JSON.parse(jsdata); + executeCallbacks(optionsAvailableCallbacks); /*global optionsAvailableCallbacks*/ executeCallbacks(optionsChangedCallbacks); /*global optionsChangedCallbacks*/ Object.defineProperty(textarea, 'value', { diff --git a/script.js b/script.js index f069b1ef002..de1a9000d4f 100644 --- a/script.js +++ b/script.js @@ -29,6 +29,7 @@ var uiAfterUpdateCallbacks = []; var uiLoadedCallbacks = []; var uiTabChangeCallbacks = []; var optionsChangedCallbacks = []; +var optionsAvailableCallbacks = []; var uiAfterUpdateTimeout = null; var uiCurrentTab = null; @@ -77,6 +78,20 @@ function onOptionsChanged(callback) { optionsChangedCallbacks.push(callback); } +/** + * Register callback to be called when the options (in opts global variable) are available. + * The callback receives no arguments. + * If you register the callback after the options are available, it's just immediately called. + */ +function onOptionsAvailable(callback) { + if (Object.keys(opts).length != 0) { + callback(); + return; + } + + optionsAvailableCallbacks.push(callback); +} + function executeCallbacks(queue, arg) { for (const callback of queue) { try { From 74ee8fd1e32d06a45e669dd5cce6a2bff786d3a4 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Mon, 10 Jun 2024 04:35:11 +0900 Subject: [PATCH 115/125] .gitignore trace.json --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 519b4a53dcb..96cfe22dbd1 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ notification.mp3 /.coverage* /test/test_outputs /cache +trace.json From 17e846150c49395e44550e18cbe5120fcf64c173 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Tue, 28 May 2024 19:35:35 -0400 Subject: [PATCH 116/125] Add process_before_every_sampling hook --- modules/processing.py | 24 ++++++++++++++++++++++++ modules/scripts.py | 15 +++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/modules/processing.py b/modules/processing.py index 91cb94db1b9..79a3f0a726c 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -1330,6 +1330,15 @@ def sample(self, conditioning, unconditional_conditioning, seeds, subseeds, subs # here we generate an image normally x = self.rng.next() + if self.scripts is not None: + self.scripts.process_before_every_sampling( + p=self, + x=x, + noise=x, + c=conditioning, + uc=unconditional_conditioning + ) + samples = self.sampler.sample(self, x, conditioning, unconditional_conditioning, image_conditioning=self.txt2img_image_conditioning(x)) del x @@ -1430,6 +1439,13 @@ def save_intermediate(image, index): if self.scripts is not None: self.scripts.before_hr(self) + self.scripts.process_before_every_sampling( + p=self, + x=samples, + noise=noise, + c=self.hr_c, + uc=self.hr_uc, + ) samples = self.sampler.sample_img2img(self, samples, noise, self.hr_c, self.hr_uc, steps=self.hr_second_pass_steps or self.steps, image_conditioning=image_conditioning) @@ -1743,6 +1759,14 @@ def sample(self, conditioning, unconditional_conditioning, seeds, subseeds, subs self.extra_generation_params["Noise multiplier"] = self.initial_noise_multiplier x *= self.initial_noise_multiplier + if self.scripts is not None: + self.scripts.process_before_every_sampling( + p=self, + x=self.init_latent, + noise=x, + c=conditioning, + uc=unconditional_conditioning + ) samples = self.sampler.sample_img2img(self, self.init_latent, x, conditioning, unconditional_conditioning, image_conditioning=self.image_conditioning) if self.mask is not None: diff --git a/modules/scripts.py b/modules/scripts.py index 70ccfbe46b1..8eca396b140 100644 --- a/modules/scripts.py +++ b/modules/scripts.py @@ -187,6 +187,13 @@ def after_extra_networks_activate(self, p, *args, **kwargs): """ pass + def process_before_every_sampling(self, p, *args, **kwargs): + """ + Similar to process(), called before every sampling. + If you use high-res fix, this will be called two times. + """ + pass + def process_batch(self, p, *args, **kwargs): """ Same as process(), but called for every batch. @@ -826,6 +833,14 @@ def process(self, p): except Exception: errors.report(f"Error running process: {script.filename}", exc_info=True) + def process_before_every_sampling(self, p, **kwargs): + for script in self.ordered_scripts('process_before_every_sampling'): + try: + script_args = p.script_args[script.args_from:script.args_to] + script.process_before_every_sampling(p, *script_args, **kwargs) + except Exception: + errors.report(f"Error running process_before_every_sampling: {script.filename}", exc_info=True) + def before_process_batch(self, p, **kwargs): for script in self.ordered_scripts('before_process_batch'): try: From abacb735f4f20a301e11a36442950b55b19626fe Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:47:12 +0900 Subject: [PATCH 117/125] multi size grid --- modules/images.py | 9 ++++++--- scripts/xyz_grid.py | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/images.py b/modules/images.py index 3253847fed1..cfdfb338446 100644 --- a/modules/images.py +++ b/modules/images.py @@ -54,11 +54,14 @@ def image_grid(imgs, batch_size=1, rows=None): params = script_callbacks.ImageGridLoopParams(imgs, cols, rows) script_callbacks.image_grid_callback(params) - w, h = imgs[0].size - grid = Image.new('RGB', size=(params.cols * w, params.rows * h), color='black') + w, h = map(max, zip(*(img.size for img in imgs))) + grid_background_color = ImageColor.getcolor(opts.grid_background_color, 'RGB') + grid = Image.new('RGB', size=(params.cols * w, params.rows * h), color=grid_background_color) for i, img in enumerate(params.imgs): - grid.paste(img, box=(i % params.cols * w, i // params.cols * h)) + img_w, img_h = img.size + w_offset, h_offset = 0 if img_w == w else (w - img_w) // 2, 0 if img_h == h else (h - img_h) // 2 + grid.paste(img, box=(i % params.cols * w + w_offset, i // params.cols * h + h_offset)) return grid diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index 52e343c4fb8..606d72d42af 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -375,16 +375,18 @@ def index(ix, iy, iz): end_index = start_index + len(xs) * len(ys) grid = images.image_grid(processed_result.images[start_index:end_index], rows=len(ys)) if draw_legend: - grid = images.draw_grid_annotations(grid, processed_result.images[start_index].size[0], processed_result.images[start_index].size[1], hor_texts, ver_texts, margin_size) + grid_max_w, grid_max_h = map(max, zip(*(img.size for img in processed_result.images[start_index:end_index]))) + grid = images.draw_grid_annotations(grid, grid_max_w, grid_max_h, hor_texts, ver_texts, margin_size) processed_result.images.insert(i, grid) processed_result.all_prompts.insert(i, processed_result.all_prompts[start_index]) processed_result.all_seeds.insert(i, processed_result.all_seeds[start_index]) processed_result.infotexts.insert(i, processed_result.infotexts[start_index]) - sub_grid_size = processed_result.images[0].size + # sub_grid_size = processed_result.images[0].size z_grid = images.image_grid(processed_result.images[:z_count], rows=1) + z_sub_grid_max_w, z_sub_grid_max_h = map(max, zip(*(img.size for img in processed_result.images[:z_count]))) if draw_legend: - z_grid = images.draw_grid_annotations(z_grid, sub_grid_size[0], sub_grid_size[1], title_texts, [[images.GridAnnotation()]]) + z_grid = images.draw_grid_annotations(z_grid, z_sub_grid_max_w, z_sub_grid_max_h, title_texts, [[images.GridAnnotation()]]) processed_result.images.insert(0, z_grid) # TODO: Deeper aspects of the program rely on grid info being misaligned between metadata arrays, which is not ideal. # processed_result.all_prompts.insert(0, processed_result.all_prompts[0]) From 00e09382cd85c77ac35545c7264855823dfc2eb1 Mon Sep 17 00:00:00 2001 From: Silver Date: Mon, 10 Jun 2024 22:11:11 +0200 Subject: [PATCH 118/125] Add option to enable clip skip for clip L on SDXL --- modules/sd_hijack_clip.py | 2 ++ modules/shared_options.py | 1 + 2 files changed, 3 insertions(+) diff --git a/modules/sd_hijack_clip.py b/modules/sd_hijack_clip.py index 6ef10ac7cd8..3db047dfd96 100644 --- a/modules/sd_hijack_clip.py +++ b/modules/sd_hijack_clip.py @@ -355,6 +355,8 @@ def encode_with_transformers(self, tokens): if self.wrapped.layer == "last": z = outputs.last_hidden_state + elif opts.sdxl_clip_l_skip is True: + z = outputs.hidden_states[-opts.CLIP_stop_at_last_layers] else: z = outputs.hidden_states[self.wrapped.layer_idx] diff --git a/modules/shared_options.py b/modules/shared_options.py index 104d8a54484..51d51d8ee66 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -176,6 +176,7 @@ "emphasis": OptionInfo("Original", "Emphasis mode", gr.Radio, lambda: {"choices": [x.name for x in sd_emphasis.options]}, infotext="Emphasis").info("makes it possible to make model to pay (more:1.1) or (less:0.9) attention to text when you use the syntax in prompt; " + sd_emphasis.get_options_descriptions()), "enable_batch_seeds": OptionInfo(True, "Make K-diffusion samplers produce same images in a batch as when making a single image"), "comma_padding_backtrack": OptionInfo(20, "Prompt word wrap length limit", gr.Slider, {"minimum": 0, "maximum": 74, "step": 1}).info("in tokens - for texts shorter than specified, if they don't fit into 75 token limit, move them to the next 75 token chunk"), + "sdxl_clip_l_skip": OptionInfo(False, "Clip skip SDXL", gr.Checkbox).info("Enable Clip skip for the secondary clip model in sdxl. Has no effect on SD 1.5 or SD 2.0/2.1."), "CLIP_stop_at_last_layers": OptionInfo(1, "Clip skip", gr.Slider, {"minimum": 1, "maximum": 12, "step": 1}, infotext="Clip skip").link("wiki", "https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#clip-skip").info("ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer"), "upcast_attn": OptionInfo(False, "Upcast cross attention layer to float32"), "randn_source": OptionInfo("GPU", "Random number generator source.", gr.Radio, {"choices": ["GPU", "CPU", "NV"]}, infotext="RNG").info("changes seeds drastically; use CPU to produce the same picture across different videocard vendors; use NV to produce same picture as on NVidia videocards"), From 91ecc750bebcd25c5ad970a7bddc8f7603a136d7 Mon Sep 17 00:00:00 2001 From: Silver <65376327+silveroxides@users.noreply.github.com> Date: Tue, 11 Jun 2024 00:40:26 +0200 Subject: [PATCH 119/125] Update sd_hijack_clip.py --- modules/sd_hijack_clip.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/sd_hijack_clip.py b/modules/sd_hijack_clip.py index 3db047dfd96..355df3d30d1 100644 --- a/modules/sd_hijack_clip.py +++ b/modules/sd_hijack_clip.py @@ -353,10 +353,10 @@ def __init__(self, wrapped, hijack): def encode_with_transformers(self, tokens): outputs = self.wrapped.transformer(input_ids=tokens, output_hidden_states=self.wrapped.layer == "hidden") - if self.wrapped.layer == "last": - z = outputs.last_hidden_state - elif opts.sdxl_clip_l_skip is True: + if opts.sdxl_clip_l_skip is True: z = outputs.hidden_states[-opts.CLIP_stop_at_last_layers] + elif self.wrapped.layer == "last": + z = outputs.last_hidden_state else: z = outputs.hidden_states[self.wrapped.layer_idx] From 1f8f3a6e8bdbc687bc449aa3ce39bf4bb668f6f1 Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 16:50:00 -0700 Subject: [PATCH 120/125] feat: prevent screen sleep during generation --- javascript/progressbar.js | 25 +++++++++++++++++++++++++ modules/shared_options.py | 1 + 2 files changed, 26 insertions(+) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index f068bac6aba..00b0429bba9 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -76,6 +76,28 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var dateStart = new Date(); var wasEverActive = false; var parentProgressbar = progressbarContainer.parentNode; + var wakeLock = null; + + var requestWakeLock = async function() { + if (!opts.prevent_screen_sleep_during_generation) return; + try { + wakeLock = await navigator.wakeLock.request('screen'); + console.log('Wake Lock is active.'); + } catch (err) { + console.log('Wake Lock is not supported.'); + } + }; + + var releaseWakeLock = async function() { + if (!opts.prevent_screen_sleep_during_generation || !wakeLock) return; + try { + await wakeLock.release(); + console.log('Wake Lock is released.'); + wakeLock = null; + } catch (err) { + console.error('Wake Lock release failed', err); + } + }; var divProgress = document.createElement('div'); divProgress.className = 'progressDiv'; @@ -89,6 +111,7 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var livePreview = null; var removeProgressBar = function() { + releaseWakeLock(); if (!divProgress) return; setTitle(""); @@ -100,6 +123,8 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre }; var funProgress = function(id_task) { + // Request the wake lock at the start of the progress + requestWakeLock(); request("./internal/progress", {id_task: id_task, live_preview: false}, function(res) { if (res.completed) { removeProgressBar(); diff --git a/modules/shared_options.py b/modules/shared_options.py index 326a317e030..3741cf1f594 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -359,6 +359,7 @@ "live_preview_refresh_period": OptionInfo(1000, "Progressbar and preview update period").info("in milliseconds"), "live_preview_fast_interrupt": OptionInfo(False, "Return image with chosen live preview method on interrupt").info("makes interrupts faster"), "js_live_preview_in_modal_lightbox": OptionInfo(False, "Show Live preview in full page image viewer"), + "prevent_screen_sleep_during_generation": OptionInfo(True, "Prevent screen sleep during generation"), })) options_templates.update(options_section(('sampler-params', "Sampler parameters", "sd"), { From c803e11505cae54c7e8e467cd773b2053c2bfc38 Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 18:14:32 -0700 Subject: [PATCH 121/125] fix: prevent create multiple wake lock --- javascript/progressbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 00b0429bba9..751fc096c53 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -79,7 +79,7 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var wakeLock = null; var requestWakeLock = async function() { - if (!opts.prevent_screen_sleep_during_generation) return; + if (!opts.prevent_screen_sleep_during_generation || wakeLock) return; try { wakeLock = await navigator.wakeLock.request('screen'); console.log('Wake Lock is active.'); From f1e0bfebfc9418f14f36ea255162ed1eaba3a62f Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 22:33:11 -0700 Subject: [PATCH 122/125] ci: remove comments and console logs --- javascript/progressbar.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 751fc096c53..23dea64ceda 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -82,9 +82,8 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre if (!opts.prevent_screen_sleep_during_generation || wakeLock) return; try { wakeLock = await navigator.wakeLock.request('screen'); - console.log('Wake Lock is active.'); } catch (err) { - console.log('Wake Lock is not supported.'); + console.error('Wake Lock is not supported.'); } }; @@ -92,7 +91,6 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre if (!opts.prevent_screen_sleep_during_generation || !wakeLock) return; try { await wakeLock.release(); - console.log('Wake Lock is released.'); wakeLock = null; } catch (err) { console.error('Wake Lock release failed', err); @@ -123,7 +121,6 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre }; var funProgress = function(id_task) { - // Request the wake lock at the start of the progress requestWakeLock(); request("./internal/progress", {id_task: id_task, live_preview: false}, function(res) { if (res.completed) { From b35249a0a8c6ae9e042928f232653edf026d08ee Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 26 Jun 2024 12:14:44 +0000 Subject: [PATCH 123/125] stable --- .eslintignore | 0 .eslintrc.js | 0 .git-blame-ignore-revs | 0 .github/ISSUE_TEMPLATE/bug_report.yml | 0 .github/ISSUE_TEMPLATE/config.yml | 0 .github/ISSUE_TEMPLATE/feature_request.yml | 0 .github/pull_request_template.md | 0 .github/workflows/on_pull_request.yaml | 0 .github/workflows/run_tests.yaml | 0 .github/workflows/warns_merge_master.yml | 0 .gitignore | 0 .pylintrc | 0 CHANGELOG.md | 0 CITATION.cff | 0 CODEOWNERS | 0 LICENSE.txt | 0 README.md | 0 _typos.toml | 0 configs/alt-diffusion-inference.yaml | 0 configs/alt-diffusion-m18-inference.yaml | 0 configs/instruct-pix2pix.yaml | 0 configs/sd_xl_inpaint.yaml | 0 configs/v1-inference.yaml | 0 configs/v1-inpainting-inference.yaml | 0 .../Place Textual Inversion embeddings here.txt | 0 environment-wsl2.yaml | 0 extensions-builtin/LDSR/ldsr_model_arch.py | 0 extensions-builtin/LDSR/preload.py | 0 extensions-builtin/LDSR/scripts/ldsr_model.py | 0 extensions-builtin/LDSR/sd_hijack_autoencoder.py | 0 extensions-builtin/LDSR/sd_hijack_ddpm_v1.py | 0 extensions-builtin/LDSR/vqvae_quantize.py | 0 extensions-builtin/Lora/extra_networks_lora.py | 0 extensions-builtin/Lora/lora.py | 0 extensions-builtin/Lora/lora_logger.py | 0 extensions-builtin/Lora/lora_patches.py | 0 extensions-builtin/Lora/lyco_helpers.py | 0 extensions-builtin/Lora/network.py | 0 extensions-builtin/Lora/network_full.py | 0 extensions-builtin/Lora/network_glora.py | 0 extensions-builtin/Lora/network_hada.py | 0 extensions-builtin/Lora/network_ia3.py | 0 extensions-builtin/Lora/network_lokr.py | 0 extensions-builtin/Lora/network_lora.py | 0 extensions-builtin/Lora/network_norm.py | 0 extensions-builtin/Lora/network_oft.py | 0 extensions-builtin/Lora/networks.py | 0 extensions-builtin/Lora/preload.py | 0 extensions-builtin/Lora/scripts/lora_script.py | 0 extensions-builtin/Lora/ui_edit_user_metadata.py | 0 extensions-builtin/Lora/ui_extra_networks_lora.py | 0 extensions-builtin/ScuNET/preload.py | 0 extensions-builtin/ScuNET/scripts/scunet_model.py | 0 extensions-builtin/SwinIR/preload.py | 0 extensions-builtin/SwinIR/scripts/swinir_model.py | 0 .../canvas-zoom-and-pan/javascript/zoom.js | 0 .../canvas-zoom-and-pan/scripts/hotkey_config.py | 0 extensions-builtin/canvas-zoom-and-pan/style.css | 0 .../scripts/extra_options_section.py | 0 extensions-builtin/hypertile/hypertile.py | 0 .../hypertile/scripts/hypertile_script.py | 0 extensions-builtin/mobile/javascript/mobile.js | 0 .../scripts/postprocessing_autosized_crop.py | 0 .../scripts/postprocessing_caption.py | 0 .../scripts/postprocessing_create_flipped_copies.py | 0 .../scripts/postprocessing_focal_crop.py | 0 .../scripts/postprocessing_split_oversized.py | 0 .../javascript/prompt-bracket-checker.js | 0 .../soft-inpainting/scripts/soft_inpainting.py | 0 extensions/put extensions here.txt | 0 html/card-no-preview.png | Bin html/extra-networks-card.html | 0 html/extra-networks-copy-path-button.html | 0 html/extra-networks-edit-item-button.html | 0 html/extra-networks-metadata-button.html | 0 html/extra-networks-no-cards.html | 0 html/extra-networks-pane-dirs.html | 0 html/extra-networks-pane-tree.html | 0 html/extra-networks-pane.html | 0 html/extra-networks-tree-button.html | 0 html/footer.html | 0 html/licenses.html | 0 javascript/aspectRatioOverlay.js | 0 javascript/contextMenus.js | 0 javascript/dragdrop.js | 0 javascript/edit-attention.js | 0 javascript/edit-order.js | 0 javascript/extensions.js | 0 javascript/extraNetworks.js | 0 javascript/generationParams.js | 0 javascript/hints.js | 0 javascript/hires_fix.js | 0 javascript/imageMaskFix.js | 0 javascript/imageviewer.js | 0 javascript/imageviewerGamepad.js | 0 javascript/inputAccordion.js | 0 javascript/localStorage.js | 0 javascript/localization.js | 0 javascript/notification.js | 0 javascript/profilerVisualization.js | 0 javascript/progressbar.js | 0 javascript/resizeHandle.js | 0 javascript/settings.js | 0 javascript/textualInversion.js | 0 javascript/token-counters.js | 0 javascript/ui.js | 0 javascript/ui_settings_hints.js | 0 launch.py | 0 localizations/Put localization files here.txt | 0 .../Put Stable Diffusion checkpoints here.txt | 0 models/VAE-approx/model.pt | Bin models/VAE/Put VAE here.txt | 0 ...t your deepbooru release project folder here.txt | 0 models/karlo/ViT-L-14_stats.th | Bin modules/Roboto-Regular.ttf | Bin modules/api/api.py | 0 modules/api/models.py | 0 modules/cache.py | 0 modules/call_queue.py | 0 modules/cmd_args.py | 0 modules/codeformer_model.py | 0 modules/config_states.py | 0 modules/dat_model.py | 0 modules/deepbooru.py | 0 modules/deepbooru_model.py | 0 modules/devices.py | 0 modules/errors.py | 0 modules/esrgan_model.py | 0 modules/extensions.py | 0 modules/extra_networks.py | 0 modules/extra_networks_hypernet.py | 0 modules/extras.py | 0 modules/face_restoration.py | 0 modules/face_restoration_utils.py | 0 modules/fifo_lock.py | 0 modules/gfpgan_model.py | 0 modules/gitpython_hack.py | 0 modules/gradio_extensons.py | 0 modules/hashes.py | 0 modules/hat_model.py | 0 modules/hypernetworks/hypernetwork.py | 0 modules/hypernetworks/ui.py | 0 modules/images.py | 0 modules/img2img.py | 0 modules/import_hook.py | 0 modules/infotext_utils.py | 0 modules/infotext_versions.py | 0 modules/initialize.py | 0 modules/initialize_util.py | 0 modules/interrogate.py | 0 modules/launch_utils.py | 0 modules/localization.py | 0 modules/logging_config.py | 0 modules/lowvram.py | 0 modules/mac_specific.py | 0 modules/masking.py | 0 modules/memmon.py | 0 modules/modelloader.py | 0 modules/models/diffusion/ddpm_edit.py | 0 modules/models/diffusion/uni_pc/__init__.py | 0 modules/models/diffusion/uni_pc/sampler.py | 0 modules/models/diffusion/uni_pc/uni_pc.py | 0 modules/ngrok.py | 0 modules/npu_specific.py | 0 modules/options.py | 0 modules/patches.py | 0 modules/paths.py | 0 modules/paths_internal.py | 0 modules/postprocessing.py | 0 modules/processing.py | 0 modules/processing_scripts/comments.py | 0 modules/processing_scripts/refiner.py | 0 modules/processing_scripts/sampler.py | 0 modules/processing_scripts/seed.py | 0 modules/profiling.py | 0 modules/progress.py | 0 modules/prompt_parser.py | 0 modules/realesrgan_model.py | 0 modules/restart.py | 0 modules/rng.py | 0 modules/rng_philox.py | 0 modules/safe.py | 0 modules/script_callbacks.py | 0 modules/script_loading.py | 0 modules/scripts.py | 0 modules/scripts_auto_postprocessing.py | 0 modules/scripts_postprocessing.py | 0 modules/sd_disable_initialization.py | 0 modules/sd_emphasis.py | 0 modules/sd_hijack.py | 0 modules/sd_hijack_checkpoint.py | 0 modules/sd_hijack_clip.py | 0 modules/sd_hijack_clip_old.py | 0 modules/sd_hijack_ip2p.py | 0 modules/sd_hijack_open_clip.py | 0 modules/sd_hijack_optimizations.py | 0 modules/sd_hijack_unet.py | 0 modules/sd_hijack_utils.py | 0 modules/sd_hijack_xlmr.py | 0 modules/sd_models.py | 0 modules/sd_models_config.py | 0 modules/sd_models_types.py | 0 modules/sd_models_xl.py | 0 modules/sd_samplers.py | 0 modules/sd_samplers_cfg_denoiser.py | 0 modules/sd_samplers_common.py | 0 modules/sd_samplers_compvis.py | 0 modules/sd_samplers_extra.py | 0 modules/sd_samplers_kdiffusion.py | 0 modules/sd_samplers_lcm.py | 0 modules/sd_samplers_timesteps.py | 0 modules/sd_samplers_timesteps_impl.py | 0 modules/sd_schedulers.py | 0 modules/sd_unet.py | 0 modules/sd_vae.py | 0 modules/sd_vae_approx.py | 0 modules/sd_vae_taesd.py | 0 modules/shared.py | 0 modules/shared_cmd_options.py | 0 modules/shared_gradio_themes.py | 0 modules/shared_init.py | 0 modules/shared_items.py | 0 modules/shared_options.py | 0 modules/shared_state.py | 0 modules/shared_total_tqdm.py | 0 modules/styles.py | 0 modules/sub_quadratic_attention.py | 0 modules/sysinfo.py | 0 modules/textual_inversion/autocrop.py | 0 modules/textual_inversion/dataset.py | 0 modules/textual_inversion/image_embedding.py | 0 modules/textual_inversion/learn_schedule.py | 0 modules/textual_inversion/saving_settings.py | 0 modules/textual_inversion/test_embedding.png | Bin modules/textual_inversion/textual_inversion.py | 0 modules/textual_inversion/ui.py | 0 modules/timer.py | 0 modules/torch_utils.py | 0 modules/txt2img.py | 0 modules/ui.py | 0 modules/ui_checkpoint_merger.py | 0 modules/ui_common.py | 0 modules/ui_components.py | 0 modules/ui_extensions.py | 0 modules/ui_extra_networks.py | 0 modules/ui_extra_networks_checkpoints.py | 0 .../ui_extra_networks_checkpoints_user_metadata.py | 0 modules/ui_extra_networks_hypernets.py | 0 modules/ui_extra_networks_textual_inversion.py | 0 modules/ui_extra_networks_user_metadata.py | 0 modules/ui_gradio_extensions.py | 0 modules/ui_loadsave.py | 0 modules/ui_postprocessing.py | 0 modules/ui_prompt_styles.py | 0 modules/ui_settings.py | 0 modules/ui_tempdir.py | 0 modules/ui_toprow.py | 0 modules/upscaler.py | 0 modules/upscaler_utils.py | 0 modules/util.py | 0 modules/xlmr.py | 0 modules/xlmr_m18.py | 0 modules/xpu_specific.py | 0 package.json | 0 pyproject.toml | 0 requirements-test.txt | 0 requirements.txt | 0 requirements_npu.txt | 0 requirements_versions.txt | 0 screenshot.png | Bin script.js | 0 scripts/custom_code.py | 0 scripts/img2imgalt.py | 0 scripts/loopback.py | 0 scripts/outpainting_mk_2.py | 0 scripts/poor_mans_outpainting.py | 0 scripts/postprocessing_codeformer.py | 0 scripts/postprocessing_gfpgan.py | 0 scripts/postprocessing_upscale.py | 0 scripts/prompt_matrix.py | 0 scripts/prompts_from_file.py | 0 scripts/sd_upscale.py | 0 scripts/xyz_grid.py | 0 style.css | 0 test/__init__.py | 0 test/conftest.py | 0 test/test_extras.py | 0 test/test_face_restorers.py | 0 test/test_files/empty.pt | Bin test/test_files/img2img_basic.png | Bin test/test_files/mask_basic.png | Bin test/test_files/two-faces.jpg | Bin test/test_img2img.py | 0 test/test_outputs/.gitkeep | 0 test/test_torch_utils.py | 0 test/test_txt2img.py | 0 test/test_utils.py | 0 textual_inversion_templates/hypernetwork.txt | 0 textual_inversion_templates/none.txt | 0 textual_inversion_templates/style.txt | 0 textual_inversion_templates/style_filewords.txt | 0 textual_inversion_templates/subject.txt | 0 textual_inversion_templates/subject_filewords.txt | 0 webui-macos-env.sh | 0 webui-user.bat | 0 webui-user.sh | 10 ++++++---- webui.bat | 0 webui.py | 0 webui.sh | 2 +- 309 files changed, 7 insertions(+), 5 deletions(-) mode change 100644 => 100755 .eslintignore mode change 100644 => 100755 .eslintrc.js mode change 100644 => 100755 .git-blame-ignore-revs mode change 100644 => 100755 .github/ISSUE_TEMPLATE/bug_report.yml mode change 100644 => 100755 .github/ISSUE_TEMPLATE/config.yml mode change 100644 => 100755 .github/ISSUE_TEMPLATE/feature_request.yml mode change 100644 => 100755 .github/pull_request_template.md mode change 100644 => 100755 .github/workflows/on_pull_request.yaml mode change 100644 => 100755 .github/workflows/run_tests.yaml mode change 100644 => 100755 .github/workflows/warns_merge_master.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .pylintrc mode change 100644 => 100755 CHANGELOG.md mode change 100644 => 100755 CITATION.cff mode change 100644 => 100755 CODEOWNERS mode change 100644 => 100755 LICENSE.txt mode change 100644 => 100755 README.md mode change 100644 => 100755 _typos.toml mode change 100644 => 100755 configs/alt-diffusion-inference.yaml mode change 100644 => 100755 configs/alt-diffusion-m18-inference.yaml mode change 100644 => 100755 configs/instruct-pix2pix.yaml mode change 100644 => 100755 configs/sd_xl_inpaint.yaml mode change 100644 => 100755 configs/v1-inference.yaml mode change 100644 => 100755 configs/v1-inpainting-inference.yaml mode change 100644 => 100755 embeddings/Place Textual Inversion embeddings here.txt mode change 100644 => 100755 environment-wsl2.yaml mode change 100644 => 100755 extensions-builtin/LDSR/ldsr_model_arch.py mode change 100644 => 100755 extensions-builtin/LDSR/preload.py mode change 100644 => 100755 extensions-builtin/LDSR/scripts/ldsr_model.py mode change 100644 => 100755 extensions-builtin/LDSR/sd_hijack_autoencoder.py mode change 100644 => 100755 extensions-builtin/LDSR/sd_hijack_ddpm_v1.py mode change 100644 => 100755 extensions-builtin/LDSR/vqvae_quantize.py mode change 100644 => 100755 extensions-builtin/Lora/extra_networks_lora.py mode change 100644 => 100755 extensions-builtin/Lora/lora.py mode change 100644 => 100755 extensions-builtin/Lora/lora_logger.py mode change 100644 => 100755 extensions-builtin/Lora/lora_patches.py mode change 100644 => 100755 extensions-builtin/Lora/lyco_helpers.py mode change 100644 => 100755 extensions-builtin/Lora/network.py mode change 100644 => 100755 extensions-builtin/Lora/network_full.py mode change 100644 => 100755 extensions-builtin/Lora/network_glora.py mode change 100644 => 100755 extensions-builtin/Lora/network_hada.py mode change 100644 => 100755 extensions-builtin/Lora/network_ia3.py mode change 100644 => 100755 extensions-builtin/Lora/network_lokr.py mode change 100644 => 100755 extensions-builtin/Lora/network_lora.py mode change 100644 => 100755 extensions-builtin/Lora/network_norm.py mode change 100644 => 100755 extensions-builtin/Lora/network_oft.py mode change 100644 => 100755 extensions-builtin/Lora/networks.py mode change 100644 => 100755 extensions-builtin/Lora/preload.py mode change 100644 => 100755 extensions-builtin/Lora/scripts/lora_script.py mode change 100644 => 100755 extensions-builtin/Lora/ui_edit_user_metadata.py mode change 100644 => 100755 extensions-builtin/Lora/ui_extra_networks_lora.py mode change 100644 => 100755 extensions-builtin/ScuNET/preload.py mode change 100644 => 100755 extensions-builtin/ScuNET/scripts/scunet_model.py mode change 100644 => 100755 extensions-builtin/SwinIR/preload.py mode change 100644 => 100755 extensions-builtin/SwinIR/scripts/swinir_model.py mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/style.css mode change 100644 => 100755 extensions-builtin/extra-options-section/scripts/extra_options_section.py mode change 100644 => 100755 extensions-builtin/hypertile/hypertile.py mode change 100644 => 100755 extensions-builtin/hypertile/scripts/hypertile_script.py mode change 100644 => 100755 extensions-builtin/mobile/javascript/mobile.js mode change 100644 => 100755 extensions-builtin/postprocessing-for-training/scripts/postprocessing_autosized_crop.py mode change 100644 => 100755 extensions-builtin/postprocessing-for-training/scripts/postprocessing_caption.py mode change 100644 => 100755 extensions-builtin/postprocessing-for-training/scripts/postprocessing_create_flipped_copies.py mode change 100644 => 100755 extensions-builtin/postprocessing-for-training/scripts/postprocessing_focal_crop.py mode change 100644 => 100755 extensions-builtin/postprocessing-for-training/scripts/postprocessing_split_oversized.py mode change 100644 => 100755 extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js mode change 100644 => 100755 extensions-builtin/soft-inpainting/scripts/soft_inpainting.py mode change 100644 => 100755 extensions/put extensions here.txt mode change 100644 => 100755 html/card-no-preview.png mode change 100644 => 100755 html/extra-networks-card.html mode change 100644 => 100755 html/extra-networks-copy-path-button.html mode change 100644 => 100755 html/extra-networks-edit-item-button.html mode change 100644 => 100755 html/extra-networks-metadata-button.html mode change 100644 => 100755 html/extra-networks-no-cards.html mode change 100644 => 100755 html/extra-networks-pane-dirs.html mode change 100644 => 100755 html/extra-networks-pane-tree.html mode change 100644 => 100755 html/extra-networks-pane.html mode change 100644 => 100755 html/extra-networks-tree-button.html mode change 100644 => 100755 html/footer.html mode change 100644 => 100755 html/licenses.html mode change 100644 => 100755 javascript/aspectRatioOverlay.js mode change 100644 => 100755 javascript/contextMenus.js mode change 100644 => 100755 javascript/dragdrop.js mode change 100644 => 100755 javascript/edit-attention.js mode change 100644 => 100755 javascript/edit-order.js mode change 100644 => 100755 javascript/extensions.js mode change 100644 => 100755 javascript/extraNetworks.js mode change 100644 => 100755 javascript/generationParams.js mode change 100644 => 100755 javascript/hints.js mode change 100644 => 100755 javascript/hires_fix.js mode change 100644 => 100755 javascript/imageMaskFix.js mode change 100644 => 100755 javascript/imageviewer.js mode change 100644 => 100755 javascript/imageviewerGamepad.js mode change 100644 => 100755 javascript/inputAccordion.js mode change 100644 => 100755 javascript/localStorage.js mode change 100644 => 100755 javascript/localization.js mode change 100644 => 100755 javascript/notification.js mode change 100644 => 100755 javascript/profilerVisualization.js mode change 100644 => 100755 javascript/progressbar.js mode change 100644 => 100755 javascript/resizeHandle.js mode change 100644 => 100755 javascript/settings.js mode change 100644 => 100755 javascript/textualInversion.js mode change 100644 => 100755 javascript/token-counters.js mode change 100644 => 100755 javascript/ui.js mode change 100644 => 100755 javascript/ui_settings_hints.js mode change 100644 => 100755 launch.py mode change 100644 => 100755 localizations/Put localization files here.txt mode change 100644 => 100755 models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt mode change 100644 => 100755 models/VAE-approx/model.pt mode change 100644 => 100755 models/VAE/Put VAE here.txt mode change 100644 => 100755 models/deepbooru/Put your deepbooru release project folder here.txt mode change 100644 => 100755 models/karlo/ViT-L-14_stats.th mode change 100644 => 100755 modules/Roboto-Regular.ttf mode change 100644 => 100755 modules/api/api.py mode change 100644 => 100755 modules/api/models.py mode change 100644 => 100755 modules/cache.py mode change 100644 => 100755 modules/call_queue.py mode change 100644 => 100755 modules/cmd_args.py mode change 100644 => 100755 modules/codeformer_model.py mode change 100644 => 100755 modules/config_states.py mode change 100644 => 100755 modules/dat_model.py mode change 100644 => 100755 modules/deepbooru.py mode change 100644 => 100755 modules/deepbooru_model.py mode change 100644 => 100755 modules/devices.py mode change 100644 => 100755 modules/errors.py mode change 100644 => 100755 modules/esrgan_model.py mode change 100644 => 100755 modules/extensions.py mode change 100644 => 100755 modules/extra_networks.py mode change 100644 => 100755 modules/extra_networks_hypernet.py mode change 100644 => 100755 modules/extras.py mode change 100644 => 100755 modules/face_restoration.py mode change 100644 => 100755 modules/face_restoration_utils.py mode change 100644 => 100755 modules/fifo_lock.py mode change 100644 => 100755 modules/gfpgan_model.py mode change 100644 => 100755 modules/gitpython_hack.py mode change 100644 => 100755 modules/gradio_extensons.py mode change 100644 => 100755 modules/hashes.py mode change 100644 => 100755 modules/hat_model.py mode change 100644 => 100755 modules/hypernetworks/hypernetwork.py mode change 100644 => 100755 modules/hypernetworks/ui.py mode change 100644 => 100755 modules/images.py mode change 100644 => 100755 modules/img2img.py mode change 100644 => 100755 modules/import_hook.py mode change 100644 => 100755 modules/infotext_utils.py mode change 100644 => 100755 modules/infotext_versions.py mode change 100644 => 100755 modules/initialize.py mode change 100644 => 100755 modules/initialize_util.py mode change 100644 => 100755 modules/interrogate.py mode change 100644 => 100755 modules/launch_utils.py mode change 100644 => 100755 modules/localization.py mode change 100644 => 100755 modules/logging_config.py mode change 100644 => 100755 modules/lowvram.py mode change 100644 => 100755 modules/mac_specific.py mode change 100644 => 100755 modules/masking.py mode change 100644 => 100755 modules/memmon.py mode change 100644 => 100755 modules/modelloader.py mode change 100644 => 100755 modules/models/diffusion/ddpm_edit.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/__init__.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/sampler.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/uni_pc.py mode change 100644 => 100755 modules/ngrok.py mode change 100644 => 100755 modules/npu_specific.py mode change 100644 => 100755 modules/options.py mode change 100644 => 100755 modules/patches.py mode change 100644 => 100755 modules/paths.py mode change 100644 => 100755 modules/paths_internal.py mode change 100644 => 100755 modules/postprocessing.py mode change 100644 => 100755 modules/processing.py mode change 100644 => 100755 modules/processing_scripts/comments.py mode change 100644 => 100755 modules/processing_scripts/refiner.py mode change 100644 => 100755 modules/processing_scripts/sampler.py mode change 100644 => 100755 modules/processing_scripts/seed.py mode change 100644 => 100755 modules/profiling.py mode change 100644 => 100755 modules/progress.py mode change 100644 => 100755 modules/prompt_parser.py mode change 100644 => 100755 modules/realesrgan_model.py mode change 100644 => 100755 modules/restart.py mode change 100644 => 100755 modules/rng.py mode change 100644 => 100755 modules/rng_philox.py mode change 100644 => 100755 modules/safe.py mode change 100644 => 100755 modules/script_callbacks.py mode change 100644 => 100755 modules/script_loading.py mode change 100644 => 100755 modules/scripts.py mode change 100644 => 100755 modules/scripts_auto_postprocessing.py mode change 100644 => 100755 modules/scripts_postprocessing.py mode change 100644 => 100755 modules/sd_disable_initialization.py mode change 100644 => 100755 modules/sd_emphasis.py mode change 100644 => 100755 modules/sd_hijack.py mode change 100644 => 100755 modules/sd_hijack_checkpoint.py mode change 100644 => 100755 modules/sd_hijack_clip.py mode change 100644 => 100755 modules/sd_hijack_clip_old.py mode change 100644 => 100755 modules/sd_hijack_ip2p.py mode change 100644 => 100755 modules/sd_hijack_open_clip.py mode change 100644 => 100755 modules/sd_hijack_optimizations.py mode change 100644 => 100755 modules/sd_hijack_unet.py mode change 100644 => 100755 modules/sd_hijack_utils.py mode change 100644 => 100755 modules/sd_hijack_xlmr.py mode change 100644 => 100755 modules/sd_models.py mode change 100644 => 100755 modules/sd_models_config.py mode change 100644 => 100755 modules/sd_models_types.py mode change 100644 => 100755 modules/sd_models_xl.py mode change 100644 => 100755 modules/sd_samplers.py mode change 100644 => 100755 modules/sd_samplers_cfg_denoiser.py mode change 100644 => 100755 modules/sd_samplers_common.py mode change 100644 => 100755 modules/sd_samplers_compvis.py mode change 100644 => 100755 modules/sd_samplers_extra.py mode change 100644 => 100755 modules/sd_samplers_kdiffusion.py mode change 100644 => 100755 modules/sd_samplers_lcm.py mode change 100644 => 100755 modules/sd_samplers_timesteps.py mode change 100644 => 100755 modules/sd_samplers_timesteps_impl.py mode change 100644 => 100755 modules/sd_schedulers.py mode change 100644 => 100755 modules/sd_unet.py mode change 100644 => 100755 modules/sd_vae.py mode change 100644 => 100755 modules/sd_vae_approx.py mode change 100644 => 100755 modules/sd_vae_taesd.py mode change 100644 => 100755 modules/shared.py mode change 100644 => 100755 modules/shared_cmd_options.py mode change 100644 => 100755 modules/shared_gradio_themes.py mode change 100644 => 100755 modules/shared_init.py mode change 100644 => 100755 modules/shared_items.py mode change 100644 => 100755 modules/shared_options.py mode change 100644 => 100755 modules/shared_state.py mode change 100644 => 100755 modules/shared_total_tqdm.py mode change 100644 => 100755 modules/styles.py mode change 100644 => 100755 modules/sub_quadratic_attention.py mode change 100644 => 100755 modules/sysinfo.py mode change 100644 => 100755 modules/textual_inversion/autocrop.py mode change 100644 => 100755 modules/textual_inversion/dataset.py mode change 100644 => 100755 modules/textual_inversion/image_embedding.py mode change 100644 => 100755 modules/textual_inversion/learn_schedule.py mode change 100644 => 100755 modules/textual_inversion/saving_settings.py mode change 100644 => 100755 modules/textual_inversion/test_embedding.png mode change 100644 => 100755 modules/textual_inversion/textual_inversion.py mode change 100644 => 100755 modules/textual_inversion/ui.py mode change 100644 => 100755 modules/timer.py mode change 100644 => 100755 modules/torch_utils.py mode change 100644 => 100755 modules/txt2img.py mode change 100644 => 100755 modules/ui.py mode change 100644 => 100755 modules/ui_checkpoint_merger.py mode change 100644 => 100755 modules/ui_common.py mode change 100644 => 100755 modules/ui_components.py mode change 100644 => 100755 modules/ui_extensions.py mode change 100644 => 100755 modules/ui_extra_networks.py mode change 100644 => 100755 modules/ui_extra_networks_checkpoints.py mode change 100644 => 100755 modules/ui_extra_networks_checkpoints_user_metadata.py mode change 100644 => 100755 modules/ui_extra_networks_hypernets.py mode change 100644 => 100755 modules/ui_extra_networks_textual_inversion.py mode change 100644 => 100755 modules/ui_extra_networks_user_metadata.py mode change 100644 => 100755 modules/ui_gradio_extensions.py mode change 100644 => 100755 modules/ui_loadsave.py mode change 100644 => 100755 modules/ui_postprocessing.py mode change 100644 => 100755 modules/ui_prompt_styles.py mode change 100644 => 100755 modules/ui_settings.py mode change 100644 => 100755 modules/ui_tempdir.py mode change 100644 => 100755 modules/ui_toprow.py mode change 100644 => 100755 modules/upscaler.py mode change 100644 => 100755 modules/upscaler_utils.py mode change 100644 => 100755 modules/util.py mode change 100644 => 100755 modules/xlmr.py mode change 100644 => 100755 modules/xlmr_m18.py mode change 100644 => 100755 modules/xpu_specific.py mode change 100644 => 100755 package.json mode change 100644 => 100755 pyproject.toml mode change 100644 => 100755 requirements-test.txt mode change 100644 => 100755 requirements.txt mode change 100644 => 100755 requirements_npu.txt mode change 100644 => 100755 requirements_versions.txt mode change 100644 => 100755 screenshot.png mode change 100644 => 100755 script.js mode change 100644 => 100755 scripts/custom_code.py mode change 100644 => 100755 scripts/img2imgalt.py mode change 100644 => 100755 scripts/loopback.py mode change 100644 => 100755 scripts/outpainting_mk_2.py mode change 100644 => 100755 scripts/poor_mans_outpainting.py mode change 100644 => 100755 scripts/postprocessing_codeformer.py mode change 100644 => 100755 scripts/postprocessing_gfpgan.py mode change 100644 => 100755 scripts/postprocessing_upscale.py mode change 100644 => 100755 scripts/prompt_matrix.py mode change 100644 => 100755 scripts/prompts_from_file.py mode change 100644 => 100755 scripts/sd_upscale.py mode change 100644 => 100755 scripts/xyz_grid.py mode change 100644 => 100755 style.css mode change 100644 => 100755 test/__init__.py mode change 100644 => 100755 test/conftest.py mode change 100644 => 100755 test/test_extras.py mode change 100644 => 100755 test/test_face_restorers.py mode change 100644 => 100755 test/test_files/empty.pt mode change 100644 => 100755 test/test_files/img2img_basic.png mode change 100644 => 100755 test/test_files/mask_basic.png mode change 100644 => 100755 test/test_files/two-faces.jpg mode change 100644 => 100755 test/test_img2img.py mode change 100644 => 100755 test/test_outputs/.gitkeep mode change 100644 => 100755 test/test_torch_utils.py mode change 100644 => 100755 test/test_txt2img.py mode change 100644 => 100755 test/test_utils.py mode change 100644 => 100755 textual_inversion_templates/hypernetwork.txt mode change 100644 => 100755 textual_inversion_templates/none.txt mode change 100644 => 100755 textual_inversion_templates/style.txt mode change 100644 => 100755 textual_inversion_templates/style_filewords.txt mode change 100644 => 100755 textual_inversion_templates/subject.txt mode change 100644 => 100755 textual_inversion_templates/subject_filewords.txt mode change 100644 => 100755 webui-macos-env.sh mode change 100644 => 100755 webui-user.bat mode change 100644 => 100755 webui-user.sh mode change 100644 => 100755 webui.bat mode change 100644 => 100755 webui.py diff --git a/.eslintignore b/.eslintignore old mode 100644 new mode 100755 diff --git a/.eslintrc.js b/.eslintrc.js old mode 100644 new mode 100755 diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml old mode 100644 new mode 100755 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md old mode 100644 new mode 100755 diff --git a/.github/workflows/on_pull_request.yaml b/.github/workflows/on_pull_request.yaml old mode 100644 new mode 100755 diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml old mode 100644 new mode 100755 diff --git a/.github/workflows/warns_merge_master.yml b/.github/workflows/warns_merge_master.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.pylintrc b/.pylintrc old mode 100644 new mode 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/CITATION.cff b/CITATION.cff old mode 100644 new mode 100755 diff --git a/CODEOWNERS b/CODEOWNERS old mode 100644 new mode 100755 diff --git a/LICENSE.txt b/LICENSE.txt old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/_typos.toml b/_typos.toml old mode 100644 new mode 100755 diff --git a/configs/alt-diffusion-inference.yaml b/configs/alt-diffusion-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/alt-diffusion-m18-inference.yaml b/configs/alt-diffusion-m18-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/instruct-pix2pix.yaml b/configs/instruct-pix2pix.yaml old mode 100644 new mode 100755 diff --git a/configs/sd_xl_inpaint.yaml b/configs/sd_xl_inpaint.yaml old mode 100644 new mode 100755 diff --git a/configs/v1-inference.yaml b/configs/v1-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/v1-inpainting-inference.yaml b/configs/v1-inpainting-inference.yaml old mode 100644 new mode 100755 diff --git a/embeddings/Place Textual Inversion embeddings here.txt b/embeddings/Place Textual Inversion embeddings here.txt old mode 100644 new mode 100755 diff --git a/environment-wsl2.yaml b/environment-wsl2.yaml old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/ldsr_model_arch.py b/extensions-builtin/LDSR/ldsr_model_arch.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/preload.py b/extensions-builtin/LDSR/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/scripts/ldsr_model.py b/extensions-builtin/LDSR/scripts/ldsr_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/sd_hijack_autoencoder.py b/extensions-builtin/LDSR/sd_hijack_autoencoder.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/sd_hijack_ddpm_v1.py b/extensions-builtin/LDSR/sd_hijack_ddpm_v1.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/vqvae_quantize.py b/extensions-builtin/LDSR/vqvae_quantize.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/extra_networks_lora.py b/extensions-builtin/Lora/extra_networks_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora.py b/extensions-builtin/Lora/lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora_logger.py b/extensions-builtin/Lora/lora_logger.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora_patches.py b/extensions-builtin/Lora/lora_patches.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lyco_helpers.py b/extensions-builtin/Lora/lyco_helpers.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network.py b/extensions-builtin/Lora/network.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_full.py b/extensions-builtin/Lora/network_full.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_glora.py b/extensions-builtin/Lora/network_glora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_hada.py b/extensions-builtin/Lora/network_hada.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_ia3.py b/extensions-builtin/Lora/network_ia3.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_lokr.py b/extensions-builtin/Lora/network_lokr.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_lora.py b/extensions-builtin/Lora/network_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_norm.py b/extensions-builtin/Lora/network_norm.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_oft.py b/extensions-builtin/Lora/network_oft.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/preload.py b/extensions-builtin/Lora/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/scripts/lora_script.py b/extensions-builtin/Lora/scripts/lora_script.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/ui_edit_user_metadata.py b/extensions-builtin/Lora/ui_edit_user_metadata.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/ui_extra_networks_lora.py b/extensions-builtin/Lora/ui_extra_networks_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/ScuNET/preload.py b/extensions-builtin/ScuNET/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/ScuNET/scripts/scunet_model.py b/extensions-builtin/ScuNET/scripts/scunet_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/SwinIR/preload.py b/extensions-builtin/SwinIR/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/SwinIR/scripts/swinir_model.py b/extensions-builtin/SwinIR/scripts/swinir_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js b/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py b/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/style.css b/extensions-builtin/canvas-zoom-and-pan/style.css old mode 100644 new mode 100755 diff --git a/extensions-builtin/extra-options-section/scripts/extra_options_section.py b/extensions-builtin/extra-options-section/scripts/extra_options_section.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/hypertile/hypertile.py b/extensions-builtin/hypertile/hypertile.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/hypertile/scripts/hypertile_script.py b/extensions-builtin/hypertile/scripts/hypertile_script.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/mobile/javascript/mobile.js b/extensions-builtin/mobile/javascript/mobile.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/postprocessing-for-training/scripts/postprocessing_autosized_crop.py b/extensions-builtin/postprocessing-for-training/scripts/postprocessing_autosized_crop.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/postprocessing-for-training/scripts/postprocessing_caption.py b/extensions-builtin/postprocessing-for-training/scripts/postprocessing_caption.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/postprocessing-for-training/scripts/postprocessing_create_flipped_copies.py b/extensions-builtin/postprocessing-for-training/scripts/postprocessing_create_flipped_copies.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/postprocessing-for-training/scripts/postprocessing_focal_crop.py b/extensions-builtin/postprocessing-for-training/scripts/postprocessing_focal_crop.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/postprocessing-for-training/scripts/postprocessing_split_oversized.py b/extensions-builtin/postprocessing-for-training/scripts/postprocessing_split_oversized.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js b/extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py b/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py old mode 100644 new mode 100755 diff --git a/extensions/put extensions here.txt b/extensions/put extensions here.txt old mode 100644 new mode 100755 diff --git a/html/card-no-preview.png b/html/card-no-preview.png old mode 100644 new mode 100755 diff --git a/html/extra-networks-card.html b/html/extra-networks-card.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-copy-path-button.html b/html/extra-networks-copy-path-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-edit-item-button.html b/html/extra-networks-edit-item-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-metadata-button.html b/html/extra-networks-metadata-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-no-cards.html b/html/extra-networks-no-cards.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-pane-dirs.html b/html/extra-networks-pane-dirs.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-pane-tree.html b/html/extra-networks-pane-tree.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-pane.html b/html/extra-networks-pane.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-tree-button.html b/html/extra-networks-tree-button.html old mode 100644 new mode 100755 diff --git a/html/footer.html b/html/footer.html old mode 100644 new mode 100755 diff --git a/html/licenses.html b/html/licenses.html old mode 100644 new mode 100755 diff --git a/javascript/aspectRatioOverlay.js b/javascript/aspectRatioOverlay.js old mode 100644 new mode 100755 diff --git a/javascript/contextMenus.js b/javascript/contextMenus.js old mode 100644 new mode 100755 diff --git a/javascript/dragdrop.js b/javascript/dragdrop.js old mode 100644 new mode 100755 diff --git a/javascript/edit-attention.js b/javascript/edit-attention.js old mode 100644 new mode 100755 diff --git a/javascript/edit-order.js b/javascript/edit-order.js old mode 100644 new mode 100755 diff --git a/javascript/extensions.js b/javascript/extensions.js old mode 100644 new mode 100755 diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js old mode 100644 new mode 100755 diff --git a/javascript/generationParams.js b/javascript/generationParams.js old mode 100644 new mode 100755 diff --git a/javascript/hints.js b/javascript/hints.js old mode 100644 new mode 100755 diff --git a/javascript/hires_fix.js b/javascript/hires_fix.js old mode 100644 new mode 100755 diff --git a/javascript/imageMaskFix.js b/javascript/imageMaskFix.js old mode 100644 new mode 100755 diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js old mode 100644 new mode 100755 diff --git a/javascript/imageviewerGamepad.js b/javascript/imageviewerGamepad.js old mode 100644 new mode 100755 diff --git a/javascript/inputAccordion.js b/javascript/inputAccordion.js old mode 100644 new mode 100755 diff --git a/javascript/localStorage.js b/javascript/localStorage.js old mode 100644 new mode 100755 diff --git a/javascript/localization.js b/javascript/localization.js old mode 100644 new mode 100755 diff --git a/javascript/notification.js b/javascript/notification.js old mode 100644 new mode 100755 diff --git a/javascript/profilerVisualization.js b/javascript/profilerVisualization.js old mode 100644 new mode 100755 diff --git a/javascript/progressbar.js b/javascript/progressbar.js old mode 100644 new mode 100755 diff --git a/javascript/resizeHandle.js b/javascript/resizeHandle.js old mode 100644 new mode 100755 diff --git a/javascript/settings.js b/javascript/settings.js old mode 100644 new mode 100755 diff --git a/javascript/textualInversion.js b/javascript/textualInversion.js old mode 100644 new mode 100755 diff --git a/javascript/token-counters.js b/javascript/token-counters.js old mode 100644 new mode 100755 diff --git a/javascript/ui.js b/javascript/ui.js old mode 100644 new mode 100755 diff --git a/javascript/ui_settings_hints.js b/javascript/ui_settings_hints.js old mode 100644 new mode 100755 diff --git a/launch.py b/launch.py old mode 100644 new mode 100755 diff --git a/localizations/Put localization files here.txt b/localizations/Put localization files here.txt old mode 100644 new mode 100755 diff --git a/models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt b/models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt old mode 100644 new mode 100755 diff --git a/models/VAE-approx/model.pt b/models/VAE-approx/model.pt old mode 100644 new mode 100755 diff --git a/models/VAE/Put VAE here.txt b/models/VAE/Put VAE here.txt old mode 100644 new mode 100755 diff --git a/models/deepbooru/Put your deepbooru release project folder here.txt b/models/deepbooru/Put your deepbooru release project folder here.txt old mode 100644 new mode 100755 diff --git a/models/karlo/ViT-L-14_stats.th b/models/karlo/ViT-L-14_stats.th old mode 100644 new mode 100755 diff --git a/modules/Roboto-Regular.ttf b/modules/Roboto-Regular.ttf old mode 100644 new mode 100755 diff --git a/modules/api/api.py b/modules/api/api.py old mode 100644 new mode 100755 diff --git a/modules/api/models.py b/modules/api/models.py old mode 100644 new mode 100755 diff --git a/modules/cache.py b/modules/cache.py old mode 100644 new mode 100755 diff --git a/modules/call_queue.py b/modules/call_queue.py old mode 100644 new mode 100755 diff --git a/modules/cmd_args.py b/modules/cmd_args.py old mode 100644 new mode 100755 diff --git a/modules/codeformer_model.py b/modules/codeformer_model.py old mode 100644 new mode 100755 diff --git a/modules/config_states.py b/modules/config_states.py old mode 100644 new mode 100755 diff --git a/modules/dat_model.py b/modules/dat_model.py old mode 100644 new mode 100755 diff --git a/modules/deepbooru.py b/modules/deepbooru.py old mode 100644 new mode 100755 diff --git a/modules/deepbooru_model.py b/modules/deepbooru_model.py old mode 100644 new mode 100755 diff --git a/modules/devices.py b/modules/devices.py old mode 100644 new mode 100755 diff --git a/modules/errors.py b/modules/errors.py old mode 100644 new mode 100755 diff --git a/modules/esrgan_model.py b/modules/esrgan_model.py old mode 100644 new mode 100755 diff --git a/modules/extensions.py b/modules/extensions.py old mode 100644 new mode 100755 diff --git a/modules/extra_networks.py b/modules/extra_networks.py old mode 100644 new mode 100755 diff --git a/modules/extra_networks_hypernet.py b/modules/extra_networks_hypernet.py old mode 100644 new mode 100755 diff --git a/modules/extras.py b/modules/extras.py old mode 100644 new mode 100755 diff --git a/modules/face_restoration.py b/modules/face_restoration.py old mode 100644 new mode 100755 diff --git a/modules/face_restoration_utils.py b/modules/face_restoration_utils.py old mode 100644 new mode 100755 diff --git a/modules/fifo_lock.py b/modules/fifo_lock.py old mode 100644 new mode 100755 diff --git a/modules/gfpgan_model.py b/modules/gfpgan_model.py old mode 100644 new mode 100755 diff --git a/modules/gitpython_hack.py b/modules/gitpython_hack.py old mode 100644 new mode 100755 diff --git a/modules/gradio_extensons.py b/modules/gradio_extensons.py old mode 100644 new mode 100755 diff --git a/modules/hashes.py b/modules/hashes.py old mode 100644 new mode 100755 diff --git a/modules/hat_model.py b/modules/hat_model.py old mode 100644 new mode 100755 diff --git a/modules/hypernetworks/hypernetwork.py b/modules/hypernetworks/hypernetwork.py old mode 100644 new mode 100755 diff --git a/modules/hypernetworks/ui.py b/modules/hypernetworks/ui.py old mode 100644 new mode 100755 diff --git a/modules/images.py b/modules/images.py old mode 100644 new mode 100755 diff --git a/modules/img2img.py b/modules/img2img.py old mode 100644 new mode 100755 diff --git a/modules/import_hook.py b/modules/import_hook.py old mode 100644 new mode 100755 diff --git a/modules/infotext_utils.py b/modules/infotext_utils.py old mode 100644 new mode 100755 diff --git a/modules/infotext_versions.py b/modules/infotext_versions.py old mode 100644 new mode 100755 diff --git a/modules/initialize.py b/modules/initialize.py old mode 100644 new mode 100755 diff --git a/modules/initialize_util.py b/modules/initialize_util.py old mode 100644 new mode 100755 diff --git a/modules/interrogate.py b/modules/interrogate.py old mode 100644 new mode 100755 diff --git a/modules/launch_utils.py b/modules/launch_utils.py old mode 100644 new mode 100755 diff --git a/modules/localization.py b/modules/localization.py old mode 100644 new mode 100755 diff --git a/modules/logging_config.py b/modules/logging_config.py old mode 100644 new mode 100755 diff --git a/modules/lowvram.py b/modules/lowvram.py old mode 100644 new mode 100755 diff --git a/modules/mac_specific.py b/modules/mac_specific.py old mode 100644 new mode 100755 diff --git a/modules/masking.py b/modules/masking.py old mode 100644 new mode 100755 diff --git a/modules/memmon.py b/modules/memmon.py old mode 100644 new mode 100755 diff --git a/modules/modelloader.py b/modules/modelloader.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/ddpm_edit.py b/modules/models/diffusion/ddpm_edit.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/__init__.py b/modules/models/diffusion/uni_pc/__init__.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/sampler.py b/modules/models/diffusion/uni_pc/sampler.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/uni_pc.py b/modules/models/diffusion/uni_pc/uni_pc.py old mode 100644 new mode 100755 diff --git a/modules/ngrok.py b/modules/ngrok.py old mode 100644 new mode 100755 diff --git a/modules/npu_specific.py b/modules/npu_specific.py old mode 100644 new mode 100755 diff --git a/modules/options.py b/modules/options.py old mode 100644 new mode 100755 diff --git a/modules/patches.py b/modules/patches.py old mode 100644 new mode 100755 diff --git a/modules/paths.py b/modules/paths.py old mode 100644 new mode 100755 diff --git a/modules/paths_internal.py b/modules/paths_internal.py old mode 100644 new mode 100755 diff --git a/modules/postprocessing.py b/modules/postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/processing.py b/modules/processing.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/comments.py b/modules/processing_scripts/comments.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/refiner.py b/modules/processing_scripts/refiner.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/sampler.py b/modules/processing_scripts/sampler.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/seed.py b/modules/processing_scripts/seed.py old mode 100644 new mode 100755 diff --git a/modules/profiling.py b/modules/profiling.py old mode 100644 new mode 100755 diff --git a/modules/progress.py b/modules/progress.py old mode 100644 new mode 100755 diff --git a/modules/prompt_parser.py b/modules/prompt_parser.py old mode 100644 new mode 100755 diff --git a/modules/realesrgan_model.py b/modules/realesrgan_model.py old mode 100644 new mode 100755 diff --git a/modules/restart.py b/modules/restart.py old mode 100644 new mode 100755 diff --git a/modules/rng.py b/modules/rng.py old mode 100644 new mode 100755 diff --git a/modules/rng_philox.py b/modules/rng_philox.py old mode 100644 new mode 100755 diff --git a/modules/safe.py b/modules/safe.py old mode 100644 new mode 100755 diff --git a/modules/script_callbacks.py b/modules/script_callbacks.py old mode 100644 new mode 100755 diff --git a/modules/script_loading.py b/modules/script_loading.py old mode 100644 new mode 100755 diff --git a/modules/scripts.py b/modules/scripts.py old mode 100644 new mode 100755 diff --git a/modules/scripts_auto_postprocessing.py b/modules/scripts_auto_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/scripts_postprocessing.py b/modules/scripts_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/sd_disable_initialization.py b/modules/sd_disable_initialization.py old mode 100644 new mode 100755 diff --git a/modules/sd_emphasis.py b/modules/sd_emphasis.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_checkpoint.py b/modules/sd_hijack_checkpoint.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_clip.py b/modules/sd_hijack_clip.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_clip_old.py b/modules/sd_hijack_clip_old.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_ip2p.py b/modules/sd_hijack_ip2p.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_open_clip.py b/modules/sd_hijack_open_clip.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_optimizations.py b/modules/sd_hijack_optimizations.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_unet.py b/modules/sd_hijack_unet.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_utils.py b/modules/sd_hijack_utils.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_xlmr.py b/modules/sd_hijack_xlmr.py old mode 100644 new mode 100755 diff --git a/modules/sd_models.py b/modules/sd_models.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_config.py b/modules/sd_models_config.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_types.py b/modules/sd_models_types.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_xl.py b/modules/sd_models_xl.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_common.py b/modules/sd_samplers_common.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_compvis.py b/modules/sd_samplers_compvis.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_extra.py b/modules/sd_samplers_extra.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_kdiffusion.py b/modules/sd_samplers_kdiffusion.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_lcm.py b/modules/sd_samplers_lcm.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_timesteps.py b/modules/sd_samplers_timesteps.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_timesteps_impl.py b/modules/sd_samplers_timesteps_impl.py old mode 100644 new mode 100755 diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py old mode 100644 new mode 100755 diff --git a/modules/sd_unet.py b/modules/sd_unet.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae.py b/modules/sd_vae.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae_approx.py b/modules/sd_vae_approx.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae_taesd.py b/modules/sd_vae_taesd.py old mode 100644 new mode 100755 diff --git a/modules/shared.py b/modules/shared.py old mode 100644 new mode 100755 diff --git a/modules/shared_cmd_options.py b/modules/shared_cmd_options.py old mode 100644 new mode 100755 diff --git a/modules/shared_gradio_themes.py b/modules/shared_gradio_themes.py old mode 100644 new mode 100755 diff --git a/modules/shared_init.py b/modules/shared_init.py old mode 100644 new mode 100755 diff --git a/modules/shared_items.py b/modules/shared_items.py old mode 100644 new mode 100755 diff --git a/modules/shared_options.py b/modules/shared_options.py old mode 100644 new mode 100755 diff --git a/modules/shared_state.py b/modules/shared_state.py old mode 100644 new mode 100755 diff --git a/modules/shared_total_tqdm.py b/modules/shared_total_tqdm.py old mode 100644 new mode 100755 diff --git a/modules/styles.py b/modules/styles.py old mode 100644 new mode 100755 diff --git a/modules/sub_quadratic_attention.py b/modules/sub_quadratic_attention.py old mode 100644 new mode 100755 diff --git a/modules/sysinfo.py b/modules/sysinfo.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/autocrop.py b/modules/textual_inversion/autocrop.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/dataset.py b/modules/textual_inversion/dataset.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/learn_schedule.py b/modules/textual_inversion/learn_schedule.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/saving_settings.py b/modules/textual_inversion/saving_settings.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/test_embedding.png b/modules/textual_inversion/test_embedding.png old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/ui.py b/modules/textual_inversion/ui.py old mode 100644 new mode 100755 diff --git a/modules/timer.py b/modules/timer.py old mode 100644 new mode 100755 diff --git a/modules/torch_utils.py b/modules/torch_utils.py old mode 100644 new mode 100755 diff --git a/modules/txt2img.py b/modules/txt2img.py old mode 100644 new mode 100755 diff --git a/modules/ui.py b/modules/ui.py old mode 100644 new mode 100755 diff --git a/modules/ui_checkpoint_merger.py b/modules/ui_checkpoint_merger.py old mode 100644 new mode 100755 diff --git a/modules/ui_common.py b/modules/ui_common.py old mode 100644 new mode 100755 diff --git a/modules/ui_components.py b/modules/ui_components.py old mode 100644 new mode 100755 diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_checkpoints_user_metadata.py b/modules/ui_extra_networks_checkpoints_user_metadata.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_hypernets.py b/modules/ui_extra_networks_hypernets.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_textual_inversion.py b/modules/ui_extra_networks_textual_inversion.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_user_metadata.py b/modules/ui_extra_networks_user_metadata.py old mode 100644 new mode 100755 diff --git a/modules/ui_gradio_extensions.py b/modules/ui_gradio_extensions.py old mode 100644 new mode 100755 diff --git a/modules/ui_loadsave.py b/modules/ui_loadsave.py old mode 100644 new mode 100755 diff --git a/modules/ui_postprocessing.py b/modules/ui_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/ui_prompt_styles.py b/modules/ui_prompt_styles.py old mode 100644 new mode 100755 diff --git a/modules/ui_settings.py b/modules/ui_settings.py old mode 100644 new mode 100755 diff --git a/modules/ui_tempdir.py b/modules/ui_tempdir.py old mode 100644 new mode 100755 diff --git a/modules/ui_toprow.py b/modules/ui_toprow.py old mode 100644 new mode 100755 diff --git a/modules/upscaler.py b/modules/upscaler.py old mode 100644 new mode 100755 diff --git a/modules/upscaler_utils.py b/modules/upscaler_utils.py old mode 100644 new mode 100755 diff --git a/modules/util.py b/modules/util.py old mode 100644 new mode 100755 diff --git a/modules/xlmr.py b/modules/xlmr.py old mode 100644 new mode 100755 diff --git a/modules/xlmr_m18.py b/modules/xlmr_m18.py old mode 100644 new mode 100755 diff --git a/modules/xpu_specific.py b/modules/xpu_specific.py old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/pyproject.toml b/pyproject.toml old mode 100644 new mode 100755 diff --git a/requirements-test.txt b/requirements-test.txt old mode 100644 new mode 100755 diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 diff --git a/requirements_npu.txt b/requirements_npu.txt old mode 100644 new mode 100755 diff --git a/requirements_versions.txt b/requirements_versions.txt old mode 100644 new mode 100755 diff --git a/screenshot.png b/screenshot.png old mode 100644 new mode 100755 diff --git a/script.js b/script.js old mode 100644 new mode 100755 diff --git a/scripts/custom_code.py b/scripts/custom_code.py old mode 100644 new mode 100755 diff --git a/scripts/img2imgalt.py b/scripts/img2imgalt.py old mode 100644 new mode 100755 diff --git a/scripts/loopback.py b/scripts/loopback.py old mode 100644 new mode 100755 diff --git a/scripts/outpainting_mk_2.py b/scripts/outpainting_mk_2.py old mode 100644 new mode 100755 diff --git a/scripts/poor_mans_outpainting.py b/scripts/poor_mans_outpainting.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_codeformer.py b/scripts/postprocessing_codeformer.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_gfpgan.py b/scripts/postprocessing_gfpgan.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_upscale.py b/scripts/postprocessing_upscale.py old mode 100644 new mode 100755 diff --git a/scripts/prompt_matrix.py b/scripts/prompt_matrix.py old mode 100644 new mode 100755 diff --git a/scripts/prompts_from_file.py b/scripts/prompts_from_file.py old mode 100644 new mode 100755 diff --git a/scripts/sd_upscale.py b/scripts/sd_upscale.py old mode 100644 new mode 100755 diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py old mode 100644 new mode 100755 diff --git a/style.css b/style.css old mode 100644 new mode 100755 diff --git a/test/__init__.py b/test/__init__.py old mode 100644 new mode 100755 diff --git a/test/conftest.py b/test/conftest.py old mode 100644 new mode 100755 diff --git a/test/test_extras.py b/test/test_extras.py old mode 100644 new mode 100755 diff --git a/test/test_face_restorers.py b/test/test_face_restorers.py old mode 100644 new mode 100755 diff --git a/test/test_files/empty.pt b/test/test_files/empty.pt old mode 100644 new mode 100755 diff --git a/test/test_files/img2img_basic.png b/test/test_files/img2img_basic.png old mode 100644 new mode 100755 diff --git a/test/test_files/mask_basic.png b/test/test_files/mask_basic.png old mode 100644 new mode 100755 diff --git a/test/test_files/two-faces.jpg b/test/test_files/two-faces.jpg old mode 100644 new mode 100755 diff --git a/test/test_img2img.py b/test/test_img2img.py old mode 100644 new mode 100755 diff --git a/test/test_outputs/.gitkeep b/test/test_outputs/.gitkeep old mode 100644 new mode 100755 diff --git a/test/test_torch_utils.py b/test/test_torch_utils.py old mode 100644 new mode 100755 diff --git a/test/test_txt2img.py b/test/test_txt2img.py old mode 100644 new mode 100755 diff --git a/test/test_utils.py b/test/test_utils.py old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/hypernetwork.txt b/textual_inversion_templates/hypernetwork.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/none.txt b/textual_inversion_templates/none.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/style.txt b/textual_inversion_templates/style.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/style_filewords.txt b/textual_inversion_templates/style_filewords.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/subject.txt b/textual_inversion_templates/subject.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/subject_filewords.txt b/textual_inversion_templates/subject_filewords.txt old mode 100644 new mode 100755 diff --git a/webui-macos-env.sh b/webui-macos-env.sh old mode 100644 new mode 100755 diff --git a/webui-user.bat b/webui-user.bat old mode 100644 new mode 100755 diff --git a/webui-user.sh b/webui-user.sh old mode 100644 new mode 100755 index 70306c60d5b..7d5e6f6a941 --- a/webui-user.sh +++ b/webui-user.sh @@ -10,16 +10,18 @@ #clone_dir="stable-diffusion-webui" # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" -#export COMMANDLINE_ARGS="" +export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" +# Use this one below to reinstall pytorch +# export COMMANDLINE_ARGS="--listen --reinstall-pytorch --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable -#python_cmd="python3" +# python_cmd="/home/evanhu/.pyenv/versions/3.10.13/bin/python3.10" # git executable #export GIT="git" # python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv) -#venv_dir="venv" +# venv_dir="/home/evanhu/.pyenv/versions/3.10.13/envs/venv" # script to launch to start the app #export LAUNCH_SCRIPT="launch.py" @@ -28,7 +30,7 @@ #export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113" # Requirements file to use for stable-diffusion-webui -#export REQS_FILE="requirements_versions.txt" +export REQS_FILE="requirements_versions.txt" # Fixed git repos #export K_DIFFUSION_PACKAGE="" diff --git a/webui.bat b/webui.bat old mode 100644 new mode 100755 diff --git a/webui.py b/webui.py old mode 100644 new mode 100755 diff --git a/webui.sh b/webui.sh index 7acea902cfc..120c35f4f8b 100755 --- a/webui.sh +++ b/webui.sh @@ -67,7 +67,7 @@ then fi # this script cannot be run as root by default -can_run_as_root=0 +can_run_as_root=1 # read any command line flags to the webui.sh script while getopts "f" flag > /dev/null 2>&1 From 87794a244b72bed832459cd3ef990a2e02f1b6f8 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 26 Jun 2024 22:21:04 +0000 Subject: [PATCH 124/125] stable --- .gitignore | 2 - config_states/2024_06_26-22_19_45_STABLE.json | 199 ++++++++++++++++++ embeddings/negHand.pt | Bin 0 -> 25533 bytes 3 files changed, 199 insertions(+), 2 deletions(-) create mode 100644 config_states/2024_06_26-22_19_45_STABLE.json create mode 100644 embeddings/negHand.pt diff --git a/.gitignore b/.gitignore index 96cfe22dbd1..5ba1b63c386 100755 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ __pycache__ /config.json /log /webui.settings.bat -/embeddings /styles.csv /params.txt /styles.csv.bak @@ -33,7 +32,6 @@ notification.mp3 /test/stdout.txt /test/stderr.txt /cache.json* -/config_states/ /node_modules /package-lock.json /.coverage* diff --git a/config_states/2024_06_26-22_19_45_STABLE.json b/config_states/2024_06_26-22_19_45_STABLE.json new file mode 100644 index 00000000000..121c1d6c704 --- /dev/null +++ b/config_states/2024_06_26-22_19_45_STABLE.json @@ -0,0 +1,199 @@ +{ + "created_at": 1719440385.189873, + "webui": { + "remote": "https://github.com/kurukuruinc/stable-diffusion-webui.git", + "commit_hash": "b35249a0a8c6ae9e042928f232653edf026d08ee", + "commit_date": 1719404084, + "branch": "master" + }, + "extensions": { + "LDSR": { + "name": "LDSR", + "path": "/home/stable-diffusion-webui/extensions-builtin/LDSR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "Lora": { + "name": "Lora", + "path": "/home/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "ScuNET": { + "name": "ScuNET", + "path": "/home/stable-diffusion-webui/extensions-builtin/ScuNET", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "SwinIR": { + "name": "SwinIR", + "path": "/home/stable-diffusion-webui/extensions-builtin/SwinIR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "canvas-zoom-and-pan": { + "name": "canvas-zoom-and-pan", + "path": "/home/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "extra-options-section": { + "name": "extra-options-section", + "path": "/home/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "hypertile": { + "name": "hypertile", + "path": "/home/stable-diffusion-webui/extensions-builtin/hypertile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "mobile": { + "name": "mobile", + "path": "/home/stable-diffusion-webui/extensions-builtin/mobile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "postprocessing-for-training": { + "name": "postprocessing-for-training", + "path": "/home/stable-diffusion-webui/extensions-builtin/postprocessing-for-training", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "prompt-bracket-checker": { + "name": "prompt-bracket-checker", + "path": "/home/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "soft-inpainting": { + "name": "soft-inpainting", + "path": "/home/stable-diffusion-webui/extensions-builtin/soft-inpainting", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "a-person-mask-generator": { + "name": "a-person-mask-generator", + "path": "/home/stable-diffusion-webui/extensions/a-person-mask-generator", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/djbielejeski/a-person-mask-generator.git", + "commit_hash": "116560ab5c884bf6b25aade1db27c2f43c02464f", + "commit_date": 1718424402, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-api-payload-display": { + "name": "sd-webui-api-payload-display", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-api-payload-display", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/huchenlei/sd-webui-api-payload-display.git", + "commit_hash": "2d3332d94ffac0943bd35a1943924ed4650c6e63", + "commit_date": 1700763306, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "8bbbd0e55ef6e5d71b09c2de2727b36e7bc825b0", + "commit_date": 1717952499, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-incantations": { + "name": "sd-webui-incantations", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-incantations", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/v0xie/sd-webui-incantations.git", + "commit_hash": "95460d5012a4431324a37dd577c89b840208ca0c", + "commit_date": 1717882899, + "branch": "master", + "have_info_from_repo": false + }, + "sd-webui-loractl": { + "name": "sd-webui-loractl", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-loractl", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/cheald/sd-webui-loractl.git", + "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", + "commit_date": 1695172598, + "branch": "master", + "have_info_from_repo": true + }, + "sd-webui-token-downsampling": { + "name": "sd-webui-token-downsampling", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-token-downsampling", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/feffy380/sd-webui-token-downsampling.git", + "commit_hash": "f1f1cbae82b75d5658b08abbc3cb8ddc0b876cc5", + "commit_date": 1710393805, + "branch": "main", + "have_info_from_repo": false + } + }, + "name": "STABLE" +} \ No newline at end of file diff --git a/embeddings/negHand.pt b/embeddings/negHand.pt new file mode 100644 index 0000000000000000000000000000000000000000..4afe24eb4ec78d59937131cfe9d6f3bdf3ff8d97 GIT binary patch literal 25533 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 Date: Sun, 30 Jun 2024 15:07:36 +0000 Subject: [PATCH 125/125] [IMPROVE LORA DATASET LABELING] trim dataset labels by removing main prompt words --- README.md | 2 + _typos.toml | 0 ...24_06_26-06_37_26_Backup (pre-update).json | 0 cuda_installer.pyz | Bin 0 -> 59469 bytes html/extra-networks-pane-dirs.html | 0 html/extra-networks-pane-tree.html | 0 modules/images.py | 33 ++++++ modules/processing_scripts/sampler.py | 0 modules/profiling.py | 0 modules/sd_schedulers.py | 0 ui-config.json | 97 +++++++++++++++++- 11 files changed, 131 insertions(+), 1 deletion(-) mode change 100644 => 100755 _typos.toml mode change 100644 => 100755 config_states/2024_06_26-06_37_26_Backup (pre-update).json create mode 100755 cuda_installer.pyz mode change 100644 => 100755 html/extra-networks-pane-dirs.html mode change 100644 => 100755 html/extra-networks-pane-tree.html mode change 100644 => 100755 modules/processing_scripts/sampler.py mode change 100644 => 100755 modules/profiling.py mode change 100644 => 100755 modules/sd_schedulers.py diff --git a/README.md b/README.md index 3831007f5e9..db644352011 100755 --- a/README.md +++ b/README.md @@ -33,4 +33,6 @@ pyenv shell 3.10.13 Ensure there is a Python3.10 installation and it is pointed at in webui-user.sh. ``` sudo ./webui.sh +sudo pm2 start webui.sh ``` +sudo pm2 stop webui \ No newline at end of file diff --git a/_typos.toml b/_typos.toml old mode 100644 new mode 100755 diff --git a/config_states/2024_06_26-06_37_26_Backup (pre-update).json b/config_states/2024_06_26-06_37_26_Backup (pre-update).json old mode 100644 new mode 100755 diff --git a/cuda_installer.pyz b/cuda_installer.pyz new file mode 100755 index 0000000000000000000000000000000000000000..d5b0d2ea7c1f3d6ed006f7019f083efd479df6eb GIT binary patch literal 59469 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 j0}X_}xh@>Nje$Y literal 0 HcmV?d00001 diff --git a/html/extra-networks-pane-dirs.html b/html/extra-networks-pane-dirs.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-pane-tree.html b/html/extra-networks-pane-tree.html old mode 100644 new mode 100755 diff --git a/modules/images.py b/modules/images.py index cfdfb338446..f0200b72ae3 100755 --- a/modules/images.py +++ b/modules/images.py @@ -22,6 +22,7 @@ from modules import sd_samplers, shared, script_callbacks, errors from modules.paths_internal import roboto_ttf_file from modules.shared import opts +from modules.processing import StableDiffusionProcessing LANCZOS = (Image.Resampling.LANCZOS if hasattr(Image, 'Resampling') else Image.LANCZOS) @@ -621,6 +622,35 @@ def save_image_with_geninfo(image, geninfo, filename, extension=None, existing_p image.save(filename, format=image_format, quality=opts.jpeg_quality) +def trim_info(info: str, main_prompt: str = "") -> str: + """ + Removes global character identifiers found in original prompt from labels. + + E.g. If a character train image was made with the prompts: “man, tall, muscular, right-facing, suit” + The corresponding lora train labels should be “Bob, right-facing, suit” + In other words, we want “tall” and “muscular” to be part of “Bob” - they should not be their own tags because tags are variable + """ + global_labels = main_prompt.split(",") + local_labels = info.split(',') + + # exclude all global labels except the first, which is the character name by convention + labels_to_exclude = set(global_labels[1:]) if len(global_labels > 0) else set() + + # iterate through local labels and remove excluded ones + # Note: we iterate instead of doing set difference to preserve label order. + new_labels = [] + for label in local_labels: + if label not in labels_to_exclude: + new_labels.append(label) + + # join labels back into comma-separated list + return ",".join(new_labels) + + + + + + def save_image(image, path, basename, seed=None, prompt=None, extension='png', info=None, short_filename=False, no_prompt=False, grid=False, pnginfo_section_name='parameters', p=None, existing_info=None, forced_filename=None, suffix="", save_to_dirs=None): """Save an image. @@ -709,6 +739,9 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i fullfn = params.filename info = params.pnginfo.get(pnginfo_section_name, None) + # Remove global and non-variable labels from the image info + info = trim_info(info, p.main_prompt) + def _atomically_save_image(image_to_save, filename_without_extension, extension): """ save image with .tmp extension to avoid race condition when another process detects new image in the directory diff --git a/modules/processing_scripts/sampler.py b/modules/processing_scripts/sampler.py old mode 100644 new mode 100755 diff --git a/modules/profiling.py b/modules/profiling.py old mode 100644 new mode 100755 diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py old mode 100644 new mode 100755 diff --git a/ui-config.json b/ui-config.json index 504ee5bcce1..0f3ea221567 100755 --- a/ui-config.json +++ b/ui-config.json @@ -2894,5 +2894,100 @@ "img2img/⤴/visible": true, "img2img/Effective Region Mask/visible": true, "img2img/Effective Region Mask/value": false, - "img2img/PuLID Mode/value": "Fidelity" + "img2img/PuLID Mode/value": "Fidelity", + "customscript/sampler.py/txt2img/Sampling method/visible": true, + "customscript/sampler.py/txt2img/Sampling method/value": "DPM++ 2M", + "customscript/sampler.py/txt2img/Schedule type/visible": true, + "customscript/sampler.py/txt2img/Schedule type/value": "Automatic", + "customscript/sampler.py/txt2img/Sampling steps/visible": true, + "customscript/sampler.py/txt2img/Sampling steps/value": 20, + "customscript/sampler.py/txt2img/Sampling steps/minimum": 1, + "customscript/sampler.py/txt2img/Sampling steps/maximum": 150, + "customscript/sampler.py/txt2img/Sampling steps/step": 1, + "txt2img/Checkpoint/visible": true, + "txt2img/Checkpoint/value": "Use same checkpoint", + "txt2img/Hires schedule type/visible": true, + "txt2img/Hires schedule type/value": "Use same scheduler", + "customscript/refiner.py/txt2img/Refiner/visible": true, + "img2img/Tabs@img2img_batch_source/selected": null, + "customscript/soft_inpainting.py/img2img/Soft inpainting/visible": true, + "customscript/sampler.py/img2img/Sampling method/visible": true, + "customscript/sampler.py/img2img/Sampling method/value": "DPM++ 2M", + "customscript/sampler.py/img2img/Schedule type/visible": true, + "customscript/sampler.py/img2img/Schedule type/value": "Automatic", + "customscript/sampler.py/img2img/Sampling steps/visible": true, + "customscript/sampler.py/img2img/Sampling steps/value": 20, + "customscript/sampler.py/img2img/Sampling steps/minimum": 1, + "customscript/sampler.py/img2img/Sampling steps/maximum": 150, + "customscript/sampler.py/img2img/Sampling steps/step": 1, + "customscript/refiner.py/img2img/Refiner/visible": true, + "customscript/a_person_mask_generator.py/img2img/Enable/visible": true, + "customscript/a_person_mask_generator.py/img2img/Enable/value": false, + "customscript/a_person_mask_generator.py/img2img/Mask/visible": true, + "customscript/a_person_mask_generator.py/img2img/Mask/value": [ + "face (skin)" + ], + "img2img/Preview Mask */visible": true, + "customscript/a_person_mask_generator.py/img2img/Mask dilation, pixels/visible": true, + "customscript/a_person_mask_generator.py/img2img/Mask dilation, pixels/value": 0, + "customscript/a_person_mask_generator.py/img2img/Mask dilation, pixels/minimum": 0, + "customscript/a_person_mask_generator.py/img2img/Mask dilation, pixels/maximum": 64, + "customscript/a_person_mask_generator.py/img2img/Mask dilation, pixels/step": 1, + "customscript/a_person_mask_generator.py/img2img/Override mask settings/visible": true, + "customscript/a_person_mask_generator.py/img2img/Override mask settings/value": false, + "customscript/a_person_mask_generator.py/img2img/Mask blur/visible": true, + "customscript/a_person_mask_generator.py/img2img/Mask blur/value": 4, + "customscript/a_person_mask_generator.py/img2img/Mask blur/minimum": 0, + "customscript/a_person_mask_generator.py/img2img/Mask blur/maximum": 64, + "customscript/a_person_mask_generator.py/img2img/Mask blur/step": 1, + "customscript/a_person_mask_generator.py/img2img/Mask mode/visible": true, + "customscript/a_person_mask_generator.py/img2img/Mask mode/value": "Inpaint masked", + "customscript/a_person_mask_generator.py/img2img/Masked content/visible": true, + "customscript/a_person_mask_generator.py/img2img/Masked content/value": "original", + "customscript/a_person_mask_generator.py/img2img/Inpaint area/visible": true, + "customscript/a_person_mask_generator.py/img2img/Inpaint area/value": "Whole picture", + "customscript/a_person_mask_generator.py/img2img/Only masked padding, pixels/visible": true, + "customscript/a_person_mask_generator.py/img2img/Only masked padding, pixels/value": 32, + "customscript/a_person_mask_generator.py/img2img/Only masked padding, pixels/minimum": 0, + "customscript/a_person_mask_generator.py/img2img/Only masked padding, pixels/maximum": 256, + "customscript/a_person_mask_generator.py/img2img/Only masked padding, pixels/step": 4, + "customscript/postprocessing_upscale.py/extras/Upscale/visible": true, + "customscript/postprocessing_upscale.py/extras/Upscale/value": true, + "customscript/postprocessing_upscale.py/extras/Max side length/visible": true, + "customscript/postprocessing_upscale.py/extras/Max side length/value": 0.0, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN/visible": true, + "customscript/postprocessing_codeformer.py/extras/CodeFormer/visible": true, + "customscript/postprocessing_split_oversized.py/extras/Split oversized images/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Auto focal point crop/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Auto-sized crop/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Auto-sized crop/value": false, + "customscript/postprocessing_autosized_crop.py/extras/Dimension lower bound/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Dimension lower bound/value": 384, + "customscript/postprocessing_autosized_crop.py/extras/Dimension lower bound/minimum": 64, + "customscript/postprocessing_autosized_crop.py/extras/Dimension lower bound/maximum": 2048, + "customscript/postprocessing_autosized_crop.py/extras/Dimension lower bound/step": 8, + "customscript/postprocessing_autosized_crop.py/extras/Dimension upper bound/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Dimension upper bound/value": 768, + "customscript/postprocessing_autosized_crop.py/extras/Dimension upper bound/minimum": 64, + "customscript/postprocessing_autosized_crop.py/extras/Dimension upper bound/maximum": 2048, + "customscript/postprocessing_autosized_crop.py/extras/Dimension upper bound/step": 8, + "customscript/postprocessing_autosized_crop.py/extras/Area lower bound/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Area lower bound/value": 4096, + "customscript/postprocessing_autosized_crop.py/extras/Area lower bound/minimum": 4096, + "customscript/postprocessing_autosized_crop.py/extras/Area lower bound/maximum": 4194304, + "customscript/postprocessing_autosized_crop.py/extras/Area lower bound/step": 1, + "customscript/postprocessing_autosized_crop.py/extras/Area upper bound/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Area upper bound/value": 409600, + "customscript/postprocessing_autosized_crop.py/extras/Area upper bound/minimum": 4096, + "customscript/postprocessing_autosized_crop.py/extras/Area upper bound/maximum": 4194304, + "customscript/postprocessing_autosized_crop.py/extras/Area upper bound/step": 1, + "customscript/postprocessing_autosized_crop.py/extras/Resizing objective/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Resizing objective/value": "Maximize area", + "customscript/postprocessing_autosized_crop.py/extras/Error threshold/visible": true, + "customscript/postprocessing_autosized_crop.py/extras/Error threshold/value": 0.1, + "customscript/postprocessing_autosized_crop.py/extras/Error threshold/minimum": 0, + "customscript/postprocessing_autosized_crop.py/extras/Error threshold/maximum": 1, + "customscript/postprocessing_autosized_crop.py/extras/Error threshold/step": 0.01, + "customscript/postprocessing_create_flipped_copies.py/extras/Create flipped copies/visible": true, + "customscript/postprocessing_caption.py/extras/Caption/visible": true } \ No newline at end of file

[ Profile ]

P?9R*9L8}xu;H?RKUo8>9o7L%2Qz25mNOl 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
+zncR>V`xS+$5P{Zo?pL=dN|2wtef#+rUwYuz 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 Date: Fri, 29 Mar 2024 20:28:52 +0000 Subject: [PATCH 007/125] f --- .gitignore | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b732b1205c1..d05dbe980e9 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ __pycache__ *.ckpt -*.safetensors +# *.safetensors *.pth /ESRGAN/* /SwinIR/* @@ -8,7 +8,8 @@ __pycache__ /venv /tmp /model.ckpt -/models/**/* +models/* +# !models/Stable-diffusion /GFPGANv1.3.pth /gfpgan/weights/*.pth /outputs From 02d077ad8a6681b8f9b27672a566aec0c3b89a46 Mon Sep 17 00:00:00 2001 From: Evan Hu Date: Fri, 29 Mar 2024 13:33:06 -0700 Subject: [PATCH 008/125] Update README.md --- README.md | 182 +----------------------------------------------------- 1 file changed, 1 insertion(+), 181 deletions(-) diff --git a/README.md b/README.md index f4cfcf29008..0cc4f2aef76 100755 --- a/README.md +++ b/README.md @@ -1,182 +1,2 @@ # Stable Diffusion web UI -A web interface for Stable Diffusion, implemented using Gradio library. - -![](screenshot.png) - -## Features -[Detailed feature showcase with images](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features): -- Original txt2img and img2img modes -- One click install and run script (but you still must install python and git) -- Outpainting -- Inpainting -- Color Sketch -- Prompt Matrix -- Stable Diffusion Upscale -- Attention, specify parts of text that the model should pay more attention to - - a man in a `((tuxedo))` - will pay more attention to tuxedo - - a man in a `(tuxedo:1.21)` - alternative syntax - - select text and press `Ctrl+Up` or `Ctrl+Down` (or `Command+Up` or `Command+Down` if you're on a MacOS) to automatically adjust attention to selected text (code contributed by anonymous user) -- Loopback, run img2img processing multiple times -- X/Y/Z plot, a way to draw a 3 dimensional plot of images with different parameters -- Textual Inversion - - have as many embeddings as you want and use any names you like for them - - use multiple embeddings with different numbers of vectors per token - - works with half precision floating point numbers - - train embeddings on 8GB (also reports of 6GB working) -- Extras tab with: - - GFPGAN, neural network that fixes faces - - CodeFormer, face restoration tool as an alternative to GFPGAN - - RealESRGAN, neural network upscaler - - ESRGAN, neural network upscaler with a lot of third party models - - SwinIR and Swin2SR ([see here](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/2092)), neural network upscalers - - LDSR, Latent diffusion super resolution upscaling -- Resizing aspect ratio options -- Sampling method selection - - Adjust sampler eta values (noise multiplier) - - More advanced noise setting options -- Interrupt processing at any time -- 4GB video card support (also reports of 2GB working) -- Correct seeds for batches -- Live prompt token length validation -- Generation parameters - - parameters you used to generate images are saved with that image - - in PNG chunks for PNG, in EXIF for JPEG - - can drag the image to PNG info tab to restore generation parameters and automatically copy them into UI - - can be disabled in settings - - drag and drop an image/text-parameters to promptbox -- Read Generation Parameters Button, loads parameters in promptbox to UI -- Settings page -- Running arbitrary python code from UI (must run with `--allow-code` to enable) -- Mouseover hints for most UI elements -- Possible to change defaults/mix/max/step values for UI elements via text config -- Tiling support, a checkbox to create images that can be tiled like textures -- Progress bar and live image generation preview - - Can use a separate neural network to produce previews with almost none VRAM or compute requirement -- Negative prompt, an extra text field that allows you to list what you don't want to see in generated image -- Styles, a way to save part of prompt and easily apply them via dropdown later -- Variations, a way to generate same image but with tiny differences -- Seed resizing, a way to generate same image but at slightly different resolution -- CLIP interrogator, a button that tries to guess prompt from an image -- Prompt Editing, a way to change prompt mid-generation, say to start making a watermelon and switch to anime girl midway -- Batch Processing, process a group of files using img2img -- Img2img Alternative, reverse Euler method of cross attention control -- Highres Fix, a convenience option to produce high resolution pictures in one click without usual distortions -- Reloading checkpoints on the fly -- Checkpoint Merger, a tab that allows you to merge up to 3 checkpoints into one -- [Custom scripts](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts) with many extensions from community -- [Composable-Diffusion](https://energy-based-model.github.io/Compositional-Visual-Generation-with-Composable-Diffusion-Models/), a way to use multiple prompts at once - - separate prompts using uppercase `AND` - - also supports weights for prompts: `a cat :1.2 AND a dog AND a penguin :2.2` -- No token limit for prompts (original stable diffusion lets you use up to 75 tokens) -- DeepDanbooru integration, creates danbooru style tags for anime prompts -- [xformers](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Xformers), major speed increase for select cards: (add `--xformers` to commandline args) -- via extension: [History tab](https://github.com/yfszzx/stable-diffusion-webui-images-browser): view, direct and delete images conveniently within the UI -- Generate forever option -- Training tab - - hypernetworks and embeddings options - - Preprocessing images: cropping, mirroring, autotagging using BLIP or deepdanbooru (for anime) -- Clip skip -- Hypernetworks -- Loras (same as Hypernetworks but more pretty) -- A separate UI where you can choose, with preview, which embeddings, hypernetworks or Loras to add to your prompt -- Can select to load a different VAE from settings screen -- Estimated completion time in progress bar -- API -- Support for dedicated [inpainting model](https://github.com/runwayml/stable-diffusion#inpainting-with-stable-diffusion) by RunwayML -- via extension: [Aesthetic Gradients](https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients), a way to generate images with a specific aesthetic by using clip images embeds (implementation of [https://github.com/vicgalle/stable-diffusion-aesthetic-gradients](https://github.com/vicgalle/stable-diffusion-aesthetic-gradients)) -- [Stable Diffusion 2.0](https://github.com/Stability-AI/stablediffusion) support - see [wiki](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#stable-diffusion-20) for instructions -- [Alt-Diffusion](https://arxiv.org/abs/2211.06679) support - see [wiki](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#alt-diffusion) for instructions -- Now without any bad letters! -- Load checkpoints in safetensors format -- Eased resolution restriction: generated image's dimensions must be a multiple of 8 rather than 64 -- Now with a license! -- Reorder elements in the UI from settings screen -- [Segmind Stable Diffusion](https://huggingface.co/segmind/SSD-1B) support - -## Installation and Running -Make sure the required [dependencies](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Dependencies) are met and follow the instructions available for: -- [NVidia](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-NVidia-GPUs) (recommended) -- [AMD](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs) GPUs. -- [Intel CPUs, Intel GPUs (both integrated and discrete)](https://github.com/openvinotoolkit/stable-diffusion-webui/wiki/Installation-on-Intel-Silicon) (external wiki page) - -Alternatively, use online services (like Google Colab): - -- [List of Online Services](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Online-Services) - -### Installation on Windows 10/11 with NVidia-GPUs using release package -1. Download `sd.webui.zip` from [v1.0.0-pre](https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre) and extract its contents. -2. Run `update.bat`. -3. Run `run.bat`. -> For more details see [Install-and-Run-on-NVidia-GPUs](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-NVidia-GPUs) - -### Automatic Installation on Windows -1. Install [Python 3.10.6](https://www.python.org/downloads/release/python-3106/) (Newer version of Python does not support torch), checking "Add Python to PATH". -2. Install [git](https://git-scm.com/download/win). -3. Download the stable-diffusion-webui repository, for example by running `git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git`. -4. Run `webui-user.bat` from Windows Explorer as normal, non-administrator, user. - -### Automatic Installation on Linux -1. Install the dependencies: -```bash -# Debian-based: -sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 -# Red Hat-based: -sudo dnf install wget git python3 gperftools-libs libglvnd-glx -# openSUSE-based: -sudo zypper install wget git python3 libtcmalloc4 libglvnd -# Arch-based: -sudo pacman -S wget git python3 -``` -2. Navigate to the directory you would like the webui to be installed and execute the following command: -```bash -wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh -``` -3. Run `webui.sh`. -4. Check `webui-user.sh` for options. -### Installation on Apple Silicon - -Find the instructions [here](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon). - -## Contributing -Here's how to add code to this repo: [Contributing](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Contributing) - -## Documentation - -The documentation was moved from this README over to the project's [wiki](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki). - -For the purposes of getting Google and other search engines to crawl the wiki, here's a link to the (not for humans) [crawlable wiki](https://github-wiki-see.page/m/AUTOMATIC1111/stable-diffusion-webui/wiki). - -## Credits -Licenses for borrowed code can be found in `Settings -> Licenses` screen, and also in `html/licenses.html` file. - -- Stable Diffusion - https://github.com/Stability-AI/stablediffusion, https://github.com/CompVis/taming-transformers -- k-diffusion - https://github.com/crowsonkb/k-diffusion.git -- Spandrel - https://github.com/chaiNNer-org/spandrel implementing - - GFPGAN - https://github.com/TencentARC/GFPGAN.git - - CodeFormer - https://github.com/sczhou/CodeFormer - - ESRGAN - https://github.com/xinntao/ESRGAN - - SwinIR - https://github.com/JingyunLiang/SwinIR - - Swin2SR - https://github.com/mv-lab/swin2sr -- LDSR - https://github.com/Hafiidz/latent-diffusion -- MiDaS - https://github.com/isl-org/MiDaS -- Ideas for optimizations - https://github.com/basujindal/stable-diffusion -- Cross Attention layer optimization - Doggettx - https://github.com/Doggettx/stable-diffusion, original idea for prompt editing. -- Cross Attention layer optimization - InvokeAI, lstein - https://github.com/invoke-ai/InvokeAI (originally http://github.com/lstein/stable-diffusion) -- Sub-quadratic Cross Attention layer optimization - Alex Birch (https://github.com/Birch-san/diffusers/pull/1), Amin Rezaei (https://github.com/AminRezaei0x443/memory-efficient-attention) -- Textual Inversion - Rinon Gal - https://github.com/rinongal/textual_inversion (we're not using his code, but we are using his ideas). -- Idea for SD upscale - https://github.com/jquesnelle/txt2imghd -- Noise generation for outpainting mk2 - https://github.com/parlance-zz/g-diffuser-bot -- CLIP interrogator idea and borrowing some code - https://github.com/pharmapsychotic/clip-interrogator -- Idea for Composable Diffusion - https://github.com/energy-based-model/Compositional-Visual-Generation-with-Composable-Diffusion-Models-PyTorch -- xformers - https://github.com/facebookresearch/xformers -- DeepDanbooru - interrogator for anime diffusers https://github.com/KichangKim/DeepDanbooru -- Sampling in float32 precision from a float16 UNet - marunine for the idea, Birch-san for the example Diffusers implementation (https://github.com/Birch-san/diffusers-play/tree/92feee6) -- Instruct pix2pix - Tim Brooks (star), Aleksander Holynski (star), Alexei A. Efros (no star) - https://github.com/timothybrooks/instruct-pix2pix -- Security advice - RyotaK -- UniPC sampler - Wenliang Zhao - https://github.com/wl-zhao/UniPC -- TAESD - Ollin Boer Bohan - https://github.com/madebyollin/taesd -- LyCORIS - KohakuBlueleaf -- Restart sampling - lambertae - https://github.com/Newbeeer/diffusion_restart_sampling -- Hypertile - tfernd - https://github.com/tfernd/HyperTile -- Initial Gradio script - posted on 4chan by an Anonymous user. Thank you Anonymous user. -- (You) +A web interface for Stable Diffusion. Fork of A1111/stable-diffusion-web-ui. For Ubuntu with use of [PyEnv](https://github.com/pyenv/pyenv). From ec97a92fd3f148c19eedf8af14bfc2f9a2c0e49e Mon Sep 17 00:00:00 2001 From: Evan Hu Date: Fri, 29 Mar 2024 13:34:55 -0700 Subject: [PATCH 009/125] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0cc4f2aef76..2cc4ac02985 100755 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # Stable Diffusion web UI A web interface for Stable Diffusion. Fork of A1111/stable-diffusion-web-ui. For Ubuntu with use of [PyEnv](https://github.com/pyenv/pyenv). + +# Start +Ensure there is a Python3.10 installation and it is pointed at in webui-user.sh. +```sudo ./webui.sh``` From 8eca4cf29fba0c40f8a71df7b9198a091ccb92fb Mon Sep 17 00:00:00 2001 From: Evan Date: Fri, 29 Mar 2024 20:35:09 +0000 Subject: [PATCH 010/125] readme --- webui-user.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webui-user.sh b/webui-user.sh index 80f7d2479f1..54267ce31ba 100755 --- a/webui-user.sh +++ b/webui-user.sh @@ -11,6 +11,8 @@ # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" +# Use this one below to reinstall pytorch +# export COMMANDLINE_ARGS="--listen --reinstall-pytorch --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable python_cmd="/home/evanhu/.pyenv/versions/3.10.13/bin/python3.10" From 5b8c216b4331a7dbc6dd521b04068261693f0599 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 18 Apr 2024 21:22:58 +0000 Subject: [PATCH 011/125] config --- config.json | 19 +- ...24_04_02-21_08_21_Backup (pre-update).json | 265 ++++++++++++++++++ ui-config.json | 102 ++++++- 3 files changed, 379 insertions(+), 7 deletions(-) create mode 100644 config_states/2024_04_02-21_08_21_Backup (pre-update).json diff --git a/config.json b/config.json index 5a09d9757b2..9bffdb5b695 100755 --- a/config.json +++ b/config.json @@ -71,10 +71,10 @@ "training_enable_tensorboard": false, "training_tensorboard_save_images": false, "training_tensorboard_flush_every": 120, - "sd_model_checkpoint": "Counterfeit-V3.0_fp32.safetensors [17277fbe68]", + "sd_model_checkpoint": "helloyoung25d_V15jvae.safetensors [d3b025bd3f]", "sd_checkpoint_cache": 0, "sd_vae_checkpoint_cache": 0, - "sd_vae": "Anything-V3.0.vae.pt", + "sd_vae": "vae-ft-mse-840000-ema-pruned.ckpt", "sd_vae_as_default": true, "sd_unet": "Automatic", "inpainting_mask_weight": 1.0, @@ -90,7 +90,7 @@ "upcast_attn": false, "randn_source": "GPU", "cross_attention_optimization": "Automatic", - "s_min_uncond": 1.2, + "s_min_uncond": 0, "token_merging_ratio": 0.1, "token_merging_ratio_img2img": 0.1, "token_merging_ratio_hr": 0.0, @@ -187,12 +187,19 @@ "postprocessing_operation_order": [], "upscaling_max_images_in_cache": 5, "disabled_extensions": [ - "sd-webui-loractl", - "stable-diffusion-webui-two-shot" + "PBRemTools", + "multi-subject-render", + "sd-civitai-browser-plus", + "sd-webui-animatediff", + "sd-webui-infinite-image-browsing", + "sd_civitai_extension", + "stable-diffusion-webui-rembg", + "stable-diffusion-webui-two-shot", + "zulu571" ], "disable_all_extensions": "none", "restore_config_state_file": "", - "sd_checkpoint_hash": "17277fbe68541b183f48855f7998e72068e96dca55c102013a8cefed92aaaaa3", + "sd_checkpoint_hash": "d3b025bd3ffaa9f76a60e5936396029045d00367f247ac221b8ae3470eb6675e", "ldsr_steps": 100, "ldsr_cached": false, "SCUNET_tile": 256, diff --git a/config_states/2024_04_02-21_08_21_Backup (pre-update).json b/config_states/2024_04_02-21_08_21_Backup (pre-update).json new file mode 100644 index 00000000000..06debfdcebe --- /dev/null +++ b/config_states/2024_04_02-21_08_21_Backup (pre-update).json @@ -0,0 +1,265 @@ +{ + "created_at": 1712092101.286983, + "webui": { + "remote": "https://github.com/kurukuruinc/stable-diffusion-webui.git", + "commit_hash": "8eca4cf29fba0c40f8a71df7b9198a091ccb92fb", + "commit_date": 1711744519, + "branch": "master" + }, + "extensions": { + "LDSR": { + "name": "LDSR", + "path": "/home/stable-diffusion-webui/extensions-builtin/LDSR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "Lora": { + "name": "Lora", + "path": "/home/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "ScuNET": { + "name": "ScuNET", + "path": "/home/stable-diffusion-webui/extensions-builtin/ScuNET", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "SwinIR": { + "name": "SwinIR", + "path": "/home/stable-diffusion-webui/extensions-builtin/SwinIR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "canvas-zoom-and-pan": { + "name": "canvas-zoom-and-pan", + "path": "/home/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "extra-options-section": { + "name": "extra-options-section", + "path": "/home/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "hypertile": { + "name": "hypertile", + "path": "/home/stable-diffusion-webui/extensions-builtin/hypertile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "mobile": { + "name": "mobile", + "path": "/home/stable-diffusion-webui/extensions-builtin/mobile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "prompt-bracket-checker": { + "name": "prompt-bracket-checker", + "path": "/home/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "soft-inpainting": { + "name": "soft-inpainting", + "path": "/home/stable-diffusion-webui/extensions-builtin/soft-inpainting", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "PBRemTools": { + "name": "PBRemTools", + "path": "/home/stable-diffusion-webui/extensions/PBRemTools", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/mattyamonaca/PBRemTools.git", + "commit_hash": "91e16d32b1539552707cb1a40be0b969c076c519", + "commit_date": 1690884491, + "branch": "main", + "have_info_from_repo": false + }, + "multi-subject-render": { + "name": "multi-subject-render", + "path": "/home/stable-diffusion-webui/extensions/multi-subject-render", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/Extraltodeus/multi-subject-render.git", + "commit_hash": "03427e26bebdc6da0ccfb749bf3c4e7e33d7458b", + "commit_date": 1678111890, + "branch": "main", + "have_info_from_repo": false + }, + "multidiffusion-upscaler-for-automatic1111": { + "name": "multidiffusion-upscaler-for-automatic1111", + "path": "/home/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", + "commit_hash": "76cde3c2bf15b212d4fde66c8a29d96f0a598916", + "commit_date": 1709969880, + "branch": "main", + "have_info_from_repo": true + }, + "sd-civitai-browser-plus": { + "name": "sd-civitai-browser-plus", + "path": "/home/stable-diffusion-webui/extensions/sd-civitai-browser-plus", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/BlafKing/sd-civitai-browser-plus.git", + "commit_hash": "c6f41adac0877048971574e4949117e85a6bffe0", + "commit_date": 1710648272, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-animatediff": { + "name": "sd-webui-animatediff", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-animatediff", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/continue-revolution/sd-webui-animatediff.git", + "commit_hash": "a81565d906c0f16c9a9b95cd80af7b8bafda7cb3", + "commit_date": 1710673541, + "branch": "master", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "2091b6fb21d9c76becb2a8860c8d2975ad3e428a", + "commit_date": 1710469955, + "branch": "main", + "have_info_from_repo": true + }, + "sd-webui-infinite-image-browsing": { + "name": "sd-webui-infinite-image-browsing", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-infinite-image-browsing", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/zanllp/sd-webui-infinite-image-browsing.git", + "commit_hash": "67935cb077bb9ee3737bcd6cd039ce33a4c943f9", + "commit_date": 1710452669, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-loractl": { + "name": "sd-webui-loractl", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-loractl", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/cheald/sd-webui-loractl.git", + "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", + "commit_date": 1695172598, + "branch": "master", + "have_info_from_repo": true + }, + "sd_civitai_extension": { + "name": "sd_civitai_extension", + "path": "/home/stable-diffusion-webui/extensions/sd_civitai_extension", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/civitai/sd_civitai_extension.git", + "commit_hash": "115cd9c35b0774c90cb9c397ad60ef6a7dac60de", + "commit_date": 1709685471, + "branch": "main", + "have_info_from_repo": false + }, + "stable-diffusion-webui-images-browser": { + "name": "stable-diffusion-webui-images-browser", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AlUlkesh/stable-diffusion-webui-images-browser.git", + "commit_hash": "3d2d0f4c7b0599f88df99a9ea66c21bcbec49bda", + "commit_date": 1706884847, + "branch": "main", + "have_info_from_repo": true + }, + "stable-diffusion-webui-rembg": { + "name": "stable-diffusion-webui-rembg", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", + "commit_hash": "a4c07b857e73f3035f759876797fa6de986def3d", + "commit_date": 1703941443, + "branch": "master", + "have_info_from_repo": false + }, + "stable-diffusion-webui-two-shot": { + "name": "stable-diffusion-webui-two-shot", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", + "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", + "commit_date": 1680434665, + "branch": "main", + "have_info_from_repo": false + }, + "zulu571": { + "name": "zulu571", + "path": "/home/stable-diffusion-webui/extensions/zulu571", + "enabled": false, + "is_builtin": false, + "remote": "http://47.93.16.222:3000/Iyashinouta/sd-colab-commands-browser", + "commit_hash": "dcd26f39829bda68459b73bd21acc090734ffa29", + "commit_date": 1677534269, + "branch": "main", + "have_info_from_repo": false + } + }, + "name": "Backup (pre-update)" +} \ No newline at end of file diff --git a/ui-config.json b/ui-config.json index d87702bca7d..21c41c6e973 100755 --- a/ui-config.json +++ b/ui-config.json @@ -2767,5 +2767,105 @@ "customscript/extra_options_section.py/txt2img/SD VAE/visible": true, "customscript/extra_options_section.py/txt2img/SD VAE/value": "None", "customscript/extra_options_section.py/img2img/SD VAE/visible": true, - "customscript/extra_options_section.py/img2img/SD VAE/value": "None" + "customscript/extra_options_section.py/img2img/SD VAE/value": "None", + "txt2img/Tiled Diffusion/visible": true, + "customscript/tilediffusion.py/txt2img/Tiled Diffusion/value": false, + "txt2img/Tiled Diffusion/value": false, + "txt2img/DemoFusion/visible": true, + "customscript/tileglobal.py/txt2img/DemoFusion/value": false, + "txt2img/DemoFusion/value": false, + "customscript/tileglobal.py/txt2img/Random Jitter/visible": true, + "customscript/tileglobal.py/txt2img/Random Jitter/value": true, + "customscript/tileglobal.py/txt2img/Keep input-image size/value": false, + "customscript/tileglobal.py/txt2img/Mixture mode/visible": true, + "customscript/tileglobal.py/txt2img/Mixture mode/value": false, + "customscript/tileglobal.py/txt2img/Gaussian Filter/value": true, + "customscript/tileglobal.py/txt2img/Global window batch size/visible": true, + "customscript/tileglobal.py/txt2img/Global window batch size/value": 4, + "customscript/tileglobal.py/txt2img/Global window batch size/minimum": 1, + "customscript/tileglobal.py/txt2img/Global window batch size/maximum": 8, + "customscript/tileglobal.py/txt2img/Global window batch size/step": 1, + "customscript/tileglobal.py/txt2img/Cosine Scale 1/visible": true, + "customscript/tileglobal.py/txt2img/Cosine Scale 1/value": 3, + "customscript/tileglobal.py/txt2img/Cosine Scale 1/minimum": 0, + "customscript/tileglobal.py/txt2img/Cosine Scale 1/maximum": 5, + "customscript/tileglobal.py/txt2img/Cosine Scale 1/step": 0.01, + "customscript/tileglobal.py/txt2img/Cosine Scale 2/visible": true, + "customscript/tileglobal.py/txt2img/Cosine Scale 2/value": 1, + "customscript/tileglobal.py/txt2img/Cosine Scale 2/minimum": 0, + "customscript/tileglobal.py/txt2img/Cosine Scale 2/maximum": 5, + "customscript/tileglobal.py/txt2img/Cosine Scale 2/step": 0.01, + "customscript/tileglobal.py/txt2img/Cosine Scale 3/visible": true, + "customscript/tileglobal.py/txt2img/Cosine Scale 3/value": 1, + "customscript/tileglobal.py/txt2img/Cosine Scale 3/minimum": 0, + "customscript/tileglobal.py/txt2img/Cosine Scale 3/maximum": 5, + "customscript/tileglobal.py/txt2img/Cosine Scale 3/step": 0.01, + "customscript/tileglobal.py/txt2img/Sigma/visible": true, + "customscript/tileglobal.py/txt2img/Sigma/value": 0.6, + "customscript/tileglobal.py/txt2img/Sigma/minimum": 0, + "customscript/tileglobal.py/txt2img/Sigma/maximum": 2, + "customscript/tileglobal.py/txt2img/Sigma/step": 0.01, + "customscript/tileglobal.py/txt2img/Denoising Strength for Substage/visible": true, + "customscript/tileglobal.py/txt2img/Denoising Strength for Substage/value": 0.85, + "customscript/tileglobal.py/txt2img/Denoising Strength for Substage/minimum": 0, + "customscript/tileglobal.py/txt2img/Denoising Strength for Substage/maximum": 1, + "customscript/tileglobal.py/txt2img/Denoising Strength for Substage/step": 0.01, + "customscript/tileglobal.py/txt2img/Scale Factor/visible": true, + "customscript/tileglobal.py/txt2img/Scale Factor/value": 2.0, + "customscript/tileglobal.py/txt2img/Scale Factor/minimum": 1.0, + "customscript/tileglobal.py/txt2img/Scale Factor/maximum": 8.0, + "customscript/tileglobal.py/txt2img/Scale Factor/step": 1, + "txt2img/Tiled VAE/visible": true, + "customscript/tilevae.py/txt2img/Tiled VAE/value": false, + "txt2img/Tiled VAE/value": false, + "img2img/Tiled Diffusion/visible": true, + "customscript/tilediffusion.py/img2img/Tiled Diffusion/value": false, + "img2img/Tiled Diffusion/value": false, + "img2img/DemoFusion/visible": true, + "customscript/tileglobal.py/img2img/DemoFusion/value": false, + "img2img/DemoFusion/value": false, + "customscript/tileglobal.py/img2img/Random Jitter/visible": true, + "customscript/tileglobal.py/img2img/Random Jitter/value": true, + "customscript/tileglobal.py/img2img/Keep input-image size/visible": true, + "customscript/tileglobal.py/img2img/Keep input-image size/value": false, + "customscript/tileglobal.py/img2img/Mixture mode/visible": true, + "customscript/tileglobal.py/img2img/Mixture mode/value": false, + "customscript/tileglobal.py/img2img/Gaussian Filter/value": true, + "customscript/tileglobal.py/img2img/Global window batch size/visible": true, + "customscript/tileglobal.py/img2img/Global window batch size/value": 4, + "customscript/tileglobal.py/img2img/Global window batch size/minimum": 1, + "customscript/tileglobal.py/img2img/Global window batch size/maximum": 8, + "customscript/tileglobal.py/img2img/Global window batch size/step": 1, + "customscript/tileglobal.py/img2img/Cosine Scale 1/visible": true, + "customscript/tileglobal.py/img2img/Cosine Scale 1/value": 3, + "customscript/tileglobal.py/img2img/Cosine Scale 1/minimum": 0, + "customscript/tileglobal.py/img2img/Cosine Scale 1/maximum": 5, + "customscript/tileglobal.py/img2img/Cosine Scale 1/step": 0.01, + "customscript/tileglobal.py/img2img/Cosine Scale 2/visible": true, + "customscript/tileglobal.py/img2img/Cosine Scale 2/value": 1, + "customscript/tileglobal.py/img2img/Cosine Scale 2/minimum": 0, + "customscript/tileglobal.py/img2img/Cosine Scale 2/maximum": 5, + "customscript/tileglobal.py/img2img/Cosine Scale 2/step": 0.01, + "customscript/tileglobal.py/img2img/Cosine Scale 3/visible": true, + "customscript/tileglobal.py/img2img/Cosine Scale 3/value": 1, + "customscript/tileglobal.py/img2img/Cosine Scale 3/minimum": 0, + "customscript/tileglobal.py/img2img/Cosine Scale 3/maximum": 5, + "customscript/tileglobal.py/img2img/Cosine Scale 3/step": 0.01, + "customscript/tileglobal.py/img2img/Sigma/visible": true, + "customscript/tileglobal.py/img2img/Sigma/value": 0.6, + "customscript/tileglobal.py/img2img/Sigma/minimum": 0, + "customscript/tileglobal.py/img2img/Sigma/maximum": 2, + "customscript/tileglobal.py/img2img/Sigma/step": 0.01, + "customscript/tileglobal.py/img2img/Denoising Strength for Substage/value": 0.85, + "customscript/tileglobal.py/img2img/Denoising Strength for Substage/minimum": 0, + "customscript/tileglobal.py/img2img/Denoising Strength for Substage/maximum": 1, + "customscript/tileglobal.py/img2img/Denoising Strength for Substage/step": 0.01, + "customscript/tileglobal.py/img2img/Scale Factor/visible": true, + "customscript/tileglobal.py/img2img/Scale Factor/value": 2.0, + "customscript/tileglobal.py/img2img/Scale Factor/minimum": 1.0, + "customscript/tileglobal.py/img2img/Scale Factor/maximum": 8.0, + "customscript/tileglobal.py/img2img/Scale Factor/step": 1, + "img2img/Tiled VAE/visible": true, + "customscript/tilevae.py/img2img/Tiled VAE/value": false, + "img2img/Tiled VAE/value": false } \ No newline at end of file From 8cd0d537bf9d27996c0c4dc19e747b4ddcf3f902 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 18 Apr 2024 21:38:17 +0000 Subject: [PATCH 012/125] readme --- README.md | 32 ++++++++++++++++++- config_states/2024_03_29-20_10_18_CONFIG.json | 0 webui-user.sh | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) mode change 100644 => 100755 config_states/2024_03_29-20_10_18_CONFIG.json diff --git a/README.md b/README.md index 2cc4ac02985..18f9ac2328b 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,36 @@ # Stable Diffusion web UI A web interface for Stable Diffusion. Fork of A1111/stable-diffusion-web-ui. For Ubuntu with use of [PyEnv](https://github.com/pyenv/pyenv). +# Install +``` +curl https://pyenv.run | bash +echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc +echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc +echo 'eval "$(pyenv init -)"' >> ~/.bashrc` +source ~/.bashrc +``` + +## Python Build Dependencies for PyEnv ([Wiki](https://github.com/pyenv/pyenv/wiki#suggested-build-environment)) +### Mac +``` +brew install openssl readline sqlite3 xz zlib tcl-tk +``` + +### Linux +``` +sudo apt install build-essential libssl-dev zlib1g-dev \ +libbz2-dev libreadline-dev libsqlite3-dev curl \ +libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev +``` + +## Python Venv +``` +pyenv install 3.10.14 +pyenv shell 3.10.14 +``` + # Start Ensure there is a Python3.10 installation and it is pointed at in webui-user.sh. -```sudo ./webui.sh``` +``` +sudo ./webui.sh +``` diff --git a/config_states/2024_03_29-20_10_18_CONFIG.json b/config_states/2024_03_29-20_10_18_CONFIG.json old mode 100644 new mode 100755 diff --git a/webui-user.sh b/webui-user.sh index 54267ce31ba..5f775d9ca8e 100755 --- a/webui-user.sh +++ b/webui-user.sh @@ -15,7 +15,7 @@ export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --xformers --e # export COMMANDLINE_ARGS="--listen --reinstall-pytorch --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable -python_cmd="/home/evanhu/.pyenv/versions/3.10.13/bin/python3.10" +python_cmd="/home/evanhu/.pyenv/versions/3.10.14/bin/python3.10" # git executable #export GIT="git" From cc459d1fa0fc59a2266d7f8c0173723b0ff94b76 Mon Sep 17 00:00:00 2001 From: evan Date: Thu, 18 Apr 2024 21:48:53 +0000 Subject: [PATCH 013/125] v --- README.md | 4 ++-- webui-user.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 18f9ac2328b..3831007f5e9 100755 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-d ## Python Venv ``` -pyenv install 3.10.14 -pyenv shell 3.10.14 +pyenv install 3.10.13 +pyenv shell 3.10.13 ``` # Start diff --git a/webui-user.sh b/webui-user.sh index 5f775d9ca8e..54267ce31ba 100755 --- a/webui-user.sh +++ b/webui-user.sh @@ -15,7 +15,7 @@ export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --xformers --e # export COMMANDLINE_ARGS="--listen --reinstall-pytorch --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable -python_cmd="/home/evanhu/.pyenv/versions/3.10.14/bin/python3.10" +python_cmd="/home/evanhu/.pyenv/versions/3.10.13/bin/python3.10" # git executable #export GIT="git" From 2b717bb195a3034853ed45a52c5752f010e1302b Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 23 Apr 2024 02:35:25 +0900 Subject: [PATCH 014/125] fix initial corrupt model loop if for some reason the initial loading model at loading phase of webui is corrupted after entering this state the user will not be able to load even a good model is selected, due the the unload_model_weights > send_model_to_cpu > m.lowvram attribute check will fail becaules m is None webui will be stuck in the loop unable to recover without manual intervention --- modules/sd_models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..1747ca62103 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -659,10 +659,11 @@ def get_empty_cond(sd_model): def send_model_to_cpu(m): - if m.lowvram: - lowvram.send_everything_to_cpu() - else: - m.to(devices.cpu) + if m is not None: + if m.lowvram: + lowvram.send_everything_to_cpu() + else: + m.to(devices.cpu) devices.torch_gc() From 4bc39d234d6535e3d8f8531d0c0f4e049261c922 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 23 Apr 2024 02:39:45 +0900 Subject: [PATCH 015/125] Show LoRA if model is None --- .../Lora/ui_extra_networks_lora.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/extensions-builtin/Lora/ui_extra_networks_lora.py b/extensions-builtin/Lora/ui_extra_networks_lora.py index b627f7dc29d..e35d90c6ea3 100644 --- a/extensions-builtin/Lora/ui_extra_networks_lora.py +++ b/extensions-builtin/Lora/ui_extra_networks_lora.py @@ -60,18 +60,19 @@ def create_item(self, name, index=None, enable_filter=True): else: sd_version = lora_on_disk.sd_version - if shared.opts.lora_show_all or not enable_filter: - pass - elif sd_version == network.SdVersion.Unknown: - model_version = network.SdVersion.SDXL if shared.sd_model.is_sdxl else network.SdVersion.SD2 if shared.sd_model.is_sd2 else network.SdVersion.SD1 - if model_version.name in shared.opts.lora_hide_unknown_for_versions: + if shared.sd_model is not None: # still show LoRA in case an error occurs during initial model loading + if shared.opts.lora_show_all or not enable_filter: + pass + elif sd_version == network.SdVersion.Unknown: + model_version = network.SdVersion.SDXL if shared.sd_model.is_sdxl else network.SdVersion.SD2 if shared.sd_model.is_sd2 else network.SdVersion.SD1 + if model_version.name in shared.opts.lora_hide_unknown_for_versions: + return None + elif shared.sd_model.is_sdxl and sd_version != network.SdVersion.SDXL: + return None + elif shared.sd_model.is_sd2 and sd_version != network.SdVersion.SD2: + return None + elif shared.sd_model.is_sd1 and sd_version != network.SdVersion.SD1: return None - elif shared.sd_model.is_sdxl and sd_version != network.SdVersion.SDXL: - return None - elif shared.sd_model.is_sd2 and sd_version != network.SdVersion.SD2: - return None - elif shared.sd_model.is_sd1 and sd_version != network.SdVersion.SD1: - return None return item From 246c269af87757998f57bb27ddda59fdc7cff976 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:08:09 +0900 Subject: [PATCH 016/125] add option to check file hash after download if the sha256 hash does not match it will be automatically deleted --- modules/modelloader.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/modelloader.py b/modules/modelloader.py index 115415c8e65..5421e59b013 100644 --- a/modules/modelloader.py +++ b/modules/modelloader.py @@ -23,6 +23,7 @@ def load_file_from_url( model_dir: str, progress: bool = True, file_name: str | None = None, + hash_prefix: str | None = None, ) -> str: """Download a file from `url` into `model_dir`, using the file present if possible. @@ -36,11 +37,11 @@ def load_file_from_url( if not os.path.exists(cached_file): print(f'Downloading: "{url}" to {cached_file}\n') from torch.hub import download_url_to_file - download_url_to_file(url, cached_file, progress=progress) + download_url_to_file(url, cached_file, progress=progress, hash_prefix=hash_prefix) return cached_file -def load_models(model_path: str, model_url: str = None, command_path: str = None, ext_filter=None, download_name=None, ext_blacklist=None) -> list: +def load_models(model_path: str, model_url: str = None, command_path: str = None, ext_filter=None, download_name=None, ext_blacklist=None, hash_prefix=None) -> list: """ A one-and done loader to try finding the desired models in specified directories. @@ -49,6 +50,7 @@ def load_models(model_path: str, model_url: str = None, command_path: str = None @param model_path: The location to store/find models in. @param command_path: A command-line argument to search for models in first. @param ext_filter: An optional list of filename extensions to filter by + @param hash_prefix: the expected sha256 of the model_url @return: A list of paths containing the desired model(s) """ output = [] @@ -78,7 +80,7 @@ def load_models(model_path: str, model_url: str = None, command_path: str = None if model_url is not None and len(output) == 0: if download_name is not None: - output.append(load_file_from_url(model_url, model_dir=places[0], file_name=download_name)) + output.append(load_file_from_url(model_url, model_dir=places[0], file_name=download_name, hash_prefix=hash_prefix)) else: output.append(model_url) From c69773d7e8f23f8b6c46a8e177b50386e1f1b8e8 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:08:57 +0900 Subject: [PATCH 017/125] ensure integrity for initial sd model download --- modules/sd_models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..35d5952af07 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -149,10 +149,12 @@ def list_models(): cmd_ckpt = shared.cmd_opts.ckpt if shared.cmd_opts.no_download_sd_model or cmd_ckpt != shared.sd_model_file or os.path.exists(cmd_ckpt): model_url = None + expected_sha256 = None else: model_url = f"{shared.hf_endpoint}/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" + expected_sha256 = '6ce0161689b3853acaa03779ec93eafe75a02f4ced659bee03f50797806fa2fa' - model_list = modelloader.load_models(model_path=model_path, model_url=model_url, command_path=shared.cmd_opts.ckpt_dir, ext_filter=[".ckpt", ".safetensors"], download_name="v1-5-pruned-emaonly.safetensors", ext_blacklist=[".vae.ckpt", ".vae.safetensors"]) + model_list = modelloader.load_models(model_path=model_path, model_url=model_url, command_path=shared.cmd_opts.ckpt_dir, ext_filter=[".ckpt", ".safetensors"], download_name="v1-5-pruned-emaonly.safetensors", ext_blacklist=[".vae.ckpt", ".vae.safetensors"], hash_prefix=expected_sha256) if os.path.exists(cmd_ckpt): checkpoint_info = CheckpointInfo(cmd_ckpt) From a1aa0af8a45f4c30f1d3fce5635c090d64d4e55b Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:38:44 -0400 Subject: [PATCH 018/125] add code for skipping CFG on early steps --- modules/sd_samplers_cfg_denoiser.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index 93581c9acc6..8ccc837aa13 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -212,6 +212,11 @@ def apply_blend(current_latent): uncond = denoiser_params.text_uncond skip_uncond = False + if self.step < shared.opts.skip_cond_steps: + skip_uncond = True + x_in = x_in[:-batch_size] + sigma_in = sigma_in[:-batch_size] + # alternating uncond allows for higher thresholds without the quality loss normally expected from raising it if self.step % 2 and s_min_uncond > 0 and sigma[0] < s_min_uncond and not is_edit_model: skip_uncond = True From 8016d78a4b9c8bdd02b0031694ad56553f89161e Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:42:24 -0400 Subject: [PATCH 019/125] add option for early cfg skip --- modules/shared_options.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/shared_options.py b/modules/shared_options.py index 326a317e030..2f70ef65a0d 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -380,7 +380,8 @@ 'uni_pc_skip_type': OptionInfo("time_uniform", "UniPC skip type", gr.Radio, {"choices": ["time_uniform", "time_quadratic", "logSNR"]}, infotext='UniPC skip type'), 'uni_pc_order': OptionInfo(3, "UniPC order", gr.Slider, {"minimum": 1, "maximum": 50, "step": 1}, infotext='UniPC order').info("must be < sampling steps"), 'uni_pc_lower_order_final': OptionInfo(True, "UniPC lower order final", infotext='UniPC lower order final'), - 'sd_noise_schedule': OptionInfo("Default", "Noise schedule for sampling", gr.Radio, {"choices": ["Default", "Zero Terminal SNR"]}, infotext="Noise Schedule").info("for use with zero terminal SNR trained models") + 'sd_noise_schedule': OptionInfo("Default", "Noise schedule for sampling", gr.Radio, {"choices": ["Default", "Zero Terminal SNR"]}, infotext="Noise Schedule").info("for use with zero terminal SNR trained models"), + 'skip_cond_steps': OptionInfo(0, "Skip CFG on first N steps of sampling", gr.Slider, {"minimum": 0, "maximum": 50, "step": 1}, infotext="Skip CFG first steps"), })) options_templates.update(options_section(('postprocessing', "Postprocessing", "postprocessing"), { From 83266205d0b55ddbff34ea36b47f69c5ea11cc28 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Tue, 23 Apr 2024 00:09:43 -0400 Subject: [PATCH 020/125] Add KL Optimal scheduler --- modules/sd_schedulers.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 75eb3ac032f..10ae4e081f9 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -31,6 +31,15 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): return torch.FloatTensor(sigs).to(device) +def kl_optimal(n, sigma_min, sigma_max, device): + alpha_min = torch.arctan(torch.tensor(sigma_min, device=device)) + alpha_max = torch.arctan(torch.tensor(sigma_max, device=device)) + sigmas = torch.empty((n+1,), device=device) + for i in range(n+1): + sigmas[i] = torch.tan((i/n) * alpha_min + (1.0-i/n) * alpha_max) + return sigmas + + schedulers = [ Scheduler('automatic', 'Automatic', None), Scheduler('uniform', 'Uniform', uniform, need_inner_model=True), @@ -38,6 +47,7 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): Scheduler('exponential', 'Exponential', k_diffusion.sampling.get_sigmas_exponential), Scheduler('polyexponential', 'Polyexponential', k_diffusion.sampling.get_sigmas_polyexponential, default_rho=1.0), Scheduler('sgm_uniform', 'SGM Uniform', sgm_uniform, need_inner_model=True, aliases=["SGMUniform"]), + Scheduler('kl_optimal', 'KL Optimal', kl_optimal), ] schedulers_map = {**{x.name: x for x in schedulers}, **{x.label: x for x in schedulers}} From 83182d2799f12ee2b5e5425d750db062ad67eb90 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:07:25 -0400 Subject: [PATCH 021/125] change skip early cond option name and to float --- modules/shared_options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/shared_options.py b/modules/shared_options.py index 2f70ef65a0d..91ba72b5ed6 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -381,7 +381,7 @@ 'uni_pc_order': OptionInfo(3, "UniPC order", gr.Slider, {"minimum": 1, "maximum": 50, "step": 1}, infotext='UniPC order').info("must be < sampling steps"), 'uni_pc_lower_order_final': OptionInfo(True, "UniPC lower order final", infotext='UniPC lower order final'), 'sd_noise_schedule': OptionInfo("Default", "Noise schedule for sampling", gr.Radio, {"choices": ["Default", "Zero Terminal SNR"]}, infotext="Noise Schedule").info("for use with zero terminal SNR trained models"), - 'skip_cond_steps': OptionInfo(0, "Skip CFG on first N steps of sampling", gr.Slider, {"minimum": 0, "maximum": 50, "step": 1}, infotext="Skip CFG first steps"), + 'skip_early_cond': OptionInfo(0, "Skip CFG during early sampling", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}, infotext="Skip Early CFG").info("CFG will be disabled (set to 1) on early steps, can both improve sample diversity/quality and speed up sampling"), })) options_templates.update(options_section(('postprocessing', "Postprocessing", "postprocessing"), { From 6e9b69a33853e1bcee81cea6f01cf13de612fef7 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:08:28 -0400 Subject: [PATCH 022/125] change skip_early_cond code to use float --- modules/sd_samplers_cfg_denoiser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index 8ccc837aa13..fba5c48c03d 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -212,7 +212,7 @@ def apply_blend(current_latent): uncond = denoiser_params.text_uncond skip_uncond = False - if self.step < shared.opts.skip_cond_steps: + if self.step / self.total_steps <= shared.opts.skip_early_cond: skip_uncond = True x_in = x_in[:-batch_size] sigma_in = sigma_in[:-batch_size] From 33cbbf9f8b46666a2325c98b723b6cb2ec192ef7 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:15:00 -0400 Subject: [PATCH 023/125] add s_min_uncond_all option --- modules/shared_options.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/shared_options.py b/modules/shared_options.py index 91ba72b5ed6..c711fa5f609 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -210,6 +210,7 @@ options_templates.update(options_section(('optimizations', "Optimizations", "sd"), { "cross_attention_optimization": OptionInfo("Automatic", "Cross attention optimization", gr.Dropdown, lambda: {"choices": shared_items.cross_attention_optimizations()}), "s_min_uncond": OptionInfo(0.0, "Negative Guidance minimum sigma", gr.Slider, {"minimum": 0.0, "maximum": 15.0, "step": 0.01}).link("PR", "https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9177").info("skip negative prompt for some steps when the image is almost ready; 0=disable, higher=faster"), + "s_min_uncond_all": OptionInfo(False, "NGMS: Skip every step").info("makes Negative Guidance minimum sigma skip negative guidance on every step instead of only half"), "token_merging_ratio": OptionInfo(0.0, "Token merging ratio", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}, infotext='Token merging ratio').link("PR", "https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9256").info("0=disable, higher=faster"), "token_merging_ratio_img2img": OptionInfo(0.0, "Token merging ratio for img2img", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}).info("only applies if non-zero and overrides above"), "token_merging_ratio_hr": OptionInfo(0.0, "Token merging ratio for high-res pass", gr.Slider, {"minimum": 0.0, "maximum": 0.9, "step": 0.1}, infotext='Token merging ratio hr').info("only applies if non-zero and overrides above"), From 029adbe5318b57c04dbc0d92273cce38e1ecf457 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:15:56 -0400 Subject: [PATCH 024/125] implement option to skip uncond on all steps below ngms --- modules/sd_samplers_cfg_denoiser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index fba5c48c03d..082a4f63c63 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -218,7 +218,7 @@ def apply_blend(current_latent): sigma_in = sigma_in[:-batch_size] # alternating uncond allows for higher thresholds without the quality loss normally expected from raising it - if self.step % 2 and s_min_uncond > 0 and sigma[0] < s_min_uncond and not is_edit_model: + if (self.step % 2 or shared.opts.s_min_uncond_all) and s_min_uncond > 0 and sigma[0] < s_min_uncond and not is_edit_model: skip_uncond = True x_in = x_in[:-batch_size] sigma_in = sigma_in[:-batch_size] From 50bb6e1179745799038b26a228b8acd8cacfffc5 Mon Sep 17 00:00:00 2001 From: pinanew <851673+pinanew@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:45:42 +0300 Subject: [PATCH 025/125] AVIF has quality setting too --- modules/images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/images.py b/modules/images.py index c0ff8a6306a..f4eb6f71a2a 100644 --- a/modules/images.py +++ b/modules/images.py @@ -608,7 +608,7 @@ def save_image_with_geninfo(image, geninfo, filename, extension=None, existing_p }) - image.save(filename,format=image_format, exif=exif_bytes) + image.save(filename,format=image_format, quality=opts.jpeg_quality, exif=exif_bytes) elif extension.lower() == ".gif": image.save(filename, format=image_format, comment=geninfo) else: From 8fa3fa76c39200e2af63ab86926c0c20cf02eb25 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 24 Apr 2024 02:41:31 +0900 Subject: [PATCH 026/125] fix exif_bytes referenced before assignment --- modules/images.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/images.py b/modules/images.py index f4eb6f71a2a..36b610322a1 100644 --- a/modules/images.py +++ b/modules/images.py @@ -606,7 +606,8 @@ def save_image_with_geninfo(image, geninfo, filename, extension=None, existing_p piexif.ExifIFD.UserComment: piexif.helper.UserComment.dump(geninfo or "", encoding="unicode") }, }) - + else: + exif_bytes = None image.save(filename,format=image_format, quality=opts.jpeg_quality, exif=exif_bytes) elif extension.lower() == ".gif": From 1091e3a37eb363d6ac5f4d3eb596526a85dea551 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 24 Apr 2024 02:54:26 +0900 Subject: [PATCH 027/125] update jpeg_quality description --- modules/shared_options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/shared_options.py b/modules/shared_options.py index 326a317e030..98d477f5255 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -54,7 +54,7 @@ "save_images_before_color_correction": OptionInfo(False, "Save a copy of image before applying color correction to img2img results"), "save_mask": OptionInfo(False, "For inpainting, save a copy of the greyscale mask"), "save_mask_composite": OptionInfo(False, "For inpainting, save a masked composite"), - "jpeg_quality": OptionInfo(80, "Quality for saved jpeg images", gr.Slider, {"minimum": 1, "maximum": 100, "step": 1}), + "jpeg_quality": OptionInfo(80, "Quality for saved jpeg and avif images", gr.Slider, {"minimum": 1, "maximum": 100, "step": 1}), "webp_lossless": OptionInfo(False, "Use lossless compression for webp images"), "export_for_4chan": OptionInfo(True, "Save copy of large images as JPG").info("if the file size is above the limit, or either width or height are above the limit"), "img_downscale_threshold": OptionInfo(4.0, "File size limit for the above option, MB", gr.Number), From e85e327ae0409a6c7e6f98011465f07290b78567 Mon Sep 17 00:00:00 2001 From: Andray Date: Thu, 25 Apr 2024 13:26:26 +0400 Subject: [PATCH 028/125] more extension tag filtering options --- modules/ui_extensions.py | 68 +++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py index d822c0b8920..9bfd5f3b350 100644 --- a/modules/ui_extensions.py +++ b/modules/ui_extensions.py @@ -396,15 +396,15 @@ def install_extension_from_url(dirname, url, branch_name=None): shutil.rmtree(tmpdir, True) -def install_extension_from_index(url, hide_tags, sort_column, filter_text): +def install_extension_from_index(url, selected_tags, showing_type, filtering_type, sort_column, filter_text): ext_table, message = install_extension_from_url(None, url) - code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text) + code, _ = refresh_available_extensions_from_data(selected_tags, showing_type, filtering_type, sort_column, filter_text) return code, ext_table, message, '' -def refresh_available_extensions(url, hide_tags, sort_column): +def refresh_available_extensions(url, selected_tags, showing_type, filtering_type, sort_column): global available_extensions import urllib.request @@ -413,19 +413,19 @@ def refresh_available_extensions(url, hide_tags, sort_column): available_extensions = json.loads(text) - code, tags = refresh_available_extensions_from_data(hide_tags, sort_column) + code, tags = refresh_available_extensions_from_data(selected_tags, showing_type, filtering_type, sort_column) return url, code, gr.CheckboxGroup.update(choices=tags), '', '' -def refresh_available_extensions_for_tags(hide_tags, sort_column, filter_text): - code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text) +def refresh_available_extensions_for_tags(selected_tags, showing_type, filtering_type, sort_column, filter_text): + code, _ = refresh_available_extensions_from_data(selected_tags, showing_type, filtering_type, sort_column, filter_text) return code, '' -def search_extensions(filter_text, hide_tags, sort_column): - code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text) +def search_extensions(filter_text, selected_tags, showing_type, filtering_type, sort_column): + code, _ = refresh_available_extensions_from_data(selected_tags, showing_type, filtering_type, sort_column, filter_text) return code, '' @@ -450,13 +450,13 @@ def get_date(info: dict, key): return '' -def refresh_available_extensions_from_data(hide_tags, sort_column, filter_text=""): +def refresh_available_extensions_from_data(selected_tags, showing_type, filtering_type, sort_column, filter_text=""): extlist = available_extensions["extensions"] installed_extensions = {extension.name for extension in extensions.extensions} installed_extension_urls = {normalize_git_url(extension.remote) for extension in extensions.extensions if extension.remote is not None} tags = available_extensions.get("tags", {}) - tags_to_hide = set(hide_tags) + selected_tags = set(selected_tags) hidden = 0 code = f""" @@ -489,9 +489,19 @@ def refresh_available_extensions_from_data(hide_tags, sort_column, filter_text=" existing = get_extension_dirname_from_url(url) in installed_extensions or normalize_git_url(url) in installed_extension_urls extension_tags = extension_tags + ["installed"] if existing else extension_tags - if any(x for x in extension_tags if x in tags_to_hide): - hidden += 1 - continue + if len(selected_tags) > 0: + matched_tags = [x for x in extension_tags if x in selected_tags] + if filtering_type == 'or': + need_hide = len(matched_tags) > 0 + else: + need_hide = len(matched_tags) == len(selected_tags) + + if showing_type == 'show': + need_hide = not need_hide + + if need_hide: + hidden += 1 + continue if filter_text and filter_text.strip(): if filter_text.lower() not in html.escape(name).lower() and filter_text.lower() not in html.escape(description).lower(): @@ -594,9 +604,13 @@ def create_ui(): install_extension_button = gr.Button(elem_id="install_extension_button", visible=False) with gr.Row(): - hide_tags = gr.CheckboxGroup(value=["ads", "localization", "installed"], label="Hide extensions with tags", choices=["script", "ads", "localization", "installed"]) + selected_tags = gr.CheckboxGroup(value=["ads", "localization", "installed"], label="Extension tags", choices=["script", "ads", "localization", "installed"]) sort_column = gr.Radio(value="newest first", label="Order", choices=["newest first", "oldest first", "a-z", "z-a", "internal order",'update time', 'create time', "stars"], type="index") + with gr.Row(): + showing_type = gr.Radio(value="hide", label="Showing type", choices=["hide", "show"]) + filtering_type = gr.Radio(value="or", label="Filtering type", choices=["or", "and"]) + with gr.Row(): search_extensions_text = gr.Text(label="Search", container=False) @@ -605,31 +619,43 @@ def create_ui(): refresh_available_extensions_button.click( fn=modules.ui.wrap_gradio_call(refresh_available_extensions, extra_outputs=[gr.update(), gr.update(), gr.update(), gr.update()]), - inputs=[available_extensions_index, hide_tags, sort_column], - outputs=[available_extensions_index, available_extensions_table, hide_tags, search_extensions_text, install_result], + inputs=[available_extensions_index, selected_tags, showing_type, filtering_type, sort_column], + outputs=[available_extensions_index, available_extensions_table, selected_tags, search_extensions_text, install_result], ) install_extension_button.click( fn=modules.ui.wrap_gradio_call(install_extension_from_index, extra_outputs=[gr.update(), gr.update()]), - inputs=[extension_to_install, hide_tags, sort_column, search_extensions_text], + inputs=[extension_to_install, selected_tags, showing_type, filtering_type, sort_column, search_extensions_text], outputs=[available_extensions_table, extensions_table, install_result], ) search_extensions_text.change( fn=modules.ui.wrap_gradio_call(search_extensions, extra_outputs=[gr.update()]), - inputs=[search_extensions_text, hide_tags, sort_column], + inputs=[search_extensions_text, selected_tags, showing_type, filtering_type, sort_column], outputs=[available_extensions_table, install_result], ) - hide_tags.change( + selected_tags.change( + fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]), + inputs=[selected_tags, showing_type, filtering_type, sort_column, search_extensions_text], + outputs=[available_extensions_table, install_result] + ) + + showing_type.change( + fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]), + inputs=[selected_tags, showing_type, filtering_type, sort_column, search_extensions_text], + outputs=[available_extensions_table, install_result] + ) + + filtering_type.change( fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]), - inputs=[hide_tags, sort_column, search_extensions_text], + inputs=[selected_tags, showing_type, filtering_type, sort_column, search_extensions_text], outputs=[available_extensions_table, install_result] ) sort_column.change( fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]), - inputs=[hide_tags, sort_column, search_extensions_text], + inputs=[selected_tags, showing_type, filtering_type, sort_column, search_extensions_text], outputs=[available_extensions_table, install_result] ) From d5f6fdb3c44204495067d4166a6a980a9f1165ed Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:47:04 +0900 Subject: [PATCH 029/125] compact-checkbox-group --- modules/ui_extensions.py | 8 ++++---- style.css | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py index 9bfd5f3b350..6b6403f23d6 100644 --- a/modules/ui_extensions.py +++ b/modules/ui_extensions.py @@ -604,12 +604,12 @@ def create_ui(): install_extension_button = gr.Button(elem_id="install_extension_button", visible=False) with gr.Row(): - selected_tags = gr.CheckboxGroup(value=["ads", "localization", "installed"], label="Extension tags", choices=["script", "ads", "localization", "installed"]) - sort_column = gr.Radio(value="newest first", label="Order", choices=["newest first", "oldest first", "a-z", "z-a", "internal order",'update time', 'create time', "stars"], type="index") + selected_tags = gr.CheckboxGroup(value=["ads", "localization", "installed"], label="Extension tags", choices=["script", "ads", "localization", "installed"], elem_classes=['compact-checkbox-group']) + sort_column = gr.Radio(value="newest first", label="Order", choices=["newest first", "oldest first", "a-z", "z-a", "internal order",'update time', 'create time', "stars"], type="index", elem_classes=['compact-checkbox-group']) with gr.Row(): - showing_type = gr.Radio(value="hide", label="Showing type", choices=["hide", "show"]) - filtering_type = gr.Radio(value="or", label="Filtering type", choices=["or", "and"]) + showing_type = gr.Radio(value="hide", label="Showing type", choices=["hide", "show"], elem_classes=['compact-checkbox-group']) + filtering_type = gr.Radio(value="or", label="Filtering type", choices=["or", "and"], elem_classes=['compact-checkbox-group']) with gr.Row(): search_extensions_text = gr.Text(label="Search", container=False) diff --git a/style.css b/style.css index f6a89b8f90d..cca5456ccea 100644 --- a/style.css +++ b/style.css @@ -854,6 +854,10 @@ table.popup-table .link{ display: inline-block; } +.compact-checkbox-group div label { + padding: 0.1em 0.3em !important; +} + /* extensions tab table row hover highlight */ #extensions tr:hover td, From 3902aa222b00a24f2d7b7158b79efaac9f318923 Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 06:44:41 -0400 Subject: [PATCH 030/125] Better error handling to skip non-standard ss_tag_frequency content --- extensions-builtin/Lora/ui_edit_user_metadata.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions-builtin/Lora/ui_edit_user_metadata.py b/extensions-builtin/Lora/ui_edit_user_metadata.py index 7a07a544e28..b6c4d1c6acb 100644 --- a/extensions-builtin/Lora/ui_edit_user_metadata.py +++ b/extensions-builtin/Lora/ui_edit_user_metadata.py @@ -21,10 +21,12 @@ def is_non_comma_tagset(tags): def build_tags(metadata): tags = {} - for _, tags_dict in metadata.get("ss_tag_frequency", {}).items(): - for tag, tag_count in tags_dict.items(): - tag = tag.strip() - tags[tag] = tags.get(tag, 0) + int(tag_count) + ss_tag_frequency = metadata.get("ss_tag_frequency", {}) + if ss_tag_frequency is not None and hasattr(ss_tag_frequency, 'items'): + for _, tags_dict in ss_tag_frequency.items(): + for tag, tag_count in tags_dict.items(): + tag = tag.strip() + tags[tag] = tags.get(tag, 0) + int(tag_count) if tags and is_non_comma_tagset(tags): new_tags = {} From 8dc920228e7c5181cc990845f0febd2ac4b42d87 Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 06:52:21 -0400 Subject: [PATCH 031/125] Better error handling when unable to read metadata from safetensors file --- modules/sd_models.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..59742d31118 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -280,18 +280,22 @@ def read_metadata_from_safetensors(filename): json_start = file.read(2) assert metadata_len > 2 and json_start in (b'{"', b"{'"), f"{filename} is not a safetensors file" - json_data = json_start + file.read(metadata_len-2) - json_obj = json.loads(json_data) res = {} - for k, v in json_obj.get("__metadata__", {}).items(): - res[k] = v - if isinstance(v, str) and v[0:1] == '{': - try: - res[k] = json.loads(v) - except Exception: - pass + try: + json_data = json_start + file.read(metadata_len-2) + json_obj = json.loads(json_data) + for k, v in json_obj.get("__metadata__", {}).items(): + res[k] = v + if isinstance(v, str) and v[0:1] == '{': + try: + res[k] = json.loads(v) + except Exception: + pass + except: + errors.report(f"Error reading metadata from file: {filename}", exc_info=True) + return res From c5b7559856c5f64792c2425d11890a121497e6bc Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 06:57:32 -0400 Subject: [PATCH 032/125] Better error handling when unable to extract contents of embedding/TI file --- modules/textual_inversion/textual_inversion.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index 253f219c4ec..dc7833e9394 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -181,12 +181,16 @@ def load_from_file(self, path, filename): else: return - embedding = create_embedding_from_data(data, name, filename=filename, filepath=path) + if data is not None: + embedding = create_embedding_from_data(data, name, filename=filename, filepath=path) - if self.expected_shape == -1 or self.expected_shape == embedding.shape: - self.register_embedding(embedding, shared.sd_model) + if self.expected_shape == -1 or self.expected_shape == embedding.shape: + self.register_embedding(embedding, shared.sd_model) + else: + self.skipped_embeddings[name] = embedding else: - self.skipped_embeddings[name] = embedding + print(f"Unable to load Textual inversion embedding due to data issue: '{name}'.") + def load_from_dir(self, embdir): if not os.path.isdir(embdir.path): From c5ae2254182b803618a4b01c12fa88c42642e806 Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 07:55:39 -0400 Subject: [PATCH 033/125] Better handling of embeddings with two rare, but not unusual, files in them I have encountered pickled embeddings with a short byteorder file at the top-level, as well as a .data/serialization_id file. Both load fine after allowing these files in the dataset. I do not think it is likely adding them to the safe unpickle regular expression would be a security risk, but that's for the maintainers to decide. --- modules/safe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/safe.py b/modules/safe.py index b1d08a7928e..ee8789268d9 100644 --- a/modules/safe.py +++ b/modules/safe.py @@ -65,7 +65,7 @@ def find_class(self, module, name): # Regular expression that accepts 'dirname/version', 'dirname/data.pkl', and 'dirname/data/' -allowed_zip_names_re = re.compile(r"^([^/]+)/((data/\d+)|version|(data\.pkl))$") +allowed_zip_names_re = re.compile(r"^([^/]+)/((data/\d+)|byteorder|(\.data\/serialization_id)|version|(data\.pkl))$") data_pkl_re = re.compile(r"^([^/]+)/data\.pkl$") def check_zip_filenames(filename, names): From 44afb48447c2ef40f8546fe704bd817881da5a14 Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 08:17:37 -0400 Subject: [PATCH 034/125] Linter fix - extraneous whitespace --- modules/sd_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 59742d31118..06e881207ab 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -295,7 +295,7 @@ def read_metadata_from_safetensors(filename): pass except: errors.report(f"Error reading metadata from file: {filename}", exc_info=True) - + return res From 60c079995824ebe861029839ee12ca0df6a26e8d Mon Sep 17 00:00:00 2001 From: Brendan Hoar Date: Fri, 26 Apr 2024 08:21:12 -0400 Subject: [PATCH 035/125] Linter - except must not be bare. --- modules/sd_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 06e881207ab..06a7cf3f0a5 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -293,7 +293,7 @@ def read_metadata_from_safetensors(filename): res[k] = json.loads(v) except Exception: pass - except: + except Exception: errors.report(f"Error reading metadata from file: {filename}", exc_info=True) return res From 9d964d3fc3285b3df877479081968ebf6dbccce4 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 27 Apr 2024 19:21:34 +0900 Subject: [PATCH 036/125] no-referrer --- modules/ui_gradio_extensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui_gradio_extensions.py b/modules/ui_gradio_extensions.py index f5278d22f02..18fbd6777e2 100644 --- a/modules/ui_gradio_extensions.py +++ b/modules/ui_gradio_extensions.py @@ -50,7 +50,7 @@ def reload_javascript(): def template_response(*args, **kwargs): res = shared.GradioTemplateResponseOriginal(*args, **kwargs) - res.body = res.body.replace(b'', f'{js}'.encode("utf8")) + res.body = res.body.replace(b'', f'{js}'.encode("utf8")) res.body = res.body.replace(b'', f'{css}'.encode("utf8")) res.init_headers() return res From 3a215deff23d28c06c8de98423c12628b8ce6326 Mon Sep 17 00:00:00 2001 From: drhead <1313496+drhead@users.noreply.github.com> Date: Sun, 28 Apr 2024 00:15:58 -0400 Subject: [PATCH 037/125] vectorize kl-optimal sigma calculation Co-authored-by: mamei16 --- modules/sd_schedulers.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 10ae4e081f9..99a6f7be26a 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -34,9 +34,8 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): def kl_optimal(n, sigma_min, sigma_max, device): alpha_min = torch.arctan(torch.tensor(sigma_min, device=device)) alpha_max = torch.arctan(torch.tensor(sigma_max, device=device)) - sigmas = torch.empty((n+1,), device=device) - for i in range(n+1): - sigmas[i] = torch.tan((i/n) * alpha_min + (1.0-i/n) * alpha_max) + step_indices = torch.arange(n + 1, device=device) + sigmas = torch.tan(step_indices / n * alpha_min + (1.0 - step_indices / n) * alpha_max) return sigmas From 3d3fc81f4858cae75fa33e55e7b88ede853d28ae Mon Sep 17 00:00:00 2001 From: huchenlei Date: Sun, 28 Apr 2024 16:14:12 -0400 Subject: [PATCH 038/125] Add correct mimetype for .mjs files --- modules/ui.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui.py b/modules/ui.py index 403425f2985..c6c058fea7a 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -38,6 +38,7 @@ # this is a fix for Windows users. Without it, javascript files will be served with text/html content-type and the browser will not show any UI mimetypes.init() mimetypes.add_type('application/javascript', '.js') +mimetypes.add_type('application/javascript', '.mjs') # Likewise, add explicit content-type header for certain missing image types mimetypes.add_type('image/webp', '.webp') From 579f1ef278080ff7545be3a42c5fe36fc2890887 Mon Sep 17 00:00:00 2001 From: missionfloyd Date: Sun, 28 Apr 2024 22:36:43 -0600 Subject: [PATCH 039/125] Allow old sampler names in API --- modules/api/api.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/modules/api/api.py b/modules/api/api.py index f468c385275..b1201fe778e 100644 --- a/modules/api/api.py +++ b/modules/api/api.py @@ -48,6 +48,15 @@ def validate_sampler_name(name): return name +def parse_old_sampler_name(name): + for scheduler in sd_schedulers.schedulers: + for scheduler_name in [scheduler.label, scheduler.name, *(scheduler.aliases or [])]: + if name.endswith(" " + scheduler_name): + return name[0:-(len(scheduler_name) + 1)], scheduler_name + + return name, "Automatic" + + def setUpscalers(req: dict): reqDict = vars(req) reqDict['extras_upscaler_1'] = reqDict.pop('upscaler_1', None) @@ -438,15 +447,19 @@ def text2imgapi(self, txt2imgreq: models.StableDiffusionTxt2ImgProcessingAPI): self.apply_infotext(txt2imgreq, "txt2img", script_runner=script_runner, mentioned_script_args=infotext_script_args) selectable_scripts, selectable_script_idx = self.get_selectable_script(txt2imgreq.script_name, script_runner) + sampler, scheduler = parse_old_sampler_name(txt2imgreq.sampler_name or txt2imgreq.sampler_index) populate = txt2imgreq.copy(update={ # Override __init__ params - "sampler_name": validate_sampler_name(txt2imgreq.sampler_name or txt2imgreq.sampler_index), + "sampler_name": validate_sampler_name(sampler), "do_not_save_samples": not txt2imgreq.save_images, "do_not_save_grid": not txt2imgreq.save_images, }) if populate.sampler_name: populate.sampler_index = None # prevent a warning later on + if not populate.scheduler: + populate.scheduler = scheduler + args = vars(populate) args.pop('script_name', None) args.pop('script_args', None) # will refeed them to the pipeline directly after initializing them @@ -502,9 +515,10 @@ def img2imgapi(self, img2imgreq: models.StableDiffusionImg2ImgProcessingAPI): self.apply_infotext(img2imgreq, "img2img", script_runner=script_runner, mentioned_script_args=infotext_script_args) selectable_scripts, selectable_script_idx = self.get_selectable_script(img2imgreq.script_name, script_runner) + sampler, scheduler = parse_old_sampler_name(img2imgreq.sampler_name or img2imgreq.sampler_index) populate = img2imgreq.copy(update={ # Override __init__ params - "sampler_name": validate_sampler_name(img2imgreq.sampler_name or img2imgreq.sampler_index), + "sampler_name": validate_sampler_name(sampler), "do_not_save_samples": not img2imgreq.save_images, "do_not_save_grid": not img2imgreq.save_images, "mask": mask, @@ -512,6 +526,9 @@ def img2imgapi(self, img2imgreq: models.StableDiffusionImg2ImgProcessingAPI): if populate.sampler_name: populate.sampler_index = None # prevent a warning later on + if not populate.scheduler: + populate.scheduler = scheduler + args = vars(populate) args.pop('include_init_images', None) # this is meant to be done by "exclude": True in model, but it's for a reason that I cannot determine. args.pop('script_name', None) From 4c7b22d37d14c8469b4510a11710f162940cdaa6 Mon Sep 17 00:00:00 2001 From: missionfloyd Date: Sun, 28 Apr 2024 22:46:11 -0600 Subject: [PATCH 040/125] Fix dragging text within prompt input --- javascript/dragdrop.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/javascript/dragdrop.js b/javascript/dragdrop.js index 0c018356419..882562d7367 100644 --- a/javascript/dragdrop.js +++ b/javascript/dragdrop.js @@ -56,6 +56,15 @@ function eventHasFiles(e) { return false; } +function isURL(url) { + try { + const _ = new URL(url); + return true; + } catch { + return false; + } +} + function dragDropTargetIsPrompt(target) { if (target?.placeholder && target?.placeholder.indexOf("Prompt") >= 0) return true; if (target?.parentNode?.parentNode?.className?.indexOf("prompt") > 0) return true; @@ -77,7 +86,7 @@ window.document.addEventListener('dragover', e => { window.document.addEventListener('drop', async e => { const target = e.composedPath()[0]; const url = e.dataTransfer.getData('text/uri-list') || e.dataTransfer.getData('text/plain'); - if (!eventHasFiles(e) && !url) return; + if (!eventHasFiles(e) && !isURL(url)) return; if (dragDropTargetIsPrompt(target)) { e.stopPropagation(); From c8336c45b98c2226923503e17b1d7f9170af0f8a Mon Sep 17 00:00:00 2001 From: missionfloyd Date: Tue, 30 Apr 2024 01:53:41 -0600 Subject: [PATCH 041/125] Use existing function for old sampler names --- modules/api/api.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/api/api.py b/modules/api/api.py index b1201fe778e..d8e54529b40 100644 --- a/modules/api/api.py +++ b/modules/api/api.py @@ -48,15 +48,6 @@ def validate_sampler_name(name): return name -def parse_old_sampler_name(name): - for scheduler in sd_schedulers.schedulers: - for scheduler_name in [scheduler.label, scheduler.name, *(scheduler.aliases or [])]: - if name.endswith(" " + scheduler_name): - return name[0:-(len(scheduler_name) + 1)], scheduler_name - - return name, "Automatic" - - def setUpscalers(req: dict): reqDict = vars(req) reqDict['extras_upscaler_1'] = reqDict.pop('upscaler_1', None) @@ -447,7 +438,7 @@ def text2imgapi(self, txt2imgreq: models.StableDiffusionTxt2ImgProcessingAPI): self.apply_infotext(txt2imgreq, "txt2img", script_runner=script_runner, mentioned_script_args=infotext_script_args) selectable_scripts, selectable_script_idx = self.get_selectable_script(txt2imgreq.script_name, script_runner) - sampler, scheduler = parse_old_sampler_name(txt2imgreq.sampler_name or txt2imgreq.sampler_index) + sampler, scheduler = sd_samplers.get_sampler_and_scheduler(txt2imgreq.sampler_name or txt2imgreq.sampler_index, txt2imgreq.scheduler) populate = txt2imgreq.copy(update={ # Override __init__ params "sampler_name": validate_sampler_name(sampler), @@ -457,7 +448,7 @@ def text2imgapi(self, txt2imgreq: models.StableDiffusionTxt2ImgProcessingAPI): if populate.sampler_name: populate.sampler_index = None # prevent a warning later on - if not populate.scheduler: + if not populate.scheduler and scheduler != "Automatic": populate.scheduler = scheduler args = vars(populate) @@ -515,7 +506,7 @@ def img2imgapi(self, img2imgreq: models.StableDiffusionImg2ImgProcessingAPI): self.apply_infotext(img2imgreq, "img2img", script_runner=script_runner, mentioned_script_args=infotext_script_args) selectable_scripts, selectable_script_idx = self.get_selectable_script(img2imgreq.script_name, script_runner) - sampler, scheduler = parse_old_sampler_name(img2imgreq.sampler_name or img2imgreq.sampler_index) + sampler, scheduler = sd_samplers.get_sampler_and_scheduler(img2imgreq.sampler_name or img2imgreq.sampler_index, img2imgreq.scheduler) populate = img2imgreq.copy(update={ # Override __init__ params "sampler_name": validate_sampler_name(sampler), @@ -526,7 +517,7 @@ def img2imgapi(self, img2imgreq: models.StableDiffusionImg2ImgProcessingAPI): if populate.sampler_name: populate.sampler_index = None # prevent a warning later on - if not populate.scheduler: + if not populate.scheduler and scheduler != "Automatic": populate.scheduler = scheduler args = vars(populate) From 9d393807056199deade14154d885fcd07dee24b7 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:17:53 +0900 Subject: [PATCH 042/125] fix extra batch mode P Transparency red, green, blue = transparency TypeError: cannot unpack non-iterable int object --- modules/postprocessing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/postprocessing.py b/modules/postprocessing.py index 812cbccae9a..8ec122b7c9d 100644 --- a/modules/postprocessing.py +++ b/modules/postprocessing.py @@ -62,11 +62,13 @@ def get_images(extras_mode, image, image_folder, input_dir): else: image_data = image_placeholder + image_data = image_data if image_data.mode in ("RGBA", "RGB") else image_data.convert("RGB") + parameters, existing_pnginfo = images.read_info_from_image(image_data) if parameters: existing_pnginfo["parameters"] = parameters - initial_pp = scripts_postprocessing.PostprocessedImage(image_data if image_data.mode in ("RGBA", "RGB") else image_data.convert("RGB")) + initial_pp = scripts_postprocessing.PostprocessedImage(image_data) scripts.scripts_postproc.run(initial_pp, args) From 89103b47475ba7bb8b9c4b36f8078c6416132ab0 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 1 May 2024 19:41:02 +0900 Subject: [PATCH 043/125] lora bundled TI infotext Co-Authored-By: Morgon Kanter <9632805+mx@users.noreply.github.com> --- extensions-builtin/Lora/networks.py | 9 +++++++++ extensions-builtin/Lora/scripts/lora_script.py | 1 + 2 files changed, 10 insertions(+) diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 42b14dc239d..aa55fe242b1 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -143,6 +143,14 @@ def assign_network_names_to_compvis_modules(sd_model): sd_model.network_layer_mapping = network_layer_mapping +class BundledTIHash(str): + def __init__(self, hash_str): + self.hash = hash_str + + def __str__(self): + return self.hash if shared.opts.lora_bundled_ti_to_infotext else '' + + def load_network(name, network_on_disk): net = network.Network(name, network_on_disk) net.mtime = os.path.getmtime(network_on_disk.filename) @@ -229,6 +237,7 @@ def load_network(name, network_on_disk): for emb_name, data in bundle_embeddings.items(): embedding = textual_inversion.create_embedding_from_data(data, emb_name, filename=network_on_disk.filename + "/" + emb_name) embedding.loaded = None + embedding.shorthash = BundledTIHash(name) embeddings[emb_name] = embedding net.bundle_embeddings = embeddings diff --git a/extensions-builtin/Lora/scripts/lora_script.py b/extensions-builtin/Lora/scripts/lora_script.py index 1518f7e5c89..d3ea369ae26 100644 --- a/extensions-builtin/Lora/scripts/lora_script.py +++ b/extensions-builtin/Lora/scripts/lora_script.py @@ -36,6 +36,7 @@ def before_ui(): "sd_lora": shared.OptionInfo("None", "Add network to prompt", gr.Dropdown, lambda: {"choices": ["None", *networks.available_networks]}, refresh=networks.list_available_networks), "lora_preferred_name": shared.OptionInfo("Alias from file", "When adding to prompt, refer to Lora by", gr.Radio, {"choices": ["Alias from file", "Filename"]}), "lora_add_hashes_to_infotext": shared.OptionInfo(True, "Add Lora hashes to infotext"), + "lora_bundled_ti_to_infotext": shared.OptionInfo(True, "Add Lora name as TI hashes for bundled Textual Inversion").info('"Add Textual Inversion hashes to infotext" needs to be enabled'), "lora_show_all": shared.OptionInfo(False, "Always show all networks on the Lora page").info("otherwise, those detected as for incompatible version of Stable Diffusion will be hidden"), "lora_hide_unknown_for_versions": shared.OptionInfo([], "Hide networks of unknown versions for model versions", gr.CheckboxGroup, {"choices": ["SD1", "SD2", "SDXL"]}), "lora_in_memory_limit": shared.OptionInfo(0, "Number of Lora networks to keep cached in memory", gr.Number, {"precision": 0}), From 0e0e41eabc5753034091e7c673100df66b3640ab Mon Sep 17 00:00:00 2001 From: Andray Date: Wed, 1 May 2024 16:54:47 +0400 Subject: [PATCH 044/125] use gradio theme colors in css --- style.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/style.css b/style.css index f6a89b8f90d..df4aca020bc 100644 --- a/style.css +++ b/style.css @@ -780,9 +780,9 @@ table.popup-table .link{ position:absolute; display:block; padding:0px 0; - border:2px solid #a55000; + border:2px solid var(--primary-800); border-radius:8px; - box-shadow:1px 1px 2px #CE6400; + box-shadow:1px 1px 2px var(--primary-500); width: 200px; } @@ -799,7 +799,7 @@ table.popup-table .link{ } .context-menu-items a:hover{ - background: #a55000; + background: var(--primary-700); } From 5d5224b322e8dbd817469a32d6c5578faff2df2f Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Thu, 2 May 2024 02:25:16 +0900 Subject: [PATCH 045/125] fix_p_invalid_sampler_and_scheduler --- modules/processing.py | 3 +++ modules/sd_samplers.py | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/processing.py b/modules/processing.py index 76557dd7f5e..cb646e2bfb3 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -842,6 +842,9 @@ def process_images(p: StableDiffusionProcessing) -> Processed: sd_models.apply_token_merging(p.sd_model, p.get_token_merging_ratio()) + # backwards compatibility, fix sampler and scheduler if invalid + sd_samplers.fix_p_invalid_sampler_and_scheduler(p) + res = process_images_inner(p) finally: diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py index 6b7b84b6d76..b8abac4a998 100644 --- a/modules/sd_samplers.py +++ b/modules/sd_samplers.py @@ -1,7 +1,7 @@ from __future__ import annotations import functools - +import logging from modules import sd_samplers_kdiffusion, sd_samplers_timesteps, sd_samplers_lcm, shared, sd_samplers_common, sd_schedulers # imports for functions that previously were here and are used by other modules @@ -122,4 +122,11 @@ def get_sampler_and_scheduler(sampler_name, scheduler_name): return sampler.name, found_scheduler.label +def fix_p_invalid_sampler_and_scheduler(p): + i_sampler_name, i_scheduler = p.sampler_name, p.scheduler + p.sampler_name, p.scheduler = get_sampler_and_scheduler(p.sampler_name, p.scheduler) + if p.sampler_name != i_sampler_name or i_scheduler != p.scheduler: + logging.warning(f'Sampler Scheduler autocorrection: "{i_sampler_name}" -> "{p.sampler_name}", "{i_scheduler}" -> "{p.scheduler}"') + + set_samplers() From 7195c4d42cf410c53d4d2f7a74d7059715d357a7 Mon Sep 17 00:00:00 2001 From: Andray Date: Wed, 1 May 2024 22:50:46 +0400 Subject: [PATCH 046/125] two fingers press to open context menu --- javascript/contextMenus.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/javascript/contextMenus.js b/javascript/contextMenus.js index ccae242f2b6..a00c3de9f9e 100644 --- a/javascript/contextMenus.js +++ b/javascript/contextMenus.js @@ -107,16 +107,23 @@ var contextMenuInit = function() { oldMenu.remove(); } }); - gradioApp().addEventListener("contextmenu", function(e) { - let oldMenu = gradioApp().querySelector('#context-menu'); - if (oldMenu) { - oldMenu.remove(); - } - menuSpecs.forEach(function(v, k) { - if (e.composedPath()[0].matches(k)) { - showContextMenu(e, e.composedPath()[0], v); - e.preventDefault(); + ['contextmenu', 'touchstart'].forEach((eventType) => { + gradioApp().addEventListener(eventType, function(e) { + let ev = e; + if (eventType.startsWith('touch')) { + if (e.touches.length !== 2) return; + ev = e.touches[0]; + } + let oldMenu = gradioApp().querySelector('#context-menu'); + if (oldMenu) { + oldMenu.remove(); } + menuSpecs.forEach(function(v, k) { + if (e.composedPath()[0].matches(k)) { + showContextMenu(ev, e.composedPath()[0], v); + e.preventDefault(); + } + }); }); }); eventListenerApplied = true; From f12886aefa4f2ac5d8e64a206a6b4d6df9d85b6b Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 4 May 2024 23:42:37 +0900 Subject: [PATCH 047/125] use script_path for webui root in launch_utils --- modules/launch_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/launch_utils.py b/modules/launch_utils.py index 5812b0e5855..e22da4ec64d 100644 --- a/modules/launch_utils.py +++ b/modules/launch_utils.py @@ -76,7 +76,7 @@ def git_tag(): except Exception: try: - changelog_md = os.path.join(os.path.dirname(os.path.dirname(__file__)), "CHANGELOG.md") + changelog_md = os.path.join(script_path, "CHANGELOG.md") with open(changelog_md, "r", encoding="utf-8") as file: line = next((line.strip() for line in file if line.strip()), "") line = line.replace("## ", "") @@ -231,7 +231,7 @@ def run_extension_installer(extension_dir): try: env = os.environ.copy() - env['PYTHONPATH'] = f"{os.path.abspath('.')}{os.pathsep}{env.get('PYTHONPATH', '')}" + env['PYTHONPATH'] = f"{script_path}{os.pathsep}{env.get('PYTHONPATH', '')}" stdout = run(f'"{python}" "{path_installer}"', errdesc=f"Error running install.py for extension {extension_dir}", custom_env=env).strip() if stdout: From dd93c47abfd9ed357f5d5827311d836ea399a236 Mon Sep 17 00:00:00 2001 From: bluelovers Date: Tue, 7 May 2024 19:53:18 +0800 Subject: [PATCH 048/125] Update imageviewer.js --- javascript/imageviewer.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index d4d4f016ddd..a3f08ad16c8 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -51,14 +51,7 @@ function modalImageSwitch(offset) { var galleryButtons = all_gallery_buttons(); if (galleryButtons.length > 1) { - var currentButton = selected_gallery_button(); - - var result = -1; - galleryButtons.forEach(function(v, i) { - if (v == currentButton) { - result = i; - } - }); + var result = selected_gallery_index(); if (result != -1) { var nextButton = galleryButtons[negmod((result + offset), galleryButtons.length)]; From dbda59e58a7c90752ab9911a779dd1381ae530e1 Mon Sep 17 00:00:00 2001 From: Andray Date: Tue, 7 May 2024 19:26:16 +0400 Subject: [PATCH 049/125] fix context menu position --- javascript/contextMenus.js | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/javascript/contextMenus.js b/javascript/contextMenus.js index a00c3de9f9e..e01fd67e80e 100644 --- a/javascript/contextMenus.js +++ b/javascript/contextMenus.js @@ -8,9 +8,6 @@ var contextMenuInit = function() { }; function showContextMenu(event, element, menuEntries) { - let posx = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; - let posy = event.clientY + document.body.scrollTop + document.documentElement.scrollTop; - let oldMenu = gradioApp().querySelector('#context-menu'); if (oldMenu) { oldMenu.remove(); @@ -23,10 +20,8 @@ var contextMenuInit = function() { contextMenu.style.background = baseStyle.background; contextMenu.style.color = baseStyle.color; contextMenu.style.fontFamily = baseStyle.fontFamily; - contextMenu.style.top = posy + 'px'; - contextMenu.style.left = posx + 'px'; - - + contextMenu.style.top = event.pageY + 'px'; + contextMenu.style.left = event.pageX + 'px'; const contextMenuList = document.createElement('ul'); contextMenuList.className = 'context-menu-items'; @@ -43,21 +38,6 @@ var contextMenuInit = function() { }); gradioApp().appendChild(contextMenu); - - let menuWidth = contextMenu.offsetWidth + 4; - let menuHeight = contextMenu.offsetHeight + 4; - - let windowWidth = window.innerWidth; - let windowHeight = window.innerHeight; - - if ((windowWidth - posx) < menuWidth) { - contextMenu.style.left = windowWidth - menuWidth + "px"; - } - - if ((windowHeight - posy) < menuHeight) { - contextMenu.style.top = windowHeight - menuHeight + "px"; - } - } function appendContextMenuOption(targetElementSelector, entryName, entryFunction) { From e736c3b36b5e450c3883719d1b73acf84bdf29f7 Mon Sep 17 00:00:00 2001 From: JLipnerPitt <122459494+JLipnerPitt@users.noreply.github.com> Date: Wed, 8 May 2024 05:22:12 -0400 Subject: [PATCH 050/125] Add files via upload Fixed an error (AttributeError: 'str' object has no attribute 'decode') coming from line 792 in images.py when trying to upscale certain images. --- modules/images.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/images.py b/modules/images.py index c0ff8a6306a..0f49caf7913 100644 --- a/modules/images.py +++ b/modules/images.py @@ -789,7 +789,10 @@ def read_info_from_image(image: Image.Image) -> tuple[str | None, dict]: if exif_comment: geninfo = exif_comment elif "comment" in items: # for gif - geninfo = items["comment"].decode('utf8', errors="ignore") + if isinstance(items["comment"], bytes): + geninfo = items["comment"].decode('utf8', errors="ignore") + else: + geninfo = items["comment"] for field in IGNORED_INFO_KEYS: items.pop(field, None) From f7e349cea49731b0e57cc2a2c1eb4904f1aea9b9 Mon Sep 17 00:00:00 2001 From: LoganBooker Date: Wed, 8 May 2024 21:23:18 +1000 Subject: [PATCH 051/125] Add AVIF MIME type support to mimetype definitions AVIF images will open, rather than download, as the default behaviour. --- modules/ui.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui.py b/modules/ui.py index 403425f2985..cface5002e0 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -41,6 +41,7 @@ # Likewise, add explicit content-type header for certain missing image types mimetypes.add_type('image/webp', '.webp') +mimetypes.add_type('image/avif', '.avif') if not cmd_opts.share and not cmd_opts.listen: # fix gradio phoning home From 5fbac49791d9a4a6af85c8236ba9179d7415e0f9 Mon Sep 17 00:00:00 2001 From: MarcusNyne <69087098+MarcusNyne@users.noreply.github.com> Date: Wed, 8 May 2024 16:48:10 -0400 Subject: [PATCH 052/125] Added --models-dir option The --model-dir option overrides the location of the models directory for stable diffusion, so that models can be shared across multiple installations. When --data-dir is specified alone, both the extensions and models folders are present in this folder. --models-dir can be used independently, but when used with --data-dir, then the models folder is specified by --models-dir, and extensions are found in the --data-dir. --- modules/cmd_args.py | 1 + modules/paths_internal.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/cmd_args.py b/modules/cmd_args.py index 016a33d1057..a683c99e87c 100644 --- a/modules/cmd_args.py +++ b/modules/cmd_args.py @@ -20,6 +20,7 @@ parser.add_argument("--loglevel", type=str, help="log level; one of: CRITICAL, ERROR, WARNING, INFO, DEBUG", default=None) parser.add_argument("--do-not-download-clip", action='store_true', help="do not download CLIP model even if it's not included in the checkpoint") parser.add_argument("--data-dir", type=normalized_filepath, default=os.path.dirname(os.path.dirname(os.path.realpath(__file__))), help="base path where all user data is stored") +parser.add_argument("--models-dir", type=normalized_filepath, default=None, help="base path where models are stored; overrides --data-dir") parser.add_argument("--config", type=normalized_filepath, default=sd_default_config, help="path to config which constructs model",) parser.add_argument("--ckpt", type=normalized_filepath, default=sd_model_file, help="path to checkpoint of stable diffusion model; if specified, this checkpoint will be added to the list of checkpoints and loaded",) parser.add_argument("--ckpt-dir", type=normalized_filepath, default=None, help="Path to directory with stable diffusion checkpoints") diff --git a/modules/paths_internal.py b/modules/paths_internal.py index cf9da45ab43..884984c9c0a 100644 --- a/modules/paths_internal.py +++ b/modules/paths_internal.py @@ -24,11 +24,13 @@ # Parse the --data-dir flag first so we can use it as a base for our other argument default values parser_pre = argparse.ArgumentParser(add_help=False) parser_pre.add_argument("--data-dir", type=str, default=os.path.dirname(modules_path), help="base path where all user data is stored", ) +parser_pre.add_argument("--models-dir", type=str, default=None, help="base path where models are stored; overrides --data-dir", ) cmd_opts_pre = parser_pre.parse_known_args()[0] data_path = cmd_opts_pre.data_dir +models_override = cmd_opts_pre.models_dir -models_path = os.path.join(data_path, "models") +models_path = models_override if models_override else os.path.join(data_path, "models") extensions_dir = os.path.join(data_path, "extensions") extensions_builtin_dir = os.path.join(script_path, "extensions-builtin") config_states_dir = os.path.join(script_path, "config_states") From d2cc8ccb11558f1dbdb27a2351e34155c3a24ccf Mon Sep 17 00:00:00 2001 From: MarcusNyne <69087098+MarcusNyne@users.noreply.github.com> Date: Thu, 9 May 2024 17:16:53 -0400 Subject: [PATCH 053/125] When creating a virtual environment, upgrade pip Pip will be upgraded upon immediately creating the virtual environment. If the pip upgrade fails, this should not cause the script to fail (treat as a warning). After the environment is created, it will not attempt further updates to pip. --- webui.bat | 7 ++++++- webui.sh | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/webui.bat b/webui.bat index e2c9079d2fb..a8d479b05e2 100644 --- a/webui.bat +++ b/webui.bat @@ -37,10 +37,15 @@ if %ERRORLEVEL% == 0 goto :activate_venv for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i" echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME% %PYTHON_FULLNAME% -m venv "%VENV_DIR%" >tmp/stdout.txt 2>tmp/stderr.txt -if %ERRORLEVEL% == 0 goto :activate_venv +if %ERRORLEVEL% == 0 goto :upgrade_pip echo Unable to create venv in directory "%VENV_DIR%" goto :show_stdout_stderr +:upgrade_pip +"%VENV_DIR%\Scripts\Python.exe" -m pip install --upgrade pip +if %ERRORLEVEL% == 0 goto :activate_venv +echo Warning: Failed to upgrade PIP version + :activate_venv set PYTHON="%VENV_DIR%\Scripts\Python.exe" echo venv %PYTHON% diff --git a/webui.sh b/webui.sh index c7c4bee9878..7acea902cfc 100755 --- a/webui.sh +++ b/webui.sh @@ -210,6 +210,7 @@ then if [[ ! -d "${venv_dir}" ]] then "${python_cmd}" -m venv "${venv_dir}" + "${venv_dir}"/bin/python -m pip install --upgrade pip first_launch=1 fi # shellcheck source=/dev/null From 73d1caf8f28a387f2db5a77a8892edad8ed505a0 Mon Sep 17 00:00:00 2001 From: Logan Date: Fri, 10 May 2024 12:38:10 +1000 Subject: [PATCH 054/125] Add Align Your Steps to available schedulers * Include both SDXL and SD 1.5 variants (https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html) --- modules/sd_schedulers.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 75eb3ac032f..2131eae46cc 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -4,6 +4,7 @@ import k_diffusion +import numpy as np @dataclasses.dataclass class Scheduler: @@ -30,6 +31,35 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): sigs += [0.0] return torch.FloatTensor(sigs).to(device) +def get_align_your_steps_sigmas(n, device, sigma_id): + # https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html + def loglinear_interp(t_steps, num_steps): + """ + Performs log-linear interpolation of a given array of decreasing numbers. + """ + xs = np.linspace(0, 1, len(t_steps)) + ys = np.log(t_steps[::-1]) + + new_xs = np.linspace(0, 1, num_steps) + new_ys = np.interp(new_xs, xs, ys) + + interped_ys = np.exp(new_ys)[::-1].copy() + return interped_ys + + if sigma_id == "sdxl": + sigmas = [14.615, 6.315, 3.771, 2.181, 1.342, 0.862, 0.555, 0.380, 0.234, 0.113, 0.029] + elif sigma_id == "sd15": + sigmas = [14.615, 6.475, 3.861, 2.697, 1.886, 1.396, 0.963, 0.652, 0.399, 0.152, 0.029] + else: + print(f'Align Your Steps sigma identifier "{sigma_id}" not recognized, defaulting to SD 1.5.') + sigmas = [14.615, 6.475, 3.861, 2.697, 1.886, 1.396, 0.963, 0.652, 0.399, 0.152, 0.029] + + if n != len(sigmas): + sigmas = np.append(loglinear_interp(sigmas, n), [0.0]) + else: + sigmas.append(0.0) + + return torch.FloatTensor(sigmas).to(device) schedulers = [ Scheduler('automatic', 'Automatic', None), @@ -38,6 +68,8 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): Scheduler('exponential', 'Exponential', k_diffusion.sampling.get_sigmas_exponential), Scheduler('polyexponential', 'Polyexponential', k_diffusion.sampling.get_sigmas_polyexponential, default_rho=1.0), Scheduler('sgm_uniform', 'SGM Uniform', sgm_uniform, need_inner_model=True, aliases=["SGMUniform"]), + Scheduler('align_your_steps_sdxl', 'Align Your Steps (SDXL)', lambda n, sigma_min, sigma_max, device: get_align_your_steps_sigmas(n, device, "sdxl")), + Scheduler('align_your_steps_sd15', 'Align Your Steps (SD 1.5)', lambda n, sigma_min, sigma_max, device: get_align_your_steps_sigmas(n, device, "sd15")), ] schedulers_map = {**{x.name: x for x in schedulers}, **{x.label: x for x in schedulers}} From d6b4444069d36cf7554eb9932061ecf43e9b1335 Mon Sep 17 00:00:00 2001 From: Logan Date: Fri, 10 May 2024 18:05:45 +1000 Subject: [PATCH 055/125] Use shared.sd_model.is_sdxl to determine base AYS sigmas --- modules/sd_schedulers.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/sd_schedulers.py b/modules/sd_schedulers.py index 2131eae46cc..0ac1f7a21f8 100644 --- a/modules/sd_schedulers.py +++ b/modules/sd_schedulers.py @@ -6,6 +6,8 @@ import numpy as np +from modules import shared + @dataclasses.dataclass class Scheduler: name: str @@ -31,7 +33,7 @@ def sgm_uniform(n, sigma_min, sigma_max, inner_model, device): sigs += [0.0] return torch.FloatTensor(sigs).to(device) -def get_align_your_steps_sigmas(n, device, sigma_id): +def get_align_your_steps_sigmas(n, sigma_min, sigma_max, device): # https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/howto.html def loglinear_interp(t_steps, num_steps): """ @@ -46,12 +48,10 @@ def loglinear_interp(t_steps, num_steps): interped_ys = np.exp(new_ys)[::-1].copy() return interped_ys - if sigma_id == "sdxl": + if shared.sd_model.is_sdxl: sigmas = [14.615, 6.315, 3.771, 2.181, 1.342, 0.862, 0.555, 0.380, 0.234, 0.113, 0.029] - elif sigma_id == "sd15": - sigmas = [14.615, 6.475, 3.861, 2.697, 1.886, 1.396, 0.963, 0.652, 0.399, 0.152, 0.029] else: - print(f'Align Your Steps sigma identifier "{sigma_id}" not recognized, defaulting to SD 1.5.') + # Default to SD 1.5 sigmas. sigmas = [14.615, 6.475, 3.861, 2.697, 1.886, 1.396, 0.963, 0.652, 0.399, 0.152, 0.029] if n != len(sigmas): @@ -68,8 +68,7 @@ def loglinear_interp(t_steps, num_steps): Scheduler('exponential', 'Exponential', k_diffusion.sampling.get_sigmas_exponential), Scheduler('polyexponential', 'Polyexponential', k_diffusion.sampling.get_sigmas_polyexponential, default_rho=1.0), Scheduler('sgm_uniform', 'SGM Uniform', sgm_uniform, need_inner_model=True, aliases=["SGMUniform"]), - Scheduler('align_your_steps_sdxl', 'Align Your Steps (SDXL)', lambda n, sigma_min, sigma_max, device: get_align_your_steps_sigmas(n, device, "sdxl")), - Scheduler('align_your_steps_sd15', 'Align Your Steps (SD 1.5)', lambda n, sigma_min, sigma_max, device: get_align_your_steps_sigmas(n, device, "sd15")), + Scheduler('align_your_steps', 'Align Your Steps', get_align_your_steps_sigmas), ] schedulers_map = {**{x.name: x for x in schedulers}, **{x.label: x for x in schedulers}} From d44f241317d63095176543839bc111b731069629 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Sat, 11 May 2024 13:13:39 +0900 Subject: [PATCH 056/125] use relative path for webui-assets css --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index f6a89b8f90d..8eefda56df5 100644 --- a/style.css +++ b/style.css @@ -1,6 +1,6 @@ /* temporary fix to load default gradio font in frontend instead of backend */ -@import url('/webui-assets/css/sourcesanspro.css'); +@import url('webui-assets/css/sourcesanspro.css'); /* temporary fix to hide gradio crop tool until it's fixed https://github.com/gradio-app/gradio/issues/3810 */ From ef7713fbb29fed183d669a5a081cda9ac1a8b629 Mon Sep 17 00:00:00 2001 From: elf-mouse Date: Tue, 14 May 2024 15:39:05 +0800 Subject: [PATCH 057/125] chore: sync v1.8.0 packages according to changelog, fix warning --- webui-macos-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui-macos-env.sh b/webui-macos-env.sh index db7e8b1a05b..4126005ae9e 100644 --- a/webui-macos-env.sh +++ b/webui-macos-env.sh @@ -11,7 +11,7 @@ fi export install_dir="$HOME" export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate" -export TORCH_COMMAND="pip install torch==2.1.0 torchvision==0.16.0" +export TORCH_COMMAND="pip install torch==2.1.2 torchvision==0.16.2" export PYTORCH_ENABLE_MPS_FALLBACK=1 #################################################################### From 5ab7d08a0a99c88a60a13885e564fd7d2d05cfc1 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Wed, 15 May 2024 17:27:05 +0900 Subject: [PATCH 058/125] fix extention update when not on main branch --- modules/extensions.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/extensions.py b/modules/extensions.py index 5ad934b4df3..24de766eb90 100644 --- a/modules/extensions.py +++ b/modules/extensions.py @@ -191,8 +191,9 @@ def list_files(self, subdir, extension): def check_updates(self): repo = Repo(self.path) + branch_name = f'{repo.remote().name}/{self.branch}' for fetch in repo.remote().fetch(dry_run=True): - if self.branch and fetch.name != f'{repo.remote().name}/{self.branch}': + if self.branch and fetch.name != branch_name: continue if fetch.flags != fetch.HEAD_UPTODATE: self.can_update = True @@ -200,7 +201,7 @@ def check_updates(self): return try: - origin = repo.rev_parse('origin') + origin = repo.rev_parse(branch_name) if repo.head.commit != origin: self.can_update = True self.status = "behind HEAD" @@ -213,8 +214,10 @@ def check_updates(self): self.can_update = False self.status = "latest" - def fetch_and_reset_hard(self, commit='origin'): + def fetch_and_reset_hard(self, commit=None): repo = Repo(self.path) + if commit is None: + commit = f'{repo.remote().name}/{self.branch}' # Fix: `error: Your local changes to the following files would be overwritten by merge`, # because WSL2 Docker set 755 file permissions instead of 644, this results to the error. repo.git.fetch(all=True) From 022d835565f253841f7f9272ba320bb0cec4770d Mon Sep 17 00:00:00 2001 From: huchenlei Date: Wed, 15 May 2024 15:20:40 -0400 Subject: [PATCH 059/125] use_checkpoint = False --- configs/alt-diffusion-inference.yaml | 2 +- configs/alt-diffusion-m18-inference.yaml | 2 +- configs/instruct-pix2pix.yaml | 2 +- configs/sd_xl_inpaint.yaml | 2 +- configs/v1-inference.yaml | 2 +- configs/v1-inpainting-inference.yaml | 2 +- modules/sd_hijack_checkpoint.py | 9 ++++++--- modules/sd_models_config.py | 2 +- 8 files changed, 13 insertions(+), 10 deletions(-) diff --git a/configs/alt-diffusion-inference.yaml b/configs/alt-diffusion-inference.yaml index cfbee72d71b..4944ab5c8dc 100644 --- a/configs/alt-diffusion-inference.yaml +++ b/configs/alt-diffusion-inference.yaml @@ -40,7 +40,7 @@ model: use_spatial_transformer: True transformer_depth: 1 context_dim: 768 - use_checkpoint: True + use_checkpoint: False legacy: False first_stage_config: diff --git a/configs/alt-diffusion-m18-inference.yaml b/configs/alt-diffusion-m18-inference.yaml index 41a031d55f0..c60dca8c7b3 100644 --- a/configs/alt-diffusion-m18-inference.yaml +++ b/configs/alt-diffusion-m18-inference.yaml @@ -41,7 +41,7 @@ model: use_linear_in_transformer: True transformer_depth: 1 context_dim: 1024 - use_checkpoint: True + use_checkpoint: False legacy: False first_stage_config: diff --git a/configs/instruct-pix2pix.yaml b/configs/instruct-pix2pix.yaml index 4e896879dd7..564e50ae246 100644 --- a/configs/instruct-pix2pix.yaml +++ b/configs/instruct-pix2pix.yaml @@ -45,7 +45,7 @@ model: use_spatial_transformer: True transformer_depth: 1 context_dim: 768 - use_checkpoint: True + use_checkpoint: False legacy: False first_stage_config: diff --git a/configs/sd_xl_inpaint.yaml b/configs/sd_xl_inpaint.yaml index 3bad372186f..f40f45e3316 100644 --- a/configs/sd_xl_inpaint.yaml +++ b/configs/sd_xl_inpaint.yaml @@ -21,7 +21,7 @@ model: params: adm_in_channels: 2816 num_classes: sequential - use_checkpoint: True + use_checkpoint: False in_channels: 9 out_channels: 4 model_channels: 320 diff --git a/configs/v1-inference.yaml b/configs/v1-inference.yaml index d4effe569e8..25c4d9ed066 100644 --- a/configs/v1-inference.yaml +++ b/configs/v1-inference.yaml @@ -40,7 +40,7 @@ model: use_spatial_transformer: True transformer_depth: 1 context_dim: 768 - use_checkpoint: True + use_checkpoint: False legacy: False first_stage_config: diff --git a/configs/v1-inpainting-inference.yaml b/configs/v1-inpainting-inference.yaml index f9eec37d24b..68c199f99c3 100644 --- a/configs/v1-inpainting-inference.yaml +++ b/configs/v1-inpainting-inference.yaml @@ -40,7 +40,7 @@ model: use_spatial_transformer: True transformer_depth: 1 context_dim: 768 - use_checkpoint: True + use_checkpoint: False legacy: False first_stage_config: diff --git a/modules/sd_hijack_checkpoint.py b/modules/sd_hijack_checkpoint.py index 2604d969f91..b2f05bbdcf0 100644 --- a/modules/sd_hijack_checkpoint.py +++ b/modules/sd_hijack_checkpoint.py @@ -4,16 +4,19 @@ import ldm.modules.diffusionmodules.openaimodel +# Setting flag=False so that torch skips checking parameters. +# parameters checking is expensive in frequent operations. + def BasicTransformerBlock_forward(self, x, context=None): - return checkpoint(self._forward, x, context) + return checkpoint(self._forward, x, context, flag=False) def AttentionBlock_forward(self, x): - return checkpoint(self._forward, x) + return checkpoint(self._forward, x, flag=False) def ResBlock_forward(self, x, emb): - return checkpoint(self._forward, x, emb) + return checkpoint(self._forward, x, emb, flag=False) stored = [] diff --git a/modules/sd_models_config.py b/modules/sd_models_config.py index b38137eb5a9..9cec4f13dc2 100644 --- a/modules/sd_models_config.py +++ b/modules/sd_models_config.py @@ -35,7 +35,7 @@ def is_using_v_parameterization_for_sd2(state_dict): with sd_disable_initialization.DisableInitialization(): unet = ldm.modules.diffusionmodules.openaimodel.UNetModel( - use_checkpoint=True, + use_checkpoint=False, use_fp16=False, image_size=32, in_channels=4, From 0e98529365477a4f240b2ac67d94ff59235144c5 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Wed, 15 May 2024 15:46:53 -0400 Subject: [PATCH 060/125] Replace einops.rearrange with torch native --- modules/sd_hijack_optimizations.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/sd_hijack_optimizations.py b/modules/sd_hijack_optimizations.py index 7f9e328d05a..4c2dc56d45d 100644 --- a/modules/sd_hijack_optimizations.py +++ b/modules/sd_hijack_optimizations.py @@ -486,7 +486,19 @@ def xformers_attention_forward(self, x, context=None, mask=None, **kwargs): k_in = self.to_k(context_k) v_in = self.to_v(context_v) - q, k, v = (rearrange(t, 'b n (h d) -> b n h d', h=h) for t in (q_in, k_in, v_in)) + def _reshape(t): + """rearrange(t, 'b n (h d) -> b n h d', h=h). + Using torch native operations to avoid overhead as this function is + called frequently. (70 times/it for SDXL) + """ + b, n, _ = t.shape # Get the batch size (b) and sequence length (n) + d = t.shape[2] // h # Determine the depth per head + return t.reshape(b, n, h, d) + + q = _reshape(q_in) + k = _reshape(k_in) + v = _reshape(v_in) + del q_in, k_in, v_in dtype = q.dtype @@ -497,7 +509,9 @@ def xformers_attention_forward(self, x, context=None, mask=None, **kwargs): out = out.to(dtype) - out = rearrange(out, 'b n h d -> b n (h d)', h=h) + # out = rearrange(out, 'b n h d -> b n (h d)', h=h) + b, n, h, d = out.shape + out = out.reshape(b, n, h * d) return self.to_out(out) From 9eb2f786316c0f7e94c3df5f5e8bda203e6b875d Mon Sep 17 00:00:00 2001 From: huchenlei Date: Wed, 15 May 2024 16:32:29 -0400 Subject: [PATCH 061/125] Precompute is_sdxl_inpaint flag --- modules/processing.py | 28 +++++++++++----------------- modules/sd_models.py | 7 +++++++ modules/sd_models_xl.py | 9 ++++----- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index 76557dd7f5e..d82cb24fb95 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -115,20 +115,17 @@ def txt2img_image_conditioning(sd_model, x, width, height): return x.new_zeros(x.shape[0], 2*sd_model.noise_augmentor.time_embed.dim, dtype=x.dtype, device=x.device) else: - sd = sd_model.model.state_dict() - diffusion_model_input = sd.get('diffusion_model.input_blocks.0.0.weight', None) - if diffusion_model_input is not None: - if diffusion_model_input.shape[1] == 9: - # The "masked-image" in this case will just be all 0.5 since the entire image is masked. - image_conditioning = torch.ones(x.shape[0], 3, height, width, device=x.device) * 0.5 - image_conditioning = images_tensor_to_samples(image_conditioning, - approximation_indexes.get(opts.sd_vae_encode_method)) + if sd_model.model.is_sdxl_inpaint: + # The "masked-image" in this case will just be all 0.5 since the entire image is masked. + image_conditioning = torch.ones(x.shape[0], 3, height, width, device=x.device) * 0.5 + image_conditioning = images_tensor_to_samples(image_conditioning, + approximation_indexes.get(opts.sd_vae_encode_method)) - # Add the fake full 1s mask to the first dimension. - image_conditioning = torch.nn.functional.pad(image_conditioning, (0, 0, 0, 0, 1, 0), value=1.0) - image_conditioning = image_conditioning.to(x.dtype) + # Add the fake full 1s mask to the first dimension. + image_conditioning = torch.nn.functional.pad(image_conditioning, (0, 0, 0, 0, 1, 0), value=1.0) + image_conditioning = image_conditioning.to(x.dtype) - return image_conditioning + return image_conditioning # Dummy zero conditioning if we're not using inpainting or unclip models. # Still takes up a bit of memory, but no encoder call. @@ -390,11 +387,8 @@ def img2img_image_conditioning(self, source_image, latent_image, image_mask=None if self.sampler.conditioning_key == "crossattn-adm": return self.unclip_image_conditioning(source_image) - sd = self.sampler.model_wrap.inner_model.model.state_dict() - diffusion_model_input = sd.get('diffusion_model.input_blocks.0.0.weight', None) - if diffusion_model_input is not None: - if diffusion_model_input.shape[1] == 9: - return self.inpainting_image_conditioning(source_image, latent_image, image_mask=image_mask) + if self.sampler.model_wrap.inner_model.model.is_sdxl_inpaint: + return self.inpainting_image_conditioning(source_image, latent_image, image_mask=image_mask) # Dummy zero conditioning if we're not using inpainting or depth model. return latent_image.new_zeros(latent_image.shape[0], 5, 1, 1) diff --git a/modules/sd_models.py b/modules/sd_models.py index ff245b7a668..62e74d27ae0 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -380,6 +380,13 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer model.is_sd2 = not model.is_sdxl and hasattr(model.cond_stage_model, 'model') model.is_sd1 = not model.is_sdxl and not model.is_sd2 model.is_ssd = model.is_sdxl and 'model.diffusion_model.middle_block.1.transformer_blocks.0.attn1.to_q.weight' not in state_dict.keys() + # Set is_sdxl_inpaint flag. + diffusion_model_input = state_dict.get('diffusion_model.input_blocks.0.0.weight', None) + model.is_sdxl_inpaint = ( + model.is_sdxl and + diffusion_model_input is not None and + diffusion_model_input.shape[1] == 9 + ) if model.is_sdxl: sd_models_xl.extend_sdxl(model) diff --git a/modules/sd_models_xl.py b/modules/sd_models_xl.py index 94ff973fb84..35e21f6e470 100644 --- a/modules/sd_models_xl.py +++ b/modules/sd_models_xl.py @@ -35,11 +35,10 @@ def get_learned_conditioning(self: sgm.models.diffusion.DiffusionEngine, batch: def apply_model(self: sgm.models.diffusion.DiffusionEngine, x, t, cond): - sd = self.model.state_dict() - diffusion_model_input = sd.get('diffusion_model.input_blocks.0.0.weight', None) - if diffusion_model_input is not None: - if diffusion_model_input.shape[1] == 9: - x = torch.cat([x] + cond['c_concat'], dim=1) + """WARNING: This function is called once per denoising iteration. DO NOT add + expensive functionc calls such as `model.state_dict`. """ + if self.model.is_sdxl_inpaint: + x = torch.cat([x] + cond['c_concat'], dim=1) return self.model(x, t, cond) From 6a48476502d6cdd19cb3d0c7f2a0b92aacd7c01f Mon Sep 17 00:00:00 2001 From: huchenlei Date: Wed, 15 May 2024 16:54:26 -0400 Subject: [PATCH 062/125] Fix flag check for SD15 --- modules/processing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/processing.py b/modules/processing.py index d82cb24fb95..fff2595e70a 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -115,7 +115,7 @@ def txt2img_image_conditioning(sd_model, x, width, height): return x.new_zeros(x.shape[0], 2*sd_model.noise_augmentor.time_embed.dim, dtype=x.dtype, device=x.device) else: - if sd_model.model.is_sdxl_inpaint: + if getattr(sd_model.model, "is_sdxl_inpaint", False): # The "masked-image" in this case will just be all 0.5 since the entire image is masked. image_conditioning = torch.ones(x.shape[0], 3, height, width, device=x.device) * 0.5 image_conditioning = images_tensor_to_samples(image_conditioning, @@ -387,7 +387,7 @@ def img2img_image_conditioning(self, source_image, latent_image, image_mask=None if self.sampler.conditioning_key == "crossattn-adm": return self.unclip_image_conditioning(source_image) - if self.sampler.model_wrap.inner_model.model.is_sdxl_inpaint: + if getattr(self.sampler.model_wrap.inner_model.model, "is_sdxl_inpaint", False): return self.inpainting_image_conditioning(source_image, latent_image, image_mask=image_mask) # Dummy zero conditioning if we're not using inpainting or depth model. From 3e20b36e8f1b26f24db0c149732fb5479bff68bc Mon Sep 17 00:00:00 2001 From: huchenlei Date: Wed, 15 May 2024 17:27:01 -0400 Subject: [PATCH 063/125] Fix attr access --- modules/sd_models_xl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sd_models_xl.py b/modules/sd_models_xl.py index 35e21f6e470..1242a59369f 100644 --- a/modules/sd_models_xl.py +++ b/modules/sd_models_xl.py @@ -37,7 +37,7 @@ def get_learned_conditioning(self: sgm.models.diffusion.DiffusionEngine, batch: def apply_model(self: sgm.models.diffusion.DiffusionEngine, x, t, cond): """WARNING: This function is called once per denoising iteration. DO NOT add expensive functionc calls such as `model.state_dict`. """ - if self.model.is_sdxl_inpaint: + if self.is_sdxl_inpaint: x = torch.cat([x] + cond['c_concat'], dim=1) return self.model(x, t, cond) From 9c8075ba8e538f695ef25f85e6513227b58b71ce Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Thu, 16 May 2024 23:16:50 +0900 Subject: [PATCH 064/125] torch_utils.float64 return torch.float64 if device is not mps or xpu, else return torch.float32 --- modules/torch_utils.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/torch_utils.py b/modules/torch_utils.py index e5b52393ec8..a07e02853b1 100644 --- a/modules/torch_utils.py +++ b/modules/torch_utils.py @@ -1,6 +1,7 @@ from __future__ import annotations import torch.nn +import torch def get_param(model) -> torch.nn.Parameter: @@ -15,3 +16,11 @@ def get_param(model) -> torch.nn.Parameter: return param raise ValueError(f"No parameters found in model {model!r}") + + +def float64(t: torch.Tensor): + """return torch.float64 if device is not mps or xpu, else return torch.float32""" + match t.device.type: + case 'mps', 'xpu': + return torch.float32 + return torch.float64 From 41f66849c7feac1efd0b9eb6884209be382e9e74 Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Thu, 16 May 2024 23:18:20 +0900 Subject: [PATCH 065/125] mps, xpu compatibility --- .../soft-inpainting/scripts/soft_inpainting.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py b/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py index f56e1e2266d..0e629963af4 100644 --- a/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py +++ b/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py @@ -3,6 +3,7 @@ import math from modules.ui_components import InputAccordion import modules.scripts as scripts +from modules.torch_utils import float64 class SoftInpaintingSettings: @@ -79,13 +80,11 @@ def latent_blend(settings, a, b, t): # Calculate the magnitude of the interpolated vectors. (We will remove this magnitude.) # 64-bit operations are used here to allow large exponents. - current_magnitude = torch.norm(image_interp, p=2, dim=1, keepdim=True).to(torch.float64).add_(0.00001) + current_magnitude = torch.norm(image_interp, p=2, dim=1, keepdim=True).to(float64(image_interp)).add_(0.00001) # Interpolate the powered magnitudes, then un-power them (bring them back to a power of 1). - a_magnitude = torch.norm(a, p=2, dim=1, keepdim=True).to(torch.float64).pow_( - settings.inpaint_detail_preservation) * one_minus_t3 - b_magnitude = torch.norm(b, p=2, dim=1, keepdim=True).to(torch.float64).pow_( - settings.inpaint_detail_preservation) * t3 + a_magnitude = torch.norm(a, p=2, dim=1, keepdim=True).to(float64(a)).pow_(settings.inpaint_detail_preservation) * one_minus_t3 + b_magnitude = torch.norm(b, p=2, dim=1, keepdim=True).to(float64(b)).pow_(settings.inpaint_detail_preservation) * t3 desired_magnitude = a_magnitude desired_magnitude.add_(b_magnitude).pow_(1 / settings.inpaint_detail_preservation) del a_magnitude, b_magnitude, t3, one_minus_t3 From f015b94176d6df372ce153eddc018cb3b08c03ba Mon Sep 17 00:00:00 2001 From: w-e-w <40751091+w-e-w@users.noreply.github.com> Date: Thu, 16 May 2024 23:19:06 +0900 Subject: [PATCH 066/125] use torch_utils.float64 --- modules/sd_samplers_timesteps_impl.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/sd_samplers_timesteps_impl.py b/modules/sd_samplers_timesteps_impl.py index 930a64af590..84867d6ee65 100644 --- a/modules/sd_samplers_timesteps_impl.py +++ b/modules/sd_samplers_timesteps_impl.py @@ -5,13 +5,14 @@ from modules import shared from modules.models.diffusion.uni_pc import uni_pc +from modules.torch_utils import float64 @torch.no_grad() def ddim(model, x, timesteps, extra_args=None, callback=None, disable=None, eta=0.0): alphas_cumprod = model.inner_model.inner_model.alphas_cumprod alphas = alphas_cumprod[timesteps] - alphas_prev = alphas_cumprod[torch.nn.functional.pad(timesteps[:-1], pad=(1, 0))].to(torch.float64 if x.device.type != 'mps' and x.device.type != 'xpu' else torch.float32) + alphas_prev = alphas_cumprod[torch.nn.functional.pad(timesteps[:-1], pad=(1, 0))].to(float64(x)) sqrt_one_minus_alphas = torch.sqrt(1 - alphas) sigmas = eta * np.sqrt((1 - alphas_prev.cpu().numpy()) / (1 - alphas.cpu()) * (1 - alphas.cpu() / alphas_prev.cpu().numpy())) @@ -43,7 +44,7 @@ def ddim(model, x, timesteps, extra_args=None, callback=None, disable=None, eta= def plms(model, x, timesteps, extra_args=None, callback=None, disable=None): alphas_cumprod = model.inner_model.inner_model.alphas_cumprod alphas = alphas_cumprod[timesteps] - alphas_prev = alphas_cumprod[torch.nn.functional.pad(timesteps[:-1], pad=(1, 0))].to(torch.float64 if x.device.type != 'mps' and x.device.type != 'xpu' else torch.float32) + alphas_prev = alphas_cumprod[torch.nn.functional.pad(timesteps[:-1], pad=(1, 0))].to(float64(x)) sqrt_one_minus_alphas = torch.sqrt(1 - alphas) extra_args = {} if extra_args is None else extra_args From 51b13a8c54854104f1510956b920399226a932f1 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Thu, 16 May 2024 11:39:01 -0400 Subject: [PATCH 067/125] Prevent uncessary bias backup --- extensions-builtin/Lora/networks.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 42b14dc239d..360455f8712 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -378,7 +378,10 @@ def network_apply_weights(self: Union[torch.nn.Conv2d, torch.nn.Linear, torch.nn self.network_weights_backup = weights_backup bias_backup = getattr(self, "network_bias_backup", None) - if bias_backup is None: + if bias_backup is None and wanted_names != (): + if current_names != (): + raise RuntimeError("no backup bias found and current bias are not unchanged") + if isinstance(self, torch.nn.MultiheadAttention) and self.out_proj.bias is not None: bias_backup = self.out_proj.bias.to(devices.cpu, copy=True) elif getattr(self, 'bias', None) is not None: From b2ae4490b9c225ff020941bcbf36c8975760deba Mon Sep 17 00:00:00 2001 From: huchenlei Date: Thu, 16 May 2024 14:45:00 -0400 Subject: [PATCH 068/125] Fix LoRA bias error --- extensions-builtin/Lora/networks.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 360455f8712..aee4e9d9ca7 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -379,15 +379,17 @@ def network_apply_weights(self: Union[torch.nn.Conv2d, torch.nn.Linear, torch.nn bias_backup = getattr(self, "network_bias_backup", None) if bias_backup is None and wanted_names != (): - if current_names != (): - raise RuntimeError("no backup bias found and current bias are not unchanged") - if isinstance(self, torch.nn.MultiheadAttention) and self.out_proj.bias is not None: bias_backup = self.out_proj.bias.to(devices.cpu, copy=True) elif getattr(self, 'bias', None) is not None: bias_backup = self.bias.to(devices.cpu, copy=True) else: bias_backup = None + + # Unlike weight which always has value, some modules don't have bias. + # Only report if bias is not None and current bias are not unchanged. + if bias_backup is not None and current_names != (): + raise RuntimeError("no backup bias found and current bias are not unchanged") self.network_bias_backup = bias_backup if current_names != wanted_names: From 221ac0b9abd2e39ccc6f1969a434f05dcd72b29a Mon Sep 17 00:00:00 2001 From: Andray Date: Thu, 16 May 2024 23:08:24 +0400 Subject: [PATCH 069/125] img2img batch upload method --- modules/img2img.py | 20 +++++++++++++++----- modules/ui.py | 31 ++++++++++++++++++++----------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/modules/img2img.py b/modules/img2img.py index a1d042c2123..24f869f5c6a 100644 --- a/modules/img2img.py +++ b/modules/img2img.py @@ -17,11 +17,14 @@ import modules.scripts -def process_batch(p, input_dir, output_dir, inpaint_mask_dir, args, to_scale=False, scale_by=1.0, use_png_info=False, png_info_props=None, png_info_dir=None): +def process_batch(p, input, output_dir, inpaint_mask_dir, args, to_scale=False, scale_by=1.0, use_png_info=False, png_info_props=None, png_info_dir=None): output_dir = output_dir.strip() processing.fix_seed(p) - batch_images = list(shared.walk_files(input_dir, allowed_extensions=(".png", ".jpg", ".jpeg", ".webp", ".tif", ".tiff"))) + if isinstance(input, str): + batch_images = list(shared.walk_files(input, allowed_extensions=(".png", ".jpg", ".jpeg", ".webp", ".tif", ".tiff"))) + else: + batch_images = [os.path.abspath(x.name) for x in input] is_inpaint_batch = False if inpaint_mask_dir: @@ -146,7 +149,7 @@ def process_batch(p, input_dir, output_dir, inpaint_mask_dir, args, to_scale=Fal return batch_results -def img2img(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, init_img_with_mask, inpaint_color_sketch, inpaint_color_sketch_orig, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, *args): +def img2img(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, init_img_with_mask, inpaint_color_sketch, inpaint_color_sketch_orig, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, img2img_batch_source_type: str, img2img_batch_upload: list, *args): override_settings = create_override_settings_dict(override_settings_texts) is_batch = mode == 5 @@ -221,8 +224,15 @@ def img2img(id_task: str, request: gr.Request, mode: int, prompt: str, negative_ with closing(p): if is_batch: - assert not shared.cmd_opts.hide_ui_dir_config, "Launched with --hide-ui-dir-config, batch img2img disabled" - processed = process_batch(p, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, args, to_scale=selected_scale_tab == 1, scale_by=scale_by, use_png_info=img2img_batch_use_png_info, png_info_props=img2img_batch_png_info_props, png_info_dir=img2img_batch_png_info_dir) + if img2img_batch_source_type == "upload": + assert isinstance(img2img_batch_upload, list) and img2img_batch_upload + output_dir = "" + inpaint_mask_dir = "" + png_info_dir = img2img_batch_png_info_dir if not shared.cmd_opts.hide_ui_dir_config else "" + processed = process_batch(p, img2img_batch_upload, output_dir, inpaint_mask_dir, args, to_scale=selected_scale_tab == 1, scale_by=scale_by, use_png_info=img2img_batch_use_png_info, png_info_props=img2img_batch_png_info_props, png_info_dir=png_info_dir) + else: # "from dir" + assert not shared.cmd_opts.hide_ui_dir_config, "Launched with --hide-ui-dir-config, batch img2img disabled" + processed = process_batch(p, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, args, to_scale=selected_scale_tab == 1, scale_by=scale_by, use_png_info=img2img_batch_use_png_info, png_info_props=img2img_batch_png_info_props, png_info_dir=img2img_batch_png_info_dir) if processed is None: processed = Processed(p, [], p.seed, "") diff --git a/modules/ui.py b/modules/ui.py index 403425f2985..f3ac4236774 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -566,18 +566,25 @@ def update_orig(image, state): init_mask_inpaint = gr.Image(label="Mask", source="upload", interactive=True, type="pil", image_mode="RGBA", elem_id="img_inpaint_mask") with gr.TabItem('Batch', id='batch', elem_id="img2img_batch_tab") as tab_batch: - hidden = '
Disabled when launched with --hide-ui-dir-config.' if shared.cmd_opts.hide_ui_dir_config else '' - gr.HTML( - "

7KZi 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 Q`unCT3L5g|vKB%A3+a1QHvj+t diff --git a/webui-user.sh b/webui-user.sh index 70306c60d5b..6d4230ad363 100644 --- a/webui-user.sh +++ b/webui-user.sh @@ -10,16 +10,16 @@ #clone_dir="stable-diffusion-webui" # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" -#export COMMANDLINE_ARGS="" +export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --reinstall-torch --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable -#python_cmd="python3" +python_cmd="/home/evanhu/.pyenv/versions/3.10.13/envs/venv/bin/python3.10" # git executable #export GIT="git" # python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv) -#venv_dir="venv" +venv_dir="/home/evanhu/.pyenv/versions/3.10.13/envs/venv" # script to launch to start the app #export LAUNCH_SCRIPT="launch.py" @@ -28,7 +28,7 @@ #export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113" # Requirements file to use for stable-diffusion-webui -#export REQS_FILE="requirements_versions.txt" +export REQS_FILE="requirements_versions.txt" # Fixed git repos #export K_DIFFUSION_PACKAGE="" diff --git a/webui.sh b/webui.sh index f116376f73c..fae79c77837 100755 --- a/webui.sh +++ b/webui.sh @@ -67,7 +67,7 @@ then fi # this script cannot be run as root by default -can_run_as_root=0 +can_run_as_root=1 # read any command line flags to the webui.sh script while getopts "f" flag > /dev/null 2>&1 diff --git a/webuidetection.sh b/webuidetection.sh new file mode 100755 index 00000000000..c15501c9259 --- /dev/null +++ b/webuidetection.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Name of your node application file +NODE_APP="webui.sh" + +# Check if the monitor script is already running + + + +MONITOR_COUNT=$(pgrep -f "webuidetection.sh" | grep -v "^$$$" | wc -l) +if [[ $MONITOR_COUNT -gt 2 ]]; then + echo "Another instance of monitor.sh is running. Exiting. $MONITOR_COUNT" + exit 1 +fi + +# Function to check if the Node app is running +is_app_running() { + pgrep -f "$NODE_APP" > /dev/null + return $? +} + +# Main loop to check and start the Node app if not running +while true; do + if ! is_app_running; then + echo "webui app is not running. Starting it now..." + sudo nohup ./webui.sh --listen --xformers --upcast-sampling --skip-torch-cuda-test --enable-insecure-extension-access --no-half-vae --api --port 7890 & + fi + sleep 10 # Check every 10 seconds +done From f8391b8a8ff61bf7ebcddc9b387e6c2f206ed056 Mon Sep 17 00:00:00 2001 From: evan Date: Tue, 19 Mar 2024 22:03:31 +0000 Subject: [PATCH 002/125] chmod --- .eslintignore | 0 .eslintrc.js | 0 .git-blame-ignore-revs | 0 .github/ISSUE_TEMPLATE/bug_report.yml | 0 .github/ISSUE_TEMPLATE/config.yml | 0 .github/ISSUE_TEMPLATE/feature_request.yml | 0 .github/pull_request_template.md | 0 .github/workflows/on_pull_request.yaml | 0 .github/workflows/run_tests.yaml | 0 .github/workflows/warns_merge_master.yml | 0 .gitignore | 0 .pylintrc | 0 CHANGELOG.md | 0 CITATION.cff | 0 CODEOWNERS | 0 LICENSE.txt | 0 README.md | 0 configs/alt-diffusion-inference.yaml | 0 configs/alt-diffusion-m18-inference.yaml | 0 configs/instruct-pix2pix.yaml | 0 configs/sd_xl_inpaint.yaml | 0 configs/v1-inference.yaml | 0 configs/v1-inpainting-inference.yaml | 0 .../Place Textual Inversion embeddings here.txt | 0 environment-wsl2.yaml | 0 extensions-builtin/LDSR/ldsr_model_arch.py | 0 extensions-builtin/LDSR/preload.py | 0 extensions-builtin/LDSR/scripts/ldsr_model.py | 0 extensions-builtin/LDSR/sd_hijack_autoencoder.py | 0 extensions-builtin/LDSR/sd_hijack_ddpm_v1.py | 0 extensions-builtin/LDSR/vqvae_quantize.py | 0 extensions-builtin/Lora/extra_networks_lora.py | 0 extensions-builtin/Lora/lora.py | 0 extensions-builtin/Lora/lora_logger.py | 0 extensions-builtin/Lora/lora_patches.py | 0 extensions-builtin/Lora/lyco_helpers.py | 0 extensions-builtin/Lora/network.py | 0 extensions-builtin/Lora/network_full.py | 0 extensions-builtin/Lora/network_glora.py | 0 extensions-builtin/Lora/network_hada.py | 0 extensions-builtin/Lora/network_ia3.py | 0 extensions-builtin/Lora/network_lokr.py | 0 extensions-builtin/Lora/network_lora.py | 0 extensions-builtin/Lora/network_norm.py | 0 extensions-builtin/Lora/network_oft.py | 0 extensions-builtin/Lora/networks.py | 0 extensions-builtin/Lora/preload.py | 0 extensions-builtin/Lora/scripts/lora_script.py | 0 extensions-builtin/Lora/ui_edit_user_metadata.py | 0 extensions-builtin/Lora/ui_extra_networks_lora.py | 0 extensions-builtin/ScuNET/preload.py | 0 extensions-builtin/ScuNET/scripts/scunet_model.py | 0 extensions-builtin/SwinIR/preload.py | 0 extensions-builtin/SwinIR/scripts/swinir_model.py | 0 .../canvas-zoom-and-pan/javascript/zoom.js | 0 .../canvas-zoom-and-pan/scripts/hotkey_config.py | 0 extensions-builtin/canvas-zoom-and-pan/style.css | 0 .../scripts/extra_options_section.py | 0 extensions-builtin/hypertile/hypertile.py | 0 .../hypertile/scripts/hypertile_script.py | 0 .../hypertile/scripts/hypertile_xyz.py | 0 extensions-builtin/mobile/javascript/mobile.js | 0 .../javascript/prompt-bracket-checker.js | 0 .../soft-inpainting/scripts/soft_inpainting.py | 0 extensions/put extensions here.txt | 0 html/card-no-preview.png | Bin html/extra-networks-card.html | 0 html/extra-networks-copy-path-button.html | 0 html/extra-networks-edit-item-button.html | 0 html/extra-networks-metadata-button.html | 0 html/extra-networks-no-cards.html | 0 html/extra-networks-pane.html | 0 html/extra-networks-tree-button.html | 0 html/footer.html | 0 html/licenses.html | 0 javascript/aspectRatioOverlay.js | 0 javascript/contextMenus.js | 0 javascript/dragdrop.js | 0 javascript/edit-attention.js | 0 javascript/edit-order.js | 0 javascript/extensions.js | 0 javascript/extraNetworks.js | 0 javascript/generationParams.js | 0 javascript/hints.js | 0 javascript/hires_fix.js | 0 javascript/imageMaskFix.js | 0 javascript/imageviewer.js | 0 javascript/imageviewerGamepad.js | 0 javascript/inputAccordion.js | 0 javascript/localStorage.js | 0 javascript/localization.js | 0 javascript/notification.js | 0 javascript/profilerVisualization.js | 0 javascript/progressbar.js | 0 javascript/resizeHandle.js | 0 javascript/settings.js | 0 javascript/textualInversion.js | 0 javascript/token-counters.js | 0 javascript/ui.js | 0 javascript/ui_settings_hints.js | 0 launch.py | 0 localizations/Put localization files here.txt | 0 .../Put Stable Diffusion checkpoints here.txt | 0 models/VAE-approx/model.pt | Bin models/VAE/Put VAE here.txt | 0 ...t your deepbooru release project folder here.txt | 0 models/karlo/ViT-L-14_stats.th | Bin modules/Roboto-Regular.ttf | Bin modules/api/api.py | 0 modules/api/models.py | 0 modules/cache.py | 0 modules/call_queue.py | 0 modules/cmd_args.py | 0 modules/codeformer_model.py | 0 modules/config_states.py | 0 modules/dat_model.py | 0 modules/deepbooru.py | 0 modules/deepbooru_model.py | 0 modules/devices.py | 0 modules/errors.py | 0 modules/esrgan_model.py | 0 modules/extensions.py | 0 modules/extra_networks.py | 0 modules/extra_networks_hypernet.py | 0 modules/extras.py | 0 modules/face_restoration.py | 0 modules/face_restoration_utils.py | 0 modules/fifo_lock.py | 0 modules/gfpgan_model.py | 0 modules/gitpython_hack.py | 0 modules/gradio_extensons.py | 0 modules/hashes.py | 0 modules/hat_model.py | 0 modules/hypernetworks/hypernetwork.py | 0 modules/hypernetworks/ui.py | 0 modules/images.py | 0 modules/img2img.py | 0 modules/import_hook.py | 0 modules/infotext_utils.py | 0 modules/infotext_versions.py | 0 modules/initialize.py | 0 modules/initialize_util.py | 0 modules/interrogate.py | 0 modules/launch_utils.py | 0 modules/localization.py | 0 modules/logging_config.py | 0 modules/lowvram.py | 0 modules/mac_specific.py | 0 modules/masking.py | 0 modules/memmon.py | 0 modules/modelloader.py | 0 modules/models/diffusion/ddpm_edit.py | 0 modules/models/diffusion/uni_pc/__init__.py | 0 modules/models/diffusion/uni_pc/sampler.py | 0 modules/models/diffusion/uni_pc/uni_pc.py | 0 modules/ngrok.py | 0 modules/npu_specific.py | 0 modules/options.py | 0 modules/patches.py | 0 modules/paths.py | 0 modules/paths_internal.py | 0 modules/postprocessing.py | 0 modules/processing.py | 0 modules/processing_scripts/comments.py | 0 modules/processing_scripts/refiner.py | 0 modules/processing_scripts/seed.py | 0 modules/progress.py | 0 modules/prompt_parser.py | 0 modules/realesrgan_model.py | 0 modules/restart.py | 0 modules/rng.py | 0 modules/rng_philox.py | 0 modules/safe.py | 0 modules/script_callbacks.py | 0 modules/script_loading.py | 0 modules/scripts.py | 0 modules/scripts_auto_postprocessing.py | 0 modules/scripts_postprocessing.py | 0 modules/sd_disable_initialization.py | 0 modules/sd_emphasis.py | 0 modules/sd_hijack.py | 0 modules/sd_hijack_checkpoint.py | 0 modules/sd_hijack_clip.py | 0 modules/sd_hijack_clip_old.py | 0 modules/sd_hijack_ip2p.py | 0 modules/sd_hijack_open_clip.py | 0 modules/sd_hijack_optimizations.py | 0 modules/sd_hijack_unet.py | 0 modules/sd_hijack_utils.py | 0 modules/sd_hijack_xlmr.py | 0 modules/sd_models.py | 0 modules/sd_models_config.py | 0 modules/sd_models_types.py | 0 modules/sd_models_xl.py | 0 modules/sd_samplers.py | 0 modules/sd_samplers_cfg_denoiser.py | 0 modules/sd_samplers_common.py | 0 modules/sd_samplers_compvis.py | 0 modules/sd_samplers_extra.py | 0 modules/sd_samplers_kdiffusion.py | 0 modules/sd_samplers_lcm.py | 0 modules/sd_samplers_timesteps.py | 0 modules/sd_samplers_timesteps_impl.py | 0 modules/sd_unet.py | 0 modules/sd_vae.py | 0 modules/sd_vae_approx.py | 0 modules/sd_vae_taesd.py | 0 modules/shared.py | 0 modules/shared_cmd_options.py | 0 modules/shared_gradio_themes.py | 0 modules/shared_init.py | 0 modules/shared_items.py | 0 modules/shared_options.py | 0 modules/shared_state.py | 0 modules/shared_total_tqdm.py | 0 modules/styles.py | 0 modules/sub_quadratic_attention.py | 0 modules/sysinfo.py | 0 modules/textual_inversion/autocrop.py | 0 modules/textual_inversion/dataset.py | 0 modules/textual_inversion/image_embedding.py | 0 modules/textual_inversion/learn_schedule.py | 0 modules/textual_inversion/logging.py | 0 modules/textual_inversion/test_embedding.png | Bin modules/textual_inversion/textual_inversion.py | 0 modules/textual_inversion/ui.py | 0 modules/timer.py | 0 modules/torch_utils.py | 0 modules/txt2img.py | 0 modules/ui.py | 0 modules/ui_checkpoint_merger.py | 0 modules/ui_common.py | 0 modules/ui_components.py | 0 modules/ui_extensions.py | 0 modules/ui_extra_networks.py | 0 modules/ui_extra_networks_checkpoints.py | 0 .../ui_extra_networks_checkpoints_user_metadata.py | 0 modules/ui_extra_networks_hypernets.py | 0 modules/ui_extra_networks_textual_inversion.py | 0 modules/ui_extra_networks_user_metadata.py | 0 modules/ui_gradio_extensions.py | 0 modules/ui_loadsave.py | 0 modules/ui_postprocessing.py | 0 modules/ui_prompt_styles.py | 0 modules/ui_settings.py | 0 modules/ui_tempdir.py | 0 modules/ui_toprow.py | 0 modules/upscaler.py | 0 modules/upscaler_utils.py | 0 modules/util.py | 0 modules/xlmr.py | 0 modules/xlmr_m18.py | 0 modules/xpu_specific.py | 0 package.json | 0 pyproject.toml | 0 requirements-test.txt | 0 requirements.txt | 0 requirements_npu.txt | 0 requirements_versions.txt | 0 script.js | 0 scripts/custom_code.py | 0 scripts/img2imgalt.py | 0 scripts/loopback.py | 0 scripts/outpainting_mk_2.py | 0 scripts/poor_mans_outpainting.py | 0 scripts/postprocessing_caption.py | 0 scripts/postprocessing_codeformer.py | 0 scripts/postprocessing_create_flipped_copies.py | 0 scripts/postprocessing_focal_crop.py | 0 scripts/postprocessing_gfpgan.py | 0 scripts/postprocessing_split_oversized.py | 0 scripts/postprocessing_upscale.py | 0 scripts/processing_autosized_crop.py | 0 scripts/prompt_matrix.py | 0 scripts/prompts_from_file.py | 0 scripts/sd_upscale.py | 0 scripts/xyz_grid.py | 0 style.css | 0 test/__init__.py | 0 test/conftest.py | 0 test/test_extras.py | 0 test/test_face_restorers.py | 0 test/test_files/empty.pt | Bin test/test_files/img2img_basic.png | Bin test/test_files/mask_basic.png | Bin test/test_files/two-faces.jpg | Bin test/test_img2img.py | 0 test/test_outputs/.gitkeep | 0 test/test_torch_utils.py | 0 test/test_txt2img.py | 0 test/test_utils.py | 0 textual_inversion_templates/hypernetwork.txt | 0 textual_inversion_templates/none.txt | 0 textual_inversion_templates/style.txt | 0 textual_inversion_templates/style_filewords.txt | 0 textual_inversion_templates/subject.txt | 0 textual_inversion_templates/subject_filewords.txt | 0 webui-macos-env.sh | 0 webui-user.bat | 0 webui-user.sh | 0 webui.bat | 0 webui.py | 0 302 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .eslintignore mode change 100644 => 100755 .eslintrc.js mode change 100644 => 100755 .git-blame-ignore-revs mode change 100644 => 100755 .github/ISSUE_TEMPLATE/bug_report.yml mode change 100644 => 100755 .github/ISSUE_TEMPLATE/config.yml mode change 100644 => 100755 .github/ISSUE_TEMPLATE/feature_request.yml mode change 100644 => 100755 .github/pull_request_template.md mode change 100644 => 100755 .github/workflows/on_pull_request.yaml mode change 100644 => 100755 .github/workflows/run_tests.yaml mode change 100644 => 100755 .github/workflows/warns_merge_master.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .pylintrc mode change 100644 => 100755 CHANGELOG.md mode change 100644 => 100755 CITATION.cff mode change 100644 => 100755 CODEOWNERS mode change 100644 => 100755 LICENSE.txt mode change 100644 => 100755 README.md mode change 100644 => 100755 configs/alt-diffusion-inference.yaml mode change 100644 => 100755 configs/alt-diffusion-m18-inference.yaml mode change 100644 => 100755 configs/instruct-pix2pix.yaml mode change 100644 => 100755 configs/sd_xl_inpaint.yaml mode change 100644 => 100755 configs/v1-inference.yaml mode change 100644 => 100755 configs/v1-inpainting-inference.yaml mode change 100644 => 100755 embeddings/Place Textual Inversion embeddings here.txt mode change 100644 => 100755 environment-wsl2.yaml mode change 100644 => 100755 extensions-builtin/LDSR/ldsr_model_arch.py mode change 100644 => 100755 extensions-builtin/LDSR/preload.py mode change 100644 => 100755 extensions-builtin/LDSR/scripts/ldsr_model.py mode change 100644 => 100755 extensions-builtin/LDSR/sd_hijack_autoencoder.py mode change 100644 => 100755 extensions-builtin/LDSR/sd_hijack_ddpm_v1.py mode change 100644 => 100755 extensions-builtin/LDSR/vqvae_quantize.py mode change 100644 => 100755 extensions-builtin/Lora/extra_networks_lora.py mode change 100644 => 100755 extensions-builtin/Lora/lora.py mode change 100644 => 100755 extensions-builtin/Lora/lora_logger.py mode change 100644 => 100755 extensions-builtin/Lora/lora_patches.py mode change 100644 => 100755 extensions-builtin/Lora/lyco_helpers.py mode change 100644 => 100755 extensions-builtin/Lora/network.py mode change 100644 => 100755 extensions-builtin/Lora/network_full.py mode change 100644 => 100755 extensions-builtin/Lora/network_glora.py mode change 100644 => 100755 extensions-builtin/Lora/network_hada.py mode change 100644 => 100755 extensions-builtin/Lora/network_ia3.py mode change 100644 => 100755 extensions-builtin/Lora/network_lokr.py mode change 100644 => 100755 extensions-builtin/Lora/network_lora.py mode change 100644 => 100755 extensions-builtin/Lora/network_norm.py mode change 100644 => 100755 extensions-builtin/Lora/network_oft.py mode change 100644 => 100755 extensions-builtin/Lora/networks.py mode change 100644 => 100755 extensions-builtin/Lora/preload.py mode change 100644 => 100755 extensions-builtin/Lora/scripts/lora_script.py mode change 100644 => 100755 extensions-builtin/Lora/ui_edit_user_metadata.py mode change 100644 => 100755 extensions-builtin/Lora/ui_extra_networks_lora.py mode change 100644 => 100755 extensions-builtin/ScuNET/preload.py mode change 100644 => 100755 extensions-builtin/ScuNET/scripts/scunet_model.py mode change 100644 => 100755 extensions-builtin/SwinIR/preload.py mode change 100644 => 100755 extensions-builtin/SwinIR/scripts/swinir_model.py mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py mode change 100644 => 100755 extensions-builtin/canvas-zoom-and-pan/style.css mode change 100644 => 100755 extensions-builtin/extra-options-section/scripts/extra_options_section.py mode change 100644 => 100755 extensions-builtin/hypertile/hypertile.py mode change 100644 => 100755 extensions-builtin/hypertile/scripts/hypertile_script.py mode change 100644 => 100755 extensions-builtin/hypertile/scripts/hypertile_xyz.py mode change 100644 => 100755 extensions-builtin/mobile/javascript/mobile.js mode change 100644 => 100755 extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js mode change 100644 => 100755 extensions-builtin/soft-inpainting/scripts/soft_inpainting.py mode change 100644 => 100755 extensions/put extensions here.txt mode change 100644 => 100755 html/card-no-preview.png mode change 100644 => 100755 html/extra-networks-card.html mode change 100644 => 100755 html/extra-networks-copy-path-button.html mode change 100644 => 100755 html/extra-networks-edit-item-button.html mode change 100644 => 100755 html/extra-networks-metadata-button.html mode change 100644 => 100755 html/extra-networks-no-cards.html mode change 100644 => 100755 html/extra-networks-pane.html mode change 100644 => 100755 html/extra-networks-tree-button.html mode change 100644 => 100755 html/footer.html mode change 100644 => 100755 html/licenses.html mode change 100644 => 100755 javascript/aspectRatioOverlay.js mode change 100644 => 100755 javascript/contextMenus.js mode change 100644 => 100755 javascript/dragdrop.js mode change 100644 => 100755 javascript/edit-attention.js mode change 100644 => 100755 javascript/edit-order.js mode change 100644 => 100755 javascript/extensions.js mode change 100644 => 100755 javascript/extraNetworks.js mode change 100644 => 100755 javascript/generationParams.js mode change 100644 => 100755 javascript/hints.js mode change 100644 => 100755 javascript/hires_fix.js mode change 100644 => 100755 javascript/imageMaskFix.js mode change 100644 => 100755 javascript/imageviewer.js mode change 100644 => 100755 javascript/imageviewerGamepad.js mode change 100644 => 100755 javascript/inputAccordion.js mode change 100644 => 100755 javascript/localStorage.js mode change 100644 => 100755 javascript/localization.js mode change 100644 => 100755 javascript/notification.js mode change 100644 => 100755 javascript/profilerVisualization.js mode change 100644 => 100755 javascript/progressbar.js mode change 100644 => 100755 javascript/resizeHandle.js mode change 100644 => 100755 javascript/settings.js mode change 100644 => 100755 javascript/textualInversion.js mode change 100644 => 100755 javascript/token-counters.js mode change 100644 => 100755 javascript/ui.js mode change 100644 => 100755 javascript/ui_settings_hints.js mode change 100644 => 100755 launch.py mode change 100644 => 100755 localizations/Put localization files here.txt mode change 100644 => 100755 models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt mode change 100644 => 100755 models/VAE-approx/model.pt mode change 100644 => 100755 models/VAE/Put VAE here.txt mode change 100644 => 100755 models/deepbooru/Put your deepbooru release project folder here.txt mode change 100644 => 100755 models/karlo/ViT-L-14_stats.th mode change 100644 => 100755 modules/Roboto-Regular.ttf mode change 100644 => 100755 modules/api/api.py mode change 100644 => 100755 modules/api/models.py mode change 100644 => 100755 modules/cache.py mode change 100644 => 100755 modules/call_queue.py mode change 100644 => 100755 modules/cmd_args.py mode change 100644 => 100755 modules/codeformer_model.py mode change 100644 => 100755 modules/config_states.py mode change 100644 => 100755 modules/dat_model.py mode change 100644 => 100755 modules/deepbooru.py mode change 100644 => 100755 modules/deepbooru_model.py mode change 100644 => 100755 modules/devices.py mode change 100644 => 100755 modules/errors.py mode change 100644 => 100755 modules/esrgan_model.py mode change 100644 => 100755 modules/extensions.py mode change 100644 => 100755 modules/extra_networks.py mode change 100644 => 100755 modules/extra_networks_hypernet.py mode change 100644 => 100755 modules/extras.py mode change 100644 => 100755 modules/face_restoration.py mode change 100644 => 100755 modules/face_restoration_utils.py mode change 100644 => 100755 modules/fifo_lock.py mode change 100644 => 100755 modules/gfpgan_model.py mode change 100644 => 100755 modules/gitpython_hack.py mode change 100644 => 100755 modules/gradio_extensons.py mode change 100644 => 100755 modules/hashes.py mode change 100644 => 100755 modules/hat_model.py mode change 100644 => 100755 modules/hypernetworks/hypernetwork.py mode change 100644 => 100755 modules/hypernetworks/ui.py mode change 100644 => 100755 modules/images.py mode change 100644 => 100755 modules/img2img.py mode change 100644 => 100755 modules/import_hook.py mode change 100644 => 100755 modules/infotext_utils.py mode change 100644 => 100755 modules/infotext_versions.py mode change 100644 => 100755 modules/initialize.py mode change 100644 => 100755 modules/initialize_util.py mode change 100644 => 100755 modules/interrogate.py mode change 100644 => 100755 modules/launch_utils.py mode change 100644 => 100755 modules/localization.py mode change 100644 => 100755 modules/logging_config.py mode change 100644 => 100755 modules/lowvram.py mode change 100644 => 100755 modules/mac_specific.py mode change 100644 => 100755 modules/masking.py mode change 100644 => 100755 modules/memmon.py mode change 100644 => 100755 modules/modelloader.py mode change 100644 => 100755 modules/models/diffusion/ddpm_edit.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/__init__.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/sampler.py mode change 100644 => 100755 modules/models/diffusion/uni_pc/uni_pc.py mode change 100644 => 100755 modules/ngrok.py mode change 100644 => 100755 modules/npu_specific.py mode change 100644 => 100755 modules/options.py mode change 100644 => 100755 modules/patches.py mode change 100644 => 100755 modules/paths.py mode change 100644 => 100755 modules/paths_internal.py mode change 100644 => 100755 modules/postprocessing.py mode change 100644 => 100755 modules/processing.py mode change 100644 => 100755 modules/processing_scripts/comments.py mode change 100644 => 100755 modules/processing_scripts/refiner.py mode change 100644 => 100755 modules/processing_scripts/seed.py mode change 100644 => 100755 modules/progress.py mode change 100644 => 100755 modules/prompt_parser.py mode change 100644 => 100755 modules/realesrgan_model.py mode change 100644 => 100755 modules/restart.py mode change 100644 => 100755 modules/rng.py mode change 100644 => 100755 modules/rng_philox.py mode change 100644 => 100755 modules/safe.py mode change 100644 => 100755 modules/script_callbacks.py mode change 100644 => 100755 modules/script_loading.py mode change 100644 => 100755 modules/scripts.py mode change 100644 => 100755 modules/scripts_auto_postprocessing.py mode change 100644 => 100755 modules/scripts_postprocessing.py mode change 100644 => 100755 modules/sd_disable_initialization.py mode change 100644 => 100755 modules/sd_emphasis.py mode change 100644 => 100755 modules/sd_hijack.py mode change 100644 => 100755 modules/sd_hijack_checkpoint.py mode change 100644 => 100755 modules/sd_hijack_clip.py mode change 100644 => 100755 modules/sd_hijack_clip_old.py mode change 100644 => 100755 modules/sd_hijack_ip2p.py mode change 100644 => 100755 modules/sd_hijack_open_clip.py mode change 100644 => 100755 modules/sd_hijack_optimizations.py mode change 100644 => 100755 modules/sd_hijack_unet.py mode change 100644 => 100755 modules/sd_hijack_utils.py mode change 100644 => 100755 modules/sd_hijack_xlmr.py mode change 100644 => 100755 modules/sd_models.py mode change 100644 => 100755 modules/sd_models_config.py mode change 100644 => 100755 modules/sd_models_types.py mode change 100644 => 100755 modules/sd_models_xl.py mode change 100644 => 100755 modules/sd_samplers.py mode change 100644 => 100755 modules/sd_samplers_cfg_denoiser.py mode change 100644 => 100755 modules/sd_samplers_common.py mode change 100644 => 100755 modules/sd_samplers_compvis.py mode change 100644 => 100755 modules/sd_samplers_extra.py mode change 100644 => 100755 modules/sd_samplers_kdiffusion.py mode change 100644 => 100755 modules/sd_samplers_lcm.py mode change 100644 => 100755 modules/sd_samplers_timesteps.py mode change 100644 => 100755 modules/sd_samplers_timesteps_impl.py mode change 100644 => 100755 modules/sd_unet.py mode change 100644 => 100755 modules/sd_vae.py mode change 100644 => 100755 modules/sd_vae_approx.py mode change 100644 => 100755 modules/sd_vae_taesd.py mode change 100644 => 100755 modules/shared.py mode change 100644 => 100755 modules/shared_cmd_options.py mode change 100644 => 100755 modules/shared_gradio_themes.py mode change 100644 => 100755 modules/shared_init.py mode change 100644 => 100755 modules/shared_items.py mode change 100644 => 100755 modules/shared_options.py mode change 100644 => 100755 modules/shared_state.py mode change 100644 => 100755 modules/shared_total_tqdm.py mode change 100644 => 100755 modules/styles.py mode change 100644 => 100755 modules/sub_quadratic_attention.py mode change 100644 => 100755 modules/sysinfo.py mode change 100644 => 100755 modules/textual_inversion/autocrop.py mode change 100644 => 100755 modules/textual_inversion/dataset.py mode change 100644 => 100755 modules/textual_inversion/image_embedding.py mode change 100644 => 100755 modules/textual_inversion/learn_schedule.py mode change 100644 => 100755 modules/textual_inversion/logging.py mode change 100644 => 100755 modules/textual_inversion/test_embedding.png mode change 100644 => 100755 modules/textual_inversion/textual_inversion.py mode change 100644 => 100755 modules/textual_inversion/ui.py mode change 100644 => 100755 modules/timer.py mode change 100644 => 100755 modules/torch_utils.py mode change 100644 => 100755 modules/txt2img.py mode change 100644 => 100755 modules/ui.py mode change 100644 => 100755 modules/ui_checkpoint_merger.py mode change 100644 => 100755 modules/ui_common.py mode change 100644 => 100755 modules/ui_components.py mode change 100644 => 100755 modules/ui_extensions.py mode change 100644 => 100755 modules/ui_extra_networks.py mode change 100644 => 100755 modules/ui_extra_networks_checkpoints.py mode change 100644 => 100755 modules/ui_extra_networks_checkpoints_user_metadata.py mode change 100644 => 100755 modules/ui_extra_networks_hypernets.py mode change 100644 => 100755 modules/ui_extra_networks_textual_inversion.py mode change 100644 => 100755 modules/ui_extra_networks_user_metadata.py mode change 100644 => 100755 modules/ui_gradio_extensions.py mode change 100644 => 100755 modules/ui_loadsave.py mode change 100644 => 100755 modules/ui_postprocessing.py mode change 100644 => 100755 modules/ui_prompt_styles.py mode change 100644 => 100755 modules/ui_settings.py mode change 100644 => 100755 modules/ui_tempdir.py mode change 100644 => 100755 modules/ui_toprow.py mode change 100644 => 100755 modules/upscaler.py mode change 100644 => 100755 modules/upscaler_utils.py mode change 100644 => 100755 modules/util.py mode change 100644 => 100755 modules/xlmr.py mode change 100644 => 100755 modules/xlmr_m18.py mode change 100644 => 100755 modules/xpu_specific.py mode change 100644 => 100755 package.json mode change 100644 => 100755 pyproject.toml mode change 100644 => 100755 requirements-test.txt mode change 100644 => 100755 requirements.txt mode change 100644 => 100755 requirements_npu.txt mode change 100644 => 100755 requirements_versions.txt mode change 100644 => 100755 script.js mode change 100644 => 100755 scripts/custom_code.py mode change 100644 => 100755 scripts/img2imgalt.py mode change 100644 => 100755 scripts/loopback.py mode change 100644 => 100755 scripts/outpainting_mk_2.py mode change 100644 => 100755 scripts/poor_mans_outpainting.py mode change 100644 => 100755 scripts/postprocessing_caption.py mode change 100644 => 100755 scripts/postprocessing_codeformer.py mode change 100644 => 100755 scripts/postprocessing_create_flipped_copies.py mode change 100644 => 100755 scripts/postprocessing_focal_crop.py mode change 100644 => 100755 scripts/postprocessing_gfpgan.py mode change 100644 => 100755 scripts/postprocessing_split_oversized.py mode change 100644 => 100755 scripts/postprocessing_upscale.py mode change 100644 => 100755 scripts/processing_autosized_crop.py mode change 100644 => 100755 scripts/prompt_matrix.py mode change 100644 => 100755 scripts/prompts_from_file.py mode change 100644 => 100755 scripts/sd_upscale.py mode change 100644 => 100755 scripts/xyz_grid.py mode change 100644 => 100755 style.css mode change 100644 => 100755 test/__init__.py mode change 100644 => 100755 test/conftest.py mode change 100644 => 100755 test/test_extras.py mode change 100644 => 100755 test/test_face_restorers.py mode change 100644 => 100755 test/test_files/empty.pt mode change 100644 => 100755 test/test_files/img2img_basic.png mode change 100644 => 100755 test/test_files/mask_basic.png mode change 100644 => 100755 test/test_files/two-faces.jpg mode change 100644 => 100755 test/test_img2img.py mode change 100644 => 100755 test/test_outputs/.gitkeep mode change 100644 => 100755 test/test_torch_utils.py mode change 100644 => 100755 test/test_txt2img.py mode change 100644 => 100755 test/test_utils.py mode change 100644 => 100755 textual_inversion_templates/hypernetwork.txt mode change 100644 => 100755 textual_inversion_templates/none.txt mode change 100644 => 100755 textual_inversion_templates/style.txt mode change 100644 => 100755 textual_inversion_templates/style_filewords.txt mode change 100644 => 100755 textual_inversion_templates/subject.txt mode change 100644 => 100755 textual_inversion_templates/subject_filewords.txt mode change 100644 => 100755 webui-macos-env.sh mode change 100644 => 100755 webui-user.bat mode change 100644 => 100755 webui-user.sh mode change 100644 => 100755 webui.bat mode change 100644 => 100755 webui.py diff --git a/.eslintignore b/.eslintignore old mode 100644 new mode 100755 diff --git a/.eslintrc.js b/.eslintrc.js old mode 100644 new mode 100755 diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml old mode 100644 new mode 100755 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md old mode 100644 new mode 100755 diff --git a/.github/workflows/on_pull_request.yaml b/.github/workflows/on_pull_request.yaml old mode 100644 new mode 100755 diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml old mode 100644 new mode 100755 diff --git a/.github/workflows/warns_merge_master.yml b/.github/workflows/warns_merge_master.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.pylintrc b/.pylintrc old mode 100644 new mode 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/CITATION.cff b/CITATION.cff old mode 100644 new mode 100755 diff --git a/CODEOWNERS b/CODEOWNERS old mode 100644 new mode 100755 diff --git a/LICENSE.txt b/LICENSE.txt old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/configs/alt-diffusion-inference.yaml b/configs/alt-diffusion-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/alt-diffusion-m18-inference.yaml b/configs/alt-diffusion-m18-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/instruct-pix2pix.yaml b/configs/instruct-pix2pix.yaml old mode 100644 new mode 100755 diff --git a/configs/sd_xl_inpaint.yaml b/configs/sd_xl_inpaint.yaml old mode 100644 new mode 100755 diff --git a/configs/v1-inference.yaml b/configs/v1-inference.yaml old mode 100644 new mode 100755 diff --git a/configs/v1-inpainting-inference.yaml b/configs/v1-inpainting-inference.yaml old mode 100644 new mode 100755 diff --git a/embeddings/Place Textual Inversion embeddings here.txt b/embeddings/Place Textual Inversion embeddings here.txt old mode 100644 new mode 100755 diff --git a/environment-wsl2.yaml b/environment-wsl2.yaml old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/ldsr_model_arch.py b/extensions-builtin/LDSR/ldsr_model_arch.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/preload.py b/extensions-builtin/LDSR/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/scripts/ldsr_model.py b/extensions-builtin/LDSR/scripts/ldsr_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/sd_hijack_autoencoder.py b/extensions-builtin/LDSR/sd_hijack_autoencoder.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/sd_hijack_ddpm_v1.py b/extensions-builtin/LDSR/sd_hijack_ddpm_v1.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/LDSR/vqvae_quantize.py b/extensions-builtin/LDSR/vqvae_quantize.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/extra_networks_lora.py b/extensions-builtin/Lora/extra_networks_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora.py b/extensions-builtin/Lora/lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora_logger.py b/extensions-builtin/Lora/lora_logger.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lora_patches.py b/extensions-builtin/Lora/lora_patches.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/lyco_helpers.py b/extensions-builtin/Lora/lyco_helpers.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network.py b/extensions-builtin/Lora/network.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_full.py b/extensions-builtin/Lora/network_full.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_glora.py b/extensions-builtin/Lora/network_glora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_hada.py b/extensions-builtin/Lora/network_hada.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_ia3.py b/extensions-builtin/Lora/network_ia3.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_lokr.py b/extensions-builtin/Lora/network_lokr.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_lora.py b/extensions-builtin/Lora/network_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_norm.py b/extensions-builtin/Lora/network_norm.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/network_oft.py b/extensions-builtin/Lora/network_oft.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/preload.py b/extensions-builtin/Lora/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/scripts/lora_script.py b/extensions-builtin/Lora/scripts/lora_script.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/ui_edit_user_metadata.py b/extensions-builtin/Lora/ui_edit_user_metadata.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/Lora/ui_extra_networks_lora.py b/extensions-builtin/Lora/ui_extra_networks_lora.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/ScuNET/preload.py b/extensions-builtin/ScuNET/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/ScuNET/scripts/scunet_model.py b/extensions-builtin/ScuNET/scripts/scunet_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/SwinIR/preload.py b/extensions-builtin/SwinIR/preload.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/SwinIR/scripts/swinir_model.py b/extensions-builtin/SwinIR/scripts/swinir_model.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js b/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py b/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/canvas-zoom-and-pan/style.css b/extensions-builtin/canvas-zoom-and-pan/style.css old mode 100644 new mode 100755 diff --git a/extensions-builtin/extra-options-section/scripts/extra_options_section.py b/extensions-builtin/extra-options-section/scripts/extra_options_section.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/hypertile/hypertile.py b/extensions-builtin/hypertile/hypertile.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/hypertile/scripts/hypertile_script.py b/extensions-builtin/hypertile/scripts/hypertile_script.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/hypertile/scripts/hypertile_xyz.py b/extensions-builtin/hypertile/scripts/hypertile_xyz.py old mode 100644 new mode 100755 diff --git a/extensions-builtin/mobile/javascript/mobile.js b/extensions-builtin/mobile/javascript/mobile.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js b/extensions-builtin/prompt-bracket-checker/javascript/prompt-bracket-checker.js old mode 100644 new mode 100755 diff --git a/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py b/extensions-builtin/soft-inpainting/scripts/soft_inpainting.py old mode 100644 new mode 100755 diff --git a/extensions/put extensions here.txt b/extensions/put extensions here.txt old mode 100644 new mode 100755 diff --git a/html/card-no-preview.png b/html/card-no-preview.png old mode 100644 new mode 100755 diff --git a/html/extra-networks-card.html b/html/extra-networks-card.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-copy-path-button.html b/html/extra-networks-copy-path-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-edit-item-button.html b/html/extra-networks-edit-item-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-metadata-button.html b/html/extra-networks-metadata-button.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-no-cards.html b/html/extra-networks-no-cards.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-pane.html b/html/extra-networks-pane.html old mode 100644 new mode 100755 diff --git a/html/extra-networks-tree-button.html b/html/extra-networks-tree-button.html old mode 100644 new mode 100755 diff --git a/html/footer.html b/html/footer.html old mode 100644 new mode 100755 diff --git a/html/licenses.html b/html/licenses.html old mode 100644 new mode 100755 diff --git a/javascript/aspectRatioOverlay.js b/javascript/aspectRatioOverlay.js old mode 100644 new mode 100755 diff --git a/javascript/contextMenus.js b/javascript/contextMenus.js old mode 100644 new mode 100755 diff --git a/javascript/dragdrop.js b/javascript/dragdrop.js old mode 100644 new mode 100755 diff --git a/javascript/edit-attention.js b/javascript/edit-attention.js old mode 100644 new mode 100755 diff --git a/javascript/edit-order.js b/javascript/edit-order.js old mode 100644 new mode 100755 diff --git a/javascript/extensions.js b/javascript/extensions.js old mode 100644 new mode 100755 diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js old mode 100644 new mode 100755 diff --git a/javascript/generationParams.js b/javascript/generationParams.js old mode 100644 new mode 100755 diff --git a/javascript/hints.js b/javascript/hints.js old mode 100644 new mode 100755 diff --git a/javascript/hires_fix.js b/javascript/hires_fix.js old mode 100644 new mode 100755 diff --git a/javascript/imageMaskFix.js b/javascript/imageMaskFix.js old mode 100644 new mode 100755 diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js old mode 100644 new mode 100755 diff --git a/javascript/imageviewerGamepad.js b/javascript/imageviewerGamepad.js old mode 100644 new mode 100755 diff --git a/javascript/inputAccordion.js b/javascript/inputAccordion.js old mode 100644 new mode 100755 diff --git a/javascript/localStorage.js b/javascript/localStorage.js old mode 100644 new mode 100755 diff --git a/javascript/localization.js b/javascript/localization.js old mode 100644 new mode 100755 diff --git a/javascript/notification.js b/javascript/notification.js old mode 100644 new mode 100755 diff --git a/javascript/profilerVisualization.js b/javascript/profilerVisualization.js old mode 100644 new mode 100755 diff --git a/javascript/progressbar.js b/javascript/progressbar.js old mode 100644 new mode 100755 diff --git a/javascript/resizeHandle.js b/javascript/resizeHandle.js old mode 100644 new mode 100755 diff --git a/javascript/settings.js b/javascript/settings.js old mode 100644 new mode 100755 diff --git a/javascript/textualInversion.js b/javascript/textualInversion.js old mode 100644 new mode 100755 diff --git a/javascript/token-counters.js b/javascript/token-counters.js old mode 100644 new mode 100755 diff --git a/javascript/ui.js b/javascript/ui.js old mode 100644 new mode 100755 diff --git a/javascript/ui_settings_hints.js b/javascript/ui_settings_hints.js old mode 100644 new mode 100755 diff --git a/launch.py b/launch.py old mode 100644 new mode 100755 diff --git a/localizations/Put localization files here.txt b/localizations/Put localization files here.txt old mode 100644 new mode 100755 diff --git a/models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt b/models/Stable-diffusion/Put Stable Diffusion checkpoints here.txt old mode 100644 new mode 100755 diff --git a/models/VAE-approx/model.pt b/models/VAE-approx/model.pt old mode 100644 new mode 100755 diff --git a/models/VAE/Put VAE here.txt b/models/VAE/Put VAE here.txt old mode 100644 new mode 100755 diff --git a/models/deepbooru/Put your deepbooru release project folder here.txt b/models/deepbooru/Put your deepbooru release project folder here.txt old mode 100644 new mode 100755 diff --git a/models/karlo/ViT-L-14_stats.th b/models/karlo/ViT-L-14_stats.th old mode 100644 new mode 100755 diff --git a/modules/Roboto-Regular.ttf b/modules/Roboto-Regular.ttf old mode 100644 new mode 100755 diff --git a/modules/api/api.py b/modules/api/api.py old mode 100644 new mode 100755 diff --git a/modules/api/models.py b/modules/api/models.py old mode 100644 new mode 100755 diff --git a/modules/cache.py b/modules/cache.py old mode 100644 new mode 100755 diff --git a/modules/call_queue.py b/modules/call_queue.py old mode 100644 new mode 100755 diff --git a/modules/cmd_args.py b/modules/cmd_args.py old mode 100644 new mode 100755 diff --git a/modules/codeformer_model.py b/modules/codeformer_model.py old mode 100644 new mode 100755 diff --git a/modules/config_states.py b/modules/config_states.py old mode 100644 new mode 100755 diff --git a/modules/dat_model.py b/modules/dat_model.py old mode 100644 new mode 100755 diff --git a/modules/deepbooru.py b/modules/deepbooru.py old mode 100644 new mode 100755 diff --git a/modules/deepbooru_model.py b/modules/deepbooru_model.py old mode 100644 new mode 100755 diff --git a/modules/devices.py b/modules/devices.py old mode 100644 new mode 100755 diff --git a/modules/errors.py b/modules/errors.py old mode 100644 new mode 100755 diff --git a/modules/esrgan_model.py b/modules/esrgan_model.py old mode 100644 new mode 100755 diff --git a/modules/extensions.py b/modules/extensions.py old mode 100644 new mode 100755 diff --git a/modules/extra_networks.py b/modules/extra_networks.py old mode 100644 new mode 100755 diff --git a/modules/extra_networks_hypernet.py b/modules/extra_networks_hypernet.py old mode 100644 new mode 100755 diff --git a/modules/extras.py b/modules/extras.py old mode 100644 new mode 100755 diff --git a/modules/face_restoration.py b/modules/face_restoration.py old mode 100644 new mode 100755 diff --git a/modules/face_restoration_utils.py b/modules/face_restoration_utils.py old mode 100644 new mode 100755 diff --git a/modules/fifo_lock.py b/modules/fifo_lock.py old mode 100644 new mode 100755 diff --git a/modules/gfpgan_model.py b/modules/gfpgan_model.py old mode 100644 new mode 100755 diff --git a/modules/gitpython_hack.py b/modules/gitpython_hack.py old mode 100644 new mode 100755 diff --git a/modules/gradio_extensons.py b/modules/gradio_extensons.py old mode 100644 new mode 100755 diff --git a/modules/hashes.py b/modules/hashes.py old mode 100644 new mode 100755 diff --git a/modules/hat_model.py b/modules/hat_model.py old mode 100644 new mode 100755 diff --git a/modules/hypernetworks/hypernetwork.py b/modules/hypernetworks/hypernetwork.py old mode 100644 new mode 100755 diff --git a/modules/hypernetworks/ui.py b/modules/hypernetworks/ui.py old mode 100644 new mode 100755 diff --git a/modules/images.py b/modules/images.py old mode 100644 new mode 100755 diff --git a/modules/img2img.py b/modules/img2img.py old mode 100644 new mode 100755 diff --git a/modules/import_hook.py b/modules/import_hook.py old mode 100644 new mode 100755 diff --git a/modules/infotext_utils.py b/modules/infotext_utils.py old mode 100644 new mode 100755 diff --git a/modules/infotext_versions.py b/modules/infotext_versions.py old mode 100644 new mode 100755 diff --git a/modules/initialize.py b/modules/initialize.py old mode 100644 new mode 100755 diff --git a/modules/initialize_util.py b/modules/initialize_util.py old mode 100644 new mode 100755 diff --git a/modules/interrogate.py b/modules/interrogate.py old mode 100644 new mode 100755 diff --git a/modules/launch_utils.py b/modules/launch_utils.py old mode 100644 new mode 100755 diff --git a/modules/localization.py b/modules/localization.py old mode 100644 new mode 100755 diff --git a/modules/logging_config.py b/modules/logging_config.py old mode 100644 new mode 100755 diff --git a/modules/lowvram.py b/modules/lowvram.py old mode 100644 new mode 100755 diff --git a/modules/mac_specific.py b/modules/mac_specific.py old mode 100644 new mode 100755 diff --git a/modules/masking.py b/modules/masking.py old mode 100644 new mode 100755 diff --git a/modules/memmon.py b/modules/memmon.py old mode 100644 new mode 100755 diff --git a/modules/modelloader.py b/modules/modelloader.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/ddpm_edit.py b/modules/models/diffusion/ddpm_edit.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/__init__.py b/modules/models/diffusion/uni_pc/__init__.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/sampler.py b/modules/models/diffusion/uni_pc/sampler.py old mode 100644 new mode 100755 diff --git a/modules/models/diffusion/uni_pc/uni_pc.py b/modules/models/diffusion/uni_pc/uni_pc.py old mode 100644 new mode 100755 diff --git a/modules/ngrok.py b/modules/ngrok.py old mode 100644 new mode 100755 diff --git a/modules/npu_specific.py b/modules/npu_specific.py old mode 100644 new mode 100755 diff --git a/modules/options.py b/modules/options.py old mode 100644 new mode 100755 diff --git a/modules/patches.py b/modules/patches.py old mode 100644 new mode 100755 diff --git a/modules/paths.py b/modules/paths.py old mode 100644 new mode 100755 diff --git a/modules/paths_internal.py b/modules/paths_internal.py old mode 100644 new mode 100755 diff --git a/modules/postprocessing.py b/modules/postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/processing.py b/modules/processing.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/comments.py b/modules/processing_scripts/comments.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/refiner.py b/modules/processing_scripts/refiner.py old mode 100644 new mode 100755 diff --git a/modules/processing_scripts/seed.py b/modules/processing_scripts/seed.py old mode 100644 new mode 100755 diff --git a/modules/progress.py b/modules/progress.py old mode 100644 new mode 100755 diff --git a/modules/prompt_parser.py b/modules/prompt_parser.py old mode 100644 new mode 100755 diff --git a/modules/realesrgan_model.py b/modules/realesrgan_model.py old mode 100644 new mode 100755 diff --git a/modules/restart.py b/modules/restart.py old mode 100644 new mode 100755 diff --git a/modules/rng.py b/modules/rng.py old mode 100644 new mode 100755 diff --git a/modules/rng_philox.py b/modules/rng_philox.py old mode 100644 new mode 100755 diff --git a/modules/safe.py b/modules/safe.py old mode 100644 new mode 100755 diff --git a/modules/script_callbacks.py b/modules/script_callbacks.py old mode 100644 new mode 100755 diff --git a/modules/script_loading.py b/modules/script_loading.py old mode 100644 new mode 100755 diff --git a/modules/scripts.py b/modules/scripts.py old mode 100644 new mode 100755 diff --git a/modules/scripts_auto_postprocessing.py b/modules/scripts_auto_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/scripts_postprocessing.py b/modules/scripts_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/sd_disable_initialization.py b/modules/sd_disable_initialization.py old mode 100644 new mode 100755 diff --git a/modules/sd_emphasis.py b/modules/sd_emphasis.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_checkpoint.py b/modules/sd_hijack_checkpoint.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_clip.py b/modules/sd_hijack_clip.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_clip_old.py b/modules/sd_hijack_clip_old.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_ip2p.py b/modules/sd_hijack_ip2p.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_open_clip.py b/modules/sd_hijack_open_clip.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_optimizations.py b/modules/sd_hijack_optimizations.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_unet.py b/modules/sd_hijack_unet.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_utils.py b/modules/sd_hijack_utils.py old mode 100644 new mode 100755 diff --git a/modules/sd_hijack_xlmr.py b/modules/sd_hijack_xlmr.py old mode 100644 new mode 100755 diff --git a/modules/sd_models.py b/modules/sd_models.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_config.py b/modules/sd_models_config.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_types.py b/modules/sd_models_types.py old mode 100644 new mode 100755 diff --git a/modules/sd_models_xl.py b/modules/sd_models_xl.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_common.py b/modules/sd_samplers_common.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_compvis.py b/modules/sd_samplers_compvis.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_extra.py b/modules/sd_samplers_extra.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_kdiffusion.py b/modules/sd_samplers_kdiffusion.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_lcm.py b/modules/sd_samplers_lcm.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_timesteps.py b/modules/sd_samplers_timesteps.py old mode 100644 new mode 100755 diff --git a/modules/sd_samplers_timesteps_impl.py b/modules/sd_samplers_timesteps_impl.py old mode 100644 new mode 100755 diff --git a/modules/sd_unet.py b/modules/sd_unet.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae.py b/modules/sd_vae.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae_approx.py b/modules/sd_vae_approx.py old mode 100644 new mode 100755 diff --git a/modules/sd_vae_taesd.py b/modules/sd_vae_taesd.py old mode 100644 new mode 100755 diff --git a/modules/shared.py b/modules/shared.py old mode 100644 new mode 100755 diff --git a/modules/shared_cmd_options.py b/modules/shared_cmd_options.py old mode 100644 new mode 100755 diff --git a/modules/shared_gradio_themes.py b/modules/shared_gradio_themes.py old mode 100644 new mode 100755 diff --git a/modules/shared_init.py b/modules/shared_init.py old mode 100644 new mode 100755 diff --git a/modules/shared_items.py b/modules/shared_items.py old mode 100644 new mode 100755 diff --git a/modules/shared_options.py b/modules/shared_options.py old mode 100644 new mode 100755 diff --git a/modules/shared_state.py b/modules/shared_state.py old mode 100644 new mode 100755 diff --git a/modules/shared_total_tqdm.py b/modules/shared_total_tqdm.py old mode 100644 new mode 100755 diff --git a/modules/styles.py b/modules/styles.py old mode 100644 new mode 100755 diff --git a/modules/sub_quadratic_attention.py b/modules/sub_quadratic_attention.py old mode 100644 new mode 100755 diff --git a/modules/sysinfo.py b/modules/sysinfo.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/autocrop.py b/modules/textual_inversion/autocrop.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/dataset.py b/modules/textual_inversion/dataset.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/image_embedding.py b/modules/textual_inversion/image_embedding.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/learn_schedule.py b/modules/textual_inversion/learn_schedule.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/logging.py b/modules/textual_inversion/logging.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/test_embedding.png b/modules/textual_inversion/test_embedding.png old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py old mode 100644 new mode 100755 diff --git a/modules/textual_inversion/ui.py b/modules/textual_inversion/ui.py old mode 100644 new mode 100755 diff --git a/modules/timer.py b/modules/timer.py old mode 100644 new mode 100755 diff --git a/modules/torch_utils.py b/modules/torch_utils.py old mode 100644 new mode 100755 diff --git a/modules/txt2img.py b/modules/txt2img.py old mode 100644 new mode 100755 diff --git a/modules/ui.py b/modules/ui.py old mode 100644 new mode 100755 diff --git a/modules/ui_checkpoint_merger.py b/modules/ui_checkpoint_merger.py old mode 100644 new mode 100755 diff --git a/modules/ui_common.py b/modules/ui_common.py old mode 100644 new mode 100755 diff --git a/modules/ui_components.py b/modules/ui_components.py old mode 100644 new mode 100755 diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_checkpoints_user_metadata.py b/modules/ui_extra_networks_checkpoints_user_metadata.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_hypernets.py b/modules/ui_extra_networks_hypernets.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_textual_inversion.py b/modules/ui_extra_networks_textual_inversion.py old mode 100644 new mode 100755 diff --git a/modules/ui_extra_networks_user_metadata.py b/modules/ui_extra_networks_user_metadata.py old mode 100644 new mode 100755 diff --git a/modules/ui_gradio_extensions.py b/modules/ui_gradio_extensions.py old mode 100644 new mode 100755 diff --git a/modules/ui_loadsave.py b/modules/ui_loadsave.py old mode 100644 new mode 100755 diff --git a/modules/ui_postprocessing.py b/modules/ui_postprocessing.py old mode 100644 new mode 100755 diff --git a/modules/ui_prompt_styles.py b/modules/ui_prompt_styles.py old mode 100644 new mode 100755 diff --git a/modules/ui_settings.py b/modules/ui_settings.py old mode 100644 new mode 100755 diff --git a/modules/ui_tempdir.py b/modules/ui_tempdir.py old mode 100644 new mode 100755 diff --git a/modules/ui_toprow.py b/modules/ui_toprow.py old mode 100644 new mode 100755 diff --git a/modules/upscaler.py b/modules/upscaler.py old mode 100644 new mode 100755 diff --git a/modules/upscaler_utils.py b/modules/upscaler_utils.py old mode 100644 new mode 100755 diff --git a/modules/util.py b/modules/util.py old mode 100644 new mode 100755 diff --git a/modules/xlmr.py b/modules/xlmr.py old mode 100644 new mode 100755 diff --git a/modules/xlmr_m18.py b/modules/xlmr_m18.py old mode 100644 new mode 100755 diff --git a/modules/xpu_specific.py b/modules/xpu_specific.py old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/pyproject.toml b/pyproject.toml old mode 100644 new mode 100755 diff --git a/requirements-test.txt b/requirements-test.txt old mode 100644 new mode 100755 diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 diff --git a/requirements_npu.txt b/requirements_npu.txt old mode 100644 new mode 100755 diff --git a/requirements_versions.txt b/requirements_versions.txt old mode 100644 new mode 100755 diff --git a/script.js b/script.js old mode 100644 new mode 100755 diff --git a/scripts/custom_code.py b/scripts/custom_code.py old mode 100644 new mode 100755 diff --git a/scripts/img2imgalt.py b/scripts/img2imgalt.py old mode 100644 new mode 100755 diff --git a/scripts/loopback.py b/scripts/loopback.py old mode 100644 new mode 100755 diff --git a/scripts/outpainting_mk_2.py b/scripts/outpainting_mk_2.py old mode 100644 new mode 100755 diff --git a/scripts/poor_mans_outpainting.py b/scripts/poor_mans_outpainting.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_caption.py b/scripts/postprocessing_caption.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_codeformer.py b/scripts/postprocessing_codeformer.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_create_flipped_copies.py b/scripts/postprocessing_create_flipped_copies.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_focal_crop.py b/scripts/postprocessing_focal_crop.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_gfpgan.py b/scripts/postprocessing_gfpgan.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_split_oversized.py b/scripts/postprocessing_split_oversized.py old mode 100644 new mode 100755 diff --git a/scripts/postprocessing_upscale.py b/scripts/postprocessing_upscale.py old mode 100644 new mode 100755 diff --git a/scripts/processing_autosized_crop.py b/scripts/processing_autosized_crop.py old mode 100644 new mode 100755 diff --git a/scripts/prompt_matrix.py b/scripts/prompt_matrix.py old mode 100644 new mode 100755 diff --git a/scripts/prompts_from_file.py b/scripts/prompts_from_file.py old mode 100644 new mode 100755 diff --git a/scripts/sd_upscale.py b/scripts/sd_upscale.py old mode 100644 new mode 100755 diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py old mode 100644 new mode 100755 diff --git a/style.css b/style.css old mode 100644 new mode 100755 diff --git a/test/__init__.py b/test/__init__.py old mode 100644 new mode 100755 diff --git a/test/conftest.py b/test/conftest.py old mode 100644 new mode 100755 diff --git a/test/test_extras.py b/test/test_extras.py old mode 100644 new mode 100755 diff --git a/test/test_face_restorers.py b/test/test_face_restorers.py old mode 100644 new mode 100755 diff --git a/test/test_files/empty.pt b/test/test_files/empty.pt old mode 100644 new mode 100755 diff --git a/test/test_files/img2img_basic.png b/test/test_files/img2img_basic.png old mode 100644 new mode 100755 diff --git a/test/test_files/mask_basic.png b/test/test_files/mask_basic.png old mode 100644 new mode 100755 diff --git a/test/test_files/two-faces.jpg b/test/test_files/two-faces.jpg old mode 100644 new mode 100755 diff --git a/test/test_img2img.py b/test/test_img2img.py old mode 100644 new mode 100755 diff --git a/test/test_outputs/.gitkeep b/test/test_outputs/.gitkeep old mode 100644 new mode 100755 diff --git a/test/test_torch_utils.py b/test/test_torch_utils.py old mode 100644 new mode 100755 diff --git a/test/test_txt2img.py b/test/test_txt2img.py old mode 100644 new mode 100755 diff --git a/test/test_utils.py b/test/test_utils.py old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/hypernetwork.txt b/textual_inversion_templates/hypernetwork.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/none.txt b/textual_inversion_templates/none.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/style.txt b/textual_inversion_templates/style.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/style_filewords.txt b/textual_inversion_templates/style_filewords.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/subject.txt b/textual_inversion_templates/subject.txt old mode 100644 new mode 100755 diff --git a/textual_inversion_templates/subject_filewords.txt b/textual_inversion_templates/subject_filewords.txt old mode 100644 new mode 100755 diff --git a/webui-macos-env.sh b/webui-macos-env.sh old mode 100644 new mode 100755 diff --git a/webui-user.bat b/webui-user.bat old mode 100644 new mode 100755 diff --git a/webui-user.sh b/webui-user.sh old mode 100644 new mode 100755 diff --git a/webui.bat b/webui.bat old mode 100644 new mode 100755 diff --git a/webui.py b/webui.py old mode 100644 new mode 100755 From dd08b9bdbfd502648c1a9d86d3c0f30b7077fb35 Mon Sep 17 00:00:00 2001 From: evan Date: Tue, 19 Mar 2024 22:24:05 +0000 Subject: [PATCH 003/125] f --- webui-user.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webui-user.sh b/webui-user.sh index 6d4230ad363..80f7d2479f1 100755 --- a/webui-user.sh +++ b/webui-user.sh @@ -10,16 +10,16 @@ #clone_dir="stable-diffusion-webui" # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" -export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --reinstall-torch --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" +export COMMANDLINE_ARGS="--listen --no-gradio-queue --no-half-vae --xformers --enable-insecure-extension-access --skip-torch-cuda-test --api --port 7890 --autolaunch" # python3 executable -python_cmd="/home/evanhu/.pyenv/versions/3.10.13/envs/venv/bin/python3.10" +python_cmd="/home/evanhu/.pyenv/versions/3.10.13/bin/python3.10" # git executable #export GIT="git" # python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv) -venv_dir="/home/evanhu/.pyenv/versions/3.10.13/envs/venv" +# venv_dir="/home/evanhu/.pyenv/versions/3.10.13/envs/venv" # script to launch to start the app #export LAUNCH_SCRIPT="launch.py" From f12f962bc29bdb58ade5f8e3f5df22bdd9c9c1fc Mon Sep 17 00:00:00 2001 From: Evan Date: Fri, 29 Mar 2024 19:47:17 +0000 Subject: [PATCH 004/125] ignore --- .gitignore | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 6790e9ee728..b732b1205c1 100755 --- a/.gitignore +++ b/.gitignore @@ -11,17 +11,13 @@ __pycache__ /models/**/* /GFPGANv1.3.pth /gfpgan/weights/*.pth -/ui-config.json /outputs -/config.json /log /webui.settings.bat /embeddings /styles.csv /params.txt /styles.csv.bak -/webui-user.bat -/webui-user.sh /interrogate /user.css /.idea @@ -29,12 +25,11 @@ notification.mp3 /SwinIR /textual_inversion .vscode -/extensions /test/stdout.txt /test/stderr.txt /cache.json* -/config_states/ /node_modules /package-lock.json /.coverage* /test/test_outputs +extensions/ From b2d292495c0b21cfa7d69ac9f2be03cf53767432 Mon Sep 17 00:00:00 2001 From: Evan Date: Fri, 29 Mar 2024 19:47:28 +0000 Subject: [PATCH 005/125] files --- config.json | 471 +++ ...23_09_25-03_31_40_Backup (pre-update).json | 144 + ...23_12_06-02_32_45_Backup (pre-update).json | 232 ++ ...24_03_18-18_29_44_Backup (pre-update).json | 265 ++ ui-config.json | 2767 +++++++++++++++++ 5 files changed, 3879 insertions(+) create mode 100755 config.json create mode 100755 config_states/2023_09_25-03_31_40_Backup (pre-update).json create mode 100755 config_states/2023_12_06-02_32_45_Backup (pre-update).json create mode 100644 config_states/2024_03_18-18_29_44_Backup (pre-update).json create mode 100755 ui-config.json diff --git a/config.json b/config.json new file mode 100755 index 00000000000..5a09d9757b2 --- /dev/null +++ b/config.json @@ -0,0 +1,471 @@ +{ + "samples_save": false, + "samples_format": "png", + "samples_filename_pattern": "", + "save_images_add_number": true, + "grid_save": false, + "grid_format": "png", + "grid_extended_filename": false, + "grid_only_if_multiple": true, + "grid_prevent_empty_spots": false, + "grid_zip_filename_pattern": "", + "n_rows": -1, + "enable_pnginfo": true, + "save_txt": false, + "save_images_before_face_restoration": false, + "save_images_before_highres_fix": false, + "save_images_before_color_correction": false, + "save_mask": false, + "save_mask_composite": false, + "jpeg_quality": 80, + "webp_lossless": false, + "export_for_4chan": true, + "img_downscale_threshold": 20.0, + "target_side_length": 4000, + "img_max_size_mp": 200, + "use_original_name_batch": true, + "use_upscaler_name_as_suffix": false, + "save_selected_only": true, + "save_init_img": false, + "temp_dir": "", + "clean_temp_dir_at_start": false, + "outdir_samples": "", + "outdir_txt2img_samples": "outputs/txt2img-images", + "outdir_img2img_samples": "outputs/img2img-images", + "outdir_extras_samples": "outputs/extras-images", + "outdir_grids": "", + "outdir_txt2img_grids": "outputs/txt2img-grids", + "outdir_img2img_grids": "outputs/img2img-grids", + "outdir_save": "log/images", + "outdir_init_images": "outputs/init-images", + "save_to_dirs": true, + "grid_save_to_dirs": true, + "use_save_to_dirs_for_ui": false, + "directories_filename_pattern": "[date]", + "directories_max_prompt_words": 8, + "ESRGAN_tile": 192, + "ESRGAN_tile_overlap": 8, + "realesrgan_enabled_models": [ + "R-ESRGAN 4x+", + "R-ESRGAN 4x+ Anime6B" + ], + "upscaler_for_img2img": null, + "face_restoration_model": "CodeFormer", + "code_former_weight": 0.5, + "face_restoration_unload": false, + "show_warnings": false, + "memmon_poll_rate": 8, + "samples_log_stdout": false, + "multiple_tqdm": true, + "print_hypernet_extra": false, + "list_hidden_files": false, + "unload_models_when_training": false, + "pin_memory": false, + "save_optimizer_state": false, + "save_training_settings_to_txt": true, + "dataset_filename_word_regex": "", + "dataset_filename_join_string": " ", + "training_image_repeats_per_epoch": 1, + "training_write_csv_every": 500, + "training_xattention_optimizations": false, + "training_enable_tensorboard": false, + "training_tensorboard_save_images": false, + "training_tensorboard_flush_every": 120, + "sd_model_checkpoint": "Counterfeit-V3.0_fp32.safetensors [17277fbe68]", + "sd_checkpoint_cache": 0, + "sd_vae_checkpoint_cache": 0, + "sd_vae": "Anything-V3.0.vae.pt", + "sd_vae_as_default": true, + "sd_unet": "Automatic", + "inpainting_mask_weight": 1.0, + "initial_noise_multiplier": 1.0, + "img2img_color_correction": false, + "img2img_fix_steps": false, + "img2img_background_color": "#ffffff", + "enable_quantization": false, + "enable_emphasis": true, + "enable_batch_seeds": true, + "comma_padding_backtrack": 20, + "CLIP_stop_at_last_layers": 1, + "upcast_attn": false, + "randn_source": "GPU", + "cross_attention_optimization": "Automatic", + "s_min_uncond": 1.2, + "token_merging_ratio": 0.1, + "token_merging_ratio_img2img": 0.1, + "token_merging_ratio_hr": 0.0, + "pad_cond_uncond": false, + "experimental_persistent_cond_cache": false, + "use_old_emphasis_implementation": false, + "use_old_karras_scheduler_sigmas": false, + "no_dpmpp_sde_batch_determinism": false, + "use_old_hires_fix_width_height": false, + "dont_fix_second_order_samplers_schedule": false, + "hires_fix_use_firstpass_conds": false, + "interrogate_keep_models_in_memory": false, + "interrogate_return_ranks": false, + "interrogate_clip_num_beams": 1, + "interrogate_clip_min_length": 24, + "interrogate_clip_max_length": 48, + "interrogate_clip_dict_limit": 1500, + "interrogate_clip_skip_categories": [], + "interrogate_deepbooru_score_threshold": 0.5, + "deepbooru_sort_alpha": true, + "deepbooru_use_spaces": true, + "deepbooru_escape": true, + "deepbooru_filter_tags": "", + "extra_networks_show_hidden_directories": true, + "extra_networks_hidden_models": "When searched", + "extra_networks_default_view": "cards", + "extra_networks_default_multiplier": 1.0, + "extra_networks_card_width": 0, + "extra_networks_card_height": 0, + "extra_networks_add_text_separator": " ", + "ui_extra_networks_tab_reorder": "", + "sd_hypernetwork": "None", + "localization": "None", + "gradio_theme": "Default", + "img2img_editor_height": 720, + "return_grid": true, + "return_mask": false, + "return_mask_composite": false, + "do_not_show_images": false, + "send_seed": true, + "send_size": true, + "font": "", + "js_modal_lightbox": true, + "js_modal_lightbox_initially_zoomed": true, + "js_modal_lightbox_gamepad": false, + "js_modal_lightbox_gamepad_repeat": 250, + "show_progress_in_title": true, + "samplers_in_dropdown": true, + "dimensions_and_batch_together": true, + "keyedit_precision_attention": 0.1, + "keyedit_precision_extra": 0.05, + "keyedit_delimiters": ".,\\/!?%^*;:{}=`~()", + "quicksettings_list": [ + "sd_model_checkpoint", + "sd_vae" + ], + "ui_tab_order": [], + "hidden_tabs": [], + "ui_reorder_list": [], + "hires_fix_show_sampler": false, + "hires_fix_show_prompts": false, + "disable_token_counters": false, + "add_model_hash_to_info": true, + "add_model_name_to_info": true, + "add_version_to_infotext": true, + "disable_weights_auto_swap": true, + "infotext_styles": "Apply if any", + "show_progressbar": true, + "live_previews_enable": true, + "live_previews_image_format": "png", + "show_progress_grid": true, + "show_progress_every_n_steps": 10, + "show_progress_type": "Approx NN", + "live_preview_content": "Prompt", + "live_preview_refresh_period": 1000, + "hide_samplers": [], + "eta_ddim": 0.0, + "eta_ancestral": 1.0, + "ddim_discretize": "uniform", + "s_churn": 0.0, + "s_tmin": 0.0, + "s_noise": 1.0, + "k_sched_type": "Automatic", + "sigma_min": 0.0, + "sigma_max": 0.0, + "rho": 0.0, + "eta_noise_seed_delta": 0, + "always_discard_next_to_last_sigma": false, + "uni_pc_variant": "bh1", + "uni_pc_skip_type": "time_uniform", + "uni_pc_order": 3, + "uni_pc_lower_order_final": true, + "postprocessing_enable_in_main_ui": [], + "postprocessing_operation_order": [], + "upscaling_max_images_in_cache": 5, + "disabled_extensions": [ + "sd-webui-loractl", + "stable-diffusion-webui-two-shot" + ], + "disable_all_extensions": "none", + "restore_config_state_file": "", + "sd_checkpoint_hash": "17277fbe68541b183f48855f7998e72068e96dca55c102013a8cefed92aaaaa3", + "ldsr_steps": 100, + "ldsr_cached": false, + "SCUNET_tile": 256, + "SCUNET_tile_overlap": 8, + "SWIN_tile": 192, + "SWIN_tile_overlap": 8, + "lora_functional": false, + "sd_lora": "None", + "lora_preferred_name": "Alias from file", + "lora_add_hashes_to_infotext": true, + "extra_options": [], + "extra_options_accordion": false, + "canvas_hotkey_zoom": "Alt", + "canvas_hotkey_adjust": "Ctrl", + "canvas_hotkey_move": "F", + "canvas_hotkey_fullscreen": "S", + "canvas_hotkey_reset": "R", + "canvas_hotkey_overlap": "O", + "canvas_show_tooltip": true, + "canvas_disabled_functions": [ + "Overlap" + ], + "control_net_model_config": "models/cldm_v15.yaml", + "control_net_model_adapter_config": "models/t2iadapter_sketch_sd14v1.yaml", + "control_net_detectedmap_dir": "detected_maps", + "control_net_models_path": "", + "control_net_modules_path": "", + "control_net_max_models_num": 3, + "control_net_model_cache_size": 1, + "control_net_no_detectmap": false, + "control_net_detectmap_autosaving": false, + "control_net_allow_script_control": false, + "control_net_sync_field_args": false, + "controlnet_show_batch_images_in_ui": false, + "controlnet_increment_seed_during_batch": false, + "controlnet_disable_control_type": false, + "controlnet_disable_openpose_edit": false, + "sd_vae_overrides_per_model_preferences": false, + "SWIN_torch_compile": false, + "hypertile_enable_unet": false, + "hypertile_enable_unet_secondpass": false, + "hypertile_max_depth_unet": 3, + "hypertile_max_tile_unet": 256, + "hypertile_swap_size_unet": 3, + "hypertile_enable_vae": false, + "hypertile_max_depth_vae": 3, + "hypertile_max_tile_vae": 128, + "hypertile_swap_size_vae": 3, + "control_net_unit_count": 3, + "control_net_inpaint_blur_sigma": 7, + "control_net_no_high_res_fix": false, + "controlnet_ignore_noninpaint_mask": false, + "use_aria2": true, + "disable_dns": false, + "show_log": false, + "split_aria2": 64, + "aria2_flags": "", + "insert_sub": true, + "dot_subfolders": true, + "use_LORA": false, + "unpack_zip": false, + "hide_early_access": true, + "custom_api_key": "", + "page_header": false, + "update_log": true, + "image_location": "", + "Checkpoint_subfolder": "None", + "LORA_subfolder": "None", + "LoCon_subfolder": "None", + "TextualInversion_subfolder": "None", + "Poses_subfolder": "None", + "Controlnet_subfolder": "None", + "Hypernetwork_subfolder": "None", + "MotionModule_subfolder": "None", + "SWINIR_upscale_subfolder": "None", + "REALESRGAN_upscale_subfolder": "None", + "GFPGAN_upscale_subfolder": "None", + "BSRGAN_upscale_subfolder": "None", + "ESRGAN_upscale_subfolder": "None", + "VAE_subfolder": "None", + "AestheticGradient_subfolder": "None", + "Wildcards_subfolder": "None", + "Workflows_subfolder": "None", + "Other_subfolder": "None", + "civitai_link_key": "", + "civitai_link_logging": true, + "civitai_api_key": "", + "civitai_download_previews": true, + "civitai_download_triggers": true, + "civitai_nsfw_previews": false, + "civitai_download_missing_models": true, + "civitai_hashify_resources": true, + "civitai_folder_model": "", + "civitai_folder_lora": "", + "civitai_folder_lyco": "", + "save_images_replace_action": "Replace", + "grid_text_active_color": "#000000", + "grid_text_inactive_color": "#999999", + "grid_background_color": "#ffffff", + "save_incomplete_images": false, + "notification_audio": true, + "notification_volume": 100, + "use_old_scheduling": false, + "extra_networks_dir_button_function": false, + "extra_networks_card_text_scale": 1, + "extra_networks_card_show_desc": true, + "extra_networks_card_order_field": "Path", + "extra_networks_card_order": "Ascending", + "textual_inversion_print_at_load": false, + "textual_inversion_add_hashes_to_infotext": true, + "lora_show_all": false, + "lora_hide_unknown_for_versions": [], + "lora_in_memory_limit": 0, + "persistent_cond_cache": true, + "batch_cond_uncond": true, + "s_tmax": 0, + "sgm_noise_multiplier": false, + "sd_checkpoints_limit": 1, + "sd_checkpoints_keep_in_cpu": true, + "tiling": false, + "hires_fix_refiner_pass": "second pass", + "sdxl_crop_top": 0.0, + "sdxl_crop_left": 0.0, + "sdxl_refiner_low_aesthetic_score": 2.5, + "sdxl_refiner_high_aesthetic_score": 6.0, + "auto_vae_precision": true, + "sd_vae_encode_method": "Full", + "sd_vae_decode_method": "Full", + "img2img_extra_noise": 0, + "img2img_sketch_default_brush_color": "#ffffff", + "img2img_inpaint_mask_brush_color": "#ffffff", + "img2img_inpaint_sketch_default_brush_color": "#ffffff", + "img2img_batch_show_results_limit": 32, + "gallery_height": "", + "add_vae_name_to_info": true, + "add_vae_hash_to_info": true, + "add_user_name_to_info": false, + "infotext_skip_pasting": [], + "live_preview_allow_lowvram_full": false, + "live_preview_fast_interrupt": false, + "keyedit_delimiters_whitespace": [ + "Tab", + "Carriage Return", + "Line Feed" + ], + "extra_options_txt2img": [], + "extra_options_img2img": [], + "extra_options_cols": 1, + "compact_prompt_box": false, + "sd_checkpoint_dropdown_use_short": false, + "txt2img_settings_accordion": false, + "img2img_settings_accordion": false, + "gradio_themes_cache": true, + "api_enable_requests": true, + "api_forbid_local_requests": true, + "api_useragent": "", + "auto_launch_browser": "Local", + "enable_console_prompts": false, + "show_gradio_deprecation_warnings": true, + "disable_mmap_load_safetensors": false, + "hide_ldm_prints": true, + "dump_stacks_on_signal": false, + "face_restoration": false, + "postprocessing_existing_caption_action": "Ignore", + "canvas_auto_expand": true, + "canvas_blur_prompt": false, + "animatediff_model_path": "", + "animatediff_default_save_formats": [ + "GIF", + "PNG" + ], + "animatediff_save_to_custom": true, + "animatediff_frame_extract_path": "", + "animatediff_frame_extract_remove": false, + "animatediff_default_frame_extract_method": "ffmpeg", + "animatediff_optimize_gif_palette": false, + "animatediff_optimize_gif_gifsicle": false, + "animatediff_mp4_crf": 23, + "animatediff_mp4_preset": "", + "animatediff_mp4_tune": "", + "animatediff_webp_quality": 80, + "animatediff_webp_lossless": false, + "animatediff_s3_enable": false, + "animatediff_s3_host": "", + "animatediff_s3_port": "", + "animatediff_s3_access_key": "", + "animatediff_s3_secret_key": "", + "animatediff_s3_storge_bucket": "", + "auto_backcompat": true, + "use_downcasted_alpha_bar": false, + "extra_networks_card_description_is_html": false, + "extra_networks_tree_view_default_enabled": false, + "lora_not_found_warning_console": false, + "lora_not_found_gradio_warning": false, + "pad_cond_uncond_v0": false, + "fp8_storage": "Disable", + "cache_fp16_weight": true, + "sd_noise_schedule": "Default", + "emphasis": "Original", + "enable_prompt_comments": true, + "auto_vae_precision_bfloat16": false, + "overlay_inpaint": true, + "sd_webui_modal_lightbox_icon_opacity": 1, + "sd_webui_modal_lightbox_toolbar_opacity": 0.9, + "open_dir_button_choice": "Subdirectory", + "js_live_preview_in_modal_lightbox": false, + "keyedit_move": true, + "include_styles_into_token_counters": true, + "interrupt_after_current": true, + "enable_upscale_progressbar": true, + "dat_enabled_models": [ + "DAT x2", + "DAT x3", + "DAT x4" + ], + "DAT_tile": 192, + "DAT_tile_overlap": 8, + "canvas_hotkey_shrink_brush": "Q", + "canvas_hotkey_grow_brush": "W", + "image_browser_active_tabs": "txt2img, img2img, txt2img-grids, img2img-grids, Extras, Favorites, Others, All, Maintenance", + "image_browser_hidden_components": [], + "image_browser_with_subdirs": true, + "image_browser_preload": false, + "image_browser_copy_image": false, + "image_browser_delete_message": true, + "image_browser_txt_files": true, + "image_browser_debug_level": "0 - none", + "image_browser_delete_recycle": true, + "image_browser_scan_exif": true, + "image_browser_mod_shift": false, + "image_browser_mod_ctrl_shift": false, + "image_browser_ranking_pnginfo": false, + "image_browser_page_columns": 6, + "image_browser_page_rows": 6, + "image_browser_pages_perload": 20, + "image_browser_height_auto": false, + "image_browser_use_thumbnail": false, + "image_browser_thumbnail_size": 200, + "image_browser_thumbnail_crop": false, + "image_browser_swipe": false, + "image_browser_img_tooltips": true, + "image_browser_show_progress": true, + "image_browser_info_add": false, + "image_browser_video_pos": "Above", + "image_browser_video_x": 640, + "image_browser_video_y": 640, + "save_api_info": false, + "auto_save_all_img": false, + "use_local_html": false, + "local_path_in_html": false, + "video_playback": true, + "individual_meta_btn": true, + "model_desc_to_json": true, + "sub_image_location": true, + "save_to_custom": false, + "custom_civitai_proxy": "", + "cabundle_path_proxy": "", + "disable_sll_proxy": false, + "insert_sub_1": false, + "insert_sub_2": false, + "insert_sub_3": false, + "insert_sub_4": false, + "insert_sub_5": false, + "insert_sub_6": false, + "insert_sub_7": false, + "insert_sub_8": false, + "insert_sub_9": false, + "insert_sub_10": false, + "insert_sub_11": false, + "insert_sub_12": false, + "insert_sub_13": false, + "insert_sub_14": false, + "controlnet_disable_photopea_edit": false, + "controlnet_photopea_warning": true, + "controlnet_clip_detector_on_cpu": false +} \ No newline at end of file diff --git a/config_states/2023_09_25-03_31_40_Backup (pre-update).json b/config_states/2023_09_25-03_31_40_Backup (pre-update).json new file mode 100755 index 00000000000..d8738e1dd3e --- /dev/null +++ b/config_states/2023_09_25-03_31_40_Backup (pre-update).json @@ -0,0 +1,144 @@ +{ + "created_at": 1695612700.693513, + "webui": { + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui.git", + "commit_hash": "5ef669de080814067961f28357256e8fe27544f4", + "commit_date": 1693456714, + "branch": "master" + }, + "extensions": { + "multidiffusion-upscaler-for-automatic1111": { + "name": "multidiffusion-upscaler-for-automatic1111", + "path": "/home/np/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", + "commit_hash": "f9f8073e64f4e682838f255215039ba7884553bf", + "commit_date": 1690008791, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "07bed6ccf8a468a45b2833cfdadc749927cbd575", + "commit_date": 1688849641, + "branch": "main", + "have_info_from_repo": false + }, + "stable-diffusion-webui-rembg": { + "name": "stable-diffusion-webui-rembg", + "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", + "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", + "commit_date": 1685885724, + "branch": "master", + "have_info_from_repo": false + }, + "stable-diffusion-webui-two-shot": { + "name": "stable-diffusion-webui-two-shot", + "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", + "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", + "commit_date": 1680434665, + "branch": "main", + "have_info_from_repo": false + }, + "LDSR": { + "name": "LDSR", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/LDSR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "Lora": { + "name": "Lora", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": false, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "ScuNET": { + "name": "ScuNET", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/ScuNET", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "SwinIR": { + "name": "SwinIR", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/SwinIR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "canvas-zoom-and-pan": { + "name": "canvas-zoom-and-pan", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "extra-options-section": { + "name": "extra-options-section", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "mobile": { + "name": "mobile", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/mobile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "prompt-bracket-checker": { + "name": "prompt-bracket-checker", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + } + }, + "name": "Backup (pre-update)" +} \ No newline at end of file diff --git a/config_states/2023_12_06-02_32_45_Backup (pre-update).json b/config_states/2023_12_06-02_32_45_Backup (pre-update).json new file mode 100755 index 00000000000..b5f37a18e43 --- /dev/null +++ b/config_states/2023_12_06-02_32_45_Backup (pre-update).json @@ -0,0 +1,232 @@ +{ + "created_at": 1701829965.133431, + "webui": { + "remote": null, + "commit_hash": "5ef669de080814067961f28357256e8fe27544f4", + "commit_date": 1693456714, + "branch": null + }, + "extensions": { + "aaaaa2": { + "name": "aaaaa2", + "path": "/home/np/stable-diffusion-webui/extensions/aaaaa2", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/anyoneknowsyou/aaaaa2", + "commit_hash": "2a000f20773070493877802ebf87dfe18610d6c0", + "commit_date": 1698317597, + "branch": "main", + "have_info_from_repo": false + }, + "multi-subject-render": { + "name": "multi-subject-render", + "path": "/home/np/stable-diffusion-webui/extensions/multi-subject-render", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Extraltodeus/multi-subject-render.git", + "commit_hash": "03427e26bebdc6da0ccfb749bf3c4e7e33d7458b", + "commit_date": 1678111890, + "branch": "main", + "have_info_from_repo": false + }, + "multidiffusion-upscaler-for-automatic1111": { + "name": "multidiffusion-upscaler-for-automatic1111", + "path": "/home/np/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", + "commit_hash": "f9f8073e64f4e682838f255215039ba7884553bf", + "commit_date": 1690008791, + "branch": "main", + "have_info_from_repo": false + }, + "sd-civitai-browser-plus": { + "name": "sd-civitai-browser-plus", + "path": "/home/np/stable-diffusion-webui/extensions/sd-civitai-browser-plus", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/BlafKing/sd-civitai-browser-plus.git", + "commit_hash": "fecf7900ab7fddc4da5578f1e0e8eb2db5271b94", + "commit_date": 1701655035, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "7a4805c8ea3256a0eab3512280bd4f84ca0c8182", + "commit_date": 1695406428, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-infinite-image-browsing": { + "name": "sd-webui-infinite-image-browsing", + "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-infinite-image-browsing", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/zanllp/sd-webui-infinite-image-browsing.git", + "commit_hash": "16696b075e0560758d091a5164d5733a34912f3c", + "commit_date": 1701605096, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-loractl": { + "name": "sd-webui-loractl", + "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-loractl", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/cheald/sd-webui-loractl.git", + "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", + "commit_date": 1695172598, + "branch": "master", + "have_info_from_repo": false + }, + "sd_civitai_extension": { + "name": "sd_civitai_extension", + "path": "/home/np/stable-diffusion-webui/extensions/sd_civitai_extension", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/civitai/sd_civitai_extension.git", + "commit_hash": "136983e89859fd0477b4a437ed333142a6aa29a4", + "commit_date": 1698727428, + "branch": "main", + "have_info_from_repo": false + }, + "sd_dreambooth_extension": { + "name": "sd_dreambooth_extension", + "path": "/home/np/stable-diffusion-webui/extensions/sd_dreambooth_extension", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/d8ahazard/sd_dreambooth_extension.git", + "commit_hash": "c548ede6a3acb85d78650ff50ae583786b305f0e", + "commit_date": 1700504411, + "branch": "main", + "have_info_from_repo": false + }, + "stable-diffusion-webui-rembg": { + "name": "stable-diffusion-webui-rembg", + "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", + "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", + "commit_date": 1685885724, + "branch": "master", + "have_info_from_repo": false + }, + "stable-diffusion-webui-two-shot": { + "name": "stable-diffusion-webui-two-shot", + "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", + "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", + "commit_date": 1680434665, + "branch": "main", + "have_info_from_repo": false + }, + "LDSR": { + "name": "LDSR", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/LDSR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "Lora": { + "name": "Lora", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "ScuNET": { + "name": "ScuNET", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/ScuNET", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "SwinIR": { + "name": "SwinIR", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/SwinIR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "canvas-zoom-and-pan": { + "name": "canvas-zoom-and-pan", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "extra-options-section": { + "name": "extra-options-section", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "hypertile": { + "name": "hypertile", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/hypertile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "mobile": { + "name": "mobile", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/mobile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "prompt-bracket-checker": { + "name": "prompt-bracket-checker", + "path": "/home/np/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + } + }, + "name": "Backup (pre-update)" +} \ No newline at end of file diff --git a/config_states/2024_03_18-18_29_44_Backup (pre-update).json b/config_states/2024_03_18-18_29_44_Backup (pre-update).json new file mode 100644 index 00000000000..4eb0ed0112d --- /dev/null +++ b/config_states/2024_03_18-18_29_44_Backup (pre-update).json @@ -0,0 +1,265 @@ +{ + "created_at": 1710786584.788067, + "webui": { + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui.git", + "commit_hash": "bef51aed032c0aaa5cfd80445bc4cf0d85b408b5", + "commit_date": 1709352193, + "branch": "master" + }, + "extensions": { + "LDSR": { + "name": "LDSR", + "path": "/home/stable-diffusion-webui/extensions-builtin/LDSR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "Lora": { + "name": "Lora", + "path": "/home/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "ScuNET": { + "name": "ScuNET", + "path": "/home/stable-diffusion-webui/extensions-builtin/ScuNET", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "SwinIR": { + "name": "SwinIR", + "path": "/home/stable-diffusion-webui/extensions-builtin/SwinIR", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "canvas-zoom-and-pan": { + "name": "canvas-zoom-and-pan", + "path": "/home/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "extra-options-section": { + "name": "extra-options-section", + "path": "/home/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "hypertile": { + "name": "hypertile", + "path": "/home/stable-diffusion-webui/extensions-builtin/hypertile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "mobile": { + "name": "mobile", + "path": "/home/stable-diffusion-webui/extensions-builtin/mobile", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "prompt-bracket-checker": { + "name": "prompt-bracket-checker", + "path": "/home/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "soft-inpainting": { + "name": "soft-inpainting", + "path": "/home/stable-diffusion-webui/extensions-builtin/soft-inpainting", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "multi-subject-render": { + "name": "multi-subject-render", + "path": "/home/stable-diffusion-webui/extensions/multi-subject-render", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Extraltodeus/multi-subject-render.git", + "commit_hash": "03427e26bebdc6da0ccfb749bf3c4e7e33d7458b", + "commit_date": 1678111890, + "branch": "main", + "have_info_from_repo": false + }, + "multidiffusion-upscaler-for-automatic1111": { + "name": "multidiffusion-upscaler-for-automatic1111", + "path": "/home/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", + "commit_hash": "fbb24736c9bc374c7f098f82b575fcd14a73936a", + "commit_date": 1698833791, + "branch": "main", + "have_info_from_repo": false + }, + "sd-civitai-browser-plus": { + "name": "sd-civitai-browser-plus", + "path": "/home/stable-diffusion-webui/extensions/sd-civitai-browser-plus", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/BlafKing/sd-civitai-browser-plus.git", + "commit_hash": "c0a82f76d15422804d32eee61b9514821890aed6", + "commit_date": 1701820033, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-animatediff": { + "name": "sd-webui-animatediff", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-animatediff", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/continue-revolution/sd-webui-animatediff.git", + "commit_hash": "bf9212312504189ace1e17a2c973022933abe93d", + "commit_date": 1710503377, + "branch": "master", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "10bd9b25f62deab9acb256301bbf3363c42645e7", + "commit_date": 1700624635, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-infinite-image-browsing": { + "name": "sd-webui-infinite-image-browsing", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-infinite-image-browsing", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/zanllp/sd-webui-infinite-image-browsing.git", + "commit_hash": "16696b075e0560758d091a5164d5733a34912f3c", + "commit_date": 1701605096, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-loractl": { + "name": "sd-webui-loractl", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-loractl", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/cheald/sd-webui-loractl.git", + "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", + "commit_date": 1695172598, + "branch": "master", + "have_info_from_repo": false + }, + "sd_civitai_extension": { + "name": "sd_civitai_extension", + "path": "/home/stable-diffusion-webui/extensions/sd_civitai_extension", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/civitai/sd_civitai_extension.git", + "commit_hash": "136983e89859fd0477b4a437ed333142a6aa29a4", + "commit_date": 1698727428, + "branch": "main", + "have_info_from_repo": false + }, + "sd_dreambooth_extension": { + "name": "sd_dreambooth_extension", + "path": "/home/stable-diffusion-webui/extensions/sd_dreambooth_extension", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/d8ahazard/sd_dreambooth_extension.git", + "commit_hash": "c548ede6a3acb85d78650ff50ae583786b305f0e", + "commit_date": 1700504411, + "branch": "main", + "have_info_from_repo": false + }, + "stable-diffusion-webui-images-browser": { + "name": "stable-diffusion-webui-images-browser", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AlUlkesh/stable-diffusion-webui-images-browser.git", + "commit_hash": "3d2d0f4c7b0599f88df99a9ea66c21bcbec49bda", + "commit_date": 1706884847, + "branch": "main", + "have_info_from_repo": false + }, + "stable-diffusion-webui-rembg": { + "name": "stable-diffusion-webui-rembg", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", + "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", + "commit_date": 1685885724, + "branch": "master", + "have_info_from_repo": false + }, + "stable-diffusion-webui-two-shot": { + "name": "stable-diffusion-webui-two-shot", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", + "enabled": false, + "is_builtin": false, + "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", + "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", + "commit_date": 1680434665, + "branch": "main", + "have_info_from_repo": false + }, + "zulu571": { + "name": "zulu571", + "path": "/home/stable-diffusion-webui/extensions/zulu571", + "enabled": true, + "is_builtin": false, + "remote": "http://47.93.16.222:3000/Iyashinouta/sd-colab-commands-browser", + "commit_hash": "dcd26f39829bda68459b73bd21acc090734ffa29", + "commit_date": 1677534269, + "branch": "main", + "have_info_from_repo": false + } + }, + "name": "Backup (pre-update)" +} \ No newline at end of file diff --git a/ui-config.json b/ui-config.json new file mode 100755 index 00000000000..189b68180d0 --- /dev/null +++ b/ui-config.json @@ -0,0 +1,2767 @@ +{ + "txt2img/Prompt/visible": true, + "txt2img/Prompt/value": "", + "txt2img/Negative prompt/visible": true, + "txt2img/Negative prompt/value": "", + "txt2img/Interrupt/visible": true, + "txt2img/Skip/visible": true, + "txt2img/Generate/visible": true, + "txt2img/↙️/visible": true, + "txt2img/🗑️/visible": true, + "txt2img/🎴/visible": true, + "txt2img/📋/visible": true, + "txt2img/💾/visible": true, + "txt2img/Styles/visible": true, + "txt2img/Styles/value": [], + "txt2img/🔄/visible": true, + "txt2img/Tabs@txt2img_extra_tabs/selected": null, + "txt2img/↕️/visible": true, + "txt2img/Refresh/visible": true, + "txt2img/Sampling method/visible": true, + "txt2img/Sampling method/value": "Euler a", + "txt2img/Sampling steps/visible": true, + "txt2img/Sampling steps/value": 20, + "txt2img/Sampling steps/minimum": 1, + "txt2img/Sampling steps/maximum": 150, + "txt2img/Sampling steps/step": 1, + "txt2img/Restore faces/visible": true, + "txt2img/Restore faces/value": false, + "txt2img/Tiling/visible": true, + "txt2img/Tiling/value": false, + "txt2img/Hires. fix/visible": true, + "txt2img/Hires. fix/value": false, + "txt2img/Upscaler/visible": true, + "txt2img/Upscaler/value": "Latent", + "txt2img/Hires steps/visible": true, + "txt2img/Hires steps/value": 0, + "txt2img/Hires steps/minimum": 0, + "txt2img/Hires steps/maximum": 150, + "txt2img/Hires steps/step": 1, + "txt2img/Denoising strength/visible": true, + "txt2img/Denoising strength/value": 0.7, + "txt2img/Denoising strength/minimum": 0.0, + "txt2img/Denoising strength/maximum": 1.0, + "txt2img/Denoising strength/step": 0.01, + "txt2img/Upscale by/visible": true, + "txt2img/Upscale by/value": 2.0, + "txt2img/Upscale by/minimum": 1.0, + "txt2img/Upscale by/maximum": 4.0, + "txt2img/Upscale by/step": 0.05, + "txt2img/Resize width to/visible": true, + "txt2img/Resize width to/value": 0, + "txt2img/Resize width to/minimum": 0, + "txt2img/Resize width to/maximum": 2048, + "txt2img/Resize width to/step": 8, + "txt2img/Resize height to/visible": true, + "txt2img/Resize height to/value": 0, + "txt2img/Resize height to/minimum": 0, + "txt2img/Resize height to/maximum": 2048, + "txt2img/Resize height to/step": 8, + "txt2img/Hires sampling method/visible": true, + "txt2img/Hires sampling method/value": "Use same sampler", + "txt2img/Hires prompt/visible": true, + "txt2img/Hires prompt/value": "", + "txt2img/Hires negative prompt/visible": true, + "txt2img/Hires negative prompt/value": "", + "txt2img/Width/visible": true, + "txt2img/Width/value": 512, + "txt2img/Width/minimum": 64, + "txt2img/Width/maximum": 2048, + "txt2img/Width/step": 8, + "txt2img/Height/visible": true, + "txt2img/Height/value": 512, + "txt2img/Height/minimum": 64, + "txt2img/Height/maximum": 2048, + "txt2img/Height/step": 8, + "txt2img/Switch dims/visible": true, + "txt2img/Batch count/visible": true, + "txt2img/Batch count/value": 1, + "txt2img/Batch count/minimum": 1, + "txt2img/Batch count/maximum": 100, + "txt2img/Batch count/step": 1, + "txt2img/Batch size/visible": true, + "txt2img/Batch size/value": 1, + "txt2img/Batch size/minimum": 1, + "txt2img/Batch size/maximum": 8, + "txt2img/Batch size/step": 1, + "txt2img/CFG Scale/visible": true, + "txt2img/CFG Scale/value": 7.0, + "txt2img/CFG Scale/minimum": 1.0, + "txt2img/CFG Scale/maximum": 30.0, + "txt2img/CFG Scale/step": 0.5, + "txt2img/Seed/visible": true, + "txt2img/Seed/value": -1.0, + "txt2img/Random seed/visible": true, + "txt2img/Reuse seed/visible": true, + "txt2img/Extra/visible": true, + "txt2img/Extra/value": false, + "txt2img/Variation seed/visible": true, + "txt2img/Variation seed/value": -1.0, + "txt2img/🎲️/visible": true, + "txt2img/♻️/visible": true, + "txt2img/Variation strength/visible": true, + "txt2img/Variation strength/value": 0.0, + "txt2img/Variation strength/minimum": 0, + "txt2img/Variation strength/maximum": 1, + "txt2img/Variation strength/step": 0.01, + "txt2img/Resize seed from width/visible": true, + "txt2img/Resize seed from width/value": 0, + "txt2img/Resize seed from width/minimum": 0, + "txt2img/Resize seed from width/maximum": 2048, + "txt2img/Resize seed from width/step": 8, + "txt2img/Resize seed from height/visible": true, + "txt2img/Resize seed from height/value": 0, + "txt2img/Resize seed from height/minimum": 0, + "txt2img/Resize seed from height/maximum": 2048, + "txt2img/Resize seed from height/step": 8, + "txt2img/Override settings/value": null, + "txt2img/Script/visible": true, + "txt2img/Script/value": "None", + "customscript/prompt_matrix.py/txt2img/Put variable parts at start of prompt/visible": true, + "customscript/prompt_matrix.py/txt2img/Put variable parts at start of prompt/value": false, + "customscript/prompt_matrix.py/txt2img/Use different seed for each picture/visible": true, + "customscript/prompt_matrix.py/txt2img/Use different seed for each picture/value": false, + "customscript/prompt_matrix.py/txt2img/Select prompt/visible": true, + "customscript/prompt_matrix.py/txt2img/Select prompt/value": "positive", + "customscript/prompt_matrix.py/txt2img/Select joining char/visible": true, + "customscript/prompt_matrix.py/txt2img/Select joining char/value": "comma", + "customscript/prompt_matrix.py/txt2img/Grid margins (px)/visible": true, + "customscript/prompt_matrix.py/txt2img/Grid margins (px)/value": 0, + "customscript/prompt_matrix.py/txt2img/Grid margins (px)/minimum": 0, + "customscript/prompt_matrix.py/txt2img/Grid margins (px)/maximum": 500, + "customscript/prompt_matrix.py/txt2img/Grid margins (px)/step": 2, + "customscript/prompts_from_file.py/txt2img/Iterate seed every line/visible": true, + "customscript/prompts_from_file.py/txt2img/Iterate seed every line/value": false, + "customscript/prompts_from_file.py/txt2img/Use same random seed for all lines/visible": true, + "customscript/prompts_from_file.py/txt2img/Use same random seed for all lines/value": false, + "customscript/prompts_from_file.py/txt2img/List of prompt inputs/visible": true, + "customscript/prompts_from_file.py/txt2img/List of prompt inputs/value": "", + "customscript/xyz_grid.py/txt2img/X type/visible": true, + "customscript/xyz_grid.py/txt2img/X type/value": "Seed", + "customscript/xyz_grid.py/txt2img/X values/visible": true, + "customscript/xyz_grid.py/txt2img/X values/value": "", + "customscript/xyz_grid.py/txt2img/Y type/visible": true, + "customscript/xyz_grid.py/txt2img/Y type/value": "Nothing", + "customscript/xyz_grid.py/txt2img/Y values/visible": true, + "customscript/xyz_grid.py/txt2img/Y values/value": "", + "customscript/xyz_grid.py/txt2img/Z type/visible": true, + "customscript/xyz_grid.py/txt2img/Z type/value": "Nothing", + "customscript/xyz_grid.py/txt2img/Z values/visible": true, + "customscript/xyz_grid.py/txt2img/Z values/value": "", + "customscript/xyz_grid.py/txt2img/Draw legend/visible": true, + "customscript/xyz_grid.py/txt2img/Draw legend/value": true, + "customscript/xyz_grid.py/txt2img/Keep -1 for seeds/visible": true, + "customscript/xyz_grid.py/txt2img/Keep -1 for seeds/value": false, + "customscript/xyz_grid.py/txt2img/Include Sub Images/visible": true, + "customscript/xyz_grid.py/txt2img/Include Sub Images/value": false, + "customscript/xyz_grid.py/txt2img/Include Sub Grids/visible": true, + "customscript/xyz_grid.py/txt2img/Include Sub Grids/value": false, + "customscript/xyz_grid.py/txt2img/Grid margins (px)/visible": true, + "customscript/xyz_grid.py/txt2img/Grid margins (px)/value": 0, + "customscript/xyz_grid.py/txt2img/Grid margins (px)/minimum": 0, + "customscript/xyz_grid.py/txt2img/Grid margins (px)/maximum": 500, + "customscript/xyz_grid.py/txt2img/Grid margins (px)/step": 2, + "txt2img/Swap X/Y axes/visible": true, + "txt2img/Swap Y/Z axes/visible": true, + "txt2img/Swap X/Z axes/visible": true, + "txt2img/📂/visible": true, + "txt2img/Save/visible": true, + "txt2img/Zip/visible": true, + "txt2img/Send to img2img/visible": true, + "txt2img/Send to inpaint/visible": true, + "txt2img/Send to extras/visible": true, + "img2img/Prompt/visible": true, + "img2img/Prompt/value": "", + "img2img/Negative prompt/visible": true, + "img2img/Negative prompt/value": "", + "img2img/Interrogate\nCLIP/visible": true, + "img2img/Interrogate\nDeepBooru/visible": true, + "img2img/Interrupt/visible": true, + "img2img/Skip/visible": true, + "img2img/Generate/visible": true, + "img2img/↙️/visible": true, + "img2img/🗑️/visible": true, + "img2img/🎴/visible": true, + "img2img/📋/visible": true, + "img2img/💾/visible": true, + "img2img/Styles/visible": true, + "img2img/Styles/value": [], + "img2img/🔄/visible": true, + "img2img/Tabs@img2img_extra_tabs/selected": null, + "img2img/↕️/visible": true, + "img2img/Refresh/visible": true, + "img2img/Tabs@mode_img2img/selected": null, + "img2img/img2img/visible": true, + "img2img/sketch/visible": true, + "img2img/inpaint/visible": true, + "img2img/inpaint sketch/visible": true, + "img2img/Input directory/visible": true, + "img2img/Input directory/value": "", + "img2img/Output directory/visible": true, + "img2img/Output directory/value": "", + "img2img/Inpaint batch mask directory (required for inpaint batch processing only)/visible": true, + "img2img/Inpaint batch mask directory (required for inpaint batch processing only)/value": "", + "img2img/Resize mode/visible": true, + "img2img/Resize mode/value": "Just resize", + "img2img/Mask blur/visible": true, + "img2img/Mask blur/value": 4, + "img2img/Mask blur/minimum": 0, + "img2img/Mask blur/maximum": 64, + "img2img/Mask blur/step": 1, + "img2img/Mask transparency/value": 0, + "img2img/Mask transparency/minimum": 0, + "img2img/Mask transparency/maximum": 100, + "img2img/Mask transparency/step": 1, + "img2img/Mask mode/visible": true, + "img2img/Mask mode/value": "Inpaint masked", + "img2img/Masked content/visible": true, + "img2img/Masked content/value": "original", + "img2img/Inpaint area/visible": true, + "img2img/Inpaint area/value": "Whole picture", + "img2img/Only masked padding, pixels/visible": true, + "img2img/Only masked padding, pixels/value": 32, + "img2img/Only masked padding, pixels/minimum": 0, + "img2img/Only masked padding, pixels/maximum": 256, + "img2img/Only masked padding, pixels/step": 4, + "img2img/Sampling method/visible": true, + "img2img/Sampling method/value": "Euler a", + "img2img/Sampling steps/visible": true, + "img2img/Sampling steps/value": 20, + "img2img/Sampling steps/minimum": 1, + "img2img/Sampling steps/maximum": 150, + "img2img/Sampling steps/step": 1, + "img2img/Restore faces/visible": true, + "img2img/Restore faces/value": false, + "img2img/Tiling/visible": true, + "img2img/Tiling/value": false, + "img2img/Width/visible": true, + "img2img/Width/value": 512, + "img2img/Width/minimum": 64, + "img2img/Width/maximum": 2048, + "img2img/Width/step": 8, + "img2img/Height/visible": true, + "img2img/Height/value": 512, + "img2img/Height/minimum": 64, + "img2img/Height/maximum": 2048, + "img2img/Height/step": 8, + "img2img/⇅/visible": true, + "img2img/📐/visible": true, + "img2img/Scale/visible": true, + "img2img/Scale/value": 1.0, + "img2img/Scale/minimum": 0.05, + "img2img/Scale/maximum": 4.0, + "img2img/Scale/step": 0.05, + "img2img/Unused/visible": true, + "img2img/Unused/value": 0, + "img2img/Unused/minimum": 0, + "img2img/Unused/maximum": 100, + "img2img/Unused/step": 1, + "img2img/Batch count/visible": true, + "img2img/Batch count/value": 1, + "img2img/Batch count/minimum": 1, + "img2img/Batch count/maximum": 100, + "img2img/Batch count/step": 1, + "img2img/Batch size/visible": true, + "img2img/Batch size/value": 1, + "img2img/Batch size/minimum": 1, + "img2img/Batch size/maximum": 8, + "img2img/Batch size/step": 1, + "img2img/CFG Scale/visible": true, + "img2img/CFG Scale/value": 7.0, + "img2img/CFG Scale/minimum": 1.0, + "img2img/CFG Scale/maximum": 30.0, + "img2img/CFG Scale/step": 0.5, + "img2img/Image CFG Scale/value": 1.5, + "img2img/Image CFG Scale/minimum": 0, + "img2img/Image CFG Scale/maximum": 3.0, + "img2img/Image CFG Scale/step": 0.05, + "img2img/Denoising strength/visible": true, + "img2img/Denoising strength/value": 0.75, + "img2img/Denoising strength/minimum": 0.0, + "img2img/Denoising strength/maximum": 1.0, + "img2img/Denoising strength/step": 0.01, + "img2img/Seed/visible": true, + "img2img/Seed/value": -1.0, + "img2img/Random seed/visible": true, + "img2img/Reuse seed/visible": true, + "img2img/Extra/visible": true, + "img2img/Extra/value": false, + "img2img/Variation seed/visible": true, + "img2img/Variation seed/value": -1.0, + "img2img/🎲️/visible": true, + "img2img/♻️/visible": true, + "img2img/Variation strength/visible": true, + "img2img/Variation strength/value": 0.0, + "img2img/Variation strength/minimum": 0, + "img2img/Variation strength/maximum": 1, + "img2img/Variation strength/step": 0.01, + "img2img/Resize seed from width/visible": true, + "img2img/Resize seed from width/value": 0, + "img2img/Resize seed from width/minimum": 0, + "img2img/Resize seed from width/maximum": 2048, + "img2img/Resize seed from width/step": 8, + "img2img/Resize seed from height/visible": true, + "img2img/Resize seed from height/value": 0, + "img2img/Resize seed from height/minimum": 0, + "img2img/Resize seed from height/maximum": 2048, + "img2img/Resize seed from height/step": 8, + "img2img/Override settings/value": null, + "img2img/Script/visible": true, + "img2img/Script/value": "None", + "customscript/img2imgalt.py/img2img/Override `Sampling method` to Euler?(this method is built for it)/visible": true, + "customscript/img2imgalt.py/img2img/Override `Sampling method` to Euler?(this method is built for it)/value": true, + "customscript/img2imgalt.py/img2img/Override `prompt` to the same value as `original prompt`?(and `negative prompt`)/visible": true, + "customscript/img2imgalt.py/img2img/Override `prompt` to the same value as `original prompt`?(and `negative prompt`)/value": true, + "customscript/img2imgalt.py/img2img/Original prompt/visible": true, + "customscript/img2imgalt.py/img2img/Original prompt/value": "", + "customscript/img2imgalt.py/img2img/Original negative prompt/visible": true, + "customscript/img2imgalt.py/img2img/Original negative prompt/value": "", + "customscript/img2imgalt.py/img2img/Override `Sampling Steps` to the same value as `Decode steps`?/visible": true, + "customscript/img2imgalt.py/img2img/Override `Sampling Steps` to the same value as `Decode steps`?/value": true, + "customscript/img2imgalt.py/img2img/Decode steps/visible": true, + "customscript/img2imgalt.py/img2img/Decode steps/value": 50, + "customscript/img2imgalt.py/img2img/Decode steps/minimum": 1, + "customscript/img2imgalt.py/img2img/Decode steps/maximum": 150, + "customscript/img2imgalt.py/img2img/Decode steps/step": 1, + "customscript/img2imgalt.py/img2img/Override `Denoising strength` to 1?/visible": true, + "customscript/img2imgalt.py/img2img/Override `Denoising strength` to 1?/value": true, + "customscript/img2imgalt.py/img2img/Decode CFG scale/visible": true, + "customscript/img2imgalt.py/img2img/Decode CFG scale/value": 1.0, + "customscript/img2imgalt.py/img2img/Decode CFG scale/minimum": 0.0, + "customscript/img2imgalt.py/img2img/Decode CFG scale/maximum": 15.0, + "customscript/img2imgalt.py/img2img/Decode CFG scale/step": 0.1, + "customscript/img2imgalt.py/img2img/Randomness/visible": true, + "customscript/img2imgalt.py/img2img/Randomness/value": 0.0, + "customscript/img2imgalt.py/img2img/Randomness/minimum": 0.0, + "customscript/img2imgalt.py/img2img/Randomness/maximum": 1.0, + "customscript/img2imgalt.py/img2img/Randomness/step": 0.01, + "customscript/img2imgalt.py/img2img/Sigma adjustment for finding noise for image/visible": true, + "customscript/img2imgalt.py/img2img/Sigma adjustment for finding noise for image/value": false, + "customscript/loopback.py/img2img/Loops/visible": true, + "customscript/loopback.py/img2img/Loops/value": 4, + "customscript/loopback.py/img2img/Loops/minimum": 1, + "customscript/loopback.py/img2img/Loops/maximum": 32, + "customscript/loopback.py/img2img/Loops/step": 1, + "customscript/loopback.py/img2img/Final denoising strength/visible": true, + "customscript/loopback.py/img2img/Final denoising strength/value": 0.5, + "customscript/loopback.py/img2img/Final denoising strength/minimum": 0, + "customscript/loopback.py/img2img/Final denoising strength/maximum": 1, + "customscript/loopback.py/img2img/Final denoising strength/step": 0.01, + "customscript/loopback.py/img2img/Denoising strength curve/visible": true, + "customscript/loopback.py/img2img/Denoising strength curve/value": "Linear", + "customscript/loopback.py/img2img/Append interrogated prompt at each iteration/visible": true, + "customscript/loopback.py/img2img/Append interrogated prompt at each iteration/value": "None", + "customscript/outpainting_mk_2.py/img2img/Pixels to expand/visible": true, + "customscript/outpainting_mk_2.py/img2img/Pixels to expand/value": 128, + "customscript/outpainting_mk_2.py/img2img/Pixels to expand/minimum": 8, + "customscript/outpainting_mk_2.py/img2img/Pixels to expand/maximum": 256, + "customscript/outpainting_mk_2.py/img2img/Pixels to expand/step": 8, + "customscript/outpainting_mk_2.py/img2img/Mask blur/visible": true, + "customscript/outpainting_mk_2.py/img2img/Mask blur/value": 8, + "customscript/outpainting_mk_2.py/img2img/Mask blur/minimum": 0, + "customscript/outpainting_mk_2.py/img2img/Mask blur/maximum": 64, + "customscript/outpainting_mk_2.py/img2img/Mask blur/step": 1, + "customscript/outpainting_mk_2.py/img2img/Fall-off exponent (lower=higher detail)/visible": true, + "customscript/outpainting_mk_2.py/img2img/Fall-off exponent (lower=higher detail)/value": 1.0, + "customscript/outpainting_mk_2.py/img2img/Fall-off exponent (lower=higher detail)/minimum": 0.0, + "customscript/outpainting_mk_2.py/img2img/Fall-off exponent (lower=higher detail)/maximum": 4.0, + "customscript/outpainting_mk_2.py/img2img/Fall-off exponent (lower=higher detail)/step": 0.01, + "customscript/outpainting_mk_2.py/img2img/Color variation/visible": true, + "customscript/outpainting_mk_2.py/img2img/Color variation/value": 0.05, + "customscript/outpainting_mk_2.py/img2img/Color variation/minimum": 0.0, + "customscript/outpainting_mk_2.py/img2img/Color variation/maximum": 1.0, + "customscript/outpainting_mk_2.py/img2img/Color variation/step": 0.01, + "customscript/poor_mans_outpainting.py/img2img/Pixels to expand/visible": true, + "customscript/poor_mans_outpainting.py/img2img/Pixels to expand/value": 128, + "customscript/poor_mans_outpainting.py/img2img/Pixels to expand/minimum": 8, + "customscript/poor_mans_outpainting.py/img2img/Pixels to expand/maximum": 256, + "customscript/poor_mans_outpainting.py/img2img/Pixels to expand/step": 8, + "customscript/poor_mans_outpainting.py/img2img/Mask blur/visible": true, + "customscript/poor_mans_outpainting.py/img2img/Mask blur/value": 4, + "customscript/poor_mans_outpainting.py/img2img/Mask blur/minimum": 0, + "customscript/poor_mans_outpainting.py/img2img/Mask blur/maximum": 64, + "customscript/poor_mans_outpainting.py/img2img/Mask blur/step": 1, + "customscript/poor_mans_outpainting.py/img2img/Masked content/visible": true, + "customscript/poor_mans_outpainting.py/img2img/Masked content/value": "fill", + "customscript/prompt_matrix.py/img2img/Put variable parts at start of prompt/visible": true, + "customscript/prompt_matrix.py/img2img/Put variable parts at start of prompt/value": false, + "customscript/prompt_matrix.py/img2img/Use different seed for each picture/visible": true, + "customscript/prompt_matrix.py/img2img/Use different seed for each picture/value": false, + "customscript/prompt_matrix.py/img2img/Select prompt/visible": true, + "customscript/prompt_matrix.py/img2img/Select prompt/value": "positive", + "customscript/prompt_matrix.py/img2img/Select joining char/visible": true, + "customscript/prompt_matrix.py/img2img/Select joining char/value": "comma", + "customscript/prompt_matrix.py/img2img/Grid margins (px)/visible": true, + "customscript/prompt_matrix.py/img2img/Grid margins (px)/value": 0, + "customscript/prompt_matrix.py/img2img/Grid margins (px)/minimum": 0, + "customscript/prompt_matrix.py/img2img/Grid margins (px)/maximum": 500, + "customscript/prompt_matrix.py/img2img/Grid margins (px)/step": 2, + "customscript/prompts_from_file.py/img2img/Iterate seed every line/visible": true, + "customscript/prompts_from_file.py/img2img/Iterate seed every line/value": false, + "customscript/prompts_from_file.py/img2img/Use same random seed for all lines/visible": true, + "customscript/prompts_from_file.py/img2img/Use same random seed for all lines/value": false, + "customscript/prompts_from_file.py/img2img/List of prompt inputs/visible": true, + "customscript/prompts_from_file.py/img2img/List of prompt inputs/value": "", + "customscript/sd_upscale.py/img2img/Tile overlap/visible": true, + "customscript/sd_upscale.py/img2img/Tile overlap/value": 64, + "customscript/sd_upscale.py/img2img/Tile overlap/minimum": 0, + "customscript/sd_upscale.py/img2img/Tile overlap/maximum": 256, + "customscript/sd_upscale.py/img2img/Tile overlap/step": 16, + "customscript/sd_upscale.py/img2img/Scale Factor/visible": true, + "customscript/sd_upscale.py/img2img/Scale Factor/value": 2.0, + "customscript/sd_upscale.py/img2img/Scale Factor/minimum": 1.0, + "customscript/sd_upscale.py/img2img/Scale Factor/maximum": 4.0, + "customscript/sd_upscale.py/img2img/Scale Factor/step": 0.05, + "customscript/sd_upscale.py/img2img/Upscaler/visible": true, + "customscript/sd_upscale.py/img2img/Upscaler/value": "None", + "customscript/xyz_grid.py/img2img/X type/visible": true, + "customscript/xyz_grid.py/img2img/X type/value": "Seed", + "customscript/xyz_grid.py/img2img/X values/visible": true, + "customscript/xyz_grid.py/img2img/X values/value": "", + "customscript/xyz_grid.py/img2img/Y type/visible": true, + "customscript/xyz_grid.py/img2img/Y type/value": "Nothing", + "customscript/xyz_grid.py/img2img/Y values/visible": true, + "customscript/xyz_grid.py/img2img/Y values/value": "", + "customscript/xyz_grid.py/img2img/Z type/visible": true, + "customscript/xyz_grid.py/img2img/Z type/value": "Nothing", + "customscript/xyz_grid.py/img2img/Z values/visible": true, + "customscript/xyz_grid.py/img2img/Z values/value": "", + "customscript/xyz_grid.py/img2img/Draw legend/visible": true, + "customscript/xyz_grid.py/img2img/Draw legend/value": true, + "customscript/xyz_grid.py/img2img/Keep -1 for seeds/visible": true, + "customscript/xyz_grid.py/img2img/Keep -1 for seeds/value": false, + "customscript/xyz_grid.py/img2img/Include Sub Images/visible": true, + "customscript/xyz_grid.py/img2img/Include Sub Images/value": false, + "customscript/xyz_grid.py/img2img/Include Sub Grids/visible": true, + "customscript/xyz_grid.py/img2img/Include Sub Grids/value": false, + "customscript/xyz_grid.py/img2img/Grid margins (px)/visible": true, + "customscript/xyz_grid.py/img2img/Grid margins (px)/value": 0, + "customscript/xyz_grid.py/img2img/Grid margins (px)/minimum": 0, + "customscript/xyz_grid.py/img2img/Grid margins (px)/maximum": 500, + "customscript/xyz_grid.py/img2img/Grid margins (px)/step": 2, + "img2img/Swap X/Y axes/visible": true, + "img2img/Swap Y/Z axes/visible": true, + "img2img/Swap X/Z axes/visible": true, + "img2img/📂/visible": true, + "img2img/Save/visible": true, + "img2img/Zip/visible": true, + "img2img/Send to img2img/visible": true, + "img2img/Send to inpaint/visible": true, + "img2img/Send to extras/visible": true, + "extras/Tabs@mode_extras/selected": null, + "extras/Input directory/visible": true, + "extras/Input directory/value": "", + "extras/Output directory/visible": true, + "extras/Output directory/value": "", + "extras/Show result images/visible": true, + "extras/Show result images/value": true, + "extras/Generate/visible": true, + "extras/Tabs@extras_resize_mode/selected": null, + "customscript/postprocessing_upscale.py/extras/Resize/visible": true, + "customscript/postprocessing_upscale.py/extras/Resize/value": 4, + "customscript/postprocessing_upscale.py/extras/Resize/minimum": 1.0, + "customscript/postprocessing_upscale.py/extras/Resize/maximum": 8.0, + "customscript/postprocessing_upscale.py/extras/Resize/step": 0.05, + "customscript/postprocessing_upscale.py/extras/Width/visible": true, + "customscript/postprocessing_upscale.py/extras/Width/value": 512, + "customscript/postprocessing_upscale.py/extras/Width/minimum": 64, + "customscript/postprocessing_upscale.py/extras/Width/maximum": 2048, + "customscript/postprocessing_upscale.py/extras/Width/step": 8, + "customscript/postprocessing_upscale.py/extras/Height/visible": true, + "customscript/postprocessing_upscale.py/extras/Height/value": 512, + "customscript/postprocessing_upscale.py/extras/Height/minimum": 64, + "customscript/postprocessing_upscale.py/extras/Height/maximum": 2048, + "customscript/postprocessing_upscale.py/extras/Height/step": 8, + "extras/⇅/visible": true, + "customscript/postprocessing_upscale.py/extras/Crop to fit/visible": true, + "customscript/postprocessing_upscale.py/extras/Crop to fit/value": true, + "customscript/postprocessing_upscale.py/extras/Upscaler 1/visible": true, + "customscript/postprocessing_upscale.py/extras/Upscaler 1/value": "None", + "customscript/postprocessing_upscale.py/extras/Upscaler 2/visible": true, + "customscript/postprocessing_upscale.py/extras/Upscaler 2/value": "None", + "customscript/postprocessing_upscale.py/extras/Upscaler 2 visibility/visible": true, + "customscript/postprocessing_upscale.py/extras/Upscaler 2 visibility/value": 0.0, + "customscript/postprocessing_upscale.py/extras/Upscaler 2 visibility/minimum": 0.0, + "customscript/postprocessing_upscale.py/extras/Upscaler 2 visibility/maximum": 1.0, + "customscript/postprocessing_upscale.py/extras/Upscaler 2 visibility/step": 0.001, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN visibility/visible": true, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN visibility/value": 0, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN visibility/minimum": 0.0, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN visibility/maximum": 1.0, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN visibility/step": 0.001, + "customscript/postprocessing_codeformer.py/extras/CodeFormer visibility/visible": true, + "customscript/postprocessing_codeformer.py/extras/CodeFormer visibility/value": 0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer visibility/minimum": 0.0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer visibility/maximum": 1.0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer visibility/step": 0.001, + "customscript/postprocessing_codeformer.py/extras/CodeFormer weight (0 = maximum effect, 1 = minimum effect)/visible": true, + "customscript/postprocessing_codeformer.py/extras/CodeFormer weight (0 = maximum effect, 1 = minimum effect)/value": 0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer weight (0 = maximum effect, 1 = minimum effect)/minimum": 0.0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer weight (0 = maximum effect, 1 = minimum effect)/maximum": 1.0, + "customscript/postprocessing_codeformer.py/extras/CodeFormer weight (0 = maximum effect, 1 = minimum effect)/step": 0.001, + "extras/📂/visible": true, + "extras/Send to img2img/visible": true, + "extras/Send to inpaint/visible": true, + "extras/Send to extras/visible": true, + "pnginfo/Send to txt2img/visible": true, + "pnginfo/Send to img2img/visible": true, + "pnginfo/Send to inpaint/visible": true, + "pnginfo/Send to extras/visible": true, + "modelmerger/Primary model (A)/visible": true, + "modelmerger/Primary model (A)/value": null, + "modelmerger/🔄/visible": true, + "modelmerger/Secondary model (B)/visible": true, + "modelmerger/Secondary model (B)/value": null, + "modelmerger/Tertiary model (C)/visible": true, + "modelmerger/Tertiary model (C)/value": null, + "modelmerger/Custom Name (Optional)/visible": true, + "modelmerger/Custom Name (Optional)/value": "", + "modelmerger/Multiplier (M) - set to 0 to get model A/visible": true, + "modelmerger/Multiplier (M) - set to 0 to get model A/value": 0.3, + "modelmerger/Multiplier (M) - set to 0 to get model A/minimum": 0.0, + "modelmerger/Multiplier (M) - set to 0 to get model A/maximum": 1.0, + "modelmerger/Multiplier (M) - set to 0 to get model A/step": 0.05, + "modelmerger/Interpolation Method/visible": true, + "modelmerger/Interpolation Method/value": "Weighted sum", + "modelmerger/Checkpoint format/visible": true, + "modelmerger/Checkpoint format/value": "safetensors", + "modelmerger/Save as float16/visible": true, + "modelmerger/Save as float16/value": false, + "modelmerger/Save metadata (.safetensors only)/visible": true, + "modelmerger/Save metadata (.safetensors only)/value": true, + "modelmerger/Copy config from/visible": true, + "modelmerger/Copy config from/value": "A, B or C", + "modelmerger/Bake in VAE/visible": true, + "modelmerger/Bake in VAE/value": "None", + "modelmerger/Discard weights with matching name/visible": true, + "modelmerger/Discard weights with matching name/value": "", + "modelmerger/Merge/visible": true, + "train/Tabs@train_tabs/selected": null, + "train/Name/visible": true, + "train/Name/value": "", + "train/Initialization text/visible": true, + "train/Initialization text/value": "*", + "train/Number of vectors per token/visible": true, + "train/Number of vectors per token/value": 1, + "train/Number of vectors per token/minimum": 1, + "train/Number of vectors per token/maximum": 75, + "train/Number of vectors per token/step": 1, + "train/Overwrite Old Embedding/visible": true, + "train/Overwrite Old Embedding/value": false, + "train/Create embedding/visible": true, + "train/Enter hypernetwork layer structure/visible": true, + "train/Enter hypernetwork layer structure/value": "1, 2, 1", + "train/Select activation function of hypernetwork. Recommended : Swish / Linear(none)/visible": true, + "train/Select activation function of hypernetwork. Recommended : Swish / Linear(none)/value": "linear", + "train/Select Layer weights initialization. Recommended: Kaiming for relu-like, Xavier for sigmoid-like, Normal otherwise/visible": true, + "train/Select Layer weights initialization. Recommended: Kaiming for relu-like, Xavier for sigmoid-like, Normal otherwise/value": "Normal", + "train/Add layer normalization/visible": true, + "train/Add layer normalization/value": false, + "train/Use dropout/visible": true, + "train/Use dropout/value": false, + "train/Enter hypernetwork Dropout structure (or empty). Recommended : 0~0.35 incrementing sequence: 0, 0.05, 0.15/visible": true, + "train/Enter hypernetwork Dropout structure (or empty). Recommended : 0~0.35 incrementing sequence: 0, 0.05, 0.15/value": "0, 0, 0", + "train/Overwrite Old Hypernetwork/visible": true, + "train/Overwrite Old Hypernetwork/value": false, + "train/Create hypernetwork/visible": true, + "train/Source directory/visible": true, + "train/Source directory/value": "", + "train/Destination directory/visible": true, + "train/Destination directory/value": "", + "train/Width/visible": true, + "train/Width/value": 512, + "train/Width/minimum": 64, + "train/Width/maximum": 2048, + "train/Width/step": 8, + "train/Height/visible": true, + "train/Height/value": 512, + "train/Height/minimum": 64, + "train/Height/maximum": 2048, + "train/Height/step": 8, + "train/Existing Caption txt Action/visible": true, + "train/Existing Caption txt Action/value": "ignore", + "train/Keep original size/visible": true, + "train/Keep original size/value": false, + "train/Create flipped copies/visible": true, + "train/Create flipped copies/value": false, + "train/Split oversized images/visible": true, + "train/Split oversized images/value": false, + "train/Auto focal point crop/visible": true, + "train/Auto focal point crop/value": false, + "train/Auto-sized crop/visible": true, + "train/Auto-sized crop/value": false, + "train/Use BLIP for caption/visible": true, + "train/Use BLIP for caption/value": false, + "train/Use deepbooru for caption/visible": true, + "train/Use deepbooru for caption/value": false, + "train/Split image threshold/visible": true, + "train/Split image threshold/value": 0.5, + "train/Split image threshold/minimum": 0.0, + "train/Split image threshold/maximum": 1.0, + "train/Split image threshold/step": 0.05, + "train/Split image overlap ratio/visible": true, + "train/Split image overlap ratio/value": 0.2, + "train/Split image overlap ratio/minimum": 0.0, + "train/Split image overlap ratio/maximum": 0.9, + "train/Split image overlap ratio/step": 0.05, + "train/Focal point face weight/visible": true, + "train/Focal point face weight/value": 0.9, + "train/Focal point face weight/minimum": 0.0, + "train/Focal point face weight/maximum": 1.0, + "train/Focal point face weight/step": 0.05, + "train/Focal point entropy weight/visible": true, + "train/Focal point entropy weight/value": 0.15, + "train/Focal point entropy weight/minimum": 0.0, + "train/Focal point entropy weight/maximum": 1.0, + "train/Focal point entropy weight/step": 0.05, + "train/Focal point edges weight/visible": true, + "train/Focal point edges weight/value": 0.5, + "train/Focal point edges weight/minimum": 0.0, + "train/Focal point edges weight/maximum": 1.0, + "train/Focal point edges weight/step": 0.05, + "train/Create debug image/visible": true, + "train/Create debug image/value": false, + "train/Dimension lower bound/visible": true, + "train/Dimension lower bound/value": 384, + "train/Dimension lower bound/minimum": 64, + "train/Dimension lower bound/maximum": 2048, + "train/Dimension lower bound/step": 8, + "train/Dimension upper bound/visible": true, + "train/Dimension upper bound/value": 768, + "train/Dimension upper bound/minimum": 64, + "train/Dimension upper bound/maximum": 2048, + "train/Dimension upper bound/step": 8, + "train/Area lower bound/visible": true, + "train/Area lower bound/value": 4096, + "train/Area lower bound/minimum": 4096, + "train/Area lower bound/maximum": 4194304, + "train/Area lower bound/step": 1, + "train/Area upper bound/visible": true, + "train/Area upper bound/value": 409600, + "train/Area upper bound/minimum": 4096, + "train/Area upper bound/maximum": 4194304, + "train/Area upper bound/step": 1, + "train/Resizing objective/visible": true, + "train/Resizing objective/value": "Maximize area", + "train/Error threshold/visible": true, + "train/Error threshold/value": 0.1, + "train/Error threshold/minimum": 0, + "train/Error threshold/maximum": 1, + "train/Error threshold/step": 0.01, + "train/Interrupt/visible": true, + "train/Preprocess/visible": true, + "train/Embedding/visible": true, + "train/Embedding/value": null, + "train/🔄/visible": true, + "train/Hypernetwork/visible": true, + "train/Hypernetwork/value": null, + "train/Embedding Learning rate/visible": true, + "train/Embedding Learning rate/value": "0.005", + "train/Hypernetwork Learning rate/visible": true, + "train/Hypernetwork Learning rate/value": "0.00001", + "train/Gradient Clipping/visible": true, + "train/Gradient Clipping/value": "disabled", + "train/Batch size/visible": true, + "train/Batch size/value": 1, + "train/Gradient accumulation steps/visible": true, + "train/Gradient accumulation steps/value": 1, + "train/Dataset directory/visible": true, + "train/Dataset directory/value": "", + "train/Log directory/visible": true, + "train/Log directory/value": "textual_inversion", + "train/Prompt template/visible": true, + "train/Prompt template/value": "style_filewords.txt", + "train/Do not resize images/visible": true, + "train/Do not resize images/value": false, + "train/Max steps/visible": true, + "train/Max steps/value": 100000, + "train/Save an image to log directory every N steps, 0 to disable/visible": true, + "train/Save an image to log directory every N steps, 0 to disable/value": 500, + "train/Save a copy of embedding to log directory every N steps, 0 to disable/visible": true, + "train/Save a copy of embedding to log directory every N steps, 0 to disable/value": 500, + "train/Use PNG alpha channel as loss weight/visible": true, + "train/Use PNG alpha channel as loss weight/value": false, + "train/Save images with embedding in PNG chunks/visible": true, + "train/Save images with embedding in PNG chunks/value": true, + "train/Read parameters (prompt, etc...) from txt2img tab when making previews/visible": true, + "train/Read parameters (prompt, etc...) from txt2img tab when making previews/value": false, + "train/Shuffle tags by ',' when creating prompts./visible": true, + "train/Shuffle tags by ',' when creating prompts./value": false, + "train/Drop out tags when creating prompts./visible": true, + "train/Drop out tags when creating prompts./value": 0, + "train/Drop out tags when creating prompts./minimum": 0, + "train/Drop out tags when creating prompts./maximum": 1, + "train/Drop out tags when creating prompts./step": 0.1, + "train/Choose latent sampling method/visible": true, + "train/Choose latent sampling method/value": "once", + "train/Train Embedding/visible": true, + "train/Train Hypernetwork/visible": true, + "webui/Tabs@tabs/selected": null, + "txt2img/Input Directory/visible": true, + "txt2img/Input Directory/value": "", + "txt2img/New Canvas Width/visible": true, + "txt2img/New Canvas Width/value": 512, + "txt2img/New Canvas Width/minimum": 256, + "txt2img/New Canvas Width/maximum": 1024, + "txt2img/New Canvas Width/step": 64, + "txt2img/New Canvas Height/visible": true, + "txt2img/New Canvas Height/value": 512, + "txt2img/New Canvas Height/minimum": 256, + "txt2img/New Canvas Height/maximum": 1024, + "txt2img/New Canvas Height/step": 64, + "txt2img/Create New Canvas/visible": true, + "txt2img/Cancel/visible": true, + "txt2img/Enable/visible": true, + "txt2img/Enable/value": false, + "txt2img/Low VRAM/visible": true, + "txt2img/Low VRAM/value": false, + "txt2img/Pixel Perfect/visible": true, + "txt2img/Pixel Perfect/value": false, + "txt2img/Allow Preview/visible": true, + "txt2img/Allow Preview/value": false, + "txt2img/Preview as Input/value": false, + "txt2img/Control Type/visible": true, + "txt2img/Control Type/value": "All", + "txt2img/Preprocessor/visible": true, + "txt2img/Preprocessor/value": "none", + "txt2img/Model/visible": true, + "txt2img/Model/value": "None", + "txt2img/Control Weight/visible": true, + "txt2img/Control Weight/value": 1.0, + "txt2img/Control Weight/minimum": 0.0, + "txt2img/Control Weight/maximum": 2.0, + "txt2img/Control Weight/step": 0.05, + "txt2img/Starting Control Step/visible": true, + "txt2img/Starting Control Step/value": 0.0, + "txt2img/Starting Control Step/minimum": 0.0, + "txt2img/Starting Control Step/maximum": 1.0, + "txt2img/Starting Control Step/step": 0.01, + "txt2img/Ending Control Step/visible": true, + "txt2img/Ending Control Step/value": 1.0, + "txt2img/Ending Control Step/minimum": 0.0, + "txt2img/Ending Control Step/maximum": 1.0, + "txt2img/Ending Control Step/step": 0.01, + "txt2img/Preprocessor resolution/value": -1, + "txt2img/Preprocessor resolution/minimum": 64, + "txt2img/Preprocessor resolution/maximum": 2048, + "txt2img/Preprocessor resolution/step": 10, + "txt2img/Threshold A/value": -1, + "txt2img/Threshold A/minimum": 64, + "txt2img/Threshold A/maximum": 1024, + "txt2img/Threshold A/step": 1, + "txt2img/Threshold B/value": -1, + "txt2img/Threshold B/minimum": 64, + "txt2img/Threshold B/maximum": 1024, + "txt2img/Threshold B/step": 1, + "txt2img/Control Mode/visible": true, + "txt2img/Control Mode/value": "Balanced", + "txt2img/Resize Mode/visible": true, + "txt2img/Resize Mode/value": "Crop and Resize", + "txt2img/[Loopback] Automatically send generated images to this ControlNet unit/visible": true, + "txt2img/[Loopback] Automatically send generated images to this ControlNet unit/value": false, + "customscript/movie2movie.py/txt2img/Duration/visible": true, + "customscript/movie2movie.py/txt2img/Duration/value": 50.0, + "customscript/movie2movie.py/txt2img/Duration/minimum": 10.0, + "customscript/movie2movie.py/txt2img/Duration/maximum": 200.0, + "customscript/movie2movie.py/txt2img/Duration/step": 10, + "customscript/movie2movie.py/txt2img/Save preprocessed/visible": true, + "customscript/movie2movie.py/txt2img/Save preprocessed/value": false, + "img2img/Controlnet input directory/visible": true, + "img2img/Controlnet input directory/value": "", + "img2img/Input Directory/visible": true, + "img2img/Input Directory/value": "", + "img2img/New Canvas Width/visible": true, + "img2img/New Canvas Width/value": 512, + "img2img/New Canvas Width/minimum": 256, + "img2img/New Canvas Width/maximum": 1024, + "img2img/New Canvas Width/step": 64, + "img2img/New Canvas Height/visible": true, + "img2img/New Canvas Height/value": 512, + "img2img/New Canvas Height/minimum": 256, + "img2img/New Canvas Height/maximum": 1024, + "img2img/New Canvas Height/step": 64, + "img2img/Create New Canvas/visible": true, + "img2img/Cancel/visible": true, + "img2img/Enable/visible": true, + "img2img/Enable/value": false, + "img2img/Low VRAM/visible": true, + "img2img/Low VRAM/value": false, + "img2img/Pixel Perfect/visible": true, + "img2img/Pixel Perfect/value": false, + "img2img/Allow Preview/visible": true, + "img2img/Allow Preview/value": false, + "img2img/Preview as Input/value": false, + "img2img/Control Type/visible": true, + "img2img/Control Type/value": "All", + "img2img/Preprocessor/visible": true, + "img2img/Preprocessor/value": "none", + "img2img/Model/visible": true, + "img2img/Model/value": "None", + "img2img/Control Weight/visible": true, + "img2img/Control Weight/value": 1.0, + "img2img/Control Weight/minimum": 0.0, + "img2img/Control Weight/maximum": 2.0, + "img2img/Control Weight/step": 0.05, + "img2img/Starting Control Step/visible": true, + "img2img/Starting Control Step/value": 0.0, + "img2img/Starting Control Step/minimum": 0.0, + "img2img/Starting Control Step/maximum": 1.0, + "img2img/Starting Control Step/step": 0.01, + "img2img/Ending Control Step/visible": true, + "img2img/Ending Control Step/value": 1.0, + "img2img/Ending Control Step/minimum": 0.0, + "img2img/Ending Control Step/maximum": 1.0, + "img2img/Ending Control Step/step": 0.01, + "img2img/Preprocessor resolution/value": -1, + "img2img/Preprocessor resolution/minimum": 64, + "img2img/Preprocessor resolution/maximum": 2048, + "img2img/Preprocessor resolution/step": 10, + "img2img/Threshold A/value": -1, + "img2img/Threshold A/minimum": 64, + "img2img/Threshold A/maximum": 1024, + "img2img/Threshold A/step": 1, + "img2img/Threshold B/value": -1, + "img2img/Threshold B/minimum": 64, + "img2img/Threshold B/maximum": 1024, + "img2img/Threshold B/step": 1, + "img2img/Control Mode/visible": true, + "img2img/Control Mode/value": "Balanced", + "img2img/Resize Mode/visible": true, + "img2img/Resize Mode/value": "Crop and Resize", + "img2img/[Loopback] Automatically send generated images to this ControlNet unit/visible": true, + "img2img/[Loopback] Automatically send generated images to this ControlNet unit/value": false, + "customscript/movie2movie.py/img2img/Duration/visible": true, + "customscript/movie2movie.py/img2img/Duration/value": 50.0, + "customscript/movie2movie.py/img2img/Duration/minimum": 10.0, + "customscript/movie2movie.py/img2img/Duration/maximum": 200.0, + "customscript/movie2movie.py/img2img/Duration/step": 10, + "customscript/movie2movie.py/img2img/Save preprocessed/visible": true, + "customscript/movie2movie.py/img2img/Save preprocessed/value": false, + "customscript/postprocessing_rembg.py/extras/Remove background/visible": true, + "customscript/postprocessing_rembg.py/extras/Remove background/value": "None", + "customscript/postprocessing_rembg.py/extras/Return mask/visible": true, + "customscript/postprocessing_rembg.py/extras/Return mask/value": false, + "customscript/postprocessing_rembg.py/extras/Alpha matting/visible": true, + "customscript/postprocessing_rembg.py/extras/Alpha matting/value": false, + "customscript/postprocessing_rembg.py/extras/Erode size/visible": true, + "customscript/postprocessing_rembg.py/extras/Erode size/value": 10, + "customscript/postprocessing_rembg.py/extras/Erode size/minimum": 0, + "customscript/postprocessing_rembg.py/extras/Erode size/maximum": 40, + "customscript/postprocessing_rembg.py/extras/Erode size/step": 1, + "customscript/postprocessing_rembg.py/extras/Foreground threshold/visible": true, + "customscript/postprocessing_rembg.py/extras/Foreground threshold/value": 240, + "customscript/postprocessing_rembg.py/extras/Foreground threshold/minimum": 0, + "customscript/postprocessing_rembg.py/extras/Foreground threshold/maximum": 255, + "customscript/postprocessing_rembg.py/extras/Foreground threshold/step": 1, + "customscript/postprocessing_rembg.py/extras/Background threshold/visible": true, + "customscript/postprocessing_rembg.py/extras/Background threshold/value": 10, + "customscript/postprocessing_rembg.py/extras/Background threshold/minimum": 0, + "customscript/postprocessing_rembg.py/extras/Background threshold/maximum": 255, + "customscript/postprocessing_rembg.py/extras/Background threshold/step": 1, + "txt2img/Tabs@txt2img_controlnet_tabs/selected": null, + "img2img/Tabs@img2img_controlnet_tabs/selected": null, + "customscript/tilediffusion.py/txt2img/Enable Tiled Diffusion/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Tiled Diffusion/value": false, + "customscript/tilediffusion.py/txt2img/Overwrite image size/visible": true, + "customscript/tilediffusion.py/txt2img/Overwrite image size/value": false, + "customscript/tilediffusion.py/txt2img/Keep input image size/value": true, + "customscript/tilediffusion.py/txt2img/Image width/visible": true, + "customscript/tilediffusion.py/txt2img/Image width/value": 1024, + "customscript/tilediffusion.py/txt2img/Image width/minimum": 256, + "customscript/tilediffusion.py/txt2img/Image width/maximum": 16384, + "customscript/tilediffusion.py/txt2img/Image width/step": 16, + "customscript/tilediffusion.py/txt2img/Image height/visible": true, + "customscript/tilediffusion.py/txt2img/Image height/value": 1024, + "customscript/tilediffusion.py/txt2img/Image height/minimum": 256, + "customscript/tilediffusion.py/txt2img/Image height/maximum": 16384, + "customscript/tilediffusion.py/txt2img/Image height/step": 16, + "customscript/tilediffusion.py/txt2img/Method/visible": true, + "customscript/tilediffusion.py/txt2img/Method/value": "MultiDiffusion", + "customscript/tilediffusion.py/txt2img/Move ControlNet tensor to CPU (if applicable)/visible": true, + "customscript/tilediffusion.py/txt2img/Move ControlNet tensor to CPU (if applicable)/value": false, + "txt2img/Free GPU/visible": true, + "customscript/tilediffusion.py/txt2img/Latent tile width/visible": true, + "customscript/tilediffusion.py/txt2img/Latent tile width/value": 96, + "customscript/tilediffusion.py/txt2img/Latent tile width/minimum": 16, + "customscript/tilediffusion.py/txt2img/Latent tile width/maximum": 256, + "customscript/tilediffusion.py/txt2img/Latent tile width/step": 16, + "customscript/tilediffusion.py/txt2img/Latent tile height/visible": true, + "customscript/tilediffusion.py/txt2img/Latent tile height/value": 96, + "customscript/tilediffusion.py/txt2img/Latent tile height/minimum": 16, + "customscript/tilediffusion.py/txt2img/Latent tile height/maximum": 256, + "customscript/tilediffusion.py/txt2img/Latent tile height/step": 16, + "customscript/tilediffusion.py/txt2img/Latent tile overlap/visible": true, + "customscript/tilediffusion.py/txt2img/Latent tile overlap/value": 48, + "customscript/tilediffusion.py/txt2img/Latent tile overlap/minimum": 0, + "customscript/tilediffusion.py/txt2img/Latent tile overlap/maximum": 256, + "customscript/tilediffusion.py/txt2img/Latent tile overlap/step": 4, + "customscript/tilediffusion.py/txt2img/Latent tile batch size/visible": true, + "customscript/tilediffusion.py/txt2img/Latent tile batch size/value": 4, + "customscript/tilediffusion.py/txt2img/Latent tile batch size/minimum": 1, + "customscript/tilediffusion.py/txt2img/Latent tile batch size/maximum": 8, + "customscript/tilediffusion.py/txt2img/Latent tile batch size/step": 1, + "customscript/tilediffusion.py/txt2img/Upscaler/visible": true, + "customscript/tilediffusion.py/txt2img/Upscaler/value": "None", + "customscript/tilediffusion.py/txt2img/Scale Factor/visible": true, + "customscript/tilediffusion.py/txt2img/Scale Factor/value": 2.0, + "customscript/tilediffusion.py/txt2img/Scale Factor/minimum": 1.0, + "customscript/tilediffusion.py/txt2img/Scale Factor/maximum": 8.0, + "customscript/tilediffusion.py/txt2img/Scale Factor/step": 0.05, + "customscript/tilediffusion.py/txt2img/Enable Noise Inversion/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Noise Inversion/value": false, + "customscript/tilediffusion.py/txt2img/Inversion steps/visible": true, + "customscript/tilediffusion.py/txt2img/Inversion steps/value": 10, + "customscript/tilediffusion.py/txt2img/Inversion steps/minimum": 1, + "customscript/tilediffusion.py/txt2img/Inversion steps/maximum": 200, + "customscript/tilediffusion.py/txt2img/Inversion steps/step": 1, + "customscript/tilediffusion.py/txt2img/Retouch/visible": true, + "customscript/tilediffusion.py/txt2img/Retouch/value": 1, + "customscript/tilediffusion.py/txt2img/Retouch/minimum": 1, + "customscript/tilediffusion.py/txt2img/Retouch/maximum": 100, + "customscript/tilediffusion.py/txt2img/Retouch/step": 0.1, + "customscript/tilediffusion.py/txt2img/Renoise strength/visible": true, + "customscript/tilediffusion.py/txt2img/Renoise strength/value": 1, + "customscript/tilediffusion.py/txt2img/Renoise strength/minimum": 0, + "customscript/tilediffusion.py/txt2img/Renoise strength/maximum": 2, + "customscript/tilediffusion.py/txt2img/Renoise strength/step": 0.01, + "customscript/tilediffusion.py/txt2img/Renoise kernel size/visible": true, + "customscript/tilediffusion.py/txt2img/Renoise kernel size/value": 64, + "customscript/tilediffusion.py/txt2img/Renoise kernel size/minimum": 2, + "customscript/tilediffusion.py/txt2img/Renoise kernel size/maximum": 512, + "customscript/tilediffusion.py/txt2img/Renoise kernel size/step": 1, + "customscript/tilediffusion.py/txt2img/Enable Control/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Control/value": false, + "customscript/tilediffusion.py/txt2img/Draw full canvas background/visible": true, + "customscript/tilediffusion.py/txt2img/Draw full canvas background/value": false, + "customscript/tilediffusion.py/txt2img/Causalize layers/value": false, + "txt2img/Create txt2img canvas/visible": true, + "txt2img/Custom Config File/visible": true, + "txt2img/Custom Config File/value": "config.json", + "txt2img/💾 Save/visible": true, + "txt2img/⚙️ Load/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 1/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 1/value": false, + "customscript/tilediffusion.py/txt2img/Type/visible": true, + "customscript/tilediffusion.py/txt2img/Type/value": "Background", + "customscript/tilediffusion.py/txt2img/Feather/value": 0.2, + "customscript/tilediffusion.py/txt2img/Feather/minimum": 0, + "customscript/tilediffusion.py/txt2img/Feather/maximum": 1, + "customscript/tilediffusion.py/txt2img/Feather/step": 0.05, + "customscript/tilediffusion.py/txt2img/x/visible": true, + "customscript/tilediffusion.py/txt2img/x/value": 0.4, + "customscript/tilediffusion.py/txt2img/x/minimum": 0.0, + "customscript/tilediffusion.py/txt2img/x/maximum": 1.0, + "customscript/tilediffusion.py/txt2img/x/step": 0.0001, + "customscript/tilediffusion.py/txt2img/y/visible": true, + "customscript/tilediffusion.py/txt2img/y/value": 0.4, + "customscript/tilediffusion.py/txt2img/y/minimum": 0.0, + "customscript/tilediffusion.py/txt2img/y/maximum": 1.0, + "customscript/tilediffusion.py/txt2img/y/step": 0.0001, + "customscript/tilediffusion.py/txt2img/w/visible": true, + "customscript/tilediffusion.py/txt2img/w/value": 0.2, + "customscript/tilediffusion.py/txt2img/w/minimum": 0.0, + "customscript/tilediffusion.py/txt2img/w/maximum": 1.0, + "customscript/tilediffusion.py/txt2img/w/step": 0.0001, + "customscript/tilediffusion.py/txt2img/h/visible": true, + "customscript/tilediffusion.py/txt2img/h/value": 0.2, + "customscript/tilediffusion.py/txt2img/h/minimum": 0.0, + "customscript/tilediffusion.py/txt2img/h/maximum": 1.0, + "customscript/tilediffusion.py/txt2img/h/step": 0.0001, + "customscript/tilediffusion.py/txt2img/Seed/visible": true, + "customscript/tilediffusion.py/txt2img/Seed/value": -1.0, + "txt2img/🎲/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 2/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 2/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 3/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 3/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 4/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 4/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 5/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 5/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 6/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 6/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 7/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 7/value": false, + "customscript/tilediffusion.py/txt2img/Enable Region 8/visible": true, + "customscript/tilediffusion.py/txt2img/Enable Region 8/value": false, + "customscript/vae_optimize.py/txt2img/Enable Tiled VAE/visible": true, + "customscript/vae_optimize.py/txt2img/Enable Tiled VAE/value": false, + "customscript/vae_optimize.py/txt2img/Move VAE to GPU (if possible)/visible": true, + "customscript/vae_optimize.py/txt2img/Move VAE to GPU (if possible)/value": true, + "customscript/vae_optimize.py/txt2img/Encoder Tile Size/visible": true, + "customscript/vae_optimize.py/txt2img/Encoder Tile Size/value": 3072, + "customscript/vae_optimize.py/txt2img/Encoder Tile Size/minimum": 256, + "customscript/vae_optimize.py/txt2img/Encoder Tile Size/maximum": 4096, + "customscript/vae_optimize.py/txt2img/Encoder Tile Size/step": 16, + "customscript/vae_optimize.py/txt2img/Decoder Tile Size/visible": true, + "customscript/vae_optimize.py/txt2img/Decoder Tile Size/value": 192, + "customscript/vae_optimize.py/txt2img/Decoder Tile Size/minimum": 48, + "customscript/vae_optimize.py/txt2img/Decoder Tile Size/maximum": 512, + "customscript/vae_optimize.py/txt2img/Decoder Tile Size/step": 16, + "txt2img/↻ Reset/visible": true, + "customscript/vae_optimize.py/txt2img/Fast Encoder/visible": true, + "customscript/vae_optimize.py/txt2img/Fast Encoder/value": true, + "customscript/vae_optimize.py/txt2img/Fast Encoder Color Fix/visible": true, + "customscript/vae_optimize.py/txt2img/Fast Encoder Color Fix/value": false, + "customscript/vae_optimize.py/txt2img/Fast Decoder/visible": true, + "customscript/vae_optimize.py/txt2img/Fast Decoder/value": true, + "customscript/tilediffusion.py/img2img/Enable Tiled Diffusion/visible": true, + "customscript/tilediffusion.py/img2img/Enable Tiled Diffusion/value": false, + "customscript/tilediffusion.py/img2img/Overwrite image size/value": false, + "customscript/tilediffusion.py/img2img/Keep input image size/visible": true, + "customscript/tilediffusion.py/img2img/Keep input image size/value": true, + "customscript/tilediffusion.py/img2img/Image width/visible": true, + "customscript/tilediffusion.py/img2img/Image width/value": 1024, + "customscript/tilediffusion.py/img2img/Image width/minimum": 256, + "customscript/tilediffusion.py/img2img/Image width/maximum": 16384, + "customscript/tilediffusion.py/img2img/Image width/step": 16, + "customscript/tilediffusion.py/img2img/Image height/visible": true, + "customscript/tilediffusion.py/img2img/Image height/value": 1024, + "customscript/tilediffusion.py/img2img/Image height/minimum": 256, + "customscript/tilediffusion.py/img2img/Image height/maximum": 16384, + "customscript/tilediffusion.py/img2img/Image height/step": 16, + "customscript/tilediffusion.py/img2img/Method/visible": true, + "customscript/tilediffusion.py/img2img/Method/value": "MultiDiffusion", + "customscript/tilediffusion.py/img2img/Move ControlNet tensor to CPU (if applicable)/visible": true, + "customscript/tilediffusion.py/img2img/Move ControlNet tensor to CPU (if applicable)/value": false, + "img2img/Free GPU/visible": true, + "customscript/tilediffusion.py/img2img/Latent tile width/visible": true, + "customscript/tilediffusion.py/img2img/Latent tile width/value": 96, + "customscript/tilediffusion.py/img2img/Latent tile width/minimum": 16, + "customscript/tilediffusion.py/img2img/Latent tile width/maximum": 256, + "customscript/tilediffusion.py/img2img/Latent tile width/step": 16, + "customscript/tilediffusion.py/img2img/Latent tile height/visible": true, + "customscript/tilediffusion.py/img2img/Latent tile height/value": 96, + "customscript/tilediffusion.py/img2img/Latent tile height/minimum": 16, + "customscript/tilediffusion.py/img2img/Latent tile height/maximum": 256, + "customscript/tilediffusion.py/img2img/Latent tile height/step": 16, + "customscript/tilediffusion.py/img2img/Latent tile overlap/visible": true, + "customscript/tilediffusion.py/img2img/Latent tile overlap/value": 48, + "customscript/tilediffusion.py/img2img/Latent tile overlap/minimum": 0, + "customscript/tilediffusion.py/img2img/Latent tile overlap/maximum": 256, + "customscript/tilediffusion.py/img2img/Latent tile overlap/step": 4, + "customscript/tilediffusion.py/img2img/Latent tile batch size/visible": true, + "customscript/tilediffusion.py/img2img/Latent tile batch size/value": 4, + "customscript/tilediffusion.py/img2img/Latent tile batch size/minimum": 1, + "customscript/tilediffusion.py/img2img/Latent tile batch size/maximum": 8, + "customscript/tilediffusion.py/img2img/Latent tile batch size/step": 1, + "customscript/tilediffusion.py/img2img/Upscaler/visible": true, + "customscript/tilediffusion.py/img2img/Upscaler/value": "None", + "customscript/tilediffusion.py/img2img/Scale Factor/visible": true, + "customscript/tilediffusion.py/img2img/Scale Factor/value": 2.0, + "customscript/tilediffusion.py/img2img/Scale Factor/minimum": 1.0, + "customscript/tilediffusion.py/img2img/Scale Factor/maximum": 8.0, + "customscript/tilediffusion.py/img2img/Scale Factor/step": 0.05, + "customscript/tilediffusion.py/img2img/Enable Noise Inversion/visible": true, + "customscript/tilediffusion.py/img2img/Enable Noise Inversion/value": false, + "customscript/tilediffusion.py/img2img/Inversion steps/visible": true, + "customscript/tilediffusion.py/img2img/Inversion steps/value": 10, + "customscript/tilediffusion.py/img2img/Inversion steps/minimum": 1, + "customscript/tilediffusion.py/img2img/Inversion steps/maximum": 200, + "customscript/tilediffusion.py/img2img/Inversion steps/step": 1, + "customscript/tilediffusion.py/img2img/Retouch/visible": true, + "customscript/tilediffusion.py/img2img/Retouch/value": 1, + "customscript/tilediffusion.py/img2img/Retouch/minimum": 1, + "customscript/tilediffusion.py/img2img/Retouch/maximum": 100, + "customscript/tilediffusion.py/img2img/Retouch/step": 0.1, + "customscript/tilediffusion.py/img2img/Renoise strength/visible": true, + "customscript/tilediffusion.py/img2img/Renoise strength/value": 1, + "customscript/tilediffusion.py/img2img/Renoise strength/minimum": 0, + "customscript/tilediffusion.py/img2img/Renoise strength/maximum": 2, + "customscript/tilediffusion.py/img2img/Renoise strength/step": 0.01, + "customscript/tilediffusion.py/img2img/Renoise kernel size/visible": true, + "customscript/tilediffusion.py/img2img/Renoise kernel size/value": 64, + "customscript/tilediffusion.py/img2img/Renoise kernel size/minimum": 2, + "customscript/tilediffusion.py/img2img/Renoise kernel size/maximum": 512, + "customscript/tilediffusion.py/img2img/Renoise kernel size/step": 1, + "customscript/tilediffusion.py/img2img/Enable Control/visible": true, + "customscript/tilediffusion.py/img2img/Enable Control/value": false, + "customscript/tilediffusion.py/img2img/Draw full canvas background/visible": true, + "customscript/tilediffusion.py/img2img/Draw full canvas background/value": false, + "customscript/tilediffusion.py/img2img/Causalize layers/value": false, + "img2img/From img2img/visible": true, + "img2img/Custom Config File/visible": true, + "img2img/Custom Config File/value": "config.json", + "img2img/💾 Save/visible": true, + "img2img/⚙️ Load/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 1/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 1/value": false, + "customscript/tilediffusion.py/img2img/Type/visible": true, + "customscript/tilediffusion.py/img2img/Type/value": "Background", + "customscript/tilediffusion.py/img2img/Feather/value": 0.2, + "customscript/tilediffusion.py/img2img/Feather/minimum": 0, + "customscript/tilediffusion.py/img2img/Feather/maximum": 1, + "customscript/tilediffusion.py/img2img/Feather/step": 0.05, + "customscript/tilediffusion.py/img2img/x/visible": true, + "customscript/tilediffusion.py/img2img/x/value": 0.4, + "customscript/tilediffusion.py/img2img/x/minimum": 0.0, + "customscript/tilediffusion.py/img2img/x/maximum": 1.0, + "customscript/tilediffusion.py/img2img/x/step": 0.0001, + "customscript/tilediffusion.py/img2img/y/visible": true, + "customscript/tilediffusion.py/img2img/y/value": 0.4, + "customscript/tilediffusion.py/img2img/y/minimum": 0.0, + "customscript/tilediffusion.py/img2img/y/maximum": 1.0, + "customscript/tilediffusion.py/img2img/y/step": 0.0001, + "customscript/tilediffusion.py/img2img/w/visible": true, + "customscript/tilediffusion.py/img2img/w/value": 0.2, + "customscript/tilediffusion.py/img2img/w/minimum": 0.0, + "customscript/tilediffusion.py/img2img/w/maximum": 1.0, + "customscript/tilediffusion.py/img2img/w/step": 0.0001, + "customscript/tilediffusion.py/img2img/h/visible": true, + "customscript/tilediffusion.py/img2img/h/value": 0.2, + "customscript/tilediffusion.py/img2img/h/minimum": 0.0, + "customscript/tilediffusion.py/img2img/h/maximum": 1.0, + "customscript/tilediffusion.py/img2img/h/step": 0.0001, + "customscript/tilediffusion.py/img2img/Seed/visible": true, + "customscript/tilediffusion.py/img2img/Seed/value": -1.0, + "img2img/🎲/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 2/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 2/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 3/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 3/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 4/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 4/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 5/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 5/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 6/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 6/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 7/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 7/value": false, + "customscript/tilediffusion.py/img2img/Enable Region 8/visible": true, + "customscript/tilediffusion.py/img2img/Enable Region 8/value": false, + "customscript/vae_optimize.py/img2img/Enable Tiled VAE/visible": true, + "customscript/vae_optimize.py/img2img/Enable Tiled VAE/value": false, + "customscript/vae_optimize.py/img2img/Move VAE to GPU (if possible)/visible": true, + "customscript/vae_optimize.py/img2img/Move VAE to GPU (if possible)/value": true, + "customscript/vae_optimize.py/img2img/Encoder Tile Size/visible": true, + "customscript/vae_optimize.py/img2img/Encoder Tile Size/value": 3072, + "customscript/vae_optimize.py/img2img/Encoder Tile Size/minimum": 256, + "customscript/vae_optimize.py/img2img/Encoder Tile Size/maximum": 4096, + "customscript/vae_optimize.py/img2img/Encoder Tile Size/step": 16, + "customscript/vae_optimize.py/img2img/Decoder Tile Size/visible": true, + "customscript/vae_optimize.py/img2img/Decoder Tile Size/value": 192, + "customscript/vae_optimize.py/img2img/Decoder Tile Size/minimum": 48, + "customscript/vae_optimize.py/img2img/Decoder Tile Size/maximum": 512, + "customscript/vae_optimize.py/img2img/Decoder Tile Size/step": 16, + "img2img/↻ Reset/visible": true, + "customscript/vae_optimize.py/img2img/Fast Encoder/visible": true, + "customscript/vae_optimize.py/img2img/Fast Encoder/value": true, + "customscript/vae_optimize.py/img2img/Fast Encoder Color Fix/visible": true, + "customscript/vae_optimize.py/img2img/Fast Encoder Color Fix/value": false, + "customscript/vae_optimize.py/img2img/Fast Decoder/visible": true, + "customscript/vae_optimize.py/img2img/Fast Decoder/value": true, + "customscript/composable_lora_script.py/txt2img/Enabled/visible": true, + "customscript/composable_lora_script.py/txt2img/Enabled/value": false, + "customscript/composable_lora_script.py/txt2img/Composable LoRA with step/visible": true, + "customscript/composable_lora_script.py/txt2img/Composable LoRA with step/value": false, + "customscript/composable_lora_script.py/txt2img/Use Lora in uc text model encoder/visible": true, + "customscript/composable_lora_script.py/txt2img/Use Lora in uc text model encoder/value": false, + "customscript/composable_lora_script.py/txt2img/Use Lora in uc diffusion model/visible": true, + "customscript/composable_lora_script.py/txt2img/Use Lora in uc diffusion model/value": false, + "customscript/composable_lora_script.py/txt2img/Plot the LoRA weight in all steps/visible": true, + "customscript/composable_lora_script.py/txt2img/Plot the LoRA weight in all steps/value": false, + "customscript/composable_lora_script.py/txt2img/Don't use LoRA in uc if there're no subprompts/visible": true, + "customscript/composable_lora_script.py/txt2img/Don't use LoRA in uc if there're no subprompts/value": false, + "customscript/composable_lora_script.py/txt2img/Treat hires step as global step/visible": true, + "customscript/composable_lora_script.py/txt2img/Treat hires step as global step/value": false, + "customscript/two_shot.py/txt2img/Enabled/visible": true, + "customscript/two_shot.py/txt2img/Enabled/value": false, + "txt2img/Tabs@script_twoshot_tabs/selected": null, + "txt2img/Denoise Mask/visible": true, + "txt2img/Denoise Mask/value": false, + "txt2img/I've finished my sketch/visible": true, + "txt2img/General Prompt/visible": true, + "txt2img/General Prompt/value": "", + "customscript/two_shot.py/txt2img/Alpha Blend/visible": true, + "customscript/two_shot.py/txt2img/Alpha Blend/value": 0.2, + "customscript/two_shot.py/txt2img/Alpha Blend/minimum": 0.0, + "customscript/two_shot.py/txt2img/Alpha Blend/maximum": 1.0, + "customscript/two_shot.py/txt2img/Alpha Blend/step": 0.01, + "txt2img/Prompt for this mask/visible": true, + "txt2img/Prompt for this mask/value": "", + "customscript/two_shot.py/txt2img/Area 1 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 1 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 1 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 1 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 1 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 2 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 2 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 2 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 2 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 2 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 3 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 3 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 3 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 3 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 3 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 4 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 4 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 4 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 4 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 4 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 5 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 5 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 5 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 5 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 5 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 6 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 6 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 6 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 6 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 6 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 7 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 7 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 7 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 7 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 7 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 8 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 8 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 8 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 8 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 8 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 9 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 9 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 9 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 9 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 9 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 10 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 10 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 10 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 10 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 10 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 11 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 11 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 11 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 11 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 11 Weight/step": 0.01, + "customscript/two_shot.py/txt2img/Area 12 Weight/visible": true, + "customscript/two_shot.py/txt2img/Area 12 Weight/value": 1.0, + "customscript/two_shot.py/txt2img/Area 12 Weight/minimum": 0.0, + "customscript/two_shot.py/txt2img/Area 12 Weight/maximum": 1.0, + "customscript/two_shot.py/txt2img/Area 12 Weight/step": 0.01, + "txt2img/Prompt Info Update/visible": true, + "txt2img/Final Prompt/visible": true, + "txt2img/Final Prompt/value": "", + "txt2img/Canvas Width/visible": true, + "txt2img/Canvas Width/value": 512, + "txt2img/Canvas Width/minimum": 256, + "txt2img/Canvas Width/maximum": 1024, + "txt2img/Canvas Width/step": 64, + "txt2img/Canvas Height/visible": true, + "txt2img/Canvas Height/value": 512, + "txt2img/Canvas Height/minimum": 256, + "txt2img/Canvas Height/maximum": 1024, + "txt2img/Canvas Height/step": 64, + "txt2img/Create blank canvas/visible": true, + "customscript/two_shot.py/txt2img/Divisions/visible": true, + "customscript/two_shot.py/txt2img/Divisions/value": "1:1,1:2,1:2", + "customscript/two_shot.py/txt2img/Positions/visible": true, + "customscript/two_shot.py/txt2img/Positions/value": "0:0,0:0,0:1", + "customscript/two_shot.py/txt2img/Weights/visible": true, + "customscript/two_shot.py/txt2img/Weights/value": "0.2,0.8,0.8", + "customscript/two_shot.py/txt2img/end at this step/visible": true, + "customscript/two_shot.py/txt2img/end at this step/value": 150, + "customscript/two_shot.py/txt2img/end at this step/minimum": 0, + "customscript/two_shot.py/txt2img/end at this step/maximum": 150, + "customscript/two_shot.py/txt2img/end at this step/step": 1, + "txt2img/Visualize/visible": true, + "txt2img/Extra generation params/visible": true, + "txt2img/Extra generation params/value": "", + "txt2img/Apply/visible": true, + "customscript/composable_lora_script.py/img2img/Enabled/visible": true, + "customscript/composable_lora_script.py/img2img/Enabled/value": false, + "customscript/composable_lora_script.py/img2img/Composable LoRA with step/visible": true, + "customscript/composable_lora_script.py/img2img/Composable LoRA with step/value": false, + "customscript/composable_lora_script.py/img2img/Use Lora in uc text model encoder/visible": true, + "customscript/composable_lora_script.py/img2img/Use Lora in uc text model encoder/value": false, + "customscript/composable_lora_script.py/img2img/Use Lora in uc diffusion model/visible": true, + "customscript/composable_lora_script.py/img2img/Use Lora in uc diffusion model/value": false, + "customscript/composable_lora_script.py/img2img/Plot the LoRA weight in all steps/visible": true, + "customscript/composable_lora_script.py/img2img/Plot the LoRA weight in all steps/value": false, + "customscript/composable_lora_script.py/img2img/Don't use LoRA in uc if there're no subprompts/visible": true, + "customscript/composable_lora_script.py/img2img/Don't use LoRA in uc if there're no subprompts/value": false, + "customscript/composable_lora_script.py/img2img/Treat hires step as global step/visible": true, + "customscript/composable_lora_script.py/img2img/Treat hires step as global step/value": false, + "customscript/two_shot.py/img2img/Enabled/visible": true, + "customscript/two_shot.py/img2img/Enabled/value": false, + "img2img/Tabs@script_twoshot_tabs/selected": null, + "img2img/Denoise Mask/visible": true, + "img2img/Denoise Mask/value": false, + "img2img/I've finished my sketch/visible": true, + "img2img/General Prompt/visible": true, + "img2img/General Prompt/value": "", + "customscript/two_shot.py/img2img/Alpha Blend/visible": true, + "customscript/two_shot.py/img2img/Alpha Blend/value": 0.2, + "customscript/two_shot.py/img2img/Alpha Blend/minimum": 0.0, + "customscript/two_shot.py/img2img/Alpha Blend/maximum": 1.0, + "customscript/two_shot.py/img2img/Alpha Blend/step": 0.01, + "img2img/Prompt for this mask/visible": true, + "img2img/Prompt for this mask/value": "", + "customscript/two_shot.py/img2img/Area 1 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 1 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 1 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 1 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 1 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 2 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 2 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 2 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 2 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 2 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 3 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 3 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 3 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 3 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 3 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 4 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 4 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 4 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 4 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 4 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 5 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 5 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 5 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 5 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 5 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 6 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 6 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 6 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 6 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 6 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 7 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 7 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 7 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 7 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 7 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 8 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 8 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 8 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 8 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 8 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 9 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 9 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 9 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 9 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 9 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 10 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 10 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 10 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 10 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 10 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 11 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 11 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 11 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 11 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 11 Weight/step": 0.01, + "customscript/two_shot.py/img2img/Area 12 Weight/visible": true, + "customscript/two_shot.py/img2img/Area 12 Weight/value": 1.0, + "customscript/two_shot.py/img2img/Area 12 Weight/minimum": 0.0, + "customscript/two_shot.py/img2img/Area 12 Weight/maximum": 1.0, + "customscript/two_shot.py/img2img/Area 12 Weight/step": 0.01, + "img2img/Prompt Info Update/visible": true, + "img2img/Final Prompt/visible": true, + "img2img/Final Prompt/value": "", + "img2img/Canvas Width/visible": true, + "img2img/Canvas Width/value": 512, + "img2img/Canvas Width/minimum": 256, + "img2img/Canvas Width/maximum": 1024, + "img2img/Canvas Width/step": 64, + "img2img/Canvas Height/visible": true, + "img2img/Canvas Height/value": 512, + "img2img/Canvas Height/minimum": 256, + "img2img/Canvas Height/maximum": 1024, + "img2img/Canvas Height/step": 64, + "img2img/Create blank canvas/visible": true, + "customscript/two_shot.py/img2img/Divisions/visible": true, + "customscript/two_shot.py/img2img/Divisions/value": "1:1,1:2,1:2", + "customscript/two_shot.py/img2img/Positions/visible": true, + "customscript/two_shot.py/img2img/Positions/value": "0:0,0:0,0:1", + "customscript/two_shot.py/img2img/Weights/visible": true, + "customscript/two_shot.py/img2img/Weights/value": "0.2,0.8,0.8", + "customscript/two_shot.py/img2img/end at this step/visible": true, + "customscript/two_shot.py/img2img/end at this step/value": 150, + "customscript/two_shot.py/img2img/end at this step/minimum": 0, + "customscript/two_shot.py/img2img/end at this step/maximum": 150, + "customscript/two_shot.py/img2img/end at this step/step": 1, + "img2img/Visualize/visible": true, + "img2img/Extra generation params/visible": true, + "img2img/Extra generation params/value": "", + "img2img/Apply/visible": true, + "txt2img/🖌️/visible": true, + "txt2img/Close/visible": true, + "txt2img/Hires checkpoint/visible": true, + "txt2img/Hires checkpoint/value": "Use same checkpoint", + "customscript/refiner.py/txt2img/Checkpoint/visible": true, + "customscript/refiner.py/txt2img/Checkpoint/value": "", + "customscript/refiner.py/txt2img/Switch at/visible": true, + "customscript/refiner.py/txt2img/Switch at/value": 0.8, + "customscript/refiner.py/txt2img/Switch at/minimum": 0.01, + "customscript/refiner.py/txt2img/Switch at/maximum": 1.0, + "customscript/refiner.py/txt2img/Switch at/step": 0.01, + "customscript/seed.py/txt2img/Seed/visible": true, + "customscript/seed.py/txt2img/Seed/value": -1, + "customscript/seed.py/txt2img/Extra/visible": true, + "customscript/seed.py/txt2img/Extra/value": false, + "customscript/seed.py/txt2img/Variation seed/visible": true, + "customscript/seed.py/txt2img/Variation seed/value": -1, + "customscript/seed.py/txt2img/Variation strength/visible": true, + "customscript/seed.py/txt2img/Variation strength/value": 0.0, + "customscript/seed.py/txt2img/Variation strength/minimum": 0, + "customscript/seed.py/txt2img/Variation strength/maximum": 1, + "customscript/seed.py/txt2img/Variation strength/step": 0.01, + "customscript/seed.py/txt2img/Resize seed from width/visible": true, + "customscript/seed.py/txt2img/Resize seed from width/value": 0, + "customscript/seed.py/txt2img/Resize seed from width/minimum": 0, + "customscript/seed.py/txt2img/Resize seed from width/maximum": 2048, + "customscript/seed.py/txt2img/Resize seed from width/step": 8, + "customscript/seed.py/txt2img/Resize seed from height/visible": true, + "customscript/seed.py/txt2img/Resize seed from height/value": 0, + "customscript/seed.py/txt2img/Resize seed from height/minimum": 0, + "customscript/seed.py/txt2img/Resize seed from height/maximum": 2048, + "customscript/seed.py/txt2img/Resize seed from height/step": 8, + "customscript/xyz_grid.py/txt2img/Use text inputs instead of dropdowns/visible": true, + "customscript/xyz_grid.py/txt2img/Use text inputs instead of dropdowns/value": false, + "txt2img/🗃️/visible": true, + "txt2img/🖼️/visible": true, + "txt2img/🎨️/visible": true, + "txt2img/📐/visible": true, + "txt2img/Description/visible": true, + "txt2img/Description/value": "", + "txt2img/Replace preview/visible": true, + "txt2img/Preferred VAE/visible": true, + "txt2img/Preferred VAE/value": "None", + "txt2img/txt2img_extra_sort_order/value": "Default Sort", + "txt2img/Show dirs/value": true, + "img2img/🖌️/visible": true, + "img2img/Close/visible": true, + "img2img/Append png info to prompts/visible": true, + "img2img/Append png info to prompts/value": false, + "img2img/PNG info directory/visible": true, + "img2img/PNG info directory/value": "", + "customscript/refiner.py/img2img/Checkpoint/visible": true, + "customscript/refiner.py/img2img/Checkpoint/value": "", + "customscript/refiner.py/img2img/Switch at/visible": true, + "customscript/refiner.py/img2img/Switch at/value": 0.8, + "customscript/refiner.py/img2img/Switch at/minimum": 0.01, + "customscript/refiner.py/img2img/Switch at/maximum": 1.0, + "customscript/refiner.py/img2img/Switch at/step": 0.01, + "customscript/seed.py/img2img/Seed/visible": true, + "customscript/seed.py/img2img/Seed/value": -1, + "customscript/seed.py/img2img/Extra/visible": true, + "customscript/seed.py/img2img/Extra/value": false, + "customscript/seed.py/img2img/Variation seed/visible": true, + "customscript/seed.py/img2img/Variation seed/value": -1, + "customscript/seed.py/img2img/Variation strength/visible": true, + "customscript/seed.py/img2img/Variation strength/value": 0.0, + "customscript/seed.py/img2img/Variation strength/minimum": 0, + "customscript/seed.py/img2img/Variation strength/maximum": 1, + "customscript/seed.py/img2img/Variation strength/step": 0.01, + "customscript/seed.py/img2img/Resize seed from width/visible": true, + "customscript/seed.py/img2img/Resize seed from width/value": 0, + "customscript/seed.py/img2img/Resize seed from width/minimum": 0, + "customscript/seed.py/img2img/Resize seed from width/maximum": 2048, + "customscript/seed.py/img2img/Resize seed from width/step": 8, + "customscript/seed.py/img2img/Resize seed from height/visible": true, + "customscript/seed.py/img2img/Resize seed from height/value": 0, + "customscript/seed.py/img2img/Resize seed from height/minimum": 0, + "customscript/seed.py/img2img/Resize seed from height/maximum": 2048, + "customscript/seed.py/img2img/Resize seed from height/step": 8, + "customscript/xyz_grid.py/img2img/Use text inputs instead of dropdowns/visible": true, + "customscript/xyz_grid.py/img2img/Use text inputs instead of dropdowns/value": false, + "img2img/🗃️/visible": true, + "img2img/🖼️/visible": true, + "img2img/🎨️/visible": true, + "img2img/Description/visible": true, + "img2img/Description/value": "", + "img2img/Replace preview/visible": true, + "img2img/Preferred VAE/visible": true, + "img2img/Preferred VAE/value": "None", + "img2img/img2img_extra_sort_order/value": "Default Sort", + "img2img/Show dirs/value": true, + "extras/🖼️/visible": true, + "extras/🎨️/visible": true, + "extras/📐/visible": true, + "modelmerger/Save metadata/visible": true, + "modelmerger/Save metadata/value": true, + "modelmerger/Add merge recipe metadata/visible": true, + "modelmerger/Add merge recipe metadata/value": true, + "modelmerger/Copy metadata from merged models/visible": true, + "modelmerger/Copy metadata from merged models/value": true, + "modelmerger/Read metadata from selected checkpoints/visible": true, + "txt2img/Presets/visible": true, + "txt2img/Presets/value": "New Preset", + "txt2img/Preset name/visible": true, + "txt2img/Preset name/value": "", + "txt2img/Stable Diffusion version/visible": true, + "txt2img/Stable Diffusion version/value": "Unknown", + "txt2img/Activation text/visible": true, + "txt2img/Activation text/value": "", + "txt2img/Preferred weight/visible": true, + "txt2img/Preferred weight/value": 0.0, + "txt2img/Preferred weight/minimum": 0.0, + "txt2img/Preferred weight/maximum": 2.0, + "txt2img/Preferred weight/step": 0.01, + "txt2img/Random prompt/visible": true, + "txt2img/Random prompt/value": "", + "img2img/Upload independent control image/visible": true, + "img2img/Upload independent control image/value": false, + "img2img/Presets/visible": true, + "img2img/Presets/value": "New Preset", + "img2img/Preset name/visible": true, + "img2img/Preset name/value": "", + "img2img/Stable Diffusion version/visible": true, + "img2img/Stable Diffusion version/value": "Unknown", + "img2img/Activation text/visible": true, + "img2img/Activation text/value": "", + "img2img/Preferred weight/visible": true, + "img2img/Preferred weight/value": 0.0, + "img2img/Preferred weight/minimum": 0.0, + "img2img/Preferred weight/maximum": 2.0, + "img2img/Preferred weight/step": 0.01, + "img2img/Random prompt/visible": true, + "img2img/Random prompt/value": "", + "customscript/loractl.py/txt2img/Enable Dynamic Lora Weights/visible": true, + "customscript/loractl.py/txt2img/Enable Dynamic Lora Weights/value": true, + "customscript/loractl.py/txt2img/Plot the LoRA weight in all steps/visible": true, + "customscript/loractl.py/txt2img/Plot the LoRA weight in all steps/value": false, + "customscript/loractl.py/img2img/Enable Dynamic Lora Weights/visible": true, + "customscript/loractl.py/img2img/Enable Dynamic Lora Weights/value": true, + "customscript/loractl.py/img2img/Plot the LoRA weight in all steps/visible": true, + "customscript/loractl.py/img2img/Plot the LoRA weight in all steps/value": false, + "txt2img/📝/visible": true, + "txt2img/Refiner/visible": true, + "customscript/refiner.py/txt2img/Refiner/value": false, + "txt2img/Refiner/value": false, + "txt2img/⇅/visible": true, + "customscript/prompts_from_file.py/txt2img/Insert prompts at the/visible": true, + "customscript/prompts_from_file.py/txt2img/Insert prompts at the/value": "start", + "img2img/📎/visible": true, + "img2img/📦/visible": true, + "img2img/📝/visible": true, + "img2img/Refiner/visible": true, + "customscript/refiner.py/img2img/Refiner/value": false, + "img2img/Refiner/value": false, + "customscript/prompts_from_file.py/img2img/Insert prompts at the/visible": true, + "customscript/prompts_from_file.py/img2img/Insert prompts at the/value": "start", + "extras/GFPGAN/visible": true, + "customscript/postprocessing_gfpgan.py/extras/GFPGAN/value": false, + "extras/GFPGAN/value": false, + "customscript/postprocessing_gfpgan.py/extras/Visibility/visible": true, + "customscript/postprocessing_gfpgan.py/extras/Visibility/value": 1.0, + "customscript/postprocessing_gfpgan.py/extras/Visibility/minimum": 0.0, + "customscript/postprocessing_gfpgan.py/extras/Visibility/maximum": 1.0, + "customscript/postprocessing_gfpgan.py/extras/Visibility/step": 0.001, + "extras/CodeFormer/visible": true, + "customscript/postprocessing_codeformer.py/extras/CodeFormer/value": false, + "extras/CodeFormer/value": false, + "customscript/postprocessing_codeformer.py/extras/Visibility/visible": true, + "customscript/postprocessing_codeformer.py/extras/Visibility/value": 1.0, + "customscript/postprocessing_codeformer.py/extras/Visibility/minimum": 0.0, + "customscript/postprocessing_codeformer.py/extras/Visibility/maximum": 1.0, + "customscript/postprocessing_codeformer.py/extras/Visibility/step": 0.001, + "customscript/postprocessing_codeformer.py/extras/Weight (0 = maximum effect, 1 = minimum effect)/visible": true, + "customscript/postprocessing_codeformer.py/extras/Weight (0 = maximum effect, 1 = minimum effect)/value": 0, + "customscript/postprocessing_codeformer.py/extras/Weight (0 = maximum effect, 1 = minimum effect)/minimum": 0.0, + "customscript/postprocessing_codeformer.py/extras/Weight (0 = maximum effect, 1 = minimum effect)/maximum": 1.0, + "customscript/postprocessing_codeformer.py/extras/Weight (0 = maximum effect, 1 = minimum effect)/step": 0.001, + "extras/Auto focal point crop/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Auto focal point crop/value": false, + "extras/Auto focal point crop/value": false, + "customscript/postprocessing_focal_crop.py/extras/Focal point face weight/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Focal point face weight/value": 0.9, + "customscript/postprocessing_focal_crop.py/extras/Focal point face weight/minimum": 0.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point face weight/maximum": 1.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point face weight/step": 0.05, + "customscript/postprocessing_focal_crop.py/extras/Focal point entropy weight/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Focal point entropy weight/value": 0.15, + "customscript/postprocessing_focal_crop.py/extras/Focal point entropy weight/minimum": 0.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point entropy weight/maximum": 1.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point entropy weight/step": 0.05, + "customscript/postprocessing_focal_crop.py/extras/Focal point edges weight/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Focal point edges weight/value": 0.5, + "customscript/postprocessing_focal_crop.py/extras/Focal point edges weight/minimum": 0.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point edges weight/maximum": 1.0, + "customscript/postprocessing_focal_crop.py/extras/Focal point edges weight/step": 0.05, + "customscript/postprocessing_focal_crop.py/extras/Create debug image/visible": true, + "customscript/postprocessing_focal_crop.py/extras/Create debug image/value": false, + "extras/Auto-sized crop/visible": true, + "customscript/processing_autosized_crop.py/extras/Auto-sized crop/value": false, + "extras/Auto-sized crop/value": false, + "customscript/processing_autosized_crop.py/extras/Dimension lower bound/visible": true, + "customscript/processing_autosized_crop.py/extras/Dimension lower bound/value": 384, + "customscript/processing_autosized_crop.py/extras/Dimension lower bound/minimum": 64, + "customscript/processing_autosized_crop.py/extras/Dimension lower bound/maximum": 2048, + "customscript/processing_autosized_crop.py/extras/Dimension lower bound/step": 8, + "customscript/processing_autosized_crop.py/extras/Dimension upper bound/visible": true, + "customscript/processing_autosized_crop.py/extras/Dimension upper bound/value": 768, + "customscript/processing_autosized_crop.py/extras/Dimension upper bound/minimum": 64, + "customscript/processing_autosized_crop.py/extras/Dimension upper bound/maximum": 2048, + "customscript/processing_autosized_crop.py/extras/Dimension upper bound/step": 8, + "customscript/processing_autosized_crop.py/extras/Area lower bound/visible": true, + "customscript/processing_autosized_crop.py/extras/Area lower bound/value": 4096, + "customscript/processing_autosized_crop.py/extras/Area lower bound/minimum": 4096, + "customscript/processing_autosized_crop.py/extras/Area lower bound/maximum": 4194304, + "customscript/processing_autosized_crop.py/extras/Area lower bound/step": 1, + "customscript/processing_autosized_crop.py/extras/Area upper bound/visible": true, + "customscript/processing_autosized_crop.py/extras/Area upper bound/value": 409600, + "customscript/processing_autosized_crop.py/extras/Area upper bound/minimum": 4096, + "customscript/processing_autosized_crop.py/extras/Area upper bound/maximum": 4194304, + "customscript/processing_autosized_crop.py/extras/Area upper bound/step": 1, + "customscript/processing_autosized_crop.py/extras/Resizing objective/visible": true, + "customscript/processing_autosized_crop.py/extras/Resizing objective/value": "Maximize area", + "customscript/processing_autosized_crop.py/extras/Error threshold/visible": true, + "customscript/processing_autosized_crop.py/extras/Error threshold/value": 0.1, + "customscript/processing_autosized_crop.py/extras/Error threshold/minimum": 0, + "customscript/processing_autosized_crop.py/extras/Error threshold/maximum": 1, + "customscript/processing_autosized_crop.py/extras/Error threshold/step": 0.01, + "extras/Caption/visible": true, + "customscript/postprocessing_caption.py/extras/Caption/value": false, + "extras/Caption/value": false, + "extras/Create flipped copies/visible": true, + "customscript/postprocessing_create_flipped_copies.py/extras/Create flipped copies/value": false, + "extras/Create flipped copies/value": false, + "extras/Split oversized images/visible": true, + "customscript/postprocessing_split_oversized.py/extras/Split oversized images/value": false, + "extras/Split oversized images/value": false, + "customscript/postprocessing_split_oversized.py/extras/Threshold/visible": true, + "customscript/postprocessing_split_oversized.py/extras/Threshold/value": 0.5, + "customscript/postprocessing_split_oversized.py/extras/Threshold/minimum": 0.0, + "customscript/postprocessing_split_oversized.py/extras/Threshold/maximum": 1.0, + "customscript/postprocessing_split_oversized.py/extras/Threshold/step": 0.05, + "customscript/postprocessing_split_oversized.py/extras/Overlap ratio/visible": true, + "customscript/postprocessing_split_oversized.py/extras/Overlap ratio/value": 0.2, + "customscript/postprocessing_split_oversized.py/extras/Overlap ratio/minimum": 0.0, + "customscript/postprocessing_split_oversized.py/extras/Overlap ratio/maximum": 0.9, + "customscript/postprocessing_split_oversized.py/extras/Overlap ratio/step": 0.05, + "extras/Interrupt/visible": true, + "extras/Skip/visible": true, + "civitai_interface/Search type:/visible": true, + "civitai_interface/Search type:/value": "Model name", + "civitai_interface/Content type:/visible": true, + "civitai_interface/Content type:/value": null, + "civitai_interface/Base model:/visible": true, + "civitai_interface/Base model:/value": null, + "civitai_interface/Time period:/visible": true, + "civitai_interface/Time period:/value": "All Time", + "civitai_interface/Sort by:/visible": true, + "civitai_interface/Sort by:/value": "Most Downloaded", + "civitai_interface/Save info after download/visible": true, + "civitai_interface/Save info after download/value": true, + "civitai_interface/NSFW content/visible": true, + "civitai_interface/NSFW content/value": false, + "civitai_interface/Divide cards by date/visible": true, + "civitai_interface/Divide cards by date/value": false, + "civitai_interface/Liked models only/visible": true, + "civitai_interface/Liked models only/value": false, + "civitai_interface/Tile size:/visible": true, + "civitai_interface/Tile size:/value": 8, + "civitai_interface/Tile size:/minimum": 4, + "civitai_interface/Tile size:/maximum": 20, + "civitai_interface/Tile size:/step": 0.25, + "civitai_interface/Tile count:/visible": true, + "civitai_interface/Tile count:/value": 15, + "civitai_interface/Tile count:/minimum": 1, + "civitai_interface/Tile count:/maximum": 100, + "civitai_interface/Tile count:/step": 1, + "civitai_interface/Save settings as default/visible": true, + "civitai_interface//visible": true, + "civitai_interface//value": "", + "civitai_interface/Prev page/visible": true, + "civitai_interface/Current page/visible": true, + "civitai_interface/Current page/value": 1, + "civitai_interface/Current page/minimum": 1, + "civitai_interface/Current page/maximum": 1, + "civitai_interface/Current page/step": 1, + "civitai_interface/Next page/visible": true, + "civitai_interface/Model:/visible": true, + "civitai_interface/Model:/value": null, + "civitai_interface/Version:/visible": true, + "civitai_interface/Version:/value": null, + "civitai_interface/File:/visible": true, + "civitai_interface/File:/value": null, + "civitai_interface/Download folder:/visible": true, + "civitai_interface/Download folder:/value": "", + "civitai_interface/Sub folder:/visible": true, + "civitai_interface/Sub folder:/value": null, + "civitai_interface/Trained tags (if any):/visible": true, + "civitai_interface/Trained tags (if any):/value": null, + "civitai_interface/Base model: /visible": true, + "civitai_interface/Base model: /value": "", + "civitai_interface/Model filename:/visible": true, + "civitai_interface/Model filename:/value": null, + "civitai_interface/Save model info/visible": true, + "civitai_interface/Save images/visible": true, + "civitai_interface/Download model/visible": true, + "civitai_interface/↑/visible": true, + "civitai_interface/Overwrite any existing previews, tags or descriptions./visible": true, + "civitai_interface/Overwrite any existing previews, tags or descriptions./value": true, + "civitai_interface/Update model info & tags/visible": true, + "civitai_interface/Update model preview/visible": true, + "civitai_interface/Scan for available updates/visible": true, + "civitai_interface/Load all installed models/visible": true, + "customscript/multirender.py/txt2img/MiDaS model (models are ordered from smallest and least accurate (midas_v21_small) to biggest and most accurate (dpt_beit_large_512))/visible": true, + "customscript/multirender.py/txt2img/MiDaS model (models are ordered from smallest and least accurate (midas_v21_small) to biggest and most accurate (dpt_beit_large_512))/value": "midas_v21_small", + "customscript/multirender.py/txt2img/Foreground prompt /visible": true, + "customscript/multirender.py/txt2img/Foreground prompt /value": "", + "customscript/multirender.py/txt2img/Number of foreground images /visible": true, + "customscript/multirender.py/txt2img/Number of foreground images /value": 5, + "customscript/multirender.py/txt2img/Number of foreground images /minimum": 1, + "customscript/multirender.py/txt2img/Number of foreground images /maximum": 10, + "customscript/multirender.py/txt2img/Number of foreground images /step": 1, + "customscript/multirender.py/txt2img/foreground steps /visible": true, + "customscript/multirender.py/txt2img/foreground steps /value": 24, + "customscript/multirender.py/txt2img/foreground steps /minimum": 1, + "customscript/multirender.py/txt2img/foreground steps /maximum": 120, + "customscript/multirender.py/txt2img/foreground steps /step": 1, + "customscript/multirender.py/txt2img/foreground cfg scale /visible": true, + "customscript/multirender.py/txt2img/foreground cfg scale /value": 12.5, + "customscript/multirender.py/txt2img/foreground cfg scale /minimum": 1, + "customscript/multirender.py/txt2img/foreground cfg scale /maximum": 30, + "customscript/multirender.py/txt2img/foreground cfg scale /step": 0.1, + "customscript/multirender.py/txt2img/foreground new seed+ /visible": true, + "customscript/multirender.py/txt2img/foreground new seed+ /value": 1000, + "customscript/multirender.py/txt2img/foreground new seed+ /minimum": 0, + "customscript/multirender.py/txt2img/foreground new seed+ /maximum": 1000, + "customscript/multirender.py/txt2img/foreground new seed+ /step": 1, + "customscript/multirender.py/txt2img/Foreground seeds (optional) /visible": true, + "customscript/multirender.py/txt2img/Foreground seeds (optional) /value": "", + "customscript/multirender.py/txt2img/foreground sampler/visible": true, + "customscript/multirender.py/txt2img/foreground sampler/value": "DDIM", + "customscript/multirender.py/txt2img/change clip for foreground (0 = no interaction) /visible": true, + "customscript/multirender.py/txt2img/change clip for foreground (0 = no interaction) /value": 0, + "customscript/multirender.py/txt2img/change clip for foreground (0 = no interaction) /minimum": 0, + "customscript/multirender.py/txt2img/change clip for foreground (0 = no interaction) /maximum": 12, + "customscript/multirender.py/txt2img/change clip for foreground (0 = no interaction) /step": 1, + "customscript/multirender.py/txt2img/foreground width (64 = same as background) /visible": true, + "customscript/multirender.py/txt2img/foreground width (64 = same as background) /value": 64, + "customscript/multirender.py/txt2img/foreground width (64 = same as background) /minimum": 64, + "customscript/multirender.py/txt2img/foreground width (64 = same as background) /maximum": 2048, + "customscript/multirender.py/txt2img/foreground width (64 = same as background) /step": 64, + "customscript/multirender.py/txt2img/foreground height (64 = same as background) /visible": true, + "customscript/multirender.py/txt2img/foreground height (64 = same as background) /value": 64, + "customscript/multirender.py/txt2img/foreground height (64 = same as background) /minimum": 64, + "customscript/multirender.py/txt2img/foreground height (64 = same as background) /maximum": 2048, + "customscript/multirender.py/txt2img/foreground height (64 = same as background) /step": 64, + "customscript/multirender.py/txt2img/final blend prompt/visible": true, + "customscript/multirender.py/txt2img/final blend prompt/value": "", + "customscript/multirender.py/txt2img/blend steps /visible": true, + "customscript/multirender.py/txt2img/blend steps /value": 64, + "customscript/multirender.py/txt2img/blend steps /minimum": 1, + "customscript/multirender.py/txt2img/blend steps /maximum": 120, + "customscript/multirender.py/txt2img/blend steps /step": 1, + "customscript/multirender.py/txt2img/blend cfg scale /visible": true, + "customscript/multirender.py/txt2img/blend cfg scale /value": 7.5, + "customscript/multirender.py/txt2img/blend cfg scale /minimum": 1, + "customscript/multirender.py/txt2img/blend cfg scale /maximum": 30, + "customscript/multirender.py/txt2img/blend cfg scale /step": 0.1, + "customscript/multirender.py/txt2img/blend denoising strength /visible": true, + "customscript/multirender.py/txt2img/blend denoising strength /value": 0.42, + "customscript/multirender.py/txt2img/blend denoising strength /minimum": 0.1, + "customscript/multirender.py/txt2img/blend denoising strength /maximum": 1, + "customscript/multirender.py/txt2img/blend denoising strength /step": 0.01, + "customscript/multirender.py/txt2img/blend sampler/visible": true, + "customscript/multirender.py/txt2img/blend sampler/value": "DDIM", + "customscript/multirender.py/txt2img/blend width (64 = same size as background) /visible": true, + "customscript/multirender.py/txt2img/blend width (64 = same size as background) /value": 64, + "customscript/multirender.py/txt2img/blend width (64 = same size as background) /minimum": 64, + "customscript/multirender.py/txt2img/blend width (64 = same size as background) /maximum": 2048, + "customscript/multirender.py/txt2img/blend width (64 = same size as background) /step": 64, + "customscript/multirender.py/txt2img/blend height (64 = same size as background) /visible": true, + "customscript/multirender.py/txt2img/blend height (64 = same size as background) /value": 64, + "customscript/multirender.py/txt2img/blend height (64 = same size as background) /minimum": 64, + "customscript/multirender.py/txt2img/blend height (64 = same size as background) /maximum": 2048, + "customscript/multirender.py/txt2img/blend height (64 = same size as background) /step": 64, + "customscript/multirender.py/txt2img/Foreground distance from center multiplier /visible": true, + "customscript/multirender.py/txt2img/Foreground distance from center multiplier /value": 1, + "customscript/multirender.py/txt2img/Foreground distance from center multiplier /minimum": 0, + "customscript/multirender.py/txt2img/Foreground distance from center multiplier /maximum": 2, + "customscript/multirender.py/txt2img/Foreground distance from center multiplier /step": 0.01, + "customscript/multirender.py/txt2img/Foreground Y shift (far from center = lower) /visible": true, + "customscript/multirender.py/txt2img/Foreground Y shift (far from center = lower) /value": 0, + "customscript/multirender.py/txt2img/Foreground Y shift (far from center = lower) /minimum": 0, + "customscript/multirender.py/txt2img/Foreground Y shift (far from center = lower) /maximum": 100, + "customscript/multirender.py/txt2img/Foreground Y shift (far from center = lower) /step": 1, + "customscript/multirender.py/txt2img/Foreground depth cut threshold/visible": true, + "customscript/multirender.py/txt2img/Foreground depth cut threshold/value": 92, + "customscript/multirender.py/txt2img/Foreground depth cut threshold/minimum": 0, + "customscript/multirender.py/txt2img/Foreground depth cut threshold/maximum": 255, + "customscript/multirender.py/txt2img/Foreground depth cut threshold/step": 1, + "customscript/multirender.py/txt2img/Save background /visible": true, + "customscript/multirender.py/txt2img/Save background /value": true, + "customscript/multirender.py/txt2img/Save all foreground images /visible": true, + "customscript/multirender.py/txt2img/Save all foreground images /value": true, + "customscript/multirender.py/txt2img/Face correction /visible": true, + "customscript/multirender.py/txt2img/Face correction /value": true, + "customscript/multirender.py/txt2img/Random superposition /visible": true, + "customscript/multirender.py/txt2img/Random superposition /value": false, + "customscript/multirender.py/txt2img/Reverse order /visible": true, + "customscript/multirender.py/txt2img/Reverse order /value": false, + "customscript/multirender.py/txt2img/Mask foregrounds in blend/visible": true, + "customscript/multirender.py/txt2img/Mask foregrounds in blend/value": false, + "infinite-image-browsing/button/visible": true, + "infinite-image-browsing/Send to txt2img/visible": true, + "infinite-image-browsing/Send to img2img/visible": true, + "infinite-image-browsing/Send to inpaint/visible": true, + "infinite-image-browsing/Send to extras/visible": true, + "dreambooth_interface/Load Settings/visible": true, + "dreambooth_interface/Save Settings/visible": true, + "dreambooth_interface/Train/visible": true, + "dreambooth_interface/Generate Ckpt/visible": true, + "dreambooth_interface/Save Weights/visible": true, + "dreambooth_interface/Generate Samples/visible": true, + "dreambooth_interface/Cancel/visible": true, + "dreambooth_interface/Hide Advanced/visible": true, + "dreambooth_interface/Model/visible": true, + "dreambooth_interface/Model/value": null, + "dreambooth_interface/🔄/visible": true, + "dreambooth_interface/Snapshot to Resume/visible": true, + "dreambooth_interface/Snapshot to Resume/value": null, + "dreambooth_interface/Lora Model/visible": true, + "dreambooth_interface/Lora Model/value": null, + "dreambooth_interface/Create Model/visible": true, + "dreambooth_interface/Name/visible": true, + "dreambooth_interface/Name/value": "", + "dreambooth_interface/Create From Hub/visible": true, + "dreambooth_interface/Create From Hub/value": false, + "dreambooth_interface/Model Type/visible": true, + "dreambooth_interface/Model Type/value": "v1x", + "dreambooth_interface/Experimental Shared Src/value": false, + "dreambooth_interface/Model Path/visible": true, + "dreambooth_interface/Model Path/value": "", + "dreambooth_interface/HuggingFace Token/visible": true, + "dreambooth_interface/HuggingFace Token/value": "", + "dreambooth_interface/Source Checkpoint/visible": true, + "dreambooth_interface/Source Checkpoint/value": null, + "dreambooth_interface/EXPERIMENTAL: LoRA Shared Diffusers Source/value": "", + "dreambooth_interface/Extract EMA Weights/visible": true, + "dreambooth_interface/Extract EMA Weights/value": false, + "dreambooth_interface/Unfreeze Model/visible": true, + "dreambooth_interface/Unfreeze Model/value": true, + "dreambooth_interface/Directory/visible": true, + "dreambooth_interface/Directory/value": "", + "dreambooth_interface/Prompt/visible": true, + "dreambooth_interface/Prompt/value": "[filewords]", + "dreambooth_interface/Instance Token/visible": true, + "dreambooth_interface/Instance Token/value": "", + "dreambooth_interface/Class Token/visible": true, + "dreambooth_interface/Class Token/value": "", + "dreambooth_interface/Negative Prompt/visible": true, + "dreambooth_interface/Negative Prompt/value": "", + "dreambooth_interface/Class Images Per Instance Image/visible": true, + "dreambooth_interface/Class Images Per Instance Image/value": 0, + "dreambooth_interface/Class Images Per Instance Image/minimum": 0, + "dreambooth_interface/Class Images Per Instance Image/maximum": 100, + "dreambooth_interface/Class Images Per Instance Image/step": 1, + "dreambooth_interface/Classification CFG Scale/visible": true, + "dreambooth_interface/Classification CFG Scale/value": 7.5, + "dreambooth_interface/Classification CFG Scale/minimum": 1, + "dreambooth_interface/Classification CFG Scale/maximum": 12, + "dreambooth_interface/Classification CFG Scale/step": 0.1, + "dreambooth_interface/Classification Steps/visible": true, + "dreambooth_interface/Classification Steps/value": 40, + "dreambooth_interface/Classification Steps/minimum": 10, + "dreambooth_interface/Classification Steps/maximum": 200, + "dreambooth_interface/Classification Steps/step": 1, + "dreambooth_interface/Sample Image Prompt/visible": true, + "dreambooth_interface/Sample Image Prompt/value": "[filewords]", + "dreambooth_interface/Sample Negative Prompt/visible": true, + "dreambooth_interface/Sample Negative Prompt/value": "", + "dreambooth_interface/Sample Prompt Template File/visible": true, + "dreambooth_interface/Sample Prompt Template File/value": "", + "dreambooth_interface/Number of Samples to Generate/visible": true, + "dreambooth_interface/Number of Samples to Generate/value": 1, + "dreambooth_interface/Number of Samples to Generate/minimum": 0, + "dreambooth_interface/Number of Samples to Generate/maximum": 100, + "dreambooth_interface/Number of Samples to Generate/step": 1, + "dreambooth_interface/Sample Seed/visible": true, + "dreambooth_interface/Sample Seed/value": -1, + "dreambooth_interface/Sample CFG Scale/visible": true, + "dreambooth_interface/Sample CFG Scale/value": 7.5, + "dreambooth_interface/Sample CFG Scale/minimum": 1, + "dreambooth_interface/Sample CFG Scale/maximum": 12, + "dreambooth_interface/Sample CFG Scale/step": 0.1, + "dreambooth_interface/Sample Steps/visible": true, + "dreambooth_interface/Sample Steps/value": 20, + "dreambooth_interface/Sample Steps/minimum": 10, + "dreambooth_interface/Sample Steps/maximum": 200, + "dreambooth_interface/Sample Steps/step": 1, + "dreambooth_interface/Use EMA/visible": true, + "dreambooth_interface/Use EMA/value": false, + "dreambooth_interface/Optimizer/visible": true, + "dreambooth_interface/Optimizer/value": "8bit AdamW", + "dreambooth_interface/Mixed Precision/visible": true, + "dreambooth_interface/Mixed Precision/value": "bf16", + "dreambooth_interface/Full Mixed Precision/visible": true, + "dreambooth_interface/Full Mixed Precision/value": true, + "dreambooth_interface/Memory Attention/visible": true, + "dreambooth_interface/Memory Attention/value": "default", + "dreambooth_interface/Cache Latents/visible": true, + "dreambooth_interface/Cache Latents/value": true, + "dreambooth_interface/Train UNET/visible": true, + "dreambooth_interface/Train UNET/value": true, + "dreambooth_interface/Step Ratio of Text Encoder Training/visible": true, + "dreambooth_interface/Step Ratio of Text Encoder Training/value": 1.0, + "dreambooth_interface/Step Ratio of Text Encoder Training/minimum": 0, + "dreambooth_interface/Step Ratio of Text Encoder Training/maximum": 1, + "dreambooth_interface/Step Ratio of Text Encoder Training/step": 0.05, + "dreambooth_interface/Offset Noise/visible": true, + "dreambooth_interface/Offset Noise/value": 0, + "dreambooth_interface/Offset Noise/minimum": -1, + "dreambooth_interface/Offset Noise/maximum": 1, + "dreambooth_interface/Offset Noise/step": 0.01, + "dreambooth_interface/Freeze CLIP Normalization Layers/visible": true, + "dreambooth_interface/Freeze CLIP Normalization Layers/value": false, + "dreambooth_interface/Clip Skip/visible": true, + "dreambooth_interface/Clip Skip/value": 2, + "dreambooth_interface/Clip Skip/minimum": 1, + "dreambooth_interface/Clip Skip/maximum": 12, + "dreambooth_interface/Clip Skip/step": 1, + "dreambooth_interface/Weight Decay/visible": true, + "dreambooth_interface/Weight Decay/value": 0.01, + "dreambooth_interface/Weight Decay/minimum": 0, + "dreambooth_interface/Weight Decay/maximum": 1, + "dreambooth_interface/Weight Decay/step": 0.001, + "dreambooth_interface/TENC Weight Decay/visible": true, + "dreambooth_interface/TENC Weight Decay/value": 0.01, + "dreambooth_interface/TENC Weight Decay/minimum": 0, + "dreambooth_interface/TENC Weight Decay/maximum": 1, + "dreambooth_interface/TENC Weight Decay/step": 0.001, + "dreambooth_interface/TENC Gradient Clip Norm/visible": true, + "dreambooth_interface/TENC Gradient Clip Norm/value": 0, + "dreambooth_interface/TENC Gradient Clip Norm/minimum": 0, + "dreambooth_interface/TENC Gradient Clip Norm/maximum": 128, + "dreambooth_interface/TENC Gradient Clip Norm/step": 0.25, + "dreambooth_interface/Min SNR Gamma/visible": true, + "dreambooth_interface/Min SNR Gamma/value": 0, + "dreambooth_interface/Min SNR Gamma/minimum": 0, + "dreambooth_interface/Min SNR Gamma/maximum": 10, + "dreambooth_interface/Min SNR Gamma/step": 0.1, + "dreambooth_interface/Pad Tokens/visible": true, + "dreambooth_interface/Pad Tokens/value": true, + "dreambooth_interface/Strict Tokens/visible": true, + "dreambooth_interface/Strict Tokens/value": false, + "dreambooth_interface/Shuffle Tags/visible": true, + "dreambooth_interface/Shuffle Tags/value": true, + "dreambooth_interface/Max Token Length/visible": true, + "dreambooth_interface/Max Token Length/value": 75, + "dreambooth_interface/Max Token Length/minimum": 75, + "dreambooth_interface/Max Token Length/maximum": 300, + "dreambooth_interface/Max Token Length/step": 75, + "dreambooth_interface/Training Steps Per Image (Epochs)/visible": true, + "dreambooth_interface/Training Steps Per Image (Epochs)/value": 100, + "dreambooth_interface/Training Steps Per Image (Epochs)/minimum": 0, + "dreambooth_interface/Training Steps Per Image (Epochs)/maximum": 1000, + "dreambooth_interface/Training Steps Per Image (Epochs)/step": 1, + "dreambooth_interface/Pause After N Epochs/visible": true, + "dreambooth_interface/Pause After N Epochs/value": 0, + "dreambooth_interface/Pause After N Epochs/minimum": 0, + "dreambooth_interface/Pause After N Epochs/maximum": 100, + "dreambooth_interface/Pause After N Epochs/step": 1, + "dreambooth_interface/Amount of time to pause between Epochs (s)/visible": true, + "dreambooth_interface/Amount of time to pause between Epochs (s)/value": 0, + "dreambooth_interface/Amount of time to pause between Epochs (s)/minimum": 0, + "dreambooth_interface/Amount of time to pause between Epochs (s)/maximum": 3600, + "dreambooth_interface/Amount of time to pause between Epochs (s)/step": 1, + "dreambooth_interface/Save Model Frequency (Epochs)/visible": true, + "dreambooth_interface/Save Model Frequency (Epochs)/value": 25, + "dreambooth_interface/Save Model Frequency (Epochs)/minimum": 0, + "dreambooth_interface/Save Model Frequency (Epochs)/maximum": 1000, + "dreambooth_interface/Save Model Frequency (Epochs)/step": 1, + "dreambooth_interface/Save Preview(s) Frequency (Epochs)/visible": true, + "dreambooth_interface/Save Preview(s) Frequency (Epochs)/value": 5, + "dreambooth_interface/Save Preview(s) Frequency (Epochs)/minimum": 0, + "dreambooth_interface/Save Preview(s) Frequency (Epochs)/maximum": 1000, + "dreambooth_interface/Save Preview(s) Frequency (Epochs)/step": 1, + "dreambooth_interface/Batch Size/visible": true, + "dreambooth_interface/Batch Size/value": 1, + "dreambooth_interface/Batch Size/minimum": 1, + "dreambooth_interface/Batch Size/maximum": 100, + "dreambooth_interface/Batch Size/step": 1, + "dreambooth_interface/Gradient Accumulation Steps/visible": true, + "dreambooth_interface/Gradient Accumulation Steps/value": 1, + "dreambooth_interface/Gradient Accumulation Steps/minimum": 1, + "dreambooth_interface/Gradient Accumulation Steps/maximum": 100, + "dreambooth_interface/Gradient Accumulation Steps/step": 1, + "dreambooth_interface/Class Batch Size/visible": true, + "dreambooth_interface/Class Batch Size/value": 1, + "dreambooth_interface/Class Batch Size/minimum": 1, + "dreambooth_interface/Class Batch Size/maximum": 100, + "dreambooth_interface/Class Batch Size/step": 1, + "dreambooth_interface/Set Gradients to None When Zeroing/visible": true, + "dreambooth_interface/Set Gradients to None When Zeroing/value": true, + "dreambooth_interface/Gradient Checkpointing/visible": true, + "dreambooth_interface/Gradient Checkpointing/value": true, + "dreambooth_interface/Lora UNET Learning Rate/visible": true, + "dreambooth_interface/Lora UNET Learning Rate/value": 0.0001, + "dreambooth_interface/Lora Text Encoder Learning Rate/visible": true, + "dreambooth_interface/Lora Text Encoder Learning Rate/value": 5e-05, + "dreambooth_interface/Learning Rate/visible": true, + "dreambooth_interface/Learning Rate/value": 2e-06, + "dreambooth_interface/Text Encoder Learning Rate/visible": true, + "dreambooth_interface/Text Encoder Learning Rate/value": 1e-06, + "dreambooth_interface/Learning Rate Scheduler/visible": true, + "dreambooth_interface/Learning Rate Scheduler/value": "constant_with_warmup", + "dreambooth_interface/Min Learning Rate/value": 1e-06, + "dreambooth_interface/Number of Hard Resets/value": 1, + "dreambooth_interface/Constant/Linear Starting Factor/value": 0.5, + "dreambooth_interface/Polynomial Power/value": 1.0, + "dreambooth_interface/Scale Position/value": 0.5, + "dreambooth_interface/Scale Position/minimum": 0, + "dreambooth_interface/Scale Position/maximum": 1, + "dreambooth_interface/Scale Position/step": 0.05, + "dreambooth_interface/Learning Rate Warmup Steps/visible": true, + "dreambooth_interface/Learning Rate Warmup Steps/value": 500, + "dreambooth_interface/Learning Rate Warmup Steps/minimum": 0, + "dreambooth_interface/Learning Rate Warmup Steps/maximum": 1000, + "dreambooth_interface/Learning Rate Warmup Steps/step": 5, + "dreambooth_interface/Use LORA/visible": true, + "dreambooth_interface/Use LORA/value": false, + "dreambooth_interface/Use Lora Extended/value": false, + "dreambooth_interface/Train Imagic Only/value": false, + "dreambooth_interface/Train Inpainting Model/value": false, + "dreambooth_interface/Lora UNET Rank/visible": true, + "dreambooth_interface/Lora UNET Rank/value": 4, + "dreambooth_interface/Lora UNET Rank/minimum": 2, + "dreambooth_interface/Lora UNET Rank/maximum": 128, + "dreambooth_interface/Lora UNET Rank/step": 2, + "dreambooth_interface/Lora Text Encoder Rank/visible": true, + "dreambooth_interface/Lora Text Encoder Rank/value": 4, + "dreambooth_interface/Lora Text Encoder Rank/minimum": 2, + "dreambooth_interface/Lora Text Encoder Rank/maximum": 128, + "dreambooth_interface/Lora Text Encoder Rank/step": 2, + "dreambooth_interface/Lora Weight (Alpha)/visible": true, + "dreambooth_interface/Lora Weight (Alpha)/value": 0.8, + "dreambooth_interface/Lora Weight (Alpha)/minimum": 0.1, + "dreambooth_interface/Lora Weight (Alpha)/maximum": 1, + "dreambooth_interface/Lora Weight (Alpha)/step": 0.1, + "dreambooth_interface/Max Resolution/visible": true, + "dreambooth_interface/Max Resolution/value": 512, + "dreambooth_interface/Max Resolution/minimum": 128, + "dreambooth_interface/Max Resolution/maximum": 2048, + "dreambooth_interface/Max Resolution/step": 64, + "dreambooth_interface/Apply Horizontal Flip/visible": true, + "dreambooth_interface/Apply Horizontal Flip/value": false, + "dreambooth_interface/Dynamic Image Normalization/visible": true, + "dreambooth_interface/Dynamic Image Normalization/value": false, + "dreambooth_interface/Scale Prior Loss/visible": true, + "dreambooth_interface/Scale Prior Loss/value": false, + "dreambooth_interface/Prior Loss Weight/visible": true, + "dreambooth_interface/Prior Loss Weight/value": 0.75, + "dreambooth_interface/Prior Loss Weight/minimum": 0.01, + "dreambooth_interface/Prior Loss Weight/maximum": 1, + "dreambooth_interface/Prior Loss Weight/step": 0.01, + "dreambooth_interface/Prior Loss Target/value": 100.0, + "dreambooth_interface/Minimum Prior Loss Weight/value": 0.1, + "dreambooth_interface/Minimum Prior Loss Weight/minimum": 0.01, + "dreambooth_interface/Minimum Prior Loss Weight/maximum": 1, + "dreambooth_interface/Minimum Prior Loss Weight/step": 0.01, + "dreambooth_interface/Custom Model Name/visible": true, + "dreambooth_interface/Custom Model Name/value": "", + "dreambooth_interface/Save in .safetensors format/value": true, + "dreambooth_interface/Save EMA Weights to Generated Models/visible": true, + "dreambooth_interface/Save EMA Weights to Generated Models/value": true, + "dreambooth_interface/Use EMA Weights for Inference/visible": true, + "dreambooth_interface/Use EMA Weights for Inference/value": false, + "dreambooth_interface/Half Model/visible": true, + "dreambooth_interface/Half Model/value": false, + "dreambooth_interface/Save Checkpoint to Subdirectory/visible": true, + "dreambooth_interface/Save Checkpoint to Subdirectory/value": true, + "dreambooth_interface/Generate a .ckpt file when saving during training./visible": true, + "dreambooth_interface/Generate a .ckpt file when saving during training./value": false, + "dreambooth_interface/Generate a .ckpt file when training completes./visible": true, + "dreambooth_interface/Generate a .ckpt file when training completes./value": true, + "dreambooth_interface/Generate a .ckpt file when training is canceled./visible": true, + "dreambooth_interface/Generate a .ckpt file when training is canceled./value": false, + "dreambooth_interface/Generate lora weights when saving during training./visible": true, + "dreambooth_interface/Generate lora weights when saving during training./value": false, + "dreambooth_interface/Generate lora weights when training completes./visible": true, + "dreambooth_interface/Generate lora weights when training completes./value": true, + "dreambooth_interface/Generate lora weights when training is canceled./visible": true, + "dreambooth_interface/Generate lora weights when training is canceled./value": false, + "dreambooth_interface/Generate lora weights for extra networks./visible": true, + "dreambooth_interface/Generate lora weights for extra networks./value": false, + "dreambooth_interface/Save separate diffusers snapshots when saving during training./visible": true, + "dreambooth_interface/Save separate diffusers snapshots when saving during training./value": false, + "dreambooth_interface/Save separate diffusers snapshots when training completes./visible": true, + "dreambooth_interface/Save separate diffusers snapshots when training completes./value": false, + "dreambooth_interface/Save separate diffusers snapshots when training is canceled./visible": true, + "dreambooth_interface/Save separate diffusers snapshots when training is canceled./value": false, + "dreambooth_interface/Image Generation Library/visible": true, + "dreambooth_interface/Image Generation Library/value": "Native Diffusers", + "dreambooth_interface/Image Generation Scheduler/visible": true, + "dreambooth_interface/Image Generation Scheduler/value": "DEISMultistep", + "dreambooth_interface/Generate Class Images/visible": true, + "dreambooth_interface/Generate Graph/visible": true, + "dreambooth_interface/Graph Smoothing Steps/visible": true, + "dreambooth_interface/Graph Smoothing Steps/value": 50, + "dreambooth_interface/Graph Smoothing Steps/minimum": 10, + "dreambooth_interface/Graph Smoothing Steps/maximum": 500, + "dreambooth_interface/Graph Smoothing Steps/step": 1, + "dreambooth_interface/Debug Buckets/visible": true, + "dreambooth_interface/Epochs to Simulate/visible": true, + "dreambooth_interface/Epochs to Simulate/value": 10, + "dreambooth_interface/Epochs to Simulate/minimum": 1, + "dreambooth_interface/Epochs to Simulate/maximum": 1000, + "dreambooth_interface/Epochs to Simulate/step": 1, + "dreambooth_interface/Batch Size to Simulate/visible": true, + "dreambooth_interface/Batch Size to Simulate/value": 1, + "dreambooth_interface/Batch Size to Simulate/minimum": 1, + "dreambooth_interface/Batch Size to Simulate/maximum": 500, + "dreambooth_interface/Batch Size to Simulate/step": 1, + "dreambooth_interface/Generate Sample Images/visible": true, + "dreambooth_interface/Sample Prompt/visible": true, + "dreambooth_interface/Sample Prompt/value": "", + "dreambooth_interface/Sample Prompt File/visible": true, + "dreambooth_interface/Sample Prompt File/value": "", + "dreambooth_interface/Sample Width/visible": true, + "dreambooth_interface/Sample Width/value": 512, + "dreambooth_interface/Sample Width/minimum": 128, + "dreambooth_interface/Sample Width/maximum": 2048, + "dreambooth_interface/Sample Width/step": 64, + "dreambooth_interface/Sample Height/visible": true, + "dreambooth_interface/Sample Height/value": 512, + "dreambooth_interface/Sample Height/minimum": 128, + "dreambooth_interface/Sample Height/maximum": 2048, + "dreambooth_interface/Sample Height/step": 64, + "dreambooth_interface/Sample Batch Size/visible": true, + "dreambooth_interface/Sample Batch Size/value": 1, + "dreambooth_interface/Sample Batch Size/minimum": 1, + "dreambooth_interface/Sample Batch Size/maximum": 100, + "dreambooth_interface/Sample Batch Size/step": 1, + "dreambooth_interface/Swap Sample Faces/visible": true, + "dreambooth_interface/Swap Sample Faces/value": false, + "dreambooth_interface/Swap Prompt/visible": true, + "dreambooth_interface/Swap Prompt/value": "", + "dreambooth_interface/Swap Negative Prompt/visible": true, + "dreambooth_interface/Swap Negative Prompt/value": "", + "dreambooth_interface/Swap Steps/visible": true, + "dreambooth_interface/Swap Steps/value": 40, + "dreambooth_interface/Swap Steps/minimum": 0, + "dreambooth_interface/Swap Steps/maximum": 100, + "dreambooth_interface/Swap Steps/step": 1, + "dreambooth_interface/Swap Batch/visible": true, + "dreambooth_interface/Swap Batch/value": 40, + "dreambooth_interface/Swap Batch/minimum": 0, + "dreambooth_interface/Swap Batch/maximum": 100, + "dreambooth_interface/Swap Batch/step": 1, + "dreambooth_interface/Use txt2img/value": false, + "dreambooth_interface/Sanity Sample Prompt/visible": true, + "dreambooth_interface/Sanity Sample Prompt/value": "", + "dreambooth_interface/Sanity Sample Negative Prompt/visible": true, + "dreambooth_interface/Sanity Sample Negative Prompt/value": "", + "dreambooth_interface/Sanity Sample Seed/visible": true, + "dreambooth_interface/Sanity Sample Seed/value": 420420.0, + "dreambooth_interface/Pretrained VAE Name or Path/visible": true, + "dreambooth_interface/Pretrained VAE Name or Path/value": "", + "dreambooth_interface/Use Concepts List/visible": true, + "dreambooth_interface/Use Concepts List/value": false, + "dreambooth_interface/Concepts List/visible": true, + "dreambooth_interface/Concepts List/value": "", + "dreambooth_interface/API Key/visible": true, + "dreambooth_interface/API Key/value": "", + "dreambooth_interface/🗑/visible": true, + "dreambooth_interface/Discord Webhook/visible": true, + "dreambooth_interface/Discord Webhook/value": "", + "dreambooth_interface/Save and Test Webhook/visible": true, + "dreambooth_interface/Token Merging (ToMe)/visible": true, + "dreambooth_interface/Token Merging (ToMe)/value": 0, + "dreambooth_interface/Token Merging (ToMe)/minimum": 0, + "dreambooth_interface/Token Merging (ToMe)/maximum": 1, + "dreambooth_interface/Token Merging (ToMe)/step": 0.1, + "dreambooth_interface/Calculate Split Loss/visible": true, + "dreambooth_interface/Calculate Split Loss/value": true, + "dreambooth_interface/Disable Class Matching/visible": true, + "dreambooth_interface/Disable Class Matching/value": false, + "dreambooth_interface/Disable Logging/visible": true, + "dreambooth_interface/Disable Logging/value": false, + "dreambooth_interface/Deterministic/visible": true, + "dreambooth_interface/Deterministic/value": false, + "dreambooth_interface/Use EMA for prediction/visible": true, + "dreambooth_interface/Use EMA for prediction/value": false, + "dreambooth_interface/LoRA use buggy requires grad/visible": true, + "dreambooth_interface/LoRA use buggy requires grad/value": false, + "dreambooth_interface/Noise scheduler/visible": true, + "dreambooth_interface/Noise scheduler/value": "DDPM", + "dreambooth_interface/Update Extension and Restart/visible": true, + "dreambooth_interface/Source Path/visible": true, + "dreambooth_interface/Source Path/value": "", + "dreambooth_interface/Dest Path/visible": true, + "dreambooth_interface/Dest Path/value": "", + "dreambooth_interface/Max Res/visible": true, + "dreambooth_interface/Max Res/value": 512, + "dreambooth_interface/Max Res/minimum": 0, + "dreambooth_interface/Max Res/maximum": 2048, + "dreambooth_interface/Max Res/step": 64, + "dreambooth_interface/Bucket Steps/visible": true, + "dreambooth_interface/Bucket Steps/value": 8, + "dreambooth_interface/Bucket Steps/minimum": 0, + "dreambooth_interface/Bucket Steps/maximum": 512, + "dreambooth_interface/Bucket Steps/step": 8, + "dreambooth_interface/Dry Run/visible": true, + "dreambooth_interface/Dry Run/value": false, + "dreambooth_interface/Start Cropping/visible": true, + "dreambooth_interface/Refresh/visible": true, + "dreambooth_interface/X/visible": true, + "customscript/tilevae.py/txt2img/Enable Tiled VAE/visible": true, + "customscript/tilevae.py/txt2img/Enable Tiled VAE/value": false, + "customscript/tilevae.py/txt2img/Move VAE to GPU (if possible)/visible": true, + "customscript/tilevae.py/txt2img/Move VAE to GPU (if possible)/value": true, + "customscript/tilevae.py/txt2img/Encoder Tile Size/visible": true, + "customscript/tilevae.py/txt2img/Encoder Tile Size/value": 3072, + "customscript/tilevae.py/txt2img/Encoder Tile Size/minimum": 256, + "customscript/tilevae.py/txt2img/Encoder Tile Size/maximum": 4096, + "customscript/tilevae.py/txt2img/Encoder Tile Size/step": 16, + "customscript/tilevae.py/txt2img/Decoder Tile Size/visible": true, + "customscript/tilevae.py/txt2img/Decoder Tile Size/value": 192, + "customscript/tilevae.py/txt2img/Decoder Tile Size/minimum": 48, + "customscript/tilevae.py/txt2img/Decoder Tile Size/maximum": 512, + "customscript/tilevae.py/txt2img/Decoder Tile Size/step": 16, + "customscript/tilevae.py/txt2img/Fast Encoder/visible": true, + "customscript/tilevae.py/txt2img/Fast Encoder/value": true, + "customscript/tilevae.py/txt2img/Fast Encoder Color Fix/visible": true, + "customscript/tilevae.py/txt2img/Fast Encoder Color Fix/value": false, + "customscript/tilevae.py/txt2img/Fast Decoder/visible": true, + "customscript/tilevae.py/txt2img/Fast Decoder/value": true, + "customscript/tilevae.py/img2img/Enable Tiled VAE/visible": true, + "customscript/tilevae.py/img2img/Enable Tiled VAE/value": false, + "customscript/tilevae.py/img2img/Move VAE to GPU (if possible)/visible": true, + "customscript/tilevae.py/img2img/Move VAE to GPU (if possible)/value": true, + "customscript/tilevae.py/img2img/Encoder Tile Size/visible": true, + "customscript/tilevae.py/img2img/Encoder Tile Size/value": 3072, + "customscript/tilevae.py/img2img/Encoder Tile Size/minimum": 256, + "customscript/tilevae.py/img2img/Encoder Tile Size/maximum": 4096, + "customscript/tilevae.py/img2img/Encoder Tile Size/step": 16, + "customscript/tilevae.py/img2img/Decoder Tile Size/visible": true, + "customscript/tilevae.py/img2img/Decoder Tile Size/value": 192, + "customscript/tilevae.py/img2img/Decoder Tile Size/minimum": 48, + "customscript/tilevae.py/img2img/Decoder Tile Size/maximum": 512, + "customscript/tilevae.py/img2img/Decoder Tile Size/step": 16, + "customscript/tilevae.py/img2img/Fast Encoder/visible": true, + "customscript/tilevae.py/img2img/Fast Encoder/value": true, + "customscript/tilevae.py/img2img/Fast Encoder Color Fix/visible": true, + "customscript/tilevae.py/img2img/Fast Encoder Color Fix/value": false, + "customscript/tilevae.py/img2img/Fast Decoder/visible": true, + "customscript/tilevae.py/img2img/Fast Decoder/value": true, + "terminal/Input Command Here/visible": true, + "terminal/Input Command Here/value": "", + "terminal/Output Results (no need to scroll down if the output code has appeared, if the output code appears, the code sign is complete)/visible": true, + "terminal/Output Results (no need to scroll down if the output code has appeared, if the output code appears, the code sign is complete)/value": "", + "terminal/run command/visible": true, + "txt2img/Motion module/visible": true, + "txt2img/Motion module/value": null, + "txt2img/Enable AnimateDiff/visible": true, + "txt2img/Enable AnimateDiff/value": false, + "txt2img/Number of frames/visible": true, + "txt2img/Number of frames/value": 0, + "txt2img/FPS/visible": true, + "txt2img/FPS/value": 8, + "txt2img/Display loop number/visible": true, + "txt2img/Display loop number/value": 0, + "txt2img/Closed loop/visible": true, + "txt2img/Closed loop/value": "R-P", + "txt2img/Context batch size/visible": true, + "txt2img/Context batch size/value": 16, + "txt2img/Context batch size/minimum": 1, + "txt2img/Context batch size/maximum": 32, + "txt2img/Context batch size/step": 1, + "txt2img/Stride/visible": true, + "txt2img/Stride/value": 1, + "txt2img/Overlap/visible": true, + "txt2img/Overlap/value": -1, + "txt2img/Frame Interpolation/visible": true, + "txt2img/Frame Interpolation/value": "Off", + "txt2img/Interp X/visible": true, + "txt2img/Interp X/value": 10, + "txt2img/Enable FreeInit/visible": true, + "txt2img/Enable FreeInit/value": false, + "txt2img/Filter Type/visible": true, + "txt2img/Filter Type/value": "butterworth", + "txt2img/d_s/visible": true, + "txt2img/d_s/value": 0.25, + "txt2img/d_s/minimum": 0, + "txt2img/d_s/maximum": 1, + "txt2img/d_s/step": 0.125, + "txt2img/d_t/visible": true, + "txt2img/d_t/value": 0.25, + "txt2img/d_t/minimum": 0, + "txt2img/d_t/maximum": 1, + "txt2img/d_t/step": 0.125, + "txt2img/FreeInit Iterations/visible": true, + "txt2img/FreeInit Iterations/value": 3, + "txt2img/FreeInit Iterations/minimum": 2, + "txt2img/FreeInit Iterations/maximum": 5, + "txt2img/FreeInit Iterations/step": 1, + "txt2img/Video path/visible": true, + "txt2img/Video path/value": "", + "txt2img/Mask path/value": "", + "txt2img/Move motion module to CPU (default if lowvram)/visible": true, + "txt2img/Remove motion module from any memory/visible": true, + "img2img/Motion module/visible": true, + "img2img/Motion module/value": null, + "img2img/Enable AnimateDiff/visible": true, + "img2img/Enable AnimateDiff/value": false, + "img2img/Number of frames/visible": true, + "img2img/Number of frames/value": 0, + "img2img/FPS/visible": true, + "img2img/FPS/value": 8, + "img2img/Display loop number/visible": true, + "img2img/Display loop number/value": 0, + "img2img/Closed loop/visible": true, + "img2img/Closed loop/value": "R-P", + "img2img/Context batch size/visible": true, + "img2img/Context batch size/value": 16, + "img2img/Context batch size/minimum": 1, + "img2img/Context batch size/maximum": 32, + "img2img/Context batch size/step": 1, + "img2img/Stride/visible": true, + "img2img/Stride/value": 1, + "img2img/Overlap/visible": true, + "img2img/Overlap/value": -1, + "img2img/Frame Interpolation/visible": true, + "img2img/Frame Interpolation/value": "Off", + "img2img/Interp X/visible": true, + "img2img/Interp X/value": 10, + "img2img/Enable FreeInit/visible": true, + "img2img/Enable FreeInit/value": false, + "img2img/Filter Type/visible": true, + "img2img/Filter Type/value": "butterworth", + "img2img/d_s/visible": true, + "img2img/d_s/value": 0.25, + "img2img/d_s/minimum": 0, + "img2img/d_s/maximum": 1, + "img2img/d_s/step": 0.125, + "img2img/d_t/visible": true, + "img2img/d_t/value": 0.25, + "img2img/d_t/minimum": 0, + "img2img/d_t/maximum": 1, + "img2img/d_t/step": 0.125, + "img2img/FreeInit Iterations/visible": true, + "img2img/FreeInit Iterations/value": 3, + "img2img/FreeInit Iterations/minimum": 2, + "img2img/FreeInit Iterations/maximum": 5, + "img2img/FreeInit Iterations/step": 1, + "img2img/Video path/visible": true, + "img2img/Video path/value": "", + "img2img/Mask path/value": "", + "img2img/Latent power/visible": true, + "img2img/Latent power/value": 1, + "img2img/Latent power/minimum": 0.1, + "img2img/Latent power/maximum": 10, + "img2img/Latent power/step": 0.1, + "img2img/Latent scale/visible": true, + "img2img/Latent scale/value": 32, + "img2img/Latent scale/minimum": 1, + "img2img/Latent scale/maximum": 128, + "img2img/Latent scale/step": 1, + "img2img/Optional latent power for last frame/visible": true, + "img2img/Optional latent power for last frame/value": 1, + "img2img/Optional latent power for last frame/minimum": 0.1, + "img2img/Optional latent power for last frame/maximum": 10, + "img2img/Optional latent power for last frame/step": 0.1, + "img2img/Optional latent scale for last frame/visible": true, + "img2img/Optional latent scale for last frame/value": 32, + "img2img/Optional latent scale for last frame/minimum": 1, + "img2img/Optional latent scale for last frame/maximum": 128, + "img2img/Optional latent scale for last frame/step": 1, + "img2img/Move motion module to CPU (default if lowvram)/visible": true, + "img2img/Remove motion module from any memory/visible": true, + "txt2img/Interrupting.../visible": true, + "customscript/xyz_grid.py/txt2img/Vary seeds for X/visible": true, + "customscript/xyz_grid.py/txt2img/Vary seeds for X/value": false, + "customscript/xyz_grid.py/txt2img/Vary seeds for Y/visible": true, + "customscript/xyz_grid.py/txt2img/Vary seeds for Y/value": false, + "customscript/xyz_grid.py/txt2img/Vary seeds for Z/visible": true, + "customscript/xyz_grid.py/txt2img/Vary seeds for Z/value": false, + "txt2img/✨/visible": true, + "img2img/Interrupting.../visible": true, + "img2img/Soft inpainting/visible": true, + "customscript/soft_inpainting.py/img2img/Soft inpainting/value": false, + "img2img/Soft inpainting/value": false, + "customscript/soft_inpainting.py/img2img/Schedule bias/visible": true, + "customscript/soft_inpainting.py/img2img/Schedule bias/value": 1, + "customscript/soft_inpainting.py/img2img/Schedule bias/minimum": 0, + "customscript/soft_inpainting.py/img2img/Schedule bias/maximum": 8, + "customscript/soft_inpainting.py/img2img/Schedule bias/step": 0.1, + "customscript/soft_inpainting.py/img2img/Preservation strength/visible": true, + "customscript/soft_inpainting.py/img2img/Preservation strength/value": 0.5, + "customscript/soft_inpainting.py/img2img/Preservation strength/minimum": 0, + "customscript/soft_inpainting.py/img2img/Preservation strength/maximum": 8, + "customscript/soft_inpainting.py/img2img/Preservation strength/step": 0.05, + "customscript/soft_inpainting.py/img2img/Transition contrast boost/visible": true, + "customscript/soft_inpainting.py/img2img/Transition contrast boost/value": 4, + "customscript/soft_inpainting.py/img2img/Transition contrast boost/minimum": 1, + "customscript/soft_inpainting.py/img2img/Transition contrast boost/maximum": 32, + "customscript/soft_inpainting.py/img2img/Transition contrast boost/step": 0.5, + "customscript/soft_inpainting.py/img2img/Mask influence/visible": true, + "customscript/soft_inpainting.py/img2img/Mask influence/value": 0, + "customscript/soft_inpainting.py/img2img/Mask influence/minimum": 0, + "customscript/soft_inpainting.py/img2img/Mask influence/maximum": 1, + "customscript/soft_inpainting.py/img2img/Mask influence/step": 0.05, + "customscript/soft_inpainting.py/img2img/Difference threshold/visible": true, + "customscript/soft_inpainting.py/img2img/Difference threshold/value": 0.5, + "customscript/soft_inpainting.py/img2img/Difference threshold/minimum": 0, + "customscript/soft_inpainting.py/img2img/Difference threshold/maximum": 8, + "customscript/soft_inpainting.py/img2img/Difference threshold/step": 0.25, + "customscript/soft_inpainting.py/img2img/Difference contrast/visible": true, + "customscript/soft_inpainting.py/img2img/Difference contrast/value": 2, + "customscript/soft_inpainting.py/img2img/Difference contrast/minimum": 0, + "customscript/soft_inpainting.py/img2img/Difference contrast/maximum": 8, + "customscript/soft_inpainting.py/img2img/Difference contrast/step": 0.25, + "customscript/xyz_grid.py/img2img/Vary seeds for X/visible": true, + "customscript/xyz_grid.py/img2img/Vary seeds for X/value": false, + "customscript/xyz_grid.py/img2img/Vary seeds for Y/visible": true, + "customscript/xyz_grid.py/img2img/Vary seeds for Y/value": false, + "customscript/xyz_grid.py/img2img/Vary seeds for Z/visible": true, + "customscript/xyz_grid.py/img2img/Vary seeds for Z/value": false, + "extras/Interrupting.../visible": true, + "customscript/tileglobal.py/txt2img/Enable DemoFusion(Do not open it with tilediffusion)/visible": true, + "customscript/tileglobal.py/txt2img/Enable DemoFusion(Do not open it with tilediffusion)/value": false, + "customscript/tileglobal.py/txt2img/Keep input image size/value": true, + "customscript/tileglobal.py/txt2img/Random jitter windows/visible": true, + "customscript/tileglobal.py/txt2img/Random jitter windows/value": true, + "customscript/tileglobal.py/txt2img/Method/visible": true, + "customscript/tileglobal.py/txt2img/Method/value": "DemoFusion", + "customscript/tileglobal.py/txt2img/Move ControlNet tensor to CPU (if applicable)/visible": true, + "customscript/tileglobal.py/txt2img/Move ControlNet tensor to CPU (if applicable)/value": false, + "customscript/tileglobal.py/txt2img/Latent window size/visible": true, + "customscript/tileglobal.py/txt2img/Latent window size/value": 128, + "customscript/tileglobal.py/txt2img/Latent window size/minimum": 16, + "customscript/tileglobal.py/txt2img/Latent window size/maximum": 256, + "customscript/tileglobal.py/txt2img/Latent window size/step": 16, + "customscript/tileglobal.py/txt2img/Latent window overlap/visible": true, + "customscript/tileglobal.py/txt2img/Latent window overlap/value": 64, + "customscript/tileglobal.py/txt2img/Latent window overlap/minimum": 0, + "customscript/tileglobal.py/txt2img/Latent window overlap/maximum": 256, + "customscript/tileglobal.py/txt2img/Latent window overlap/step": 4, + "customscript/tileglobal.py/txt2img/Latent window batch size/visible": true, + "customscript/tileglobal.py/txt2img/Latent window batch size/value": 4, + "customscript/tileglobal.py/txt2img/Latent window batch size/minimum": 1, + "customscript/tileglobal.py/txt2img/Latent window batch size/maximum": 8, + "customscript/tileglobal.py/txt2img/Latent window batch size/step": 1, + "customscript/tileglobal.py/txt2img/c1/visible": true, + "customscript/tileglobal.py/txt2img/c1/value": 3, + "customscript/tileglobal.py/txt2img/c1/minimum": 0.5, + "customscript/tileglobal.py/txt2img/c1/maximum": 3, + "customscript/tileglobal.py/txt2img/c1/step": 0.1, + "customscript/tileglobal.py/txt2img/c2/visible": true, + "customscript/tileglobal.py/txt2img/c2/value": 1, + "customscript/tileglobal.py/txt2img/c2/minimum": 0.5, + "customscript/tileglobal.py/txt2img/c2/maximum": 3, + "customscript/tileglobal.py/txt2img/c2/step": 0.1, + "customscript/tileglobal.py/txt2img/c3/value": 1, + "customscript/tileglobal.py/txt2img/c3/minimum": 0.5, + "customscript/tileglobal.py/txt2img/c3/maximum": 3, + "customscript/tileglobal.py/txt2img/c3/step": 0.1, + "customscript/tileglobal.py/txt2img/Scale_Factor/visible": true, + "customscript/tileglobal.py/txt2img/Scale_Factor/value": 2.0, + "customscript/tileglobal.py/txt2img/Scale_Factor/minimum": 1.0, + "customscript/tileglobal.py/txt2img/Scale_Factor/maximum": 8.0, + "customscript/tileglobal.py/txt2img/Scale_Factor/step": 1, + "customscript/tileglobal.py/txt2img/Enable Noise Inversion/visible": true, + "customscript/tileglobal.py/txt2img/Enable Noise Inversion/value": false, + "customscript/tileglobal.py/txt2img/Inversion steps/visible": true, + "customscript/tileglobal.py/txt2img/Inversion steps/value": 10, + "customscript/tileglobal.py/txt2img/Inversion steps/minimum": 1, + "customscript/tileglobal.py/txt2img/Inversion steps/maximum": 200, + "customscript/tileglobal.py/txt2img/Inversion steps/step": 1, + "customscript/tileglobal.py/txt2img/Retouch/visible": true, + "customscript/tileglobal.py/txt2img/Retouch/value": 1, + "customscript/tileglobal.py/txt2img/Retouch/minimum": 1, + "customscript/tileglobal.py/txt2img/Retouch/maximum": 100, + "customscript/tileglobal.py/txt2img/Retouch/step": 0.1, + "customscript/tileglobal.py/txt2img/Renoise strength/visible": true, + "customscript/tileglobal.py/txt2img/Renoise strength/value": 1, + "customscript/tileglobal.py/txt2img/Renoise strength/minimum": 0, + "customscript/tileglobal.py/txt2img/Renoise strength/maximum": 2, + "customscript/tileglobal.py/txt2img/Renoise strength/step": 0.01, + "customscript/tileglobal.py/txt2img/Renoise kernel size/visible": true, + "customscript/tileglobal.py/txt2img/Renoise kernel size/value": 64, + "customscript/tileglobal.py/txt2img/Renoise kernel size/minimum": 2, + "customscript/tileglobal.py/txt2img/Renoise kernel size/maximum": 512, + "customscript/tileglobal.py/txt2img/Renoise kernel size/step": 1, + "txt2img/Clear Images/visible": true, + "txt2img/Mask Upload/visible": true, + "txt2img/Mask Upload/value": false, + "txt2img/Crop input image based on A1111 mask/value": false, + "txt2img/Hires-Fix Option/value": "Both", + "txt2img/[Batch Loopback] Automatically send generated images to this ControlNet unit in batch generation/value": false, + "txt2img/Batch Option/visible": true, + "txt2img/Batch Option/value": "All ControlNet units for all images in a batch", + "txt2img/[StyleAlign] Align image style in the batch./visible": true, + "txt2img/[StyleAlign] Align image style in the batch./value": false, + "customscript/tileglobal.py/img2img/Enable DemoFusion(Do not open it with tilediffusion)/visible": true, + "customscript/tileglobal.py/img2img/Enable DemoFusion(Do not open it with tilediffusion)/value": false, + "customscript/tileglobal.py/img2img/Keep input image size/visible": true, + "customscript/tileglobal.py/img2img/Keep input image size/value": true, + "customscript/tileglobal.py/img2img/Random jitter windows/visible": true, + "customscript/tileglobal.py/img2img/Random jitter windows/value": true, + "customscript/tileglobal.py/img2img/Method/visible": true, + "customscript/tileglobal.py/img2img/Method/value": "DemoFusion", + "customscript/tileglobal.py/img2img/Move ControlNet tensor to CPU (if applicable)/visible": true, + "customscript/tileglobal.py/img2img/Move ControlNet tensor to CPU (if applicable)/value": false, + "customscript/tileglobal.py/img2img/Latent window size/visible": true, + "customscript/tileglobal.py/img2img/Latent window size/value": 128, + "customscript/tileglobal.py/img2img/Latent window size/minimum": 16, + "customscript/tileglobal.py/img2img/Latent window size/maximum": 256, + "customscript/tileglobal.py/img2img/Latent window size/step": 16, + "customscript/tileglobal.py/img2img/Latent window overlap/visible": true, + "customscript/tileglobal.py/img2img/Latent window overlap/value": 64, + "customscript/tileglobal.py/img2img/Latent window overlap/minimum": 0, + "customscript/tileglobal.py/img2img/Latent window overlap/maximum": 256, + "customscript/tileglobal.py/img2img/Latent window overlap/step": 4, + "customscript/tileglobal.py/img2img/Latent window batch size/visible": true, + "customscript/tileglobal.py/img2img/Latent window batch size/value": 4, + "customscript/tileglobal.py/img2img/Latent window batch size/minimum": 1, + "customscript/tileglobal.py/img2img/Latent window batch size/maximum": 8, + "customscript/tileglobal.py/img2img/Latent window batch size/step": 1, + "customscript/tileglobal.py/img2img/c1/visible": true, + "customscript/tileglobal.py/img2img/c1/value": 3, + "customscript/tileglobal.py/img2img/c1/minimum": 0.5, + "customscript/tileglobal.py/img2img/c1/maximum": 3, + "customscript/tileglobal.py/img2img/c1/step": 0.1, + "customscript/tileglobal.py/img2img/c2/visible": true, + "customscript/tileglobal.py/img2img/c2/value": 1, + "customscript/tileglobal.py/img2img/c2/minimum": 0.5, + "customscript/tileglobal.py/img2img/c2/maximum": 3, + "customscript/tileglobal.py/img2img/c2/step": 0.1, + "customscript/tileglobal.py/img2img/c3/value": 1, + "customscript/tileglobal.py/img2img/c3/minimum": 0.5, + "customscript/tileglobal.py/img2img/c3/maximum": 3, + "customscript/tileglobal.py/img2img/c3/step": 0.1, + "customscript/tileglobal.py/img2img/Scale_Factor/visible": true, + "customscript/tileglobal.py/img2img/Scale_Factor/value": 2.0, + "customscript/tileglobal.py/img2img/Scale_Factor/minimum": 1.0, + "customscript/tileglobal.py/img2img/Scale_Factor/maximum": 8.0, + "customscript/tileglobal.py/img2img/Scale_Factor/step": 1, + "customscript/tileglobal.py/img2img/Enable Noise Inversion/visible": true, + "customscript/tileglobal.py/img2img/Enable Noise Inversion/value": false, + "customscript/tileglobal.py/img2img/Inversion steps/visible": true, + "customscript/tileglobal.py/img2img/Inversion steps/value": 10, + "customscript/tileglobal.py/img2img/Inversion steps/minimum": 1, + "customscript/tileglobal.py/img2img/Inversion steps/maximum": 200, + "customscript/tileglobal.py/img2img/Inversion steps/step": 1, + "customscript/tileglobal.py/img2img/Retouch/visible": true, + "customscript/tileglobal.py/img2img/Retouch/value": 1, + "customscript/tileglobal.py/img2img/Retouch/minimum": 1, + "customscript/tileglobal.py/img2img/Retouch/maximum": 100, + "customscript/tileglobal.py/img2img/Retouch/step": 0.1, + "customscript/tileglobal.py/img2img/Renoise strength/visible": true, + "customscript/tileglobal.py/img2img/Renoise strength/value": 1, + "customscript/tileglobal.py/img2img/Renoise strength/minimum": 0, + "customscript/tileglobal.py/img2img/Renoise strength/maximum": 2, + "customscript/tileglobal.py/img2img/Renoise strength/step": 0.01, + "customscript/tileglobal.py/img2img/Renoise kernel size/visible": true, + "customscript/tileglobal.py/img2img/Renoise kernel size/value": 64, + "customscript/tileglobal.py/img2img/Renoise kernel size/minimum": 2, + "customscript/tileglobal.py/img2img/Renoise kernel size/maximum": 512, + "customscript/tileglobal.py/img2img/Renoise kernel size/step": 1, + "img2img/Clear Images/visible": true, + "img2img/Mask Upload/value": false, + "img2img/Crop input image based on A1111 mask/value": false, + "img2img/Hires-Fix Option/value": "Both", + "img2img/[Batch Loopback] Automatically send generated images to this ControlNet unit in batch generation/value": false, + "img2img/Batch Option/visible": true, + "img2img/Batch Option/value": "All ControlNet units for all images in a batch", + "img2img/[StyleAlign] Align image style in the batch./visible": true, + "img2img/[StyleAlign] Align image style in the batch./value": false, + "extras/Remove background/visible": true, + "extras/Remove background/value": false, + "civitai_interface/Hide installed models/visible": true, + "civitai_interface/Hide installed models/value": false, + "civitai_interface/Current page:/visible": true, + "civitai_interface/Current page:/value": 1, + "civitai_interface/Current page:/minimum": 1, + "civitai_interface/Current page:/maximum": 1, + "civitai_interface/Current page:/step": 1, + "civitai_interface/Sub folder for selected files:/value": null, + "civitai_interface/One-Time Hash Generation for externally downloaded models./visible": true, + "civitai_interface/One-Time Hash Generation for externally downloaded models./value": true, + "civitai_interface/Save HTML file for each model when updating info & tags (increases process time)./visible": true, + "civitai_interface/Save HTML file for each model when updating info & tags (increases process time)./value": false, + "dreambooth_v2/Load Settings/visible": true, + "dreambooth_v2/Save Settings/visible": true, + "dreambooth_v2/Train/visible": true, + "dreambooth_v2/Generate Ckpt/visible": true, + "dreambooth_v2/Save Weights/visible": true, + "dreambooth_v2/Generate Samples/visible": true, + "dreambooth_v2/Cancel/visible": true, + "dreambooth_v2/Hide Advanced/visible": true, + "dreambooth_v2/🔄/visible": true, + "dreambooth_v2/Create Model/visible": true, + "dreambooth_v2/Name/visible": true, + "dreambooth_v2/Name/value": "", + "dreambooth_v2/Create From Hub/visible": true, + "dreambooth_v2/Create From Hub/value": false, + "dreambooth_v2/Model Type/visible": true, + "dreambooth_v2/Model Type/value": "v1x", + "dreambooth_v2/Model Path/visible": true, + "dreambooth_v2/Model Path/value": "", + "dreambooth_v2/HuggingFace Token/visible": true, + "dreambooth_v2/HuggingFace Token/value": "", + "dreambooth_v2/Source Checkpoint/visible": true, + "dreambooth_v2/Source Checkpoint/value": null, + "dreambooth_v2/EXPERIMENTAL: LoRA Shared Diffusers Source/value": "", + "dreambooth_v2/Extract EMA Weights/visible": true, + "dreambooth_v2/Extract EMA Weights/value": false, + "dreambooth_v2/Train Inpainting Model/value": false, + "dreambooth_v2/Image Generation Library/visible": true, + "dreambooth_v2/Image Generation Library/value": "Native Diffusers", + "dreambooth_v2/Generate Class Images/visible": true, + "dreambooth_v2/Generate Graph/visible": true, + "dreambooth_v2/Debug Buckets/visible": true, + "dreambooth_v2/Epochs to Simulate/visible": true, + "dreambooth_v2/Epochs to Simulate/value": 10, + "dreambooth_v2/Epochs to Simulate/minimum": 1, + "dreambooth_v2/Epochs to Simulate/maximum": 1000, + "dreambooth_v2/Epochs to Simulate/step": 1, + "dreambooth_v2/Batch Size to Simulate/visible": true, + "dreambooth_v2/Batch Size to Simulate/value": 1, + "dreambooth_v2/Batch Size to Simulate/minimum": 1, + "dreambooth_v2/Batch Size to Simulate/maximum": 500, + "dreambooth_v2/Batch Size to Simulate/step": 1, + "dreambooth_v2/Generate Sample Images/visible": true, + "dreambooth_v2/Sample Prompt/visible": true, + "dreambooth_v2/Sample Prompt/value": "", + "dreambooth_v2/Sample Negative Prompt/visible": true, + "dreambooth_v2/Sample Negative Prompt/value": "", + "dreambooth_v2/Sample Prompt File/visible": true, + "dreambooth_v2/Sample Prompt File/value": "", + "dreambooth_v2/Sample Width/visible": true, + "dreambooth_v2/Sample Width/value": 512, + "dreambooth_v2/Sample Width/minimum": 128, + "dreambooth_v2/Sample Width/maximum": 2048, + "dreambooth_v2/Sample Width/step": 64, + "dreambooth_v2/Sample Height/visible": true, + "dreambooth_v2/Sample Height/value": 512, + "dreambooth_v2/Sample Height/minimum": 128, + "dreambooth_v2/Sample Height/maximum": 2048, + "dreambooth_v2/Sample Height/step": 64, + "dreambooth_v2/Sample Seed/visible": true, + "dreambooth_v2/Sample Seed/value": -1, + "dreambooth_v2/Number of Samples to Generate/visible": true, + "dreambooth_v2/Number of Samples to Generate/value": 1, + "dreambooth_v2/Number of Samples to Generate/minimum": 1, + "dreambooth_v2/Number of Samples to Generate/maximum": 1000, + "dreambooth_v2/Number of Samples to Generate/step": 1, + "dreambooth_v2/Sample Batch Size/visible": true, + "dreambooth_v2/Sample Batch Size/value": 1, + "dreambooth_v2/Sample Batch Size/minimum": 1, + "dreambooth_v2/Sample Batch Size/maximum": 100, + "dreambooth_v2/Sample Batch Size/step": 1, + "dreambooth_v2/Sample Steps/visible": true, + "dreambooth_v2/Sample Steps/value": 20, + "dreambooth_v2/Sample Steps/minimum": 1, + "dreambooth_v2/Sample Steps/maximum": 500, + "dreambooth_v2/Sample Steps/step": 1, + "dreambooth_v2/Sample CFG Scale/visible": true, + "dreambooth_v2/Sample CFG Scale/value": 7.5, + "dreambooth_v2/Sample CFG Scale/minimum": 1, + "dreambooth_v2/Sample CFG Scale/maximum": 20, + "dreambooth_v2/Sample CFG Scale/step": 0.1, + "dreambooth_v2/Swap Sample Faces/visible": true, + "dreambooth_v2/Swap Sample Faces/value": false, + "dreambooth_v2/Swap Prompt/visible": true, + "dreambooth_v2/Swap Prompt/value": "", + "dreambooth_v2/Swap Negative Prompt/visible": true, + "dreambooth_v2/Swap Negative Prompt/value": "", + "dreambooth_v2/Swap Steps/visible": true, + "dreambooth_v2/Swap Steps/value": 40, + "dreambooth_v2/Swap Steps/minimum": 0, + "dreambooth_v2/Swap Steps/maximum": 100, + "dreambooth_v2/Swap Steps/step": 1, + "dreambooth_v2/Swap Batch/visible": true, + "dreambooth_v2/Swap Batch/value": 40, + "dreambooth_v2/Swap Batch/minimum": 0, + "dreambooth_v2/Swap Batch/maximum": 100, + "dreambooth_v2/Swap Batch/step": 1, + "dreambooth_v2/Use txt2img/value": false, + "dreambooth_v2/Sanity Sample Negative Prompt/visible": true, + "dreambooth_v2/Sanity Sample Negative Prompt/value": "", + "dreambooth_v2/API Key/visible": true, + "dreambooth_v2/API Key/value": "", + "dreambooth_v2/🗑/visible": true, + "dreambooth_v2/Discord Webhook/visible": true, + "dreambooth_v2/Discord Webhook/value": "", + "dreambooth_v2/Save and Test Webhook/visible": true, + "dreambooth_v2/Update Extension and Restart/visible": true, + "dreambooth_v2/Source Path/visible": true, + "dreambooth_v2/Source Path/value": "", + "dreambooth_v2/Dest Path/visible": true, + "dreambooth_v2/Dest Path/value": "", + "dreambooth_v2/Max Res/visible": true, + "dreambooth_v2/Max Res/value": 512, + "dreambooth_v2/Max Res/minimum": 0, + "dreambooth_v2/Max Res/maximum": 2048, + "dreambooth_v2/Max Res/step": 64, + "dreambooth_v2/Bucket Steps/visible": true, + "dreambooth_v2/Bucket Steps/value": 8, + "dreambooth_v2/Bucket Steps/minimum": 0, + "dreambooth_v2/Bucket Steps/maximum": 512, + "dreambooth_v2/Bucket Steps/step": 8, + "dreambooth_v2/Dry Run/visible": true, + "dreambooth_v2/Dry Run/value": false, + "dreambooth_v2/Start Cropping/visible": true, + "dreambooth_v2/Refresh/visible": true, + "dreambooth_v2/X/visible": true, + "pbremtools/Input directory/visible": true, + "pbremtools/Input directory/value": "", + "pbremtools/Output directory/visible": true, + "pbremtools/Output directory/value": "", + "pbremtools/Output Mask directory/visible": true, + "pbremtools/Output Mask directory/value": "", + "pbremtools/Show result images/visible": true, + "pbremtools/Show result images/value": true, + "pbremtools/enabled/visible": true, + "pbremtools/enabled/value": false, + "pbremtools/Model/visible": true, + "pbremtools/Model/value": null, + "pbremtools/segmentation prompt/visible": true, + "pbremtools/segmentation prompt/value": "", + "pbremtools/predicted_iou_threshold/visible": true, + "pbremtools/predicted_iou_threshold/value": 0.9, + "pbremtools/predicted_iou_threshold/minimum": 0, + "pbremtools/predicted_iou_threshold/maximum": 1, + "pbremtools/predicted_iou_threshold/step": 0.01, + "pbremtools/stability_score_threshold/visible": true, + "pbremtools/stability_score_threshold/value": 0.9, + "pbremtools/stability_score_threshold/minimum": 0, + "pbremtools/stability_score_threshold/maximum": 1, + "pbremtools/stability_score_threshold/step": 0.01, + "pbremtools/clip_threshold/visible": true, + "pbremtools/clip_threshold/value": 0.1, + "pbremtools/clip_threshold/minimum": 0, + "pbremtools/clip_threshold/maximum": 1, + "pbremtools/clip_threshold/step": 0.01, + "pbremtools/horizontal split num/visible": true, + "pbremtools/horizontal split num/value": 256, + "pbremtools/horizontal split num/minimum": 1, + "pbremtools/horizontal split num/maximum": 2048, + "pbremtools/horizontal split num/step": 4, + "pbremtools/vertical split num/visible": true, + "pbremtools/vertical split num/value": 256, + "pbremtools/vertical split num/minimum": 1, + "pbremtools/vertical split num/maximum": 2048, + "pbremtools/vertical split num/step": 4, + "pbremtools/cluster num/visible": true, + "pbremtools/cluster num/value": 500, + "pbremtools/cluster num/minimum": 1, + "pbremtools/cluster num/maximum": 1000, + "pbremtools/cluster num/step": 10, + "pbremtools/alpha threshold/visible": true, + "pbremtools/alpha threshold/value": 50, + "pbremtools/alpha threshold/minimum": 1, + "pbremtools/alpha threshold/maximum": 255, + "pbremtools/alpha threshold/step": 1, + "pbremtools/mask content ratio/visible": true, + "pbremtools/mask content ratio/value": 0.1, + "pbremtools/mask content ratio/minimum": 0, + "pbremtools/mask content ratio/maximum": 1, + "pbremtools/mask content ratio/step": 0.01, + "pbremtools/fast/visible": true, + "pbremtools/fast/value": false, + "pbremtools/Memory usage/visible": true, + "pbremtools/Memory usage/value": 900, + "pbremtools/Memory usage/minimum": 1, + "pbremtools/Memory usage/maximum": 2048, + "pbremtools/Memory usage/step": 1, + "pbremtools/Submit/visible": true +} \ No newline at end of file From 069ab3eeb2798715bf17892a07864d768ec895ac Mon Sep 17 00:00:00 2001 From: evan Date: Fri, 29 Mar 2024 20:10:57 +0000 Subject: [PATCH 006/125] config --- ...23_12_06-02_32_45_Backup (pre-update).json | 232 --------------- ...24_03_18-18_29_44_Backup (pre-update).json | 265 ------------------ ...).json => 2024_03_29-20_10_18_CONFIG.json} | 138 +++++---- .../2024-03-19/00000-1137209589.png | Bin 0 -> 332893 bytes ui-config.json | 6 +- 5 files changed, 85 insertions(+), 556 deletions(-) delete mode 100755 config_states/2023_12_06-02_32_45_Backup (pre-update).json delete mode 100644 config_states/2024_03_18-18_29_44_Backup (pre-update).json rename config_states/{2023_09_25-03_31_40_Backup (pre-update).json => 2024_03_29-20_10_18_CONFIG.json} (53%) mode change 100755 => 100644 create mode 100755 output/txt2img-images/2024-03-19/00000-1137209589.png diff --git a/config_states/2023_12_06-02_32_45_Backup (pre-update).json b/config_states/2023_12_06-02_32_45_Backup (pre-update).json deleted file mode 100755 index b5f37a18e43..00000000000 --- a/config_states/2023_12_06-02_32_45_Backup (pre-update).json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "created_at": 1701829965.133431, - "webui": { - "remote": null, - "commit_hash": "5ef669de080814067961f28357256e8fe27544f4", - "commit_date": 1693456714, - "branch": null - }, - "extensions": { - "aaaaa2": { - "name": "aaaaa2", - "path": "/home/np/stable-diffusion-webui/extensions/aaaaa2", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/anyoneknowsyou/aaaaa2", - "commit_hash": "2a000f20773070493877802ebf87dfe18610d6c0", - "commit_date": 1698317597, - "branch": "main", - "have_info_from_repo": false - }, - "multi-subject-render": { - "name": "multi-subject-render", - "path": "/home/np/stable-diffusion-webui/extensions/multi-subject-render", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/Extraltodeus/multi-subject-render.git", - "commit_hash": "03427e26bebdc6da0ccfb749bf3c4e7e33d7458b", - "commit_date": 1678111890, - "branch": "main", - "have_info_from_repo": false - }, - "multidiffusion-upscaler-for-automatic1111": { - "name": "multidiffusion-upscaler-for-automatic1111", - "path": "/home/np/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", - "commit_hash": "f9f8073e64f4e682838f255215039ba7884553bf", - "commit_date": 1690008791, - "branch": "main", - "have_info_from_repo": false - }, - "sd-civitai-browser-plus": { - "name": "sd-civitai-browser-plus", - "path": "/home/np/stable-diffusion-webui/extensions/sd-civitai-browser-plus", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/BlafKing/sd-civitai-browser-plus.git", - "commit_hash": "fecf7900ab7fddc4da5578f1e0e8eb2db5271b94", - "commit_date": 1701655035, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-controlnet": { - "name": "sd-webui-controlnet", - "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-controlnet", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", - "commit_hash": "7a4805c8ea3256a0eab3512280bd4f84ca0c8182", - "commit_date": 1695406428, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-infinite-image-browsing": { - "name": "sd-webui-infinite-image-browsing", - "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-infinite-image-browsing", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/zanllp/sd-webui-infinite-image-browsing.git", - "commit_hash": "16696b075e0560758d091a5164d5733a34912f3c", - "commit_date": 1701605096, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-loractl": { - "name": "sd-webui-loractl", - "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-loractl", - "enabled": false, - "is_builtin": false, - "remote": "https://github.com/cheald/sd-webui-loractl.git", - "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", - "commit_date": 1695172598, - "branch": "master", - "have_info_from_repo": false - }, - "sd_civitai_extension": { - "name": "sd_civitai_extension", - "path": "/home/np/stable-diffusion-webui/extensions/sd_civitai_extension", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/civitai/sd_civitai_extension.git", - "commit_hash": "136983e89859fd0477b4a437ed333142a6aa29a4", - "commit_date": 1698727428, - "branch": "main", - "have_info_from_repo": false - }, - "sd_dreambooth_extension": { - "name": "sd_dreambooth_extension", - "path": "/home/np/stable-diffusion-webui/extensions/sd_dreambooth_extension", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/d8ahazard/sd_dreambooth_extension.git", - "commit_hash": "c548ede6a3acb85d78650ff50ae583786b305f0e", - "commit_date": 1700504411, - "branch": "main", - "have_info_from_repo": false - }, - "stable-diffusion-webui-rembg": { - "name": "stable-diffusion-webui-rembg", - "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", - "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", - "commit_date": 1685885724, - "branch": "master", - "have_info_from_repo": false - }, - "stable-diffusion-webui-two-shot": { - "name": "stable-diffusion-webui-two-shot", - "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", - "enabled": false, - "is_builtin": false, - "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", - "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", - "commit_date": 1680434665, - "branch": "main", - "have_info_from_repo": false - }, - "LDSR": { - "name": "LDSR", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/LDSR", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "Lora": { - "name": "Lora", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/Lora", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "ScuNET": { - "name": "ScuNET", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/ScuNET", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "SwinIR": { - "name": "SwinIR", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/SwinIR", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "canvas-zoom-and-pan": { - "name": "canvas-zoom-and-pan", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "extra-options-section": { - "name": "extra-options-section", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/extra-options-section", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "hypertile": { - "name": "hypertile", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/hypertile", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "mobile": { - "name": "mobile", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/mobile", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "prompt-bracket-checker": { - "name": "prompt-bracket-checker", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - } - }, - "name": "Backup (pre-update)" -} \ No newline at end of file diff --git a/config_states/2024_03_18-18_29_44_Backup (pre-update).json b/config_states/2024_03_18-18_29_44_Backup (pre-update).json deleted file mode 100644 index 4eb0ed0112d..00000000000 --- a/config_states/2024_03_18-18_29_44_Backup (pre-update).json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "created_at": 1710786584.788067, - "webui": { - "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui.git", - "commit_hash": "bef51aed032c0aaa5cfd80445bc4cf0d85b408b5", - "commit_date": 1709352193, - "branch": "master" - }, - "extensions": { - "LDSR": { - "name": "LDSR", - "path": "/home/stable-diffusion-webui/extensions-builtin/LDSR", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "Lora": { - "name": "Lora", - "path": "/home/stable-diffusion-webui/extensions-builtin/Lora", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "ScuNET": { - "name": "ScuNET", - "path": "/home/stable-diffusion-webui/extensions-builtin/ScuNET", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "SwinIR": { - "name": "SwinIR", - "path": "/home/stable-diffusion-webui/extensions-builtin/SwinIR", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "canvas-zoom-and-pan": { - "name": "canvas-zoom-and-pan", - "path": "/home/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "extra-options-section": { - "name": "extra-options-section", - "path": "/home/stable-diffusion-webui/extensions-builtin/extra-options-section", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "hypertile": { - "name": "hypertile", - "path": "/home/stable-diffusion-webui/extensions-builtin/hypertile", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "mobile": { - "name": "mobile", - "path": "/home/stable-diffusion-webui/extensions-builtin/mobile", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "prompt-bracket-checker": { - "name": "prompt-bracket-checker", - "path": "/home/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "soft-inpainting": { - "name": "soft-inpainting", - "path": "/home/stable-diffusion-webui/extensions-builtin/soft-inpainting", - "enabled": true, - "is_builtin": true, - "remote": null, - "commit_hash": "", - "commit_date": null, - "branch": null, - "have_info_from_repo": false - }, - "multi-subject-render": { - "name": "multi-subject-render", - "path": "/home/stable-diffusion-webui/extensions/multi-subject-render", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/Extraltodeus/multi-subject-render.git", - "commit_hash": "03427e26bebdc6da0ccfb749bf3c4e7e33d7458b", - "commit_date": 1678111890, - "branch": "main", - "have_info_from_repo": false - }, - "multidiffusion-upscaler-for-automatic1111": { - "name": "multidiffusion-upscaler-for-automatic1111", - "path": "/home/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", - "commit_hash": "fbb24736c9bc374c7f098f82b575fcd14a73936a", - "commit_date": 1698833791, - "branch": "main", - "have_info_from_repo": false - }, - "sd-civitai-browser-plus": { - "name": "sd-civitai-browser-plus", - "path": "/home/stable-diffusion-webui/extensions/sd-civitai-browser-plus", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/BlafKing/sd-civitai-browser-plus.git", - "commit_hash": "c0a82f76d15422804d32eee61b9514821890aed6", - "commit_date": 1701820033, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-animatediff": { - "name": "sd-webui-animatediff", - "path": "/home/stable-diffusion-webui/extensions/sd-webui-animatediff", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/continue-revolution/sd-webui-animatediff.git", - "commit_hash": "bf9212312504189ace1e17a2c973022933abe93d", - "commit_date": 1710503377, - "branch": "master", - "have_info_from_repo": false - }, - "sd-webui-controlnet": { - "name": "sd-webui-controlnet", - "path": "/home/stable-diffusion-webui/extensions/sd-webui-controlnet", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", - "commit_hash": "10bd9b25f62deab9acb256301bbf3363c42645e7", - "commit_date": 1700624635, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-infinite-image-browsing": { - "name": "sd-webui-infinite-image-browsing", - "path": "/home/stable-diffusion-webui/extensions/sd-webui-infinite-image-browsing", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/zanllp/sd-webui-infinite-image-browsing.git", - "commit_hash": "16696b075e0560758d091a5164d5733a34912f3c", - "commit_date": 1701605096, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-loractl": { - "name": "sd-webui-loractl", - "path": "/home/stable-diffusion-webui/extensions/sd-webui-loractl", - "enabled": false, - "is_builtin": false, - "remote": "https://github.com/cheald/sd-webui-loractl.git", - "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", - "commit_date": 1695172598, - "branch": "master", - "have_info_from_repo": false - }, - "sd_civitai_extension": { - "name": "sd_civitai_extension", - "path": "/home/stable-diffusion-webui/extensions/sd_civitai_extension", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/civitai/sd_civitai_extension.git", - "commit_hash": "136983e89859fd0477b4a437ed333142a6aa29a4", - "commit_date": 1698727428, - "branch": "main", - "have_info_from_repo": false - }, - "sd_dreambooth_extension": { - "name": "sd_dreambooth_extension", - "path": "/home/stable-diffusion-webui/extensions/sd_dreambooth_extension", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/d8ahazard/sd_dreambooth_extension.git", - "commit_hash": "c548ede6a3acb85d78650ff50ae583786b305f0e", - "commit_date": 1700504411, - "branch": "main", - "have_info_from_repo": false - }, - "stable-diffusion-webui-images-browser": { - "name": "stable-diffusion-webui-images-browser", - "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/AlUlkesh/stable-diffusion-webui-images-browser.git", - "commit_hash": "3d2d0f4c7b0599f88df99a9ea66c21bcbec49bda", - "commit_date": 1706884847, - "branch": "main", - "have_info_from_repo": false - }, - "stable-diffusion-webui-rembg": { - "name": "stable-diffusion-webui-rembg", - "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", - "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", - "commit_date": 1685885724, - "branch": "master", - "have_info_from_repo": false - }, - "stable-diffusion-webui-two-shot": { - "name": "stable-diffusion-webui-two-shot", - "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", - "enabled": false, - "is_builtin": false, - "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", - "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", - "commit_date": 1680434665, - "branch": "main", - "have_info_from_repo": false - }, - "zulu571": { - "name": "zulu571", - "path": "/home/stable-diffusion-webui/extensions/zulu571", - "enabled": true, - "is_builtin": false, - "remote": "http://47.93.16.222:3000/Iyashinouta/sd-colab-commands-browser", - "commit_hash": "dcd26f39829bda68459b73bd21acc090734ffa29", - "commit_date": 1677534269, - "branch": "main", - "have_info_from_repo": false - } - }, - "name": "Backup (pre-update)" -} \ No newline at end of file diff --git a/config_states/2023_09_25-03_31_40_Backup (pre-update).json b/config_states/2024_03_29-20_10_18_CONFIG.json old mode 100755 new mode 100644 similarity index 53% rename from config_states/2023_09_25-03_31_40_Backup (pre-update).json rename to config_states/2024_03_29-20_10_18_CONFIG.json index d8738e1dd3e..7bfcad3c104 --- a/config_states/2023_09_25-03_31_40_Backup (pre-update).json +++ b/config_states/2024_03_29-20_10_18_CONFIG.json @@ -1,59 +1,15 @@ { - "created_at": 1695612700.693513, + "created_at": 1711743018.039572, "webui": { - "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui.git", - "commit_hash": "5ef669de080814067961f28357256e8fe27544f4", - "commit_date": 1693456714, + "remote": "https://github.com/kurukuruinc/stable-diffusion-webui.git", + "commit_hash": "b2d292495c0b21cfa7d69ac9f2be03cf53767432", + "commit_date": 1711741648, "branch": "master" }, "extensions": { - "multidiffusion-upscaler-for-automatic1111": { - "name": "multidiffusion-upscaler-for-automatic1111", - "path": "/home/np/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", - "commit_hash": "f9f8073e64f4e682838f255215039ba7884553bf", - "commit_date": 1690008791, - "branch": "main", - "have_info_from_repo": false - }, - "sd-webui-controlnet": { - "name": "sd-webui-controlnet", - "path": "/home/np/stable-diffusion-webui/extensions/sd-webui-controlnet", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", - "commit_hash": "07bed6ccf8a468a45b2833cfdadc749927cbd575", - "commit_date": 1688849641, - "branch": "main", - "have_info_from_repo": false - }, - "stable-diffusion-webui-rembg": { - "name": "stable-diffusion-webui-rembg", - "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg", - "enabled": true, - "is_builtin": false, - "remote": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg", - "commit_hash": "3d9eedbbf0d585207f97d5b21e42f32c0042df70", - "commit_date": 1685885724, - "branch": "master", - "have_info_from_repo": false - }, - "stable-diffusion-webui-two-shot": { - "name": "stable-diffusion-webui-two-shot", - "path": "/home/np/stable-diffusion-webui/extensions/stable-diffusion-webui-two-shot", - "enabled": false, - "is_builtin": false, - "remote": "https://github.com/ashen-sensored/stable-diffusion-webui-two-shot.git", - "commit_hash": "6b55dd5248fd07f55ffefbf9be369b439b239502", - "commit_date": 1680434665, - "branch": "main", - "have_info_from_repo": false - }, "LDSR": { "name": "LDSR", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/LDSR", + "path": "/home/stable-diffusion-webui/extensions-builtin/LDSR", "enabled": true, "is_builtin": true, "remote": null, @@ -64,8 +20,8 @@ }, "Lora": { "name": "Lora", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/Lora", - "enabled": false, + "path": "/home/stable-diffusion-webui/extensions-builtin/Lora", + "enabled": true, "is_builtin": true, "remote": null, "commit_hash": "", @@ -75,7 +31,7 @@ }, "ScuNET": { "name": "ScuNET", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/ScuNET", + "path": "/home/stable-diffusion-webui/extensions-builtin/ScuNET", "enabled": true, "is_builtin": true, "remote": null, @@ -86,7 +42,7 @@ }, "SwinIR": { "name": "SwinIR", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/SwinIR", + "path": "/home/stable-diffusion-webui/extensions-builtin/SwinIR", "enabled": true, "is_builtin": true, "remote": null, @@ -97,7 +53,7 @@ }, "canvas-zoom-and-pan": { "name": "canvas-zoom-and-pan", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", + "path": "/home/stable-diffusion-webui/extensions-builtin/canvas-zoom-and-pan", "enabled": true, "is_builtin": true, "remote": null, @@ -108,7 +64,18 @@ }, "extra-options-section": { "name": "extra-options-section", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/extra-options-section", + "path": "/home/stable-diffusion-webui/extensions-builtin/extra-options-section", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "hypertile": { + "name": "hypertile", + "path": "/home/stable-diffusion-webui/extensions-builtin/hypertile", "enabled": true, "is_builtin": true, "remote": null, @@ -119,7 +86,7 @@ }, "mobile": { "name": "mobile", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/mobile", + "path": "/home/stable-diffusion-webui/extensions-builtin/mobile", "enabled": true, "is_builtin": true, "remote": null, @@ -130,7 +97,7 @@ }, "prompt-bracket-checker": { "name": "prompt-bracket-checker", - "path": "/home/np/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", + "path": "/home/stable-diffusion-webui/extensions-builtin/prompt-bracket-checker", "enabled": true, "is_builtin": true, "remote": null, @@ -138,7 +105,62 @@ "commit_date": null, "branch": null, "have_info_from_repo": false + }, + "soft-inpainting": { + "name": "soft-inpainting", + "path": "/home/stable-diffusion-webui/extensions-builtin/soft-inpainting", + "enabled": true, + "is_builtin": true, + "remote": null, + "commit_hash": "", + "commit_date": null, + "branch": null, + "have_info_from_repo": false + }, + "multidiffusion-upscaler-for-automatic1111": { + "name": "multidiffusion-upscaler-for-automatic1111", + "path": "/home/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111", + "commit_hash": "76cde3c2bf15b212d4fde66c8a29d96f0a598916", + "commit_date": 1709969880, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-controlnet": { + "name": "sd-webui-controlnet", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-controlnet", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/Mikubill/sd-webui-controlnet.git", + "commit_hash": "2091b6fb21d9c76becb2a8860c8d2975ad3e428a", + "commit_date": 1710469955, + "branch": "main", + "have_info_from_repo": false + }, + "sd-webui-loractl": { + "name": "sd-webui-loractl", + "path": "/home/stable-diffusion-webui/extensions/sd-webui-loractl", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/cheald/sd-webui-loractl.git", + "commit_hash": "b48cf602b0c414a362726fa079a284f3ae6a51e2", + "commit_date": 1695172598, + "branch": "master", + "have_info_from_repo": false + }, + "stable-diffusion-webui-images-browser": { + "name": "stable-diffusion-webui-images-browser", + "path": "/home/stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser", + "enabled": true, + "is_builtin": false, + "remote": "https://github.com/AlUlkesh/stable-diffusion-webui-images-browser.git", + "commit_hash": "3d2d0f4c7b0599f88df99a9ea66c21bcbec49bda", + "commit_date": 1706884847, + "branch": "main", + "have_info_from_repo": false } }, - "name": "Backup (pre-update)" + "name": "CONFIG" } \ No newline at end of file diff --git a/output/txt2img-images/2024-03-19/00000-1137209589.png b/output/txt2img-images/2024-03-19/00000-1137209589.png new file mode 100755 index 0000000000000000000000000000000000000000..7fece30e9888bb9c49c9101c920c7a76822e06e0 GIT binary patch literal 332893 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ÔZmzJ@{w0FDNZ4jhzB{|<7X#L$or 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