| 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 |
|
|
| text_gen=gr.Interface.load("spaces/trysem/visua") |
| proc1=gr.Interface.load("models/trysem/dreamlike-photoreal-2.0", live=True) |
|
|
| def restart_script_periodically(): |
| while True: |
| time.sleep(600) |
| os.execl(sys.executable, sys.executable, *sys.argv) |
|
|
| restart_thread = Thread(target=restart_script_periodically, daemon=True) |
| restart_thread.start() |
|
|
| def reset_queue_periodically(): |
| start_time = time.time() |
| while True: |
| if time.time() - start_time >= 120: |
| queue.queue.clear() |
| start_time = time.time() |
|
|
| reset_queue_thread = Thread(target=reset_queue_periodically, daemon=True) |
| reset_queue_thread.start() |
|
|
| queue = Queue() |
| queue_threshold = 50 |
|
|
| def add_random_noise(prompt, noise_level=0.07): |
| |
| percentage_noise = noise_level * 5 |
| |
| num_noise_chars = int(len(prompt) * (percentage_noise/100)) |
| |
| noise_indices = random.sample(range(len(prompt)), num_noise_chars) |
| |
| prompt_list = list(prompt) |
| noise_chars = string.ascii_letters + string.punctuation + ' ' |
| 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) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output1 = proc1(queue.get()) |
| queue.queue.clear() |
| return output1 |
|
|
| def send_it2(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output2 = proc1(queue.get()) |
| queue.queue.clear() |
| return output2 |
|
|
| def send_it3(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output3 = proc1(queue.get()) |
| queue.queue.clear() |
| return output3 |
|
|
| def send_it4(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output4 = proc1(queue.get()) |
| queue.queue.clear() |
| return output4 |
|
|
| def send_it5(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output5 = proc1(queue.get()) |
| queue.queue.clear() |
| return output5 |
|
|
| def send_it6(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output6 = proc1(queue.get()) |
| queue.queue.clear() |
| return output6 |
|
|
| def send_it7(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output7 = proc1(queue.get()) |
| queue.queue.clear() |
| return output7 |
|
|
| def send_it8(inputs, noise_level, proc1=proc1): |
| prompt_with_noise = add_random_noise(inputs, noise_level) |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_with_noise) |
| output8 = proc1(queue.get()) |
| queue.queue.clear() |
| return output8 |
|
|
|
|
| def get_prompts(prompt_text): |
| while queue.qsize() >= queue_threshold: |
| time.sleep(2) |
| queue.put(prompt_text) |
| output = text_gen(queue.get()) |
| queue.queue.clear() |
| return output |
|
|
|
|
| with gr.Blocks() as myface: |
| with gr.Row(): |
|
|
| input_text=gr.Textbox(label="Short Prompt") |
| see_prompts=gr.Button("Magic Prompt") |
| with gr.Row(): |
|
|
| prompt=gr.Textbox(label="Enter Prompt") |
| noise_level=gr.Slider(minimum=0.1, maximum=3, step=0.1, label="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.") |
| run=gr.Button("Generate") |
|
|
| with gr.Row(): |
| like_message = gr.Button("❤️ excurl realistic photo art generator! ❤️") |
| with gr.Row(): |
| output1=gr.Image(label="Variant 1") |
| output2=gr.Image(label="Variant 2") |
| with gr.Row(): |
| output3=gr.Image(label="Variant 3") |
| output4=gr.Image(label="Variant 4") |
| with gr.Row(): |
| output5=gr.Image(label="Variant 5") |
| output6=gr.Image(label="Variant 6") |
| with gr.Row(): |
| output7=gr.Image(label="Variant 7") |
| output8=gr.Image(label="Variant 8") |
|
|
| |
| 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]) |
| run.click(send_it7, inputs=[prompt, noise_level], outputs=[output7]) |
| run.click(send_it8, inputs=[prompt, noise_level], outputs=[output8]) |
| see_prompts.click(get_prompts, inputs=[input_text], outputs=[prompt]) |
|
|
| myface.launch(enable_queue=True, inline=True) |
| block.queue(concurrency_count=30, max_size=30) |
| reset_queue_thread.join() |