From f4dfe20bc1c676b903cd58f466e7e394147ee117 Mon Sep 17 00:00:00 2001 From: Disty0 Date: Sun, 4 May 2025 17:42:22 +0300 Subject: [PATCH] Add sigmoid beta scheduler --- modules/sd_samplers_diffusers.py | 2 ++ modules/shared.py | 2 +- modules/ui_sections.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/sd_samplers_diffusers.py b/modules/sd_samplers_diffusers.py index 3d83cb29d..ca5fa21fd 100644 --- a/modules/sd_samplers_diffusers.py +++ b/modules/sd_samplers_diffusers.py @@ -232,6 +232,8 @@ class DiffusionSampler: self.config['beta_schedule'] = 'scaled_linear' elif shared.opts.schedulers_beta_schedule == 'cosine': self.config['beta_schedule'] = 'squaredcos_cap_v2' + elif shared.opts.schedulers_beta_schedule == 'sigmoid': + self.config['beta_schedule'] = 'sigmoid' timesteps = re.split(',| ', shared.opts.schedulers_timesteps) timesteps = [int(x) for x in timesteps if x.isdigit()] diff --git a/modules/shared.py b/modules/shared.py index 890e6dd06..07e81d7be 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -814,7 +814,7 @@ options_templates.update(options_section(('sampler-params', "Sampler Settings"), "schedulers_sigma": OptionInfo("default", "Sigma algorithm", gr.Radio, {"choices": ['default', 'karras', 'exponential', 'polyexponential'], "visible": False}), # managed from ui.py for backend diffusers - "schedulers_beta_schedule": OptionInfo("default", "Beta schedule", gr.Dropdown, {"choices": ['default', 'linear', 'scaled_linear', 'squaredcos_cap_v2'], "visible": False}), + "schedulers_beta_schedule": OptionInfo("default", "Beta schedule", gr.Dropdown, {"choices": ['default', 'linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'], "visible": False}), "schedulers_use_thresholding": OptionInfo(False, "Use dynamic thresholding", gr.Checkbox, {"visible": False}), "schedulers_timestep_spacing": OptionInfo("default", "Timestep spacing", gr.Dropdown, {"choices": ['default', 'linspace', 'leading', 'trailing'], "visible": False}), 'schedulers_timesteps': OptionInfo('', "Timesteps", gr.Textbox, {"visible": False}), diff --git a/modules/ui_sections.py b/modules/ui_sections.py index 7e464130e..f516147da 100644 --- a/modules/ui_sections.py +++ b/modules/ui_sections.py @@ -307,7 +307,7 @@ def create_sampler_options(tabname): sampler_sigma = gr.Dropdown(label='Sigma method', elem_id=f"{tabname}_sampler_sigma", choices=['default', 'karras', 'betas', 'exponential', 'lambdas', 'flowmatch'], value=shared.opts.schedulers_sigma, type='value') sampler_spacing = gr.Dropdown(label='Timestep spacing', elem_id=f"{tabname}_sampler_spacing", choices=['default', 'linspace', 'leading', 'trailing'], value=shared.opts.schedulers_timestep_spacing, type='value') with gr.Row(elem_classes=['flex-break']): - sampler_beta = gr.Dropdown(label='Beta schedule', elem_id=f"{tabname}_sampler_beta", choices=['default', 'linear', 'scaled', 'cosine'], value=shared.opts.schedulers_beta_schedule, type='value') + sampler_beta = gr.Dropdown(label='Beta schedule', elem_id=f"{tabname}_sampler_beta", choices=['default', 'linear', 'scaled', 'cosine', 'sigmoid'], value=shared.opts.schedulers_beta_schedule, type='value') sampler_prediction = gr.Dropdown(label='Prediction method', elem_id=f"{tabname}_sampler_prediction", choices=['default', 'epsilon', 'sample', 'v_prediction', 'flow_prediction'], value=shared.opts.schedulers_prediction_type, type='value') with gr.Row(elem_classes=['flex-break']): sampler_presets = gr.Dropdown(label='Timesteps presets', elem_id=f"{tabname}_sampler_presets", choices=['None', 'AYS SD15', 'AYS SDXL'], value='None', type='value')