import torch import gradio as gr from PIL import Image import spaces import tqdm from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline device = "cuda" if torch.cuda.is_available() else "cpu" num_images_per_prompt = 1 print(f"Running on: {device}") try: prior = StableCascadePriorPipeline.from_pretrained("Ketengan-Diffusion/SomniumSC-v1.1", torch_dtype=torch.bfloat16).to(device) except OSError: print("Failed to load model from Hugging Face Model Hub. Loading from local path instead.") prior = StableCascadePriorPipeline.from_pretrained("./SomniumSC-v1.1", torch_dtype=torch.bfloat16).to(device) decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", torch_dtype=torch.float16).to(device) deafult_negative = "lowres" prompt_add = "(dark shot:1.17), epic coloring, faded, ((neutral colors)), art, (hdr:1.5), (muted colors:1.2), hyperdetailed, (artstation:1.5), cinematic, warm lights, dramatic light, (intricate details:1.1), complex background, (rutkowski:0.8), (teal and orange:0.4)" css = """ footer { visibility: hidden } #generate_button { color: white; border-color: #007bff; background: #2563eb; } #save_button { color: white; border-color: #028b40; background: #01b97c; width: 200px; } #settings_header { background: rgb(245, 105, 105); } """ @spaces.GPU def gen(prompt, negative, width, height, use_add, progress=gr.Progress()): if use_add: text = f"{prompt}, {prompt_add}" else: text = f"{prompt}" prior_output = prior( prompt=text, height=height, width=width, negative_prompt=negative, guidance_scale=12.0, num_images_per_prompt=num_images_per_prompt, num_inference_steps=50 ) decoder_output = decoder( image_embeddings=prior_output.image_embeddings.half(), prompt=text, negative_prompt=negative, guidance_scale=1.0, output_type="pil", num_inference_steps=10 ).images return decoder_output with gr.Blocks(css=css) as demo: gr.Markdown("# SomniumSC-v1.1 ```DEMO```") with gr.Row(): prompt = gr.Textbox(show_label=False, placeholder="Masukkan prompt Anda", max_lines=3, lines=1, interactive=True, scale=20) button = gr.Button(value="Hasilkan", scale=1) with gr.Accordion("Pengaturan Lanjutan", open=False): with gr.Row(): negative = gr.Textbox(show_label=False, value=deafult_negative, placeholder="Enter a negative", max_lines=4, lines=3, interactive=True) with gr.Row(): width = gr.Slider(label="Width", minimum=1024, maximum=2048, step=8, value=1536, interactive=True) height = gr.Slider(label="Height", minimum=1024, maximum=2048, step=8, value=1536, interactive=True) with gr.Row(): use_add = gr.Checkbox(label="Tingkatkan Hasil", value=False, interactive=True) with gr.Row(): gallery = gr.Gallery(show_label=False, rows=1, columns=1, allow_preview=True, preview=True) button.click(gen, inputs=[prompt, negative, width, height, use_add], outputs=gallery) demo.launch(show_api=False)