File size: 2,288 Bytes
05f5325
54612fd
 
 
 
 
 
 
5318f33
 
 
772ea32
 
 
179a34f
 
 
 
 
 
 
fc51b17
e16e1b6
179a34f
 
791ea5b
 
 
 
 
 
 
 
 
 
 
 
 
179a34f
 
791ea5b
179a34f
 
 
 
 
76ee195
5318f33
 
179a34f
 
791ea5b
179a34f
5318f33
179a34f
f5d4e69
a7c4b78
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
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()