mirror of
https://github.com/huggingface/diffusers.git
synced 2026-01-27 17:22:53 +03:00
[Schedulers] Fix 2nd order other than heun (#5526)
* [Schedulers] Fix 2nd order other than heun * Apply suggestions from code review
This commit is contained in:
committed by
GitHub
parent
0fc25715a1
commit
dc943eb99d
@@ -898,9 +898,9 @@ class StableDiffusionXLControlNetInpaintPipeline(
|
||||
)
|
||||
|
||||
num_inference_steps = (timesteps < discrete_timestep_cutoff).sum().item()
|
||||
if self.scheduler.order == 2:
|
||||
# if the scheduler is a 2nd order scheduler we ALWAYS have to do +1
|
||||
# because `num_inference_steps` will always be even given that every timestep
|
||||
if self.scheduler.order == 2 and num_inference_steps % 2 == 0:
|
||||
# if the scheduler is a 2nd order scheduler we might have to do +1
|
||||
# because `num_inference_steps` might be even given that every timestep
|
||||
# (except the highest one) is duplicated. If `num_inference_steps` is even it would
|
||||
# mean that we cut the timesteps in the middle of the denoising step
|
||||
# (between 1st and 2nd devirative) which leads to incorrect results. By adding 1
|
||||
|
||||
@@ -555,9 +555,9 @@ class StableDiffusionXLImg2ImgPipeline(
|
||||
)
|
||||
|
||||
num_inference_steps = (timesteps < discrete_timestep_cutoff).sum().item()
|
||||
if self.scheduler.order == 2:
|
||||
# if the scheduler is a 2nd order scheduler we ALWAYS have to do +1
|
||||
# because `num_inference_steps` will always be even given that every timestep
|
||||
if self.scheduler.order == 2 and num_inference_steps % 2 == 0:
|
||||
# if the scheduler is a 2nd order scheduler we might have to do +1
|
||||
# because `num_inference_steps` might be even given that every timestep
|
||||
# (except the highest one) is duplicated. If `num_inference_steps` is even it would
|
||||
# mean that we cut the timesteps in the middle of the denoising step
|
||||
# (between 1st and 2nd devirative) which leads to incorrect results. By adding 1
|
||||
|
||||
@@ -840,9 +840,9 @@ class StableDiffusionXLInpaintPipeline(
|
||||
)
|
||||
|
||||
num_inference_steps = (timesteps < discrete_timestep_cutoff).sum().item()
|
||||
if self.scheduler.order == 2:
|
||||
# if the scheduler is a 2nd order scheduler we ALWAYS have to do +1
|
||||
# because `num_inference_steps` will always be even given that every timestep
|
||||
if self.scheduler.order == 2 and num_inference_steps % 2 == 0:
|
||||
# if the scheduler is a 2nd order scheduler we might have to do +1
|
||||
# because `num_inference_steps` might be even given that every timestep
|
||||
# (except the highest one) is duplicated. If `num_inference_steps` is even it would
|
||||
# mean that we cut the timesteps in the middle of the denoising step
|
||||
# (between 1st and 2nd devirative) which leads to incorrect results. By adding 1
|
||||
|
||||
Reference in New Issue
Block a user