Spaces:
Running
Running
File size: 2,981 Bytes
a846cff 2a7655f 7be4c79 2a7655f e9c493a 2a7655f 674bc5d 9524f0c 2a7655f 1d60450 f49d027 2a7655f cc0bb30 1d60450 03b3365 2a7655f d801b9c 9524f0c 2a7655f 0cc17ce 847da17 2a7655f c7c21fa c44e665 fd2b0c7 2a7655f 91b87bd 2a7655f 56f6b84 2a7655f 8d73fdc 2a7655f 8d73fdc 2a7655f 56f6b84 2a7655f f49d027 2a7655f |
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 |
import gradio as gr
from random import randint
from all_models import models
def load_fn(models):
global models_load
models_load = {}
for model in models:
if model not in models_load.keys():
try:
m = gr.load(f'models/{model}')
except Exception as error:
m = gr.Interface(lambda txt: None, ['text'], ['image'])
models_load.update({model: m})
load_fn(models)
num_models = 2
default_models = models[:num_models]
def extend_choices(choices):
return choices + (num_models - len(choices)) * ['NA']
def update_imgbox(choices):
choices_plus = extend_choices(choices)
return [gr.Image(None, label = m, visible = (m != 'NA')) for m in choices_plus]
def gen_fn(model_str, prompt):
if model_str == 'NA':
return None
noise = str('') #str(randint(0, 99999999999))
return models_load[model_str](f'{prompt} {noise}')
with gr.Blocks() as demo:
with gr.Tab('Toy World'):
txt_input = gr.Textbox(label = 'Your prompt:', lines=4).style(container=False,min_width=1200)
gen_button = gr.Button('Generate up to 2 images in up to 20 seconds')
stop_button = gr.Button('Stop', variant = 'secondary', interactive = False)
gen_button.click(lambda s: gr.update(interactive = True), None, stop_button)
gr.HTML(
"""
<div style="text-align: center; max-width: 1200px; margin: 0 auto;">
<div>
<body>
<div class="center"><p style="margin-bottom: 10px; color: #000000;">Scroll down to see more images and select models.</p>
</div>
</body>
</div>
</div>
"""
)
with gr.Row():
output = [gr.Image(label = m, min_width=480) for m in default_models]
current_models = [gr.Textbox(m, visible = False) for m in default_models]
for m, o in zip(current_models, output):
gen_event = gen_button.click(gen_fn, [m, txt_input], o)
stop_button.click(lambda s: gr.update(interactive = False), None, stop_button, cancels = [gen_event])
with gr.Accordion('Model selection'):
model_choice = gr.CheckboxGroup(models, label = f'Choose up to {num_models} different models from the 2 available! Untick them to only use one!', value = default_models, multiselect = True, max_choices = num_models, interactive = True, filterable = False)
model_choice.change(update_imgbox, model_choice, output)
model_choice.change(extend_choices, model_choice, current_models)
with gr.Row():
gr.HTML(
"""
<div class="footer">
<p> Use 901 models up to six at a time at <a href="https://huggingface.co/spaces/Yntec/ToyWorld">ToyWorld</a></a>!
</p>
"""
)
demo.queue(concurrency_count = 200)
demo.launch() |