Spaces:
Runtime error
Runtime error
refactor
Browse files- app.py +53 -27
- utils/html_utils.py +16 -0
app.py
CHANGED
|
@@ -138,7 +138,7 @@ vae_model_list = get_model_list(directory_vaes)
|
|
| 138 |
vae_model_list.insert(0, "None")
|
| 139 |
|
| 140 |
|
| 141 |
-
def get_my_lora(link_url):
|
| 142 |
for __url in [_url.strip() for _url in link_url.split(',')]:
|
| 143 |
if not os.path.exists(f"./loras/{__url.split('/')[-1]}"):
|
| 144 |
download_things(
|
|
@@ -148,7 +148,7 @@ def get_my_lora(link_url):
|
|
| 148 |
CIVITAI_API_KEY
|
| 149 |
)
|
| 150 |
|
| 151 |
-
new_lora_model_list = get_model_list(directory_loras)
|
| 152 |
new_lora_model_list.insert(0, "None")
|
| 153 |
|
| 154 |
return gr.update(
|
|
@@ -204,18 +204,6 @@ warnings.filterwarnings(
|
|
| 204 |
logger.setLevel(logging.DEBUG)
|
| 205 |
|
| 206 |
|
| 207 |
-
def info_html(json_data, title, subtitle):
|
| 208 |
-
return f"""
|
| 209 |
-
<div style='padding: 0; border-radius: 10px;'>
|
| 210 |
-
<p style='margin: 0; font-weight: bold;'>{title}</p>
|
| 211 |
-
<details>
|
| 212 |
-
<summary>Details</summary>
|
| 213 |
-
<p style='margin: 0; font-weight: bold;'>{subtitle}</p>
|
| 214 |
-
</details>
|
| 215 |
-
</div>
|
| 216 |
-
"""
|
| 217 |
-
|
| 218 |
-
|
| 219 |
class GuiSD:
|
| 220 |
def __init__(self, stream=True):
|
| 221 |
self.model = None
|
|
@@ -229,8 +217,18 @@ class GuiSD:
|
|
| 229 |
retain_task_model_in_cache=False,
|
| 230 |
)
|
| 231 |
|
| 232 |
-
def load_new_model(
|
| 233 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 234 |
yield f"Loading model: {model_name}"
|
| 235 |
|
| 236 |
vae_model = vae_model if vae_model != "None" else None
|
|
@@ -406,7 +404,11 @@ class GuiSD:
|
|
| 406 |
(image_ip2, mask_ip2, model_ip2, mode_ip2, scale_ip2),
|
| 407 |
]
|
| 408 |
|
| 409 |
-
for imgip,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 410 |
if imgip:
|
| 411 |
params_ip_img.append(imgip)
|
| 412 |
if mskip:
|
|
@@ -748,7 +750,7 @@ with gr.Blocks(css=CSS) as app:
|
|
| 748 |
with gr.Row(equal_height=False):
|
| 749 |
|
| 750 |
def run_set_params_gui(base_prompt):
|
| 751 |
-
valid_receptors = { # default values
|
| 752 |
"prompt": gr.update(value=base_prompt),
|
| 753 |
"neg_prompt": gr.update(value=""),
|
| 754 |
"Steps": gr.update(value=30),
|
|
@@ -848,7 +850,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 848 |
value=vae_model_list[1]
|
| 849 |
)
|
| 850 |
|
| 851 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 852 |
|
| 853 |
upscaler_keys = list(upscaler_dict_gui.keys())
|
| 854 |
|
|
@@ -965,7 +970,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 965 |
label="Lora Scale 5"
|
| 966 |
)
|
| 967 |
|
| 968 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 969 |
text_lora = gr.Textbox(
|
| 970 |
label="URL",
|
| 971 |
placeholder="http://...my_lora_url.safetensors",
|
|
@@ -1096,7 +1104,6 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1096 |
value=choices_task[0]
|
| 1097 |
)
|
| 1098 |
|
| 1099 |
-
|
| 1100 |
task_gui.change(
|
| 1101 |
change_preprocessor_choices,
|
| 1102 |
[task_gui],
|
|
@@ -1158,7 +1165,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1158 |
label="ControlNet Stop Threshold (%)"
|
| 1159 |
)
|
| 1160 |
|
| 1161 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1162 |
t2i_adapter_preprocessor_gui = gr.Checkbox(
|
| 1163 |
value=True,
|
| 1164 |
label="T2i Adapter Preprocessor"
|
|
@@ -1221,13 +1231,19 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1221 |
[style_prompt_gui]
|
| 1222 |
)
|
| 1223 |
|
| 1224 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1225 |
active_textual_inversion_gui = gr.Checkbox(
|
| 1226 |
value=False,
|
| 1227 |
label="Active Textual Inversion in prompt"
|
| 1228 |
)
|
| 1229 |
|
| 1230 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1231 |
|
| 1232 |
# Adetailer Inpaint Only
|
| 1233 |
adetailer_inpaint_only_gui = gr.Checkbox(label="Inpaint only", value=True)
|
|
@@ -1243,7 +1259,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1243 |
value="Use same sampler"
|
| 1244 |
)
|
| 1245 |
|
| 1246 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1247 |
# Adetailer A
|
| 1248 |
adetailer_active_a_gui = gr.Checkbox(
|
| 1249 |
label="Enable Adetailer A",
|
|
@@ -1293,7 +1312,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1293 |
minimum=1
|
| 1294 |
)
|
| 1295 |
|
| 1296 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1297 |
# Adetailer B
|
| 1298 |
adetailer_active_b_gui = gr.Checkbox(label="Enable Adetailer B", value=False)
|
| 1299 |
prompt_ad_b_gui = gr.Textbox(
|
|
@@ -1362,7 +1384,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1362 |
label="Generator in CPU"
|
| 1363 |
)
|
| 1364 |
|
| 1365 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1366 |
loop_generation_gui = gr.Slider(
|
| 1367 |
minimum=1,
|
| 1368 |
value=1,
|
|
@@ -1544,6 +1569,7 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1544 |
label="Invert mask"
|
| 1545 |
)
|
| 1546 |
btn = gr.Button("Create mask")
|
|
|
|
| 1547 |
with gr.Column(scale=1):
|
| 1548 |
img_source = gr.Image(interactive=False)
|
| 1549 |
img_result = gr.Image(
|
|
|
|
| 138 |
vae_model_list.insert(0, "None")
|
| 139 |
|
| 140 |
|
| 141 |
+
def get_my_lora(link_url) -> tuple:
|
| 142 |
for __url in [_url.strip() for _url in link_url.split(',')]:
|
| 143 |
if not os.path.exists(f"./loras/{__url.split('/')[-1]}"):
|
| 144 |
download_things(
|
|
|
|
| 148 |
CIVITAI_API_KEY
|
| 149 |
)
|
| 150 |
|
| 151 |
+
new_lora_model_list: list = get_model_list(directory_loras)
|
| 152 |
new_lora_model_list.insert(0, "None")
|
| 153 |
|
| 154 |
return gr.update(
|
|
|
|
| 204 |
logger.setLevel(logging.DEBUG)
|
| 205 |
|
| 206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
class GuiSD:
|
| 208 |
def __init__(self, stream=True):
|
| 209 |
self.model = None
|
|
|
|
| 217 |
retain_task_model_in_cache=False,
|
| 218 |
)
|
| 219 |
|
| 220 |
+
def load_new_model(
|
| 221 |
+
self,
|
| 222 |
+
model_name,
|
| 223 |
+
vae_model,
|
| 224 |
+
task,
|
| 225 |
+
progress=gr.Progress(track_tqdm=True)):
|
| 226 |
+
"""
|
| 227 |
+
:param model_name:
|
| 228 |
+
:param vae_model:
|
| 229 |
+
:param task:
|
| 230 |
+
:param progress:
|
| 231 |
+
"""
|
| 232 |
yield f"Loading model: {model_name}"
|
| 233 |
|
| 234 |
vae_model = vae_model if vae_model != "None" else None
|
|
|
|
| 404 |
(image_ip2, mask_ip2, model_ip2, mode_ip2, scale_ip2),
|
| 405 |
]
|
| 406 |
|
| 407 |
+
for (imgip,
|
| 408 |
+
mskip,
|
| 409 |
+
modelip,
|
| 410 |
+
modeip,
|
| 411 |
+
scaleip) in all_adapters:
|
| 412 |
if imgip:
|
| 413 |
params_ip_img.append(imgip)
|
| 414 |
if mskip:
|
|
|
|
| 750 |
with gr.Row(equal_height=False):
|
| 751 |
|
| 752 |
def run_set_params_gui(base_prompt):
|
| 753 |
+
valid_receptors: dict = { # default values
|
| 754 |
"prompt": gr.update(value=base_prompt),
|
| 755 |
"neg_prompt": gr.update(value=""),
|
| 756 |
"Steps": gr.update(value=30),
|
|
|
|
| 850 |
value=vae_model_list[1]
|
| 851 |
)
|
| 852 |
|
| 853 |
+
with gr.Accordion(
|
| 854 |
+
"Hires fix",
|
| 855 |
+
open=False,
|
| 856 |
+
visible=True):
|
| 857 |
|
| 858 |
upscaler_keys = list(upscaler_dict_gui.keys())
|
| 859 |
|
|
|
|
| 970 |
label="Lora Scale 5"
|
| 971 |
)
|
| 972 |
|
| 973 |
+
with gr.Accordion(
|
| 974 |
+
"From URL",
|
| 975 |
+
open=False,
|
| 976 |
+
visible=True):
|
| 977 |
text_lora = gr.Textbox(
|
| 978 |
label="URL",
|
| 979 |
placeholder="http://...my_lora_url.safetensors",
|
|
|
|
| 1104 |
value=choices_task[0]
|
| 1105 |
)
|
| 1106 |
|
|
|
|
| 1107 |
task_gui.change(
|
| 1108 |
change_preprocessor_choices,
|
| 1109 |
[task_gui],
|
|
|
|
| 1165 |
label="ControlNet Stop Threshold (%)"
|
| 1166 |
)
|
| 1167 |
|
| 1168 |
+
with gr.Accordion(
|
| 1169 |
+
"T2I adapter",
|
| 1170 |
+
open=False,
|
| 1171 |
+
visible=True):
|
| 1172 |
t2i_adapter_preprocessor_gui = gr.Checkbox(
|
| 1173 |
value=True,
|
| 1174 |
label="T2i Adapter Preprocessor"
|
|
|
|
| 1231 |
[style_prompt_gui]
|
| 1232 |
)
|
| 1233 |
|
| 1234 |
+
with gr.Accordion(
|
| 1235 |
+
"Textual inversion",
|
| 1236 |
+
open=False,
|
| 1237 |
+
visible=False):
|
| 1238 |
active_textual_inversion_gui = gr.Checkbox(
|
| 1239 |
value=False,
|
| 1240 |
label="Active Textual Inversion in prompt"
|
| 1241 |
)
|
| 1242 |
|
| 1243 |
+
with gr.Accordion(
|
| 1244 |
+
"Detailfix",
|
| 1245 |
+
open=False,
|
| 1246 |
+
visible=True):
|
| 1247 |
|
| 1248 |
# Adetailer Inpaint Only
|
| 1249 |
adetailer_inpaint_only_gui = gr.Checkbox(label="Inpaint only", value=True)
|
|
|
|
| 1259 |
value="Use same sampler"
|
| 1260 |
)
|
| 1261 |
|
| 1262 |
+
with gr.Accordion(
|
| 1263 |
+
"Detailfix A",
|
| 1264 |
+
open=False,
|
| 1265 |
+
visible=True):
|
| 1266 |
# Adetailer A
|
| 1267 |
adetailer_active_a_gui = gr.Checkbox(
|
| 1268 |
label="Enable Adetailer A",
|
|
|
|
| 1312 |
minimum=1
|
| 1313 |
)
|
| 1314 |
|
| 1315 |
+
with gr.Accordion(
|
| 1316 |
+
"Detailfix B",
|
| 1317 |
+
open=False,
|
| 1318 |
+
visible=True):
|
| 1319 |
# Adetailer B
|
| 1320 |
adetailer_active_b_gui = gr.Checkbox(label="Enable Adetailer B", value=False)
|
| 1321 |
prompt_ad_b_gui = gr.Textbox(
|
|
|
|
| 1384 |
label="Generator in CPU"
|
| 1385 |
)
|
| 1386 |
|
| 1387 |
+
with gr.Accordion(
|
| 1388 |
+
"More settings",
|
| 1389 |
+
open=False,
|
| 1390 |
+
visible=False):
|
| 1391 |
loop_generation_gui = gr.Slider(
|
| 1392 |
minimum=1,
|
| 1393 |
value=1,
|
|
|
|
| 1569 |
label="Invert mask"
|
| 1570 |
)
|
| 1571 |
btn = gr.Button("Create mask")
|
| 1572 |
+
|
| 1573 |
with gr.Column(scale=1):
|
| 1574 |
img_source = gr.Image(interactive=False)
|
| 1575 |
img_result = gr.Image(
|
utils/html_utils.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def info_html(json_data, title, subtitle):
|
| 2 |
+
"""
|
| 3 |
+
:param json_data:
|
| 4 |
+
:param title:
|
| 5 |
+
:param subtitle:
|
| 6 |
+
:return:
|
| 7 |
+
"""
|
| 8 |
+
return f"""
|
| 9 |
+
<div style='padding: 0; border-radius: 10px;'>
|
| 10 |
+
<p style='margin: 0; font-weight: bold;'>{title}</p>
|
| 11 |
+
<details>
|
| 12 |
+
<summary>Details</summary>
|
| 13 |
+
<p style='margin: 0; font-weight: bold;'>{subtitle}</p>
|
| 14 |
+
</details>
|
| 15 |
+
</div>
|
| 16 |
+
"""
|