project / app.py
rnlduatm's picture
Update space
fc51b17
import gradio as gr
from model.animagine_xl import generate_animagine_xl
from model.animesai import generate_animesai
from model.generate_sdxl_with_refiner import generate_sdxl_with_refiner
from model.ghibli import generate_ghibli
from model.realistic import generate_realistic
from model.sd_turbo import generate_sd_turbo
from model.waifu import generate_waifu
from Text2Long_text import generate_korean_story
# ๋ชจ๋ธ ํ•จ์ˆ˜ ๋งคํ•‘
model_id = "hakurei/waifu-diffusion"
MODEL_FUNCTIONS = {
"Animagine XL": generate_animagine_xl,
"Animesai": generate_animesai,
"SDXL+Refiner": generate_sdxl_with_refiner,
"Ghibli": generate_ghibli,
"Realistic": generate_realistic,
"SD Turbo": generate_sd_turbo,
"Waifu Diffusion": generate_waifu,
"ํ•œ๊ตญ์–ด ๊ธด ์ด์•ผ๊ธฐ ์ƒ์„ฑ": lambda prompt: generate_korean_story(prompt, max_length=100),
}
def generate_story_then_images(prompt, selected_models):
# 1. ์„ ํƒ์ง€ ์ค‘ 'ํ•œ๊ตญ์–ด ๊ธด ์ด์•ผ๊ธฐ ์ƒ์„ฑ'์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ๋จผ์ € ์Šคํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ
story = ""
if "ํ•œ๊ตญ์–ด ๊ธด ์ด์•ผ๊ธฐ ์ƒ์„ฑ" in selected_models:
story = generate_korean_story(prompt, max_length=100)
# 2. ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ชจ๋ธ๋“ค์—๋Š” ์ด์•ผ๊ธฐ(์Šคํ† ๋ฆฌ)๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฑธ ํ”„๋กฌํ”„ํŠธ๋กœ ๋„ฃ์–ด์คŒ
img_prompt = story if story else prompt
images = [
MODEL_FUNCTIONS[name](img_prompt)
for name in selected_models
if name != "ํ•œ๊ตญ์–ด ๊ธด ์ด์•ผ๊ธฐ ์ƒ์„ฑ"
]
return images, story
with gr.Blocks() as demo:
gr.Markdown("## ์›ํ•˜๋Š” ์ƒ์„ฑ ๋ชจ๋ธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ๊ธด ํ•œ๊ตญ์–ด ์ด์•ผ๊ธฐ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ  ๊ทธ ์ด์•ผ๊ธฐ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.")
prompt = gr.Textbox(label="ํ”„๋กฌํ”„ํŠธ(ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”)")
models = gr.CheckboxGroup(
choices=list(MODEL_FUNCTIONS.keys()),
label="์‚ฌ์šฉํ•  ๋ชจ๋ธ์„ ์„ ํƒํ•˜์„ธ์š”"
)
gallery = gr.Gallery(label="์ƒ์„ฑ ์ด๋ฏธ์ง€ (์„ ํƒํ•œ ๋ชจ๋ธ๋ณ„)")
long_textbox = gr.Textbox(label="์ƒ์„ฑ๋œ ์ด์•ผ๊ธฐ(ํ…์ŠคํŠธ)", lines=10, interactive=False)
generate_btn = gr.Button("์ƒ์„ฑํ•˜๊ธฐ")
generate_btn.click(
fn=generate_story_then_images,
inputs=[prompt, models],
outputs=[gallery, long_textbox]
)
demo.launch()