Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -3,7 +3,7 @@ import gradio as gr
|
|
3 |
from random import randint
|
4 |
from operator import itemgetter
|
5 |
import bisect
|
6 |
-
from all_models import tags_plus_models,models,models_plus_tags
|
7 |
from datetime import datetime
|
8 |
from externalmod import gr_Interface_load
|
9 |
import asyncio
|
@@ -13,7 +13,7 @@ lock = RLock()
|
|
13 |
HF_TOKEN = os.environ.get("HF_TOKEN") if os.environ.get("HF_TOKEN") else None # If private or gated models aren't used, ENV setting is unnecessary.
|
14 |
|
15 |
|
16 |
-
nb_req_simult=
|
17 |
nb_gallery_model=5
|
18 |
|
19 |
|
@@ -21,7 +21,8 @@ tempo_update_actu=3.0
|
|
21 |
#incr_update_actu={}
|
22 |
|
23 |
now2 = 0
|
24 |
-
inference_timeout =
|
|
|
25 |
MAX_SEED = 2**32-1
|
26 |
|
27 |
|
@@ -34,6 +35,7 @@ cache_id_image={}
|
|
34 |
cache_list_task={}
|
35 |
cache_text_actu={}
|
36 |
from_reload={}
|
|
|
37 |
|
38 |
|
39 |
def load_fn(models):
|
@@ -117,13 +119,13 @@ async def infer(model_str, prompt, nprompt="", height=None, width=None, steps=No
|
|
117 |
image = str(Path(png_path).resolve())
|
118 |
return image
|
119 |
return None
|
120 |
-
def gen_fn(model_str, prompt, nprompt="", height=None, width=None, steps=None, cfg=None, seed=-1):
|
121 |
if model_str == 'NA':
|
122 |
return None
|
123 |
try:
|
124 |
loop = asyncio.new_event_loop()
|
125 |
result = loop.run_until_complete(infer(model_str, prompt, nprompt,
|
126 |
-
height, width, steps, cfg, seed,
|
127 |
except (Exception, asyncio.CancelledError) as e:
|
128 |
print(e)
|
129 |
print(f"Task aborted: {model_str}")
|
@@ -166,7 +168,7 @@ def reset_cache_image_all_sessions(cache_image=cache_image):
|
|
166 |
listT.clear()
|
167 |
return
|
168 |
|
169 |
-
def set_session(id):
|
170 |
if id==0:
|
171 |
randTemp=randint(1,MAX_SEED)
|
172 |
cache_image[f"{randTemp}"]=[]
|
@@ -174,7 +176,12 @@ def set_session(id):
|
|
174 |
|
175 |
cache_list_task[f"{randTemp}"]=[]
|
176 |
cache_text_actu[f"{randTemp}"]={}
|
|
|
|
|
|
|
|
|
177 |
from_reload[f"{randTemp}"]=False
|
|
|
178 |
#incr_update_actu[f"{randTemp}"]=0
|
179 |
return gr.Number(visible=False,value=randTemp)
|
180 |
else :
|
@@ -307,6 +314,28 @@ def fonc_load_info(nb_of_models_to_gen,index_tag,index_first_model):
|
|
307 |
list_models_temp.append(tags_plus_models[index_tag][2][i+index_first_model])
|
308 |
str_temp+=f"\"{tags_plus_models[index_tag][2][i+index_first_model]}\",\n"
|
309 |
return nb_of_models_to_gen,gr.Textbox(str_temp),gr.Dropdown(choices=[["",list_models_temp]], value=list_models_temp )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
def fonc_load_info_custom(nb_of_models_to_gen,list_model_custom,index_first_model):
|
311 |
str_temp=""
|
312 |
list_models_temp=[]
|
@@ -342,7 +371,7 @@ def crea_list_task(id_session,list_param,list_models_to_gen,nb_images_by_prompt)
|
|
342 |
dict_temp["task"].append({"prompt":p[0],"nprompt":p[1],"width":p[2],"height":p[3],"steps":p[4],"cfg":p[5],"seed":p[6]})
|
343 |
cache_list_task[f"{id_session}"].append(dict_temp)
|
344 |
|
345 |
-
cache_text_actu[f"{id_session}"]={"nb_modules_use":nb_req_simult,"stop":False,"nb_fail":0,
|
346 |
"nb_models_to_do":len(list_models_to_gen) ,"nb_models_tot":len(list_models_to_gen) ,
|
347 |
"nb_tasks_to_do":len(list_models_to_gen)*len(list_param)*nb_images_by_prompt ,
|
348 |
"nb_tasks_tot":len(list_models_to_gen)*len(list_param)*nb_images_by_prompt,
|
@@ -366,21 +395,28 @@ def fonc_update_actu(text_actu,id):
|
|
366 |
return gr.Textbox(s)
|
367 |
|
368 |
def fonc_update_actu_2(id):
|
369 |
-
if id == 0:
|
|
|
|
|
370 |
return gr.Textbox("waiting...")
|
371 |
s=""
|
372 |
-
s+=f"modules: {cache_text_actu[str(id)]['nb_modules_use']}/{nb_req_simult}\n"
|
373 |
-
s+=f"models remaining: {cache_text_actu[str(id)]['nb_models_to_do']}/{cache_text_actu[str(id)]['nb_models_tot']}\n"
|
374 |
i=0
|
|
|
375 |
for d in cache_text_actu[str(id)]['progress']:
|
376 |
i+=1
|
|
|
|
|
377 |
s+=str(d)
|
378 |
if i%10==0:
|
379 |
s+=" "
|
380 |
if i%50==0:
|
381 |
s+="\n"
|
|
|
382 |
s+="\n"
|
383 |
-
s+=f"
|
|
|
|
|
|
|
384 |
s+=f"fail attempt: {cache_text_actu[str(id)]['nb_fail']}\n"
|
385 |
#s+=f"{tempo_update_actu*incr_update_actu[str(id)]} s"
|
386 |
#incr_update_actu[str(id)]+=1
|
@@ -551,7 +587,103 @@ def fonc_add_to_text(text,list_models,index):
|
|
551 |
|
552 |
def load_model_publ(choice_model_publ):
|
553 |
return gr.Image(None,label=choice_model_publ,interactive=False),gr.Textbox(choice_model_publ,visible=False,show_label=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
554 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
def make_me():
|
556 |
with gr.Tab(" "):
|
557 |
with gr.Column():
|
@@ -638,6 +770,8 @@ def make_me():
|
|
638 |
index_tag,index_first_model)
|
639 |
load_info=gr.Button("Load Models")
|
640 |
load_info.click(fonc_load_info,[nb_of_models_to_gen,index_tag,index_first_model],[nb_of_models_to_gen,disp_info,list_models_to_gen])
|
|
|
|
|
641 |
|
642 |
with gr.Accordion("Models Custom",open=False) :
|
643 |
with gr.Row():
|
@@ -788,9 +922,134 @@ def make_me():
|
|
788 |
row_gallery.change(lambda g,h: gr.Gallery(g,rows=h),[gallery_by_prompt,row_gallery],[gallery_by_prompt])
|
789 |
|
790 |
|
791 |
-
|
792 |
button_restore_session.click(fonc_restore_session,[id_session],[list_param,disp_param.dataset,list_models_to_gen,nb_of_models_to_gen])
|
793 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
794 |
|
795 |
|
796 |
|
|
|
3 |
from random import randint
|
4 |
from operator import itemgetter
|
5 |
import bisect
|
6 |
+
from all_models import tags_plus_models,models,models_plus_tags,find_warm_model_list
|
7 |
from datetime import datetime
|
8 |
from externalmod import gr_Interface_load
|
9 |
import asyncio
|
|
|
13 |
HF_TOKEN = os.environ.get("HF_TOKEN") if os.environ.get("HF_TOKEN") else None # If private or gated models aren't used, ENV setting is unnecessary.
|
14 |
|
15 |
|
16 |
+
nb_req_simult=10 ########
|
17 |
nb_gallery_model=5
|
18 |
|
19 |
|
|
|
21 |
#incr_update_actu={}
|
22 |
|
23 |
now2 = 0
|
24 |
+
inference_timeout = 300
|
25 |
+
inference_timeout_w = 70
|
26 |
MAX_SEED = 2**32-1
|
27 |
|
28 |
|
|
|
35 |
cache_list_task={}
|
36 |
cache_text_actu={}
|
37 |
from_reload={}
|
38 |
+
cache_list_task_w={}
|
39 |
|
40 |
|
41 |
def load_fn(models):
|
|
|
119 |
image = str(Path(png_path).resolve())
|
120 |
return image
|
121 |
return None
|
122 |
+
def gen_fn(model_str, prompt, nprompt="", height=None, width=None, steps=None, cfg=None, seed=-1,timeout=inference_timeout):
|
123 |
if model_str == 'NA':
|
124 |
return None
|
125 |
try:
|
126 |
loop = asyncio.new_event_loop()
|
127 |
result = loop.run_until_complete(infer(model_str, prompt, nprompt,
|
128 |
+
height, width, steps, cfg, seed, timeout))
|
129 |
except (Exception, asyncio.CancelledError) as e:
|
130 |
print(e)
|
131 |
print(f"Task aborted: {model_str}")
|
|
|
168 |
listT.clear()
|
169 |
return
|
170 |
|
171 |
+
def set_session(id,warm=False):
|
172 |
if id==0:
|
173 |
randTemp=randint(1,MAX_SEED)
|
174 |
cache_image[f"{randTemp}"]=[]
|
|
|
176 |
|
177 |
cache_list_task[f"{randTemp}"]=[]
|
178 |
cache_text_actu[f"{randTemp}"]={}
|
179 |
+
if warm:
|
180 |
+
cache_text_actu[f"{randTemp}"]["warm"]=True
|
181 |
+
else:
|
182 |
+
cache_text_actu[f"{randTemp}"]["warm"]=False
|
183 |
from_reload[f"{randTemp}"]=False
|
184 |
+
cache_list_task_w[f"{randTemp}"]=[]
|
185 |
#incr_update_actu[f"{randTemp}"]=0
|
186 |
return gr.Number(visible=False,value=randTemp)
|
187 |
else :
|
|
|
314 |
list_models_temp.append(tags_plus_models[index_tag][2][i+index_first_model])
|
315 |
str_temp+=f"\"{tags_plus_models[index_tag][2][i+index_first_model]}\",\n"
|
316 |
return nb_of_models_to_gen,gr.Textbox(str_temp),gr.Dropdown(choices=[["",list_models_temp]], value=list_models_temp )
|
317 |
+
|
318 |
+
def load_random_models(nb_of_models_to_gen,index_tag):
|
319 |
+
str_temp=""
|
320 |
+
list_models_temp=[]
|
321 |
+
list_random=[]
|
322 |
+
if nb_of_models_to_gen>=len(tags_plus_models[index_tag][2]):
|
323 |
+
str_temp+="warning : to many model chosen"
|
324 |
+
nb_of_models_to_gen= len(tags_plus_models[index_tag][2])
|
325 |
+
str_temp+=f" - only {nb_of_models_to_gen} will be use\n\n"
|
326 |
+
list_models_temp=tags_plus_models[index_tag][2]
|
327 |
+
for m in list_models_temp:
|
328 |
+
str_temp+=f"\"{m}\",\n"
|
329 |
+
else :
|
330 |
+
list_random=tags_plus_models[index_tag][2].copy()
|
331 |
+
for i in range(nb_of_models_to_gen):
|
332 |
+
i_rand=randint(0,len(list_random)-1)
|
333 |
+
m=list_random.pop(i_rand)
|
334 |
+
list_models_temp.append(m)
|
335 |
+
str_temp+=f"\"{m}\",\n"
|
336 |
+
return nb_of_models_to_gen,gr.Textbox(str_temp),gr.Dropdown(choices=[["",list_models_temp]], value=list_models_temp )
|
337 |
+
|
338 |
+
|
339 |
def fonc_load_info_custom(nb_of_models_to_gen,list_model_custom,index_first_model):
|
340 |
str_temp=""
|
341 |
list_models_temp=[]
|
|
|
371 |
dict_temp["task"].append({"prompt":p[0],"nprompt":p[1],"width":p[2],"height":p[3],"steps":p[4],"cfg":p[5],"seed":p[6]})
|
372 |
cache_list_task[f"{id_session}"].append(dict_temp)
|
373 |
|
374 |
+
cache_text_actu[f"{id_session}"]={"nb_modules_use":nb_req_simult,"stop":False,"nb_fail":0,"warm":False,
|
375 |
"nb_models_to_do":len(list_models_to_gen) ,"nb_models_tot":len(list_models_to_gen) ,
|
376 |
"nb_tasks_to_do":len(list_models_to_gen)*len(list_param)*nb_images_by_prompt ,
|
377 |
"nb_tasks_tot":len(list_models_to_gen)*len(list_param)*nb_images_by_prompt,
|
|
|
395 |
return gr.Textbox(s)
|
396 |
|
397 |
def fonc_update_actu_2(id):
|
398 |
+
if id == 0 :
|
399 |
+
return gr.Textbox("waiting...")
|
400 |
+
if cache_text_actu[str(id)]['warm']==True:
|
401 |
return gr.Textbox("waiting...")
|
402 |
s=""
|
|
|
|
|
403 |
i=0
|
404 |
+
nb_ones=0
|
405 |
for d in cache_text_actu[str(id)]['progress']:
|
406 |
i+=1
|
407 |
+
if d==1:
|
408 |
+
nb_ones+=1
|
409 |
s+=str(d)
|
410 |
if i%10==0:
|
411 |
s+=" "
|
412 |
if i%50==0:
|
413 |
s+="\n"
|
414 |
+
|
415 |
s+="\n"
|
416 |
+
s+=f"modules: {cache_text_actu[str(id)]['nb_modules_use']}/{nb_req_simult} ({cache_text_actu[str(id)]['nb_modules_use']-nb_ones}/{cache_text_actu[str(id)]['nb_modules_use']})\n"
|
417 |
+
s+=f"models remaining: {cache_text_actu[str(id)]['nb_models_to_do']}/{cache_text_actu[str(id)]['nb_models_tot']}\n"
|
418 |
+
|
419 |
+
s+=f"images remaining(done): {cache_text_actu[str(id)]['nb_tasks_to_do']}({cache_text_actu[str(id)]['nb_tasks_tot']-cache_text_actu[str(id)]['nb_tasks_to_do']})/{cache_text_actu[str(id)]['nb_tasks_tot']}\n"
|
420 |
s+=f"fail attempt: {cache_text_actu[str(id)]['nb_fail']}\n"
|
421 |
#s+=f"{tempo_update_actu*incr_update_actu[str(id)]} s"
|
422 |
#incr_update_actu[str(id)]+=1
|
|
|
587 |
|
588 |
def load_model_publ(choice_model_publ):
|
589 |
return gr.Image(None,label=choice_model_publ,interactive=False),gr.Textbox(choice_model_publ,visible=False,show_label=False)
|
590 |
+
|
591 |
+
|
592 |
+
def set_tasks_w(id_session,list_p,nb_i):
|
593 |
+
list_t=[]
|
594 |
+
for p in list_p:
|
595 |
+
cache_list_task_w[f"{id_session}"].append([nb_i,{"prompt":p[0],"nprompt":p[1],"width":p[2],"height":p[3],"steps":p[4],"cfg":p[5],"seed":p[6]},0])
|
596 |
+
|
597 |
+
cache_text_actu[f"{id_session}"]={"nb_modules_use":nb_req_simult,"stop":False,"nb_fail":0,"warm":True,"nb_prompt_to_do":len(list_p),"nb_prompt_tot":len(list_p),
|
598 |
+
"nb_tasks_to_do":len(list_p)*nb_i ,"nb_tasks_tot":len(list_p)*nb_i}
|
599 |
+
return
|
600 |
+
|
601 |
+
def fonc_start_w(id_session,id_module,s,cont,nb_modules,tag):
|
602 |
+
if cont==False or id_module>=nb_modules:
|
603 |
+
cache_text_actu[f"{id_session}"]["nb_modules_use"]-=1
|
604 |
+
print("manual stop")
|
605 |
+
return None,gr.Textbox(s),gr.Number(randint(1,MAX_SEED))
|
606 |
+
|
607 |
+
find_task=False
|
608 |
+
task={}
|
609 |
+
for t in cache_list_task_w[f"{id_session}"]:
|
610 |
+
if not find_task:
|
611 |
+
if t[0]>0:
|
612 |
+
t[0]-=1
|
613 |
+
t[2]+=1
|
614 |
+
task=t[1].copy()
|
615 |
+
find_task=True
|
616 |
+
if not find_task:
|
617 |
+
cache_text_actu[f"{id_session}"]["nb_modules_use"]-=1
|
618 |
+
return None,gr.Textbox(s),gr.Number(randint(1,MAX_SEED))
|
619 |
|
620 |
+
if tag == "":
|
621 |
+
tagT=["stable-diffusion-xl"]
|
622 |
+
else:
|
623 |
+
tagT=["stable-diffusion-xl",tag]
|
624 |
+
models_temp , models_plus_tags_temp = find_warm_model_list("John6666", tagT, "", "last_modified", 10000)
|
625 |
+
models_rand=[]
|
626 |
+
for m in models_temp:
|
627 |
+
if m in models:
|
628 |
+
models_rand.append(m)
|
629 |
+
if len(models_rand)!=0:
|
630 |
+
model_actu=models_temp[randint(0,len(models_rand)-1)]
|
631 |
+
print(f"find model : {model_actu}")
|
632 |
+
else:
|
633 |
+
print("no warm model")
|
634 |
+
cache_text_actu[f"{id_session}"]["nb_modules_use"]-=1
|
635 |
+
return None,gr.Textbox(s),gr.Number(randint(1,MAX_SEED))
|
636 |
+
|
637 |
+
|
638 |
+
print("begin gen image:")
|
639 |
+
print(model_actu)
|
640 |
+
print(task)
|
641 |
+
result=gen_fn(model_actu, task["prompt"], task["nprompt"], task["height"], task["width"], task["steps"], task["cfg"], task["seed"],inference_timeout_w)
|
642 |
+
print("reception")
|
643 |
+
if result!=None:
|
644 |
+
id_image=len(cache_image[f"{id_session}"])
|
645 |
+
for t in cache_list_task_w[f"{id_session}"]:
|
646 |
+
if t[1]==task:
|
647 |
+
t[2]-=1
|
648 |
+
if t[0]+t[2]<=0:
|
649 |
+
cache_list_task_w[f"{id_session}"].remove(t)
|
650 |
+
cache_text_actu[f"{id_session}"]["nb_prompt_to_do"]-=1 #################################
|
651 |
+
cache_text_actu[f"{id_session}"]["nb_tasks_to_do"]-=1
|
652 |
+
|
653 |
+
task["id_image"]=id_image
|
654 |
+
task["model"]=model_actu
|
655 |
+
task["image"]=result
|
656 |
+
cache_image[f"{id_session}"].append(task)
|
657 |
+
print("image saved\n")
|
658 |
+
print(task)
|
659 |
+
else:
|
660 |
+
for t in cache_list_task_w[f"{id_session}"]:
|
661 |
+
if t[1]==task:
|
662 |
+
t[0]+=1
|
663 |
+
t[2]-=1
|
664 |
+
cache_text_actu[f"{id_session}"]["nb_fail"]+=1
|
665 |
+
print("fail to generate\n")
|
666 |
+
nb_task_to_do=cache_text_actu[str(id_session)]["nb_tasks_to_do"]
|
667 |
+
print(f"\n {nb_task_to_do} tasks to do\n")
|
668 |
+
return result , gr.Textbox(s+"1"),gr.Number(randint(1,MAX_SEED))
|
669 |
+
|
670 |
+
|
671 |
+
def fonc_update_actu_w(id):
|
672 |
+
if id == 0 :
|
673 |
+
return gr.Textbox("waiting...")
|
674 |
+
if cache_text_actu[str(id)]['warm']==False:
|
675 |
+
return gr.Textbox("waiting...")
|
676 |
+
s=""
|
677 |
+
s+=f"modules: {cache_text_actu[str(id)]['nb_modules_use']}/{nb_req_simult} \n"
|
678 |
+
s+=f"prompts remaining: {cache_text_actu[str(id)]['nb_prompt_to_do']}/{cache_text_actu[str(id)]['nb_prompt_tot']}\n"
|
679 |
+
|
680 |
+
s+=f"images remaining(done): {cache_text_actu[str(id)]['nb_tasks_to_do']}({cache_text_actu[str(id)]['nb_tasks_tot']-cache_text_actu[str(id)]['nb_tasks_to_do']})/{cache_text_actu[str(id)]['nb_tasks_tot']}\n"
|
681 |
+
s+=f"fail attempt: {cache_text_actu[str(id)]['nb_fail']}\n"
|
682 |
+
#s+=f"{tempo_update_actu*incr_update_actu[str(id)]} s"
|
683 |
+
#incr_update_actu[str(id)]+=1
|
684 |
+
s+=f"{randint(1,MAX_SEED)}"
|
685 |
+
return gr.Textbox(s)
|
686 |
+
|
687 |
def make_me():
|
688 |
with gr.Tab(" "):
|
689 |
with gr.Column():
|
|
|
770 |
index_tag,index_first_model)
|
771 |
load_info=gr.Button("Load Models")
|
772 |
load_info.click(fonc_load_info,[nb_of_models_to_gen,index_tag,index_first_model],[nb_of_models_to_gen,disp_info,list_models_to_gen])
|
773 |
+
button_load_random_models=gr.Button("Load Random Models")
|
774 |
+
button_load_random_models.click(load_random_models,[nb_of_models_to_gen,index_tag],[nb_of_models_to_gen,disp_info,list_models_to_gen])
|
775 |
|
776 |
with gr.Accordion("Models Custom",open=False) :
|
777 |
with gr.Row():
|
|
|
922 |
row_gallery.change(lambda g,h: gr.Gallery(g,rows=h),[gallery_by_prompt,row_gallery],[gallery_by_prompt])
|
923 |
|
924 |
|
|
|
925 |
button_restore_session.click(fonc_restore_session,[id_session],[list_param,disp_param.dataset,list_models_to_gen,nb_of_models_to_gen])
|
926 |
|
927 |
+
with gr.Tab(" Warm ",visible=False) as tab_warm:
|
928 |
+
button_test_pass.click(test_pass_aff,[test_pass],[tab_warm])
|
929 |
+
with gr.Column():
|
930 |
+
with gr.Group():
|
931 |
+
with gr.Row():
|
932 |
+
with gr.Column(scale=4):
|
933 |
+
txt_input_w = gr.Textbox(label='Your prompt:', lines=4, interactive = True)
|
934 |
+
neg_input_w = gr.Textbox(label='Negative prompt:', lines=4, interactive = True)
|
935 |
+
with gr.Column(scale=4):
|
936 |
+
with gr.Row():
|
937 |
+
width_w = gr.Slider(label="Width", info="If 0, the default value is used.", maximum=2024, step=32, value=0, interactive = True)
|
938 |
+
height_w = gr.Slider(label="Height", info="If 0, the default value is used.", maximum=2024, step=32, value=0, interactive = True)
|
939 |
+
with gr.Row():
|
940 |
+
choice_ratio_w = gr.Dropdown(label="Ratio Width/Height",
|
941 |
+
info="OverWrite Width and Height (W*H<1024*1024)",
|
942 |
+
show_label=True, choices=list(list_ratios) , interactive = True, value=list_ratios[0][1])
|
943 |
+
choice_ratio_w.change(ratio_chosen,[choice_ratio_w,width,height_w],[width_w,height_w])
|
944 |
+
with gr.Row():
|
945 |
+
steps_w = gr.Slider(label="Number of inference steps", info="If 0, the default value is used.", maximum=100, step=1, value=0, interactive = True)
|
946 |
+
cfg_w = gr.Slider(label="Guidance scale", info="If 0, the default value is used.", maximum=30.0, step=0.1, value=0, interactive = True)
|
947 |
+
seed_w = gr.Slider(label="Seed", info="Randomize Seed if -1.", minimum=-1, maximum=MAX_SEED, step=1, value=-1, interactive = True)
|
948 |
+
|
949 |
+
add_param_w=gr.Button("Add to the list")
|
950 |
+
del_param_w=gr.Button("Delete to the list")
|
951 |
+
|
952 |
+
list_param_w=gr.Dropdown(choices=[["a",[["","",0,0,0,0,-1]]]], value=[["","",0,0,0,0,-1]], visible=False)
|
953 |
+
disp_param_w = gr.Examples(
|
954 |
+
label="list of prompt",
|
955 |
+
examples=list_param_w.value,
|
956 |
+
inputs=[txt_input_w,neg_input_w,width_w,height_w,steps_w,cfg_w,seed_w],
|
957 |
+
outputs=[txt_input_w,neg_input_w,width_w,height_w,steps_w,cfg_w,seed_w],
|
958 |
+
)
|
959 |
+
bool_warm=gr.Checkbox(visible=False,value=True)
|
960 |
+
add_param_w.click(fonc_add_param,[list_param_w,txt_input_w,neg_input_w,width_w,height_w,steps_w,cfg_w,seed_w],[disp_param_w.dataset,list_param_w])
|
961 |
+
add_param_w.click(set_session,[id_session,bool_warm],[id_session])
|
962 |
+
del_param_w.click(fonc_del_param,[list_param_w,txt_input_w,neg_input_w,width_w,height_w,steps_w,cfg_w,seed_w],[disp_param_w.dataset,list_param_w])
|
963 |
+
|
964 |
+
with gr.Row():
|
965 |
+
nb_images_by_prompt_w=gr.Number(2,label="Images by prompt",interactive = True)
|
966 |
+
nb_modules_w=gr.Slider(label="Module use", minimum=1, maximum=nb_req_simult, step=1, value=40, interactive = True)
|
967 |
+
text_tag_w=gr.Textbox("",label="Tag",interactive = True,lines=1)
|
968 |
+
|
969 |
+
with gr.Column():
|
970 |
+
|
971 |
+
button_load_task_w=gr.Button("LOAD")
|
972 |
+
button_load_task_w.click(set_tasks_w,[id_session,list_param_w,nb_images_by_prompt_w],[])
|
973 |
+
button_start_w=gr.Button("START")
|
974 |
+
button_stop_w=gr.Button("STOP")
|
975 |
+
cont_w=gr.Checkbox(True,visible=False)
|
976 |
+
button_start_w.click(lambda:True,[],[cont_w])
|
977 |
+
button_stop_w.click(lambda:False,[],[cont_w])
|
978 |
+
text_actu_w=gr.Textbox(fonc_update_actu_w,inputs=id_session,every=tempo_update_actu,label="in progress",interactive=False,lines=6)############
|
979 |
+
update_actu_w=gr.Number(0,visible=False)
|
980 |
+
|
981 |
+
with gr.Accordion("Gallery Parameters",open=False) :
|
982 |
+
with gr.Row():
|
983 |
+
with gr.Column():
|
984 |
+
set_height_gallery_w=gr.Checkbox(True,label="set height",show_label=True)
|
985 |
+
height_gallery_w=gr.Number(650,label="height",show_label=True)
|
986 |
+
col_gallery_w=gr.Number(5,label="nb columns",show_label=True)
|
987 |
+
row_gallery_w=gr.Number(4,label="nb row",show_label=True)
|
988 |
+
with gr.Column():
|
989 |
+
button_reset_cache_image_w=gr.Button("Reset Images")
|
990 |
+
button_reset_cache_image_w.click(reset_cache_image,[id_session],[])
|
991 |
+
button_reset_cache_image_all_session_w=gr.Button("Reset Images ALL SESSION")
|
992 |
+
button_reset_cache_image_all_session_w.click(reset_cache_image_all_sessions,[],[])
|
993 |
+
|
994 |
+
with gr.Row():
|
995 |
+
outputs_w=[]
|
996 |
+
id_modules_w=[]
|
997 |
+
states_w=[]
|
998 |
+
for i in range(nb_req_simult):
|
999 |
+
outputs_w.append(gr.Image(None,interactive=False,visible=False))
|
1000 |
+
id_modules_w.append(gr.Number(i,interactive=False,visible=False))
|
1001 |
+
states_w.append(gr.Textbox("1",interactive=False,visible=False))
|
1002 |
+
for o,i,s in zip(outputs_w,id_modules_w,states_w):
|
1003 |
+
s.change(fonc_start_w,[id_session,i,s,cont_w,nb_modules_w,text_tag_w],[o,s,update_actu_w])#################
|
1004 |
+
gen_event = gr.on(triggers=[button_start_w.click], fn=fonc_init,inputs=[s], outputs=[s])###################
|
1005 |
+
|
1006 |
+
|
1007 |
+
with gr.Column(scale=2):
|
1008 |
+
gallery_w = gr.Gallery(label="Output", show_download_button=True, elem_classes="gallery",
|
1009 |
+
interactive=False, show_share_button=False, container=True, format="png",
|
1010 |
+
preview=True, object_fit="contain",columns=5,rows=4,height=650)
|
1011 |
+
gallery_by_prompt_w = gr.Gallery(label="Output", show_download_button=True, elem_classes="gallery",
|
1012 |
+
interactive=False, show_share_button=False, container=True, format="png",
|
1013 |
+
preview=True, object_fit="contain",columns=5,rows=4,visible=False,height=650)
|
1014 |
+
|
1015 |
+
set_height_gallery_w.change(lambda g,h,s: gr.Gallery(g,height=h) if s else gr.Gallery(g,height=None),
|
1016 |
+
[gallery_w,height_gallery_w,set_height_gallery_w],[gallery_w])
|
1017 |
+
height_gallery_w.change(lambda g,h: gr.Gallery(g,height=h),[gallery_w,height_gallery_w],[gallery_w])
|
1018 |
+
col_gallery_w.change(lambda g,h: gr.Gallery(g,columns=h),[gallery_w,col_gallery_w],[gallery_w])
|
1019 |
+
row_gallery_w.change(lambda g,h: gr.Gallery(g,rows=h),[gallery_w,row_gallery_w],[gallery_w])
|
1020 |
+
|
1021 |
+
set_height_gallery_w.change(lambda g,h,s: gr.Gallery(g,height=h) if s else gr.Gallery(g,height=None),
|
1022 |
+
[gallery_by_prompt_w,height_gallery_w,set_height_gallery_w],[gallery_by_prompt_w])
|
1023 |
+
height_gallery_w.change(lambda g,h: gr.Gallery(g,height=h),[gallery_by_prompt_w,height_gallery_w],[gallery_by_prompt_w])
|
1024 |
+
col_gallery_w.change(lambda g,h: gr.Gallery(g,columns=h),[gallery_by_prompt_w,col_gallery_w],[gallery_by_prompt_w])
|
1025 |
+
row_gallery_w.change(lambda g,h: gr.Gallery(g,rows=h),[gallery_by_prompt_w,row_gallery_w],[gallery_by_prompt_w])
|
1026 |
+
|
1027 |
+
with gr.Column(scale=3):
|
1028 |
+
button_load_gallery_w=gr.Button("Load Gallery All")
|
1029 |
+
button_load_gallery_w.click(fonc_load_gallery,[id_session,gallery_w],[gallery_w])
|
1030 |
+
|
1031 |
+
with gr.Accordion("Gallery by Prompt",open=False) :
|
1032 |
+
index_gallery_by_prompt_w=gr.Number(0,visible=False)
|
1033 |
+
button_load_gallery_by_prompt_w=gr.Button("Load Gallery by prompt")
|
1034 |
+
text_gallery_by_prompt_w=gr.Textbox(f"{index_gallery_by_prompt_w.value+1}/{len(list_param_w.value)}",show_label=False)
|
1035 |
+
index_gallery_by_prompt_w.change(lambda i,p:gr.Textbox(f"{i+1}/{len(p)}"),[index_gallery_by_prompt_w,list_param_w],[text_gallery_by_prompt_w])
|
1036 |
+
button_load_gallery_by_prompt_w.click(load_gallery_by_prompt,
|
1037 |
+
[id_session,gallery_by_prompt_w,index_gallery_by_prompt_w,list_param_w],[gallery_by_prompt_w])
|
1038 |
+
gen_event_gallery_by_prompt_w = gr.on(triggers=[button_load_gallery_by_prompt_w.click], fn=lambda g:gr.Gallery(g,visible=False),
|
1039 |
+
inputs=[gallery_w], outputs=[gallery_w])
|
1040 |
+
gen_event_gallery_w = gr.on(triggers=[button_load_gallery_w.click], fn=lambda g:gr.Gallery(g,visible=False),
|
1041 |
+
inputs=[gallery_by_prompt_w], outputs=[gallery_by_prompt_w])
|
1042 |
+
with gr.Row():
|
1043 |
+
button_gallery_prev_prompt_w=gr.Button("Prev prompt")
|
1044 |
+
button_gallery_next_prompt_w=gr.Button("Next prompt")
|
1045 |
+
button_gallery_next_prompt_w.click(lambda i,p: (i+1)%len(p),[index_gallery_by_prompt_w,list_param_w],[index_gallery_by_prompt_w])
|
1046 |
+
button_gallery_prev_prompt_w.click(lambda i,p: (i-1)%len(p),[index_gallery_by_prompt_w,list_param_w],[index_gallery_by_prompt_w])
|
1047 |
+
index_gallery_by_prompt_w.change(load_gallery_by_prompt,
|
1048 |
+
[id_session,gallery_by_prompt_w,index_gallery_by_prompt_w,list_param_w],[gallery_by_prompt_w])
|
1049 |
+
|
1050 |
+
|
1051 |
+
|
1052 |
+
|
1053 |
|
1054 |
|
1055 |
|