Spaces:
Sleeping
Sleeping
File size: 4,180 Bytes
7abf701 a6021dc 5114b0d 7abf701 5114b0d 7abf701 5114b0d 7abf701 a6021dc 4ff5580 a6021dc 4ff5580 a6021dc 7abf701 a2b21c2 5114b0d a2b21c2 5114b0d 7abf701 3319cd3 a2b21c2 7abf701 f4e88b8 a2b21c2 7abf701 a2b21c2 7abf701 a2b21c2 7abf701 a2b21c2 7abf701 a2b21c2 7abf701 a6021dc 7abf701 a6021dc 7abf701 4ff5580 |
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 |
import gradio as gr
import numpy as np
import random
import spaces
import torch
from diffusers import DiffusionPipeline
from transformers import pipeline
# ๋ฒ์ญ ํ์ดํ๋ผ์ธ ๋ฐ ํ๋์จ์ด ์ค์
device = "cuda" if torch.cuda.is_available() else "cpu"
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en", device=device)
dtype = torch.bfloat16
pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=dtype).to(device)
MAX_SEED = np.iinfo(np.int32).max
MAX_IMAGE_SIZE = 2048
@spaces.GPU()
def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, num_inference_steps=4, progress=gr.Progress(track_tqdm=True)):
if randomize_seed:
seed = random.randint(0, MAX_SEED)
generator = torch.Generator().manual_seed(seed)
# ํ๊ธ ์
๋ ฅ ๊ฐ์ง ๋ฐ ๋ฒ์ญ
if any('\uAC00' <= char <= '\uD7A3' for char in prompt):
print("ํ๊ตญ์ด ํ๋กฌํํธ ๋ฒ์ญ ์ค...")
translated_prompt = translator(prompt, max_length=512)[0]['translation_text']
print("๋ฒ์ญ๋ ํ๋กฌํํธ:", translated_prompt)
prompt = translated_prompt
image = pipe(
prompt = prompt,
width = width,
height = height,
num_inference_steps = num_inference_steps,
generator = generator,
guidance_scale=0.0
).images[0]
return image, seed
# (์ด์ import ๊ตฌ๋ฌธ ๋ฐ ํ์ดํ๋ผ์ธ ์ค์ ์ ์ง)
examples = [
["[Style: Minimal] [Color: Blue and White] [Concept: Tech Company] [Text: 'INNOVATE'] [Background: Clean]"],
["[Style: Modern] [Color: Black and Gold] [Concept: Luxury Brand] [Text: 'ELITE'] [Background: Gradient]"],
["[Style: Geometric] [Color: Green and Gray] [Concept: Eco Friendly] [Text: 'NATURE'] [Background: White]"],
["[ํ๊ธ] [์คํ์ผ: ๋ชจ๋] [์์: ๋นจ๊ฐ๊ณผ ๊ฒ์ ] [์ปจ์
: ์๋น] [ํ
์คํธ: '๋ง์๋์ง'] [๋ฐฐ๊ฒฝ: ์ฌํ]"],
["[Style: Corporate] [Color: Navy and Silver] [Concept: Finance] [Text: 'TRUST'] [Background: Professional]"],
["[Style: Dynamic] [Color: Purple and Orange] [Concept: Creative Agency] [Text: 'SPARK'] [Background: Abstract]"],
["[Style: Minimalist] [Color: Red and White] [Concept: Sports] [Text: 'POWER'] [Background: Clean]"]
]
css = """
footer {visibility: hidden}
.container {max-width: 850px; margin: auto; padding: 20px}
.title {text-align: center; margin-bottom: 20px}
#prompt {min-height: 50px}
#result {min-height: 400px}
.gr-box {border-radius: 10px; border: 1px solid #ddd}
"""
with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
gr.HTML("<h1 class='title'>AI ๋ก๊ณ ์์ฑ๊ธฐ</h1>")
with gr.Column(elem_id="container"):
with gr.Group():
prompt = gr.Text(
label="๋ก๊ณ ์ค๋ช
",
placeholder="๋ก๊ณ ๋์์ธ์ ์์ธํ ์ค๋ช
ํด์ฃผ์ธ์ (ํ๊ธ ์
๋ ฅ ๊ฐ๋ฅ)",
lines=2
)
run_button = gr.Button("๋ก๊ณ ์์ฑ", variant="primary")
with gr.Row():
result = gr.Image(label="์์ฑ๋ ๋ก๊ณ ", show_label=True)
with gr.Accordion("๊ณ ๊ธ ์ค์ ", open=False):
with gr.Row():
seed = gr.Slider(label="์๋", minimum=0, maximum=MAX_SEED, step=1, value=0)
randomize_seed = gr.Checkbox(label="๋๋ค ์๋", value=True)
with gr.Row():
width = gr.Slider(label="๋๋น", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=512)
height = gr.Slider(label="๋์ด", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=512)
num_inference_steps = gr.Slider(label="ํ์ง", minimum=1, maximum=50, step=1, value=4)
gr.Examples(
examples=examples,
fn=infer,
inputs=[prompt],
outputs=[result, seed],
cache_examples="lazy"
)
gr.on(
triggers=[run_button.click, prompt.submit],
fn=infer,
inputs=[prompt, seed, randomize_seed, width, height, num_inference_steps],
outputs=[result, seed]
)
demo.launch() |