aboutsummaryrefslogtreecommitdiffstats
path: root/modules/sd_samplers.py
diff options
context:
space:
mode:
authorAUTOMATIC <16777216c@gmail.com>2022-10-22 17:48:13 +0000
committerAUTOMATIC <16777216c@gmail.com>2022-10-22 17:48:13 +0000
commitd213d6ca6f90094cb45c11e2f3cb37d25a8d1f94 (patch)
treef2300e2c0f00e8c04072187479f0e13ee94b0b8f /modules/sd_samplers.py
parent4fdb53c1e9962507fc8336dad9a0fabfe6c418c0 (diff)
downloadstable-diffusion-webui-gfx803-d213d6ca6f90094cb45c11e2f3cb37d25a8d1f94.tar.gz
stable-diffusion-webui-gfx803-d213d6ca6f90094cb45c11e2f3cb37d25a8d1f94.tar.bz2
stable-diffusion-webui-gfx803-d213d6ca6f90094cb45c11e2f3cb37d25a8d1f94.zip
removed the option to use 2x more memory when generating previews
added an option to always only show one image in previews removed duplicate code
Diffstat (limited to 'modules/sd_samplers.py')
-rw-r--r--modules/sd_samplers.py35
1 files changed, 10 insertions, 25 deletions
diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py
index 74a480e5..0b408a70 100644
--- a/modules/sd_samplers.py
+++ b/modules/sd_samplers.py
@@ -71,6 +71,7 @@ sampler_extra_params = {
'sample_dpm_2': ['s_churn', 's_tmin', 's_tmax', 's_noise'],
}
+
def setup_img2img_steps(p, steps=None):
if opts.img2img_fix_steps or steps is not None:
steps = int((steps or p.steps) / min(p.denoising_strength, 0.999)) if p.denoising_strength > 0 else 0
@@ -82,37 +83,21 @@ def setup_img2img_steps(p, steps=None):
return steps, t_enc
-def sample_to_image(samples):
- x_sample = processing.decode_first_stage(shared.sd_model, samples[0:1])[0]
+def single_sample_to_image(sample):
+ x_sample = processing.decode_first_stage(shared.sd_model, sample.unsqueeze(0))[0]
x_sample = torch.clamp((x_sample + 1.0) / 2.0, min=0.0, max=1.0)
x_sample = 255. * np.moveaxis(x_sample.cpu().numpy(), 0, 2)
x_sample = x_sample.astype(np.uint8)
return Image.fromarray(x_sample)
+
+def sample_to_image(samples):
+ return single_sample_to_image(samples[0])
+
+
def samples_to_image_grid(samples):
- progress_images = []
- for i in range(len(samples)):
- # Decode the samples individually to reduce VRAM usage at the cost of a bit of speed.
- x_sample = processing.decode_first_stage(shared.sd_model, samples[i:i+1])[0]
- x_sample = torch.clamp((x_sample + 1.0) / 2.0, min=0.0, max=1.0)
- x_sample = 255. * np.moveaxis(x_sample.cpu().numpy(), 0, 2)
- x_sample = x_sample.astype(np.uint8)
- progress_images.append(Image.fromarray(x_sample))
-
- return images.image_grid(progress_images)
-
-def samples_to_image_grid_combined(samples):
- progress_images = []
- # Decode all samples at once to increase speed at the cost of VRAM usage.
- x_samples = processing.decode_first_stage(shared.sd_model, samples)
- x_samples = torch.clamp((x_samples + 1.0) / 2.0, min=0.0, max=1.0)
-
- for x_sample in x_samples:
- x_sample = 255. * np.moveaxis(x_sample.cpu().numpy(), 0, 2)
- x_sample = x_sample.astype(np.uint8)
- progress_images.append(Image.fromarray(x_sample))
-
- return images.image_grid(progress_images)
+ return images.image_grid([single_sample_to_image(sample) for sample in samples])
+
def store_latent(decoded):
state.current_latent = decoded