Spaces:
Running
on
Zero
Running
on
Zero
refactor
Browse files
app.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
| 1 |
-
import spaces
|
| 2 |
import os
|
| 3 |
from stablepy import Model_Diffusers
|
|
|
|
| 4 |
from stablepy.diffusers_vanilla.style_prompt_config import STYLE_NAMES
|
| 5 |
import torch
|
| 6 |
import re
|
|
|
|
| 7 |
import random
|
| 8 |
from stablepy import (
|
| 9 |
CONTROLNET_MODEL_IDS,
|
|
@@ -20,6 +22,7 @@ from stablepy import (
|
|
| 20 |
SD15_TASKS,
|
| 21 |
SDXL_TASKS,
|
| 22 |
)
|
|
|
|
| 23 |
from config import (
|
| 24 |
MINIMUM_IMAGE_NUMBER,
|
| 25 |
MAXIMUM_IMAGE_NUMBER,
|
|
@@ -65,7 +68,6 @@ task_stablepy: dict = {
|
|
| 65 |
CIVITAI_API_KEY: str = os.environ.get("CIVITAI_API_KEY")
|
| 66 |
hf_token: str = os.environ.get("HF_TOKEN")
|
| 67 |
|
| 68 |
-
|
| 69 |
task_model_list = list(task_stablepy.keys())
|
| 70 |
|
| 71 |
directory_models: str = 'models'
|
|
@@ -251,7 +253,7 @@ class GuiSD:
|
|
| 251 |
)
|
| 252 |
yield f"Model loaded: {model_name}"
|
| 253 |
|
| 254 |
-
@spaces.GPU
|
| 255 |
def generate_pipeline(
|
| 256 |
self,
|
| 257 |
prompt,
|
|
@@ -354,12 +356,10 @@ class GuiSD:
|
|
| 354 |
mask_ip2,
|
| 355 |
model_ip2,
|
| 356 |
mode_ip2,
|
| 357 |
-
scale_ip2
|
| 358 |
-
):
|
| 359 |
-
|
| 360 |
vae_model = vae_model if vae_model != "None" else None
|
| 361 |
-
loras_list = [lora1, lora2, lora3, lora4, lora5]
|
| 362 |
-
vae_msg = f"VAE: {vae_model}" if vae_model else ""
|
| 363 |
msg_lora: list = []
|
| 364 |
|
| 365 |
if model_name in model_list:
|
|
@@ -637,7 +637,6 @@ with gr.Blocks(css=CSS) as app:
|
|
| 637 |
gr.Markdown("# 🧩 (Ivan) DiffuseCraft")
|
| 638 |
with gr.Tab("Generation"):
|
| 639 |
with gr.Row():
|
| 640 |
-
|
| 641 |
with gr.Column(scale=2):
|
| 642 |
|
| 643 |
task_gui = gr.Dropdown(
|
|
@@ -667,6 +666,7 @@ with gr.Blocks(css=CSS) as app:
|
|
| 667 |
set_params_gui = gr.Button(value="↙️")
|
| 668 |
clear_prompt_gui = gr.Button(value="🗑️")
|
| 669 |
set_random_seed = gr.Button(value="🎲")
|
|
|
|
| 670 |
generate_button = gr.Button(
|
| 671 |
value="GENERATE",
|
| 672 |
variant="primary"
|
|
@@ -857,7 +857,6 @@ with gr.Blocks(css=CSS) as app:
|
|
| 857 |
choices=upscaler_keys,
|
| 858 |
value=upscaler_keys[0]
|
| 859 |
)
|
| 860 |
-
|
| 861 |
upscaler_increases_size_gui = gr.Slider(
|
| 862 |
minimum=1.1,
|
| 863 |
maximum=6.,
|
|
@@ -986,7 +985,13 @@ with gr.Blocks(css=CSS) as app:
|
|
| 986 |
)
|
| 987 |
|
| 988 |
with gr.Accordion("IP-Adapter", open=False, visible=True): # IP-Adapter
|
| 989 |
-
IP_MODELS = sorted(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 990 |
MODE_IP_OPTIONS = [
|
| 991 |
"original",
|
| 992 |
"style",
|
|
@@ -1048,7 +1053,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1048 |
label="Scale"
|
| 1049 |
)
|
| 1050 |
|
| 1051 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1052 |
image_control = gr.Image(
|
| 1053 |
label="Image ControlNet/Inpaint/Img2img",
|
| 1054 |
type="filepath"
|
|
@@ -1170,7 +1178,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1170 |
label="Adapter Conditioning Factor (%)"
|
| 1171 |
)
|
| 1172 |
|
| 1173 |
-
with gr.Accordion(
|
|
|
|
|
|
|
|
|
|
| 1174 |
|
| 1175 |
try:
|
| 1176 |
style_names_found = sd_gen.model.STYLE_NAMES
|
|
@@ -1191,11 +1202,17 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1191 |
def load_json_style_file(json):
|
| 1192 |
if not sd_gen.model:
|
| 1193 |
gr.Info("First load the model")
|
| 1194 |
-
return gr.update(
|
|
|
|
|
|
|
|
|
|
| 1195 |
|
| 1196 |
sd_gen.model.load_style_file(json)
|
| 1197 |
gr.Info(f"{len(sd_gen.model.STYLE_NAMES)} styles loaded")
|
| 1198 |
-
return gr.update(
|
|
|
|
|
|
|
|
|
|
| 1199 |
|
| 1200 |
|
| 1201 |
style_button.click(
|
|
@@ -1296,12 +1313,33 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1296 |
minimum=0.01,
|
| 1297 |
maximum=1.0
|
| 1298 |
)
|
| 1299 |
-
face_detector_ad_b_gui = gr.Checkbox(
|
| 1300 |
-
|
| 1301 |
-
|
| 1302 |
-
|
| 1303 |
-
|
| 1304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1305 |
|
| 1306 |
with gr.Accordion(
|
| 1307 |
"Other settings",
|
|
@@ -1501,7 +1539,10 @@ with gr.Blocks(css=CSS) as app:
|
|
| 1501 |
),
|
| 1502 |
eraser=gr.Eraser(default_size="16")
|
| 1503 |
)
|
| 1504 |
-
invert_mask = gr.Checkbox(
|
|
|
|
|
|
|
|
|
|
| 1505 |
btn = gr.Button("Create mask")
|
| 1506 |
with gr.Column(scale=1):
|
| 1507 |
img_source = gr.Image(interactive=False)
|
|
|
|
| 1 |
+
import spaces
|
| 2 |
import os
|
| 3 |
from stablepy import Model_Diffusers
|
| 4 |
+
from stablepy.diffusers_vanilla.model import scheduler_names
|
| 5 |
from stablepy.diffusers_vanilla.style_prompt_config import STYLE_NAMES
|
| 6 |
import torch
|
| 7 |
import re
|
| 8 |
+
import shutil
|
| 9 |
import random
|
| 10 |
from stablepy import (
|
| 11 |
CONTROLNET_MODEL_IDS,
|
|
|
|
| 22 |
SD15_TASKS,
|
| 23 |
SDXL_TASKS,
|
| 24 |
)
|
| 25 |
+
import urllib.parse
|
| 26 |
from config import (
|
| 27 |
MINIMUM_IMAGE_NUMBER,
|
| 28 |
MAXIMUM_IMAGE_NUMBER,
|
|
|
|
| 68 |
CIVITAI_API_KEY: str = os.environ.get("CIVITAI_API_KEY")
|
| 69 |
hf_token: str = os.environ.get("HF_TOKEN")
|
| 70 |
|
|
|
|
| 71 |
task_model_list = list(task_stablepy.keys())
|
| 72 |
|
| 73 |
directory_models: str = 'models'
|
|
|
|
| 253 |
)
|
| 254 |
yield f"Model loaded: {model_name}"
|
| 255 |
|
| 256 |
+
@spaces.GPU
|
| 257 |
def generate_pipeline(
|
| 258 |
self,
|
| 259 |
prompt,
|
|
|
|
| 356 |
mask_ip2,
|
| 357 |
model_ip2,
|
| 358 |
mode_ip2,
|
| 359 |
+
scale_ip2):
|
|
|
|
|
|
|
| 360 |
vae_model = vae_model if vae_model != "None" else None
|
| 361 |
+
loras_list: list = [lora1, lora2, lora3, lora4, lora5]
|
| 362 |
+
vae_msg: str = f"VAE: {vae_model}" if vae_model else ""
|
| 363 |
msg_lora: list = []
|
| 364 |
|
| 365 |
if model_name in model_list:
|
|
|
|
| 637 |
gr.Markdown("# 🧩 (Ivan) DiffuseCraft")
|
| 638 |
with gr.Tab("Generation"):
|
| 639 |
with gr.Row():
|
|
|
|
| 640 |
with gr.Column(scale=2):
|
| 641 |
|
| 642 |
task_gui = gr.Dropdown(
|
|
|
|
| 666 |
set_params_gui = gr.Button(value="↙️")
|
| 667 |
clear_prompt_gui = gr.Button(value="🗑️")
|
| 668 |
set_random_seed = gr.Button(value="🎲")
|
| 669 |
+
|
| 670 |
generate_button = gr.Button(
|
| 671 |
value="GENERATE",
|
| 672 |
variant="primary"
|
|
|
|
| 857 |
choices=upscaler_keys,
|
| 858 |
value=upscaler_keys[0]
|
| 859 |
)
|
|
|
|
| 860 |
upscaler_increases_size_gui = gr.Slider(
|
| 861 |
minimum=1.1,
|
| 862 |
maximum=6.,
|
|
|
|
| 985 |
)
|
| 986 |
|
| 987 |
with gr.Accordion("IP-Adapter", open=False, visible=True): # IP-Adapter
|
| 988 |
+
IP_MODELS = sorted(
|
| 989 |
+
list(
|
| 990 |
+
set(
|
| 991 |
+
IP_ADAPTERS_SD + IP_ADAPTERS_SDXL
|
| 992 |
+
)
|
| 993 |
+
)
|
| 994 |
+
)
|
| 995 |
MODE_IP_OPTIONS = [
|
| 996 |
"original",
|
| 997 |
"style",
|
|
|
|
| 1053 |
label="Scale"
|
| 1054 |
)
|
| 1055 |
|
| 1056 |
+
with gr.Accordion(
|
| 1057 |
+
"ControlNet / Img2img / Inpaint",
|
| 1058 |
+
open=False,
|
| 1059 |
+
visible=True):
|
| 1060 |
image_control = gr.Image(
|
| 1061 |
label="Image ControlNet/Inpaint/Img2img",
|
| 1062 |
type="filepath"
|
|
|
|
| 1178 |
label="Adapter Conditioning Factor (%)"
|
| 1179 |
)
|
| 1180 |
|
| 1181 |
+
with gr.Accordion(
|
| 1182 |
+
"Styles",
|
| 1183 |
+
open=False,
|
| 1184 |
+
visible=True):
|
| 1185 |
|
| 1186 |
try:
|
| 1187 |
style_names_found = sd_gen.model.STYLE_NAMES
|
|
|
|
| 1202 |
def load_json_style_file(json):
|
| 1203 |
if not sd_gen.model:
|
| 1204 |
gr.Info("First load the model")
|
| 1205 |
+
return gr.update(
|
| 1206 |
+
value=None,
|
| 1207 |
+
choices=STYLE_NAMES
|
| 1208 |
+
)
|
| 1209 |
|
| 1210 |
sd_gen.model.load_style_file(json)
|
| 1211 |
gr.Info(f"{len(sd_gen.model.STYLE_NAMES)} styles loaded")
|
| 1212 |
+
return gr.update(
|
| 1213 |
+
value=None,
|
| 1214 |
+
choices=sd_gen.model.STYLE_NAMES
|
| 1215 |
+
)
|
| 1216 |
|
| 1217 |
|
| 1218 |
style_button.click(
|
|
|
|
| 1313 |
minimum=0.01,
|
| 1314 |
maximum=1.0
|
| 1315 |
)
|
| 1316 |
+
face_detector_ad_b_gui = gr.Checkbox(
|
| 1317 |
+
label="Face detector",
|
| 1318 |
+
value=True
|
| 1319 |
+
)
|
| 1320 |
+
person_detector_ad_b_gui = gr.Checkbox(
|
| 1321 |
+
label="Person detector",
|
| 1322 |
+
value=True
|
| 1323 |
+
)
|
| 1324 |
+
hand_detector_ad_b_gui = gr.Checkbox(
|
| 1325 |
+
label="Hand detector",
|
| 1326 |
+
value=False
|
| 1327 |
+
)
|
| 1328 |
+
mask_dilation_b_gui = gr.Number(
|
| 1329 |
+
label="Mask dilation:",
|
| 1330 |
+
value=4,
|
| 1331 |
+
minimum=1
|
| 1332 |
+
)
|
| 1333 |
+
mask_blur_b_gui = gr.Number(
|
| 1334 |
+
label="Mask blur:",
|
| 1335 |
+
value=4,
|
| 1336 |
+
minimum=1
|
| 1337 |
+
)
|
| 1338 |
+
mask_padding_b_gui = gr.Number(
|
| 1339 |
+
label="Mask padding:",
|
| 1340 |
+
value=32,
|
| 1341 |
+
minimum=1
|
| 1342 |
+
)
|
| 1343 |
|
| 1344 |
with gr.Accordion(
|
| 1345 |
"Other settings",
|
|
|
|
| 1539 |
),
|
| 1540 |
eraser=gr.Eraser(default_size="16")
|
| 1541 |
)
|
| 1542 |
+
invert_mask = gr.Checkbox(
|
| 1543 |
+
value=False,
|
| 1544 |
+
label="Invert mask"
|
| 1545 |
+
)
|
| 1546 |
btn = gr.Button("Create mask")
|
| 1547 |
with gr.Column(scale=1):
|
| 1548 |
img_source = gr.Image(interactive=False)
|