Spaces:
Runtime error
Runtime error
# !pip install diffusers | |
from diffusers import DiffusionPipeline, DDIMPipeline, DDPMPipeline, PNDMPipeline | |
import gradio as gr | |
import PIL.Image | |
import numpy as np | |
import random | |
import torch | |
model_id = "google/ddpm-celebahq-256" | |
# load model and scheduler | |
ddpm = DDPMPipeline.from_pretrained(model_id) | |
ddim = DDIMPipeline.from_pretrained(model_id) | |
pndm = PNDMPipeline.from_pretrained(model_id) | |
# run pipeline in inference (sample random noise and denoise) | |
def predict(steps=100,seed=42,scheduler="ddim"): | |
generator = torch.manual_seed(seed) | |
if(scheduler == "ddim"): | |
image = ddim(generator=generator, num_inference_steps=steps) #does not work (returns random noise) | |
image = image["sample"] | |
elif(scheduler == "ddpm"): | |
image = ddpm(generator=generator) #works, but does not let me set the number of steps | |
elif(scheduler == "pndm"): | |
image = pndm(generator=generator, num_inference_steps=steps) #does not work, still detects its DDPM behind the scenes and does not run pndm steps | |
image = image["sample"] | |
# process image to PIL | |
image_processed = image.cpu().permute(0, 2, 3, 1) | |
image_processed = (image_processed + 1.0) * 127.5 | |
image_processed = image_processed.clamp(0, 255).numpy().astype(np.uint8) | |
return PIL.Image.fromarray(image_processed[0]) | |
random_seed = random.randint(0, 2147483647) | |
gr.Interface( | |
predict, | |
inputs=[ | |
gr.inputs.Slider(1, 1000, label='Inference Steps', default=1000, step=1), | |
gr.inputs.Slider(0, 2147483647, label='Seed', default=random_seed), | |
gr.inputs.Radio(["ddim", "ddpm", "pndm"], default="ddpm",label="Diffusion scheduler") | |
], | |
outputs="image", | |
).launch() |