aboutsummaryrefslogtreecommitdiffstats
path: root/modules/sd_samplers.py
diff options
context:
space:
mode:
authorMartin Cairns <Martin.Cairns+github@gmail.com>2022-10-10 23:02:44 +0000
committerAUTOMATIC1111 <16777216c@gmail.com>2022-10-11 12:36:29 +0000
commit92d7a138857b308c97a8d009848f642aeb93d6c8 (patch)
tree2a8ebbf5373e1d5f55e6d66150ef53338863a9a6 /modules/sd_samplers.py
parent9b8faefde05464fe6ba51668fe1d361e4fe22339 (diff)
downloadstable-diffusion-webui-gfx803-92d7a138857b308c97a8d009848f642aeb93d6c8.tar.gz
stable-diffusion-webui-gfx803-92d7a138857b308c97a8d009848f642aeb93d6c8.tar.bz2
stable-diffusion-webui-gfx803-92d7a138857b308c97a8d009848f642aeb93d6c8.zip
Handle different parameters for DPM fast & adaptive
Diffstat (limited to 'modules/sd_samplers.py')
-rw-r--r--modules/sd_samplers.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py
index d168b938..eee52e7d 100644
--- a/modules/sd_samplers.py
+++ b/modules/sd_samplers.py
@@ -57,7 +57,7 @@ def set_samplers():
global samplers, samplers_for_img2img
hidden = set(opts.hide_samplers)
- hidden_img2img = set(opts.hide_samplers + ['PLMS', 'DPM fast', 'DPM adaptive'])
+ hidden_img2img = set(opts.hide_samplers + ['PLMS'])
samplers = [x for x in all_samplers if x.name not in hidden]
samplers_for_img2img = [x for x in all_samplers if x.name not in hidden_img2img]
@@ -365,16 +365,27 @@ class KDiffusionSampler:
else:
sigmas = self.model_wrap.get_sigmas(steps)
- noise = noise * sigmas[steps - t_enc - 1]
- xi = x + noise
-
- extra_params_kwargs = self.initialize(p)
-
sigma_sched = sigmas[steps - t_enc - 1:]
+ print('check values same', sigmas[steps - t_enc - 1] , sigma_sched[0], sigmas[steps - t_enc - 1] - sigma_sched[0])
+ xi = x + noise * sigma_sched[0]
+
+ extra_params_kwargs = self.initialize(p)
+ if 'sigma_min' in inspect.signature(self.func).parameters:
+ ## last sigma is zero which is allowed by DPM Fast & Adaptive so taking value before last
+ extra_params_kwargs['sigma_min'] = sigma_sched[-2]
+ if 'sigma_max' in inspect.signature(self.func).parameters:
+ extra_params_kwargs['sigma_max'] = sigma_sched[0]
+ if 'n' in inspect.signature(self.func).parameters:
+ extra_params_kwargs['n'] = len(sigma_sched) - 1
+ if 'sigma_sched' in inspect.signature(self.func).parameters:
+ extra_params_kwargs['sigma_sched'] = sigma_sched
+ if 'sigmas' in inspect.signature(self.func).parameters:
+ extra_params_kwargs['sigmas'] = sigma_sched
self.model_wrap_cfg.init_latent = x
- return self.func(self.model_wrap_cfg, xi, sigma_sched, extra_args={'cond': conditioning, 'uncond': unconditional_conditioning, 'cond_scale': p.cfg_scale}, disable=False, callback=self.callback_state, **extra_params_kwargs)
+ return self.func(self.model_wrap_cfg, xi, extra_args={'cond': conditioning, 'uncond': unconditional_conditioning, 'cond_scale': p.cfg_scale}, disable=False, callback=self.callback_state, **extra_params_kwargs)
+
def sample(self, p, x, conditioning, unconditional_conditioning, steps=None):
steps = steps or p.steps