import gradio as gr import numpy as np import random from diffusers import DiffusionPipeline import torch from PIL import Image device = "cuda" if torch.cuda.is_available() else "cpu" LORA=False if torch.cuda.is_available(): torch.cuda.max_memory_allocated(device=device) pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16, variant="fp16", use_safetensors=True) pipe.enable_xformers_memory_efficient_attention() pipe = pipe.to(device) else: pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_safetensors=True) pipe = pipe.to(device) MAX_SEED = np.iinfo(np.int32).max MAX_IMAGE_SIZE = 1024 def infer(prompt, negative_prompt, seed, randomize_seed, image_style,cfg,lora_scale): pipe.unload_lora_weights() if image_style == "No style": pipe.unload_lora_weights() elif image_style == "style_detailed": pipe.load_lora_weights("ohkarim/LoRA_logos", weight_name="OH_logos.safetensors", adapter_name="OH_logos") prompt=prompt+", detailed, close up, unique background color, OH_logos" elif image_style == "style_blacknwhite": pipe.load_lora_weights("ohkarim/lora_logo_blacknwhite", weight_name="bel_blacknwhite_lora.safetensors", adapter_name="bel_blacknwhite") prompt=prompt+", black and white, balck and white, minimalist, unique background color, bel_blacknwhite" elif image_style == "style_cartoon": pipe.load_lora_weights("ohkarim/lora_logo_modern", weight_name="lora_modern.safetensors", adapter_name="oh_bel_modern") prompt=prompt+", simple, modern, unique background color, oh_bel_modern" if randomize_seed: seed = random.randint(0, MAX_SEED) generator = torch.Generator().manual_seed(seed) griddd = [] for _ in range(4): image = pipe( prompt = prompt, negative_prompt = negative_prompt, cross_attention_kwargs={"scale": lora_scale}, guidance_scale = cfg, num_inference_steps = 20, width = 512, height = 512, generator = generator ).images[0] griddd.append(image) return griddd css=""" #col-container { margin: 0 auto; max-width: 520px; } """ if torch.cuda.is_available(): power_device = "GPU" else: power_device = "CPU" # Function to read CSS from file def read_css_from_file(filename): with open(filename, "r") as file: return file.read() # Read CSS from file css = read_css_from_file("style.css") PTI_SD_DESCRIPTION = '''
Create your own logo now!
There is 3 styles so far, detailed, black & white and cartoon
''' # Creating Gradio interface with gr.Blocks(css=css) as demo: gr.Markdown(PTI_SD_DESCRIPTION) with gr.Row(): with gr.Column(): text_prompt = gr.Textbox(label="Input Prompt", placeholder="Example: logo of a coffee shop, cup of coffee, mug, brown shades ", lines=2) negative_prompt = gr.Textbox(label="Negative Prompt (optional)", placeholder="Example: blurry, unfocused, complicated", lines=2) image_style = gr.Dropdown(label="Choose a style", choices=["No style", "style_detailed", "style_blacknwhite", "style_cartoon"], value="No LoRA") with gr.Column(): cfg = gr.Slider(label="Prompt guidance", minimum=1, maximum=20, step=1, value=4) lora_scale = gr.Slider(label="Style guidance", minimum=0, maximum=2, step=0.01, value=0.9) seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=0) randomize_seed = gr.Checkbox(label="Randomize seed", value=True) generate_button = gr.Button("Generate Image", variant='primary') with gr.Row(): output_image1 = gr.Image(type="pil", label="Image 1", width=256, height=400) output_image2 = gr.Image(type="pil", label="Image 2", width=256, height=400) output_image3 = gr.Image(type="pil", label="Image 3", width=256, height=400) output_image4 = gr.Image(type="pil", label="Image 4", width=256, height=400) generate_button.click( fn = infer, inputs = [text_prompt, negative_prompt, seed, randomize_seed,image_style,cfg,lora_scale], outputs = [output_image1,output_image2,output_image3,output_image4], show_progress=True ) demo.queue().launch()