import gradio as gr from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler import torch from PIL import Image import random model_id = "stabilityai/stable-diffusion-xl-base-1.0" lora_model_id = "codermert/tugce2-lora" # Your LoRA model pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16) pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config) pipe = pipe.to("cuda") pipe.load_lora_weights(lora_model_id) def generate_image(prompt, negative_prompt, steps, cfg_scale, seed, strength): if seed == -1: seed = random.randint(1, 1000000000) generator = torch.Generator("cuda").manual_seed(seed) image = pipe( prompt=prompt, negative_prompt=negative_prompt, num_inference_steps=steps, guidance_scale=cfg_scale, generator=generator, cross_attention_kwargs={"scale": strength}, ).images[0] return image, seed css = """ #app-container { max-width: 800px; margin-left: auto; margin-right: auto; } """ examples = [ ["A beautiful landscape with mountains and a lake", "ugly, deformed"], ["A futuristic cityscape at night", "daytime, rural"], ["A portrait of a smiling person in a colorful outfit", "monochrome, frowning"], ] with gr.Blocks(theme='default', css=css) as app: gr.HTML("

Mert Flux LoRA Explorer

") with gr.Column(elem_id="app-container"): with gr.Row(): text_prompt = gr.Textbox(label="Prompt", placeholder="Enter a prompt here", lines=2) negative_prompt = gr.Textbox(label="Negative Prompt", placeholder="What to avoid in the image", lines=2) with gr.Row(): with gr.Column(): steps = gr.Slider(label="Sampling steps", value=30, minimum=10, maximum=100, step=1) cfg_scale = gr.Slider(label="CFG Scale", value=7.5, minimum=1, maximum=20, step=0.5) with gr.Column(): strength = gr.Slider(label="LoRA Strength", value=0.75, minimum=0, maximum=1, step=0.01) seed = gr.Slider(label="Seed", value=-1, minimum=-1, maximum=1000000000, step=1) with gr.Row(): generate_button = gr.Button("Generate", variant='primary') with gr.Row(): image_output = gr.Image(type="pil", label="Generated Image", show_download_button=True) with gr.Row(): seed_output = gr.Number(label="Seed Used") gr.Examples(examples=examples, inputs=[text_prompt, negative_prompt]) generate_button.click( generate_image, inputs=[text_prompt, negative_prompt, steps, cfg_scale, seed, strength], outputs=[image_output, seed_output] ) app.launch()