Spaces:
Sleeping
Sleeping
| import torch | |
| from diffusers import StableDiffusionPipeline | |
| import gradio as gr | |
| # Pick the fastest device available | |
| device = ( | |
| "mps" if torch.backends.mps.is_available() | |
| else "cuda" if torch.cuda.is_available() | |
| else "cpu" | |
| ) | |
| # Load the model (you can remove safety_checker=None for public deploys) | |
| model_id = "runwayml/stable-diffusion-v1-5" | |
| pipe = StableDiffusionPipeline.from_pretrained( | |
| model_id, | |
| torch_dtype=torch.float16, | |
| safety_checker=None | |
| ).to(device) | |
| def generate(prompt: str, steps: int, guidance: float, seed: float): | |
| """ | |
| Generate one or more images from a text prompt. | |
| """ | |
| # If seed > 0, use it; else let Diffusers pick a random seed. | |
| generator = ( | |
| torch.Generator(device=device).manual_seed(int(seed)) | |
| if seed and seed > 0 | |
| else None | |
| ) | |
| output = pipe( | |
| prompt, | |
| num_inference_steps=steps, | |
| guidance_scale=guidance, | |
| generator=generator | |
| ) | |
| # returns a list of PIL images | |
| return output.images | |
| # Build the Gradio UI | |
| demo = gr.Blocks() | |
| with demo: | |
| gr.Markdown("# Stable Diffusion Text→Image Generation Demo") | |
| with gr.Row(): | |
| with gr.Column(): | |
| prompt = gr.Textbox(label="Prompt", placeholder="e.g. ‘A serene forest at dawn’") | |
| steps = gr.Slider(1, 100, value=50, step=1, label="Inference Steps") | |
| guidance = gr.Slider(1, 15, value=7.5, step=0.1, label="Guidance Scale") | |
| seed = gr.Number(value=0, label="Random Seed (0 = random)") | |
| btn = gr.Button("Generate") | |
| with gr.Column(): | |
| gallery = gr.Gallery(label="Generated Images", columns=2, height="auto") | |
| # wire up the button | |
| btn.click( | |
| fn=generate, | |
| inputs=[prompt, steps, guidance, seed], | |
| outputs=gallery, | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |