Spaces:
trysem
/
Runtime error

File size: 6,580 Bytes
4826cf8
 
 
 
 
 
 
 
 
 
 
 
305bf5c
4826cf8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8bb727a
70f2931
 
 
4826cf8
8bb727a
70f2931
 
 
4826cf8
8bb727a
70f2931
 
 
4826cf8
8bb727a
70f2931
 
 
4826cf8
 
 
 
 
 
2a95e32
 
4826cf8
 
 
 
3e6ed4e
4826cf8
 
3e6ed4e
4826cf8
 
 
 
edea457
 
4826cf8
 
 
ec221c2
4826cf8
 
e34890b
4826cf8
9f6b460
3e6ed4e
4826cf8
 
edea457
4826cf8
 
 
ec221c2
4826cf8
 
51d287a
4826cf8
9f6b460
3e6ed4e
4826cf8
37f913b
6399bc8
305bf5c
c063c74
68982fa
c063c74
68982fa
c063c74
68982fa
c063c74
68982fa
c063c74
68982fa
c063c74
68982fa
4826cf8
 
 
 
 
 
 
8bb727a
 
 
 
4826cf8
 
 
 
 
 
 
df6513c
4826cf8
 
 
 
 
 
 
 
 
 
 
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import gradio as gr
import os
import sys
from pathlib import Path
import random
import string
import time
from queue import Queue
from threading import Thread
import emoji


text_gen=gr.Interface.load("spaces/trysem/visua")
def get_prompts(prompt_text):
    return text_gen("photo, " + prompt_text)
proc1=gr.Interface.load("models/dreamlike-art/dreamlike-photoreal-2.0")

def restart_script_periodically():
    while True:
        time.sleep(600) # 10 minutes
        try:
            os.execl(sys.executable, sys.executable, *sys.argv)
        except:
            pass

restart_thread = Thread(target=restart_script_periodically, daemon=True)
restart_thread.start()

queue = Queue()
queue_threshold = 800

def add_random_noise(prompt, noise_level=0.00):
    if noise_level == 0:
        noise_level = 0.00
    # Get the percentage of characters to add as noise
    percentage_noise = noise_level * 5
    # Get the number of characters to add as noise
    num_noise_chars = int(len(prompt) * (percentage_noise/100))
    # Get the indices of the characters to add noise to
    noise_indices = random.sample(range(len(prompt)), num_noise_chars)
    # Add noise to the selected characters
    prompt_list = list(prompt)
    # Add numbers, special characters, and all emojis to the list of characters used to add noise
    noise_chars = string.ascii_letters + string.punctuation + ' ' + string.digits + emoji.emojize(":all:")
    for index in noise_indices:
        prompt_list[index] = random.choice(noise_chars)
    return "".join(prompt_list)


def send_it1(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output1 = proc1(prompt_with_noise)
    return output1

def send_it2(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output2 = proc1(prompt_with_noise)
    return output2

def send_it3(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output3 = proc1(prompt_with_noise)
    return output3

def send_it4(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output4 = proc1(prompt_with_noise)
    return output4

def send_it5(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output5 = proc1(prompt_with_noise)
    return output5

def send_it6(inputs, noise_level, proc1=proc1):
    prompt_with_noise = add_random_noise(inputs, noise_level)
    output6 = proc1(prompt_with_noise)
    return output6

with gr.Blocks(css="footer {visibility: hidden}") as demo:
    gr.HTML(
        """
            <div style="text-align: center; max-width: 650px; margin: 0 auto;">
              <div>
                <h1 style="font-weight: 900; font-size: 3rem; margin-bottom:20px; line-height:normal;">
                  Excurl Photoreal AI<br>Art Generator
                </h1>
              </div>
              <p style="margin-bottom: 10px; font-size: 96%">
              Noise Level: Controls how much randomness is added to the input before it is sent to the model. Higher noise level produces more diverse outputs, while lower noise level produces similar outputs,
                
              </p>
              <p style="margin-bottom: 10px; font-size: 98%">
              ❤️ This model is an educational demo, we carry no responsibilty over the content / content of the images generated by the model, usage is allowed only if the agreement satisfies! ❤️</a>
              </p>
            </div>
        """
    )
    with gr.Column():
        with gr.Row():
            input_text = gr.Textbox(
                label="Short Prompt",
                show_label=False,
                max_lines=4,
                placeholder="Enter a basic idea and click 'Magic Prompt'",
            ).style(
                container=True,
            )
        with gr.Row():
            see_prompts = gr.Button("✨ Magic Prompt ✨").style(full_width=True)

        
        with gr.Row():
            prompt = gr.Textbox(
                label="Enter your prompt",
                show_label=False,
                max_lines=6,
                placeholder="Full Prompt",
            ).style(
                container=True,
            )
        with gr.Row():
            run = gr.Button("Generate Images").style(full_width=True)
        
        with gr.Row():
            
                    noise_level = gr.Slider(minimum=0.1, maximum=3, step=0.1, label="Noise Level")
        with gr.Row():
                    output1=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        with gr.Row():
                    output2=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        with gr.Row():
                    output3=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        with gr.Row():
                    output4=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        with gr.Row():
                    output5=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        with gr.Row():
                    output6=gr.Image(label="Dreamlike-photoreal-2.0",show_label=False)
        
    #with gr.Row():
        #output1=gr.Image()

        see_prompts.click(get_prompts, inputs=[input_text], outputs=[prompt], queue=False)
        run.click(send_it1, inputs=[prompt, noise_level], outputs=[output1])
        run.click(send_it2, inputs=[prompt, noise_level], outputs=[output2])
        run.click(send_it3, inputs=[prompt, noise_level], outputs=[output3])
        run.click(send_it4, inputs=[prompt, noise_level], outputs=[output4])
        run.click(send_it5, inputs=[prompt, noise_level], outputs=[output5])
        run.click(send_it6, inputs=[prompt, noise_level], outputs=[output6])
        


        with gr.Row():
                gr.HTML(
    """
        <div class="footer">
        <p> 
</p>
</div>
        <div class="acknowledgments" style="font-size: 115%">
            <p> Unleash your creative side and generate mesmerizing images with just a few clicks! Enter a spark of inspiration in the "Basic Idea" text box and click the "Magic Prompt" button to elevate it to a polished masterpiece. Make any final tweaks in the "Full Prompt" box and hit the "Generate Images" button to watch your vision come to life. Experiment with the "Noise Level" for a diverse range of outputs, from similar to wildly unique. Let the fun begin!
            </p>
        </div>
    """
)

    demo.launch(enable_queue=True, inline=True)
    block.queue(concurrency_count=100)