generate2 / diffusion_webui /utils /scheduler_list.py
flatindo's picture
Duplicate from ArtGAN/Image-Diffusion-WebUI
95a9559
from diffusers import (
DDIMScheduler,
DDPMScheduler,
DEISMultistepScheduler,
DPMSolverMultistepScheduler,
DPMSolverSinglestepScheduler,
EulerAncestralDiscreteScheduler,
EulerDiscreteScheduler,
HeunDiscreteScheduler,
KDPM2AncestralDiscreteScheduler,
KDPM2DiscreteScheduler,
PNDMScheduler,
UniPCMultistepScheduler,
)
SCHEDULER_MAPPING = {
"DDIM": DDIMScheduler,
"DDPMScheduler": DDPMScheduler,
"DEISMultistep": DEISMultistepScheduler,
"DPMSolverMultistep": DPMSolverMultistepScheduler,
"DPMSolverSinglestep": DPMSolverSinglestepScheduler,
"EulerAncestralDiscrete": EulerAncestralDiscreteScheduler,
"EulerDiscrete": EulerDiscreteScheduler,
"HeunDiscrete": HeunDiscreteScheduler,
"KDPM2AncestralDiscrete": KDPM2AncestralDiscreteScheduler,
"KDPM2Discrete": KDPM2DiscreteScheduler,
"PNDMScheduler": PNDMScheduler,
"UniPCMultistep": UniPCMultistepScheduler,
}
def get_scheduler(pipe, scheduler):
if scheduler in SCHEDULER_MAPPING:
SchedulerClass = SCHEDULER_MAPPING[scheduler]
pipe.scheduler = SchedulerClass.from_config(pipe.scheduler.config)
else:
raise ValueError(f"Invalid scheduler name {scheduler}")
return pipe