Diffusion-Flood / flood.py
Omnibus's picture
Create flood.py
5b6d22e
raw
history blame
10.5 kB
import os
import cv2
import sys
import time
import uuid as bandaid
import tarfile
import gradio as gr
from pathlib import Path
from PIL import Image
models = [
"johnslegers/epic-diffusion-v1.1",
"andite/anything-v4.0",
"runwayml/stable-diffusion-v1-5",
"claudfuen/photorealistic-fuen-v1",
"naclbit/trinart_stable_diffusion_v2",
"nitrosocke/Arcane-Diffusion",
"nitrosocke/archer-diffusion",
"nitrosocke/elden-ring-diffusion",
"nitrosocke/redshift-diffusion",
"nitrosocke/spider-verse-diffusion",
"nitrosocke/mo-di-diffusion",
"nitrosocke/classic-anim-diffusion",
"dreamlike-art/dreamlike-diffusion-1.0",
"dreamlike-art/dreamlike-photoreal-2.0",
"wavymulder/wavyfusion",
"wavymulder/Analog-Diffusion",
"prompthero/midjourney-v4-diffusion",
"prompthero/openjourney",
"dallinmackay/Van-Gogh-diffusion",
"hakurei/waifu-diffusion",
"DGSpitzer/Cyberpunk-Anime-Diffusion",
"Fictiverse/Stable_Diffusion_BalloonArt_Model",
"dallinmackay/Tron-Legacy-diffusion",
"AstraliteHeart/pony-diffusion",
"nousr/robo-diffusion",
"CompVis/stable-diffusion-v1-4",
]
current_model = models[0]
text_gen1=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen2=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen3=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen4=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen5=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen6=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen7=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
text_gen8=gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link")
models2=[
gr.Interface.load(f"models/{models[0]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[1]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[2]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[3]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[4]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[5]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[6]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[7]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[8]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[9]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[10]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[11]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[12]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[13]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[14]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[15]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[16]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[17]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[18]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[19]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[20]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[21]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[22]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[23]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[24]}",live=True,preprocess=True),
gr.Interface.load(f"models/{models[25]}",live=True,preprocess=True),
]
def text_it(inputs,text_gen1=text_gen1):
go_t1=text_gen1(inputs)
return(go_t1)
def set_model(current_model):
current_model = models[current_model]
return gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),gr.update(label=(f"{current_model}")),
def prime_the_thing():
#timestr = time.strftime("%Y%m%d-%H%M%S")
timestr = bandaid.uuid4()
if not os.path.exists(f'./frames{timestr}'):
os.mkdir(f'./frames{timestr}')
global frame_box
global frame_file_box
global frame_tar_box
frame_box=[]
frame_file_box=[]
frame_tar_box=[]
go=1
return timestr, go
def go_fn():
num=1
return num
def the_thing(inputs,input_rand, model_choice,num,top_num,timestr):
if num != 0:
if int(num) <= int(top_num):
#proc1=
inputs=f"{inputs}{input_rand}"
proc1=models2[model_choice]
output=proc1(inputs)
#output_pro=Image.open(output)
output_pro=cv2.imread(output)
cv2.imwrite(f"./frames{timestr}/frame-{num}.png",output_pro)
frame_file_box.append(Path(f"./frames{timestr}/frame-{num}.png"))
frame_box.append(output)
input_rand=f"{input_rand} "
if int(num) < int(top_num):
num=int(num)+1
elif int(num)==int(top_num):
#frame_tar_box=[]
with tarfile.open(f'frames{timestr}.tar.gz','w:gz') as tar:
tar.add(f"./frames{timestr}",arcname=os.path.basename(f"./frames{timestr}"))
frame_tar_box.append(Path(f'frames{timestr}.tar.gz'))
else:
pass
else:
num=0
pass
else:
print("ending")
return frame_box,frame_file_box,frame_tar_box,num,input_rand
css=""""""
css="""
.max-h-\[55vh\]{
max-height:10vh;!important;
}
"""
with gr.Blocks(css=css) as myface:
with gr.Row():
with gr.Tab("Title"):
gr.HTML(""" <title>Diffusion Flood</title>
<div style="text-align: center;text-shadow:0px 0px 2px white,0px 0px 5px cornflowerblue;max-width:1500px;margin-top:5px;font-size:50px;height:50px;">
<h1>Diffusion Flood</h1></div>
<br>
<div style="text-align:center;font-size:30px;margin-bottom:5px;"><h4>Grab a bucket!</h4></div>""")
with gr.Tab("Description"):
gr.HTML("""<div style="text-align:center;">
<h4>Developing...</h4>
<br><h4>Select how many image you would like returned</h4>
<h4>Enter your Prompt</h4>
<h4>Select a Model (some are fast, others are slow)</h4>
<h4>Send it!</h4>
</div>""")
with gr.Tab("Tools"):
with gr.Tab("View"):
with gr.Row():
with gr.Column(style="width=50%, height=70%"):
gr.Pil(label="Crop")
with gr.Column(style="width=50%, height=70%"):
gr.Pil(label="Crop")
with gr.Tab("Draw"):
with gr.Column(style="width=50%, height=70%"):
gr.Pil(label="Crop")
with gr.Column(style="width=50%, height=70%"):
gr.Pil(label="Draw")
gr.ImagePaint(label="Draw")
with gr.Tab("Text"):
with gr.Row():
with gr.Column(scale=50):
gr.Textbox(label="", lines=8, interactive=True)
with gr.Column(scale=50):
gr.Textbox(label="", lines=8, interactive=True)
with gr.Tab("Color Picker"):
with gr.Row():
with gr.Column(scale=50):
gr.ColorPicker(label="Color", interactive=True)
with gr.Column(scale=50):
gr.ImagePaint(label="Draw", interactive=True)
with gr.Tab("Style"):
style_switch=gr.Radio(["1", "2", "3"])
style_button=gr.Button("Load Style")
with gr.Row():
with gr.Column():
with gr.Row():
frame_num=gr.Textbox(label="Current",value=0,interactive=False)
time_box=gr.Textbox(label="Time String", interactive=False)
frame_top=gr.Textbox(label="How many images?", value=10)
with gr.Row():
model_name1 = gr.Dropdown(show_label=False, choices=[m for m in models], type="index", value=current_model, interactive=True)
#magic_text=gr.Textbox(label="Magic Prompt",lines=3)
with gr.Column():
#use_short=gr.Button("Use Short Prompt")
#see_prompt=gr.Button("Generate Magic Prompt")
magic_text=gr.Textbox(label="Short Prompt",lines=1)
run=gr.Button("Send it!")
with gr.Tab("Bucket"):
with gr.Column():
with gr.Row():
with gr.Column():
frames=gr.Gallery(label="Bucket o' Frames", type="filepath").style(grid=10)
frame_files=gr.Files()
frame_tar=gr.Files()
with gr.Row():
batch_bot1=gr.Textbox(label="BB1")
start_frame1=gr.Textbox(label="Start Frame")
rand_box=gr.Textbox(value="",visible=False)
go_box=gr.Textbox(value=0,visible=False)
def short_prompt(inputs):
return(inputs)
run.click(prime_the_thing, inputs=[], outputs=[time_box,frame_num])
go_box.change(go_fn,inputs=[],outputs=[frame_num])
frame_num.change(the_thing, inputs=[magic_text,rand_box, model_name1, frame_num, frame_top,time_box], outputs=[frames,frame_files,frame_tar,frame_num,rand_box])
#use_short.click(short_prompt,inputs=[input_text],outputs=magic_text)
#see_prompt.click(text_it,inputs=[input_text],outputs=[magic_text])
#model_name1.change(set_model,inputs=model_name1,outputs=[output1,output2,output3,output4,output5,output6,output7,output8])
myface.queue(concurrency_count=200)
myface.launch(enable_queue=True, inline=True, max_threads=200)