-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Closed
Labels
Description
Describe the bug
When using StableDiffusionImg2ImgPipeline, the DPMSolverSinglestepScheduler schedule, with certain img2img strength values, produces an error resulting from previous model outputs not being available.
Settings:
Inference steps: 15
Strength: 0.1, 0.3, 0.4, 0.45, 0.55, 0.7, 0.8, 0.95
Excerpt from the stack trace:
File diffusers\schedulers\scheduling_dpmsolver_singlestep.py:553, in DPMSolverSinglestepScheduler.step(self, model_output, timestep, sample, return_dict)
550 self.sample = sample
552 timestep_list = [self.timesteps[step_index - i] for i in range(order - 1, 0, -1)] + [timestep]
--> 553 prev_sample = self.singlestep_dpm_solver_update(
554 self.model_outputs, timestep_list, prev_timestep, self.sample, order
555 )
557 if not return_dict:
558 return (prev_sample,)
File diffusers\schedulers\scheduling_dpmsolver_singlestep.py:496, in DPMSolverSinglestepScheduler.singlestep_dpm_solver_update(self, model_output_list, timestep_list, prev_timestep, sample, order)
494 return self.dpm_solver_first_order_update(model_output_list[-1], timestep_list[-1], prev_timestep, sample)
495 elif order == 2:
--> 496 return self.singlestep_dpm_solver_second_order_update(
497 model_output_list, timestep_list, prev_timestep, sample
498 )
499 elif order == 3:
500 return self.singlestep_dpm_solver_third_order_update(
501 model_output_list, timestep_list, prev_timestep, sample
502 )
File diffusers\schedulers\scheduling_dpmsolver_singlestep.py:367, in DPMSolverSinglestepScheduler.singlestep_dpm_solver_second_order_update(self, model_output_list, timestep_list, prev_timestep, sample)
365 h, h_0 = lambda_t - lambda_s1, lambda_s0 - lambda_s1
366 r0 = h_0 / h
--> 367 D0, D1 = m1, (1.0 / r0) * (m0 - m1)
368 if self.config.algorithm_type == "dpmsolver++":
369 # See https://arxiv.org/abs/2211.01095 for detailed derivations
370 if self.config.solver_type == "midpoint":
TypeError: unsupported operand type(s) for -: 'Tensor' and 'NoneType'
Reproduction
import requests
import numpy as np
from PIL import Image
from io import BytesIO
from diffusers import StableDiffusionImg2ImgPipeline, DPMSolverSinglestepScheduler
device = "cuda"
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
).to(device)
pipe.scheduler = DPMSolverSinglestepScheduler()
url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
response = requests.get(url)
init_image = Image.open(BytesIO(response.content)).convert("RGB")
init_image = init_image.resize((768, 512))
for x in np.arange(0.0, 1.0, 0.05):
strength = float("{:.2f}".format(x))
try:
images = pipe(
prompt="a fantasy landscape",
negative_prompt=None,
image=init_image,
strength=strength,
num_inference_steps=15,
guidance_scale=10,
num_images_per_prompt=1
).images
image = images[0].save(f"fantasy_landscape_{strength}.png")
print(
f"fantasy_landscape_{strength}.png saved at img2img strength {strength}")
except Exception as e:
print(
f"fantasy_landscape_{strength}.png at img2img strength {strength} failed with error:\n {e} ")Logs
Note: First two strength values tested, 0.0 and 0.05, fail because of a different issue (#1867)
Fetching 15 files: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 15/15 [00:00<00:00, 4980.96it/s]
0it [00:00, ?it/s]
fantasy_landscape_0.0.png at img2img strength 0.0 failed with error:
list index out of range
0it [00:00, ?it/s]
fantasy_landscape_0.05.png at img2img strength 0.05 failed with error:
list index out of range
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.39it/s]
fantasy_landscape_0.1.png saved at img2img strength 0.1
0%| | 0/2 [00:00<?, ?it/s]
fantasy_landscape_0.15.png at img2img strength 0.15 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:00<00:00, 3.64it/s]
fantasy_landscape_0.2.png saved at img2img strength 0.2
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:00<00:00, 3.79it/s]
fantasy_landscape_0.25.png saved at img2img strength 0.25
0%| | 0/4 [00:00<?, ?it/s]
fantasy_landscape_0.3.png at img2img strength 0.3 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00, 3.96it/s]
fantasy_landscape_0.35.png saved at img2img strength 0.35
0%| | 0/6 [00:00<?, ?it/s]
fantasy_landscape_0.4.png at img2img strength 0.4 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
0%| | 0/6 [00:00<?, ?it/s]
fantasy_landscape_0.45.png at img2img strength 0.45 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:01<00:00, 3.96it/s]
fantasy_landscape_0.5.png saved at img2img strength 0.5
0%| | 0/8 [00:00<?, ?it/s]
fantasy_landscape_0.55.png at img2img strength 0.55 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:02<00:00, 4.11it/s]
fantasy_landscape_0.6.png saved at img2img strength 0.6
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:02<00:00, 3.91it/s]
fantasy_landscape_0.65.png saved at img2img strength 0.65
0%| | 0/10 [00:00<?, ?it/s]
fantasy_landscape_0.7.png at img2img strength 0.7 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 11/11 [00:02<00:00, 4.12it/s]
fantasy_landscape_0.75.png saved at img2img strength 0.75
0%| | 0/12 [00:00<?, ?it/s]
fantasy_landscape_0.8.png at img2img strength 0.8 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
0%| | 0/12 [00:00<?, ?it/s]
fantasy_landscape_0.85.png at img2img strength 0.85 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 13/13 [00:03<00:00, 4.14it/s]
fantasy_landscape_0.9.png saved at img2img strength 0.9
0%| | 0/14 [00:00<?, ?it/s]
fantasy_landscape_0.95.png at img2img strength 0.95 failed with error:
unsupported operand type(s) for -: 'Tensor' and 'NoneType'System Info
diffusersversion: 0.11.1- Platform: Windows-10-10.0.19045-SP0
- Python version: 3.10.8
- PyTorch version (GPU?): 1.13.1+cu116 (True)
- Huggingface_hub version: 0.11.1
- Transformers version: 4.25.1
- Using GPU in script?: Yes, RTX3090
- Using distributed or parallel set-up in script?: No
patrickvonplaten