Spaces:
Runtime error
Runtime error
File size: 5,558 Bytes
40462a0 7aafe2f a30ff0a 7aafe2f a30ff0a 9d8567b 8bd228f 40462a0 7aafe2f 40462a0 7aafe2f 8bd228f 7aafe2f 9d8567b a30ff0a 8bd228f a30ff0a b02e794 7aafe2f b02e794 a30ff0a b02e794 7aafe2f 9d8567b 7aafe2f b02e794 7aafe2f b02e794 9d8567b 7aafe2f d4545dc 7aafe2f e55ac15 7aafe2f 9d8567b 7aafe2f 9d8567b 7aafe2f 9d8567b 7aafe2f 9d8567b 7aafe2f 9d8567b b02e794 7aafe2f 9d8567b 7aafe2f 9d8567b 7aafe2f b02e794 7aafe2f b02e794 7aafe2f b02e794 7aafe2f 97d3c4e 7aafe2f 23fd89e 7aafe2f a30ff0a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
import gradio as gr
import numpy as np
import random
import spaces
import torch
import time
import os
from diffusers import DiffusionPipeline
from custom_pipeline import FLUXPipelineWithIntermediateOutputs
from transformers import pipeline
# Translation model loading
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en")
# Constants
MAX_SEED = np.iinfo(np.int32).max
MAX_IMAGE_SIZE = 2048
DEFAULT_WIDTH = 1024
DEFAULT_HEIGHT = 1024
DEFAULT_INFERENCE_STEPS = 1
# Device and model setup
dtype = torch.float16
pipe = FLUXPipelineWithIntermediateOutputs.from_pretrained(
"black-forest-labs/FLUX.1-schnell", torch_dtype=dtype
).to("cuda")
torch.cuda.empty_cache()
# Menu labels dictionary
english_labels = {
"Generated Image": "Generated Image",
"Prompt": "Prompt",
"Enhance Image": "Enhance Image",
"Advanced Options": "Advanced Options",
"Seed": "Seed",
"Randomize Seed": "Randomize Seed",
"Width": "Width",
"Height": "Height",
"Inference Steps": "Inference Steps",
"Inspiration Gallery": "Inspiration Gallery"
}
def translate_if_korean(text):
if any('\u3131' <= char <= '\u3163' or '\uac00' <= char <= '\ud7a3' for char in text):
return translator(text)[0]['translation_text']
return text
# Modified inference function to always use random seed for examples
@spaces.GPU(duration=25)
def generate_image(prompt, seed=None, width=DEFAULT_WIDTH, height=DEFAULT_HEIGHT, randomize_seed=True, num_inference_steps=DEFAULT_INFERENCE_STEPS):
prompt = translate_if_korean(prompt)
# Always generate a random seed if none provided or randomize_seed is True
if seed is None or randomize_seed:
seed = random.randint(0, MAX_SEED)
generator = torch.Generator().manual_seed(seed)
start_time = time.time()
for img in pipe.generate_images(
prompt=prompt,
guidance_scale=0,
num_inference_steps=num_inference_steps,
width=width,
height=height,
generator=generator
):
latency = f"Processing Time: {(time.time()-start_time):.2f} seconds"
yield img, seed, latency
# Function specifically for examples that always uses random seeds
def generate_example_image(prompt):
return generate_image(prompt, randomize_seed=True)
# Example prompts
examples = [
"비너 슈니첼의 애니메이션 일러스트레이션",
"A steampunk owl wearing Victorian-era clothing and reading a mechanical book",
"A floating island made of books with waterfalls of knowledge cascading down",
"A bioluminescent forest where mushrooms glow like neon signs in a cyberpunk city",
"An ancient temple being reclaimed by nature, with robots performing archaeology",
"A cosmic coffee shop where baristas are constellations serving drinks made of stardust"
]
css = """
footer {
visibility: hidden;
}
"""
# --- Gradio UI ---
with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
with gr.Column(elem_id="app-container"):
with gr.Row():
with gr.Column(scale=3):
result = gr.Image(label=english_labels["Generated Image"], show_label=False, interactive=False)
with gr.Column(scale=1):
prompt = gr.Text(
label=english_labels["Prompt"],
placeholder="Describe the image you want to generate...",
lines=3,
show_label=False,
container=False,
)
enhanceBtn = gr.Button(f"🚀 {english_labels['Enhance Image']}")
with gr.Column(english_labels["Advanced Options"]):
with gr.Row():
latency = gr.Text(show_label=False)
with gr.Row():
seed = gr.Number(label=english_labels["Seed"], value=42, precision=0)
randomize_seed = gr.Checkbox(label=english_labels["Randomize Seed"], value=True)
with gr.Row():
width = gr.Slider(label=english_labels["Width"], minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=DEFAULT_WIDTH)
height = gr.Slider(label=english_labels["Height"], minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=DEFAULT_HEIGHT)
num_inference_steps = gr.Slider(label=english_labels["Inference Steps"], minimum=1, maximum=4, step=1, value=DEFAULT_INFERENCE_STEPS)
with gr.Row():
gr.Markdown(f"### 🌟 {english_labels['Inspiration Gallery']}")
with gr.Row():
gr.Examples(
examples=examples,
fn=generate_example_image, # Use the example-specific function
inputs=[prompt],
outputs=[result, seed],
cache_examples=False # Disable caching to ensure new generation each time
)
# Event handling
enhanceBtn.click(
fn=generate_image,
inputs=[prompt, seed, width, height],
outputs=[result, seed, latency],
show_progress="hidden",
show_api=False,
queue=False
)
gr.on(
triggers=[prompt.input, width.input, height.input, num_inference_steps.input],
fn=generate_image,
inputs=[prompt, seed, width, height, randomize_seed, num_inference_steps],
outputs=[result, seed, latency],
show_progress="hidden",
show_api=False,
trigger_mode="always_last",
queue=False
)
demo.launch() |