File size: 5,094 Bytes
4b2575f
fe3a75d
4b2575f
 
 
375b410
4b2575f
 
 
 
cfd53e3
 
 
 
 
 
fe3a75d
4b2575f
 
 
fe3a75d
4b2575f
 
 
56746e0
0fcc824
56746e0
4b2575f
 
 
0fcc824
 
 
 
 
 
 
 
 
 
375b410
fe3a75d
 
 
375b410
56746e0
 
 
4b2575f
 
 
cfd53e3
 
 
 
 
 
 
 
 
 
 
4b2575f
 
 
 
 
 
 
 
 
 
 
 
cfd53e3
 
4b2575f
 
0fcc824
 
4b2575f
 
0fcc824
375b410
 
 
 
 
 
 
0fcc824
 
375b410
 
0fcc824
fe3a75d
4b2575f
cfd53e3
 
4b2575f
 
 
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
from model import models
from multit2i import (
    load_models,
    infer_multi,
    infer_multi_random,
    save_gallery_images,
    change_model,
    get_model_info_md,
    loaded_models,
    get_positive_prefix,
    get_positive_suffix,
    get_negative_prefix,
    get_negative_suffix,
    get_recom_prompt_type,
    set_recom_prompt_preset,
    get_tag_type,
)


load_models(models, 5)
#load_models(models, 20) # Fetching 20 models at the same time. default: 5


css = """

#model_info { text-align: center; }

"""

with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", css=css) as demo:
    with gr.Column(): 
        with gr.Accordion("Recommended Prompt", open=False):
            recom_prompt_preset = gr.Radio(label="Set Presets", choices=get_recom_prompt_type(), value="Common")
            with gr.Row():
                positive_prefix = gr.CheckboxGroup(label="Use Positive Prefix", choices=get_positive_prefix(), value=[])
                positive_suffix = gr.CheckboxGroup(label="Use Positive Suffix", choices=get_positive_suffix(), value=["Common"])
                negative_prefix = gr.CheckboxGroup(label="Use Negative Prefix", choices=get_negative_prefix(), value=[], visible=False)
                negative_suffix = gr.CheckboxGroup(label="Use Negative Suffix", choices=get_negative_suffix(), value=["Common"], visible=False)
        with gr.Accordion("Model", open=True):
            model_name = gr.Dropdown(label="Select Model", show_label=False, choices=list(loaded_models.keys()), value=list(loaded_models.keys())[0], allow_custom_value=True)
            model_info = gr.Markdown(value=get_model_info_md(list(loaded_models.keys())[0]), elem_id="model_info")
        with gr.Group():
            clear_prompt = gr.Button(value="Clear Prompt πŸ—‘οΈ", size="sm", scale=1)
            prompt = gr.Text(label="Prompt", lines=1, max_lines=8, placeholder="1girl, solo, ...", show_copy_button=True)
            neg_prompt = gr.Text(label="Negative Prompt", lines=1, max_lines=8, placeholder="", visible=False)
        with gr.Row():
            run_button = gr.Button("Generate Image", scale=6)
            random_button = gr.Button("Random Model 🎲", scale=3)
            image_num = gr.Number(label="Count", minimum=1, maximum=16, value=1, step=1, interactive=True, scale=1)
        results = gr.Gallery(label="Gallery", interactive=False, show_download_button=True, show_share_button=False,
                              container=True, format="png", object_fit="contain")
        image_files = gr.Files(label="Download", interactive=False)
        clear_results = gr.Button("Clear Gallery / Download")
    examples = gr.Examples(
        examples = [
            ["souryuu asuka langley, 1girl, neon genesis evangelion, plugsuit, pilot suit, red bodysuit, sitting, crossing legs, black eye patch, cat hat, throne, symmetrical, looking down, from bottom, looking at viewer, outdoors"],
            ["sailor moon, magical girl transformation, sparkles and ribbons, soft pastel colors, crescent moon motif, starry night sky background, shoujo manga style"],
            ["kafuu chino, 1girl, solo"],
            ["1girl"],
            ["beautiful sunset"],
        ],
        inputs=[prompt],
    )
    gr.Markdown(
        f"""This demo was created in reference to the following demos.

- [Nymbo/Flood](https://huggingface.co./spaces/Nymbo/Flood).

- [Yntec/ToyWorldXL](https://huggingface.co./spaces/Yntec/ToyWorldXL).

            """
    )
    gr.DuplicateButton(value="Duplicate Space")

    model_name.change(change_model, [model_name], [model_info], queue=False, show_api=False)
    gr.on(
        triggers=[run_button.click, prompt.submit],
        fn=infer_multi,
        inputs=[prompt, neg_prompt, results, image_num, model_name,
                 positive_prefix, positive_suffix, negative_prefix, negative_suffix],
        outputs=[results],
        queue=True,
        trigger_mode="multiple",
        concurrency_limit=5,
        show_progress="full",
        show_api=True,
    ).then(save_gallery_images, [results], [results, image_files], queue=False, show_api=False)
    gr.on(
        triggers=[random_button.click],
        fn=infer_multi_random,
        inputs=[prompt, neg_prompt, results, image_num,
                 positive_prefix, positive_suffix, negative_prefix, negative_suffix],
        outputs=[results],
        queue=True,
        trigger_mode="multiple",
        concurrency_limit=5,
        show_progress="full",
        show_api=True,
    ).then(save_gallery_images, [results], [results, image_files], queue=False, show_api=False)
    clear_prompt.click(lambda: None, None, [prompt], queue=False, show_api=False)
    clear_results.click(lambda: (None, None), None, [results, image_files], queue=False, show_api=False)
    recom_prompt_preset.change(set_recom_prompt_preset, [recom_prompt_preset],
     [positive_prefix, positive_suffix, negative_prefix, negative_suffix], queue=False, show_api=False)

demo.queue()
demo.launch()