Spaces:
Running
on
Zero
Running
on
Zero
from diffusers import StableDiffusionXLPipeline | |
import torch | |
from gradio import Interface, Image, Dropdown, Slider | |
import gradio as gr | |
import spaces | |
model_id = "RunDiffusion/Juggernaut-X-v10" | |
pipe = StableDiffusionXLPipeline.from_pretrained(model_id, torch_dtype=torch.float16) | |
pipe = pipe.to("cuda") | |
def text_to_image(prompt, negative_prompt, steps, guidance_scale, add_4k_masterpiece, width, height, progress=gr.Progress(track_tqdm=True)): | |
if add_4k_masterpiece: | |
prompt += ", 4k, (masterpiece)" | |
image = pipe(prompt, negative_prompt=negative_prompt, num_inference_steps=steps, guidance_scale=guidance_scale, width=width, height=height).images[0] | |
return image | |
duplicate_button = gr.DuplicateButton(value="Duplicate Space for private use", elem_id="duplicate-button") | |
def set_aspect_ratio(ratio): | |
ratios = { | |
"1:1": (1024, 1024), | |
"4:3": (1366, 1024), | |
"16:9": (1920, 1080), | |
"3:2": (2048, 1365), | |
"5:4": (1280, 1024) | |
} | |
return ratios[ratio] | |
def update_aspect_ratio(ratio, width_slider, height_slider): | |
width, height = set_aspect_ratio(ratio) | |
width_slider.update(value=width) | |
height_slider.update(value=height) | |
with gr.Blocks() as gradio_interface: | |
gr.Markdown("## Stable Diffusion XL Interface") | |
dark_mode = gr.Checkbox(label="Dark Mode") | |
with gr.Row(): | |
prompt = gr.Textbox(label="Prompt", lines=2, placeholder="Enter your prompt here...") | |
negative_prompt = gr.Textbox(label="Negative Prompt", lines=2, placeholder="What to exclude from the image...") | |
with gr.Row(): | |
steps = gr.Slider(minimum=1, maximum=65, value=50, label="Steps", step=1) | |
guidance_scale = gr.Slider(minimum=1, maximum=20, value=7.5, label="Guidance Scale", step=0.1) | |
add_4k_masterpiece = gr.Checkbox(label="Add recommended prompt items (4k, masterpiece)", value=False) | |
with gr.Row(): | |
width = gr.Slider(minimum=0, maximum=2048, value=1024, label="Width", step=1) | |
height = gr.Slider(minimum=0, maximum=2048, value=1024, label="Height", step=1) | |
aspect_ratio = gr.Dropdown(label="Aspect Ratio", choices=["1:1", "4:3", "16:9", "3:2", "5:4"]) | |
aspect_ratio.change(update_aspect_ratio, inputs=[aspect_ratio, width, height], outputs=[width, height]) | |
generate_button = gr.Button("Generate Image") | |
output_image = gr.Image(type="pil", show_download_button=True) | |
generate_button.click( | |
fn=text_to_image, | |
inputs=[prompt, negative_prompt, steps, guidance_scale, add_4k_masterpiece, width, height], | |
outputs=output_image | |
) | |
if dark_mode: | |
gradio_interface.theme = gr.themes.Dark() | |
gradio_interface.launch() | |