Spaces:
Running
on
Zero
Running
on
Zero
Upload 2 files
Browse files
app.py
CHANGED
|
@@ -67,14 +67,28 @@ preprocessor_controlnet = {
|
|
| 67 |
"None",
|
| 68 |
],
|
| 69 |
"canny": [
|
| 70 |
-
"Canny"
|
|
|
|
| 71 |
],
|
| 72 |
"mlsd": [
|
| 73 |
-
"MLSD"
|
|
|
|
| 74 |
],
|
| 75 |
"ip2p": [
|
| 76 |
"ip2p"
|
| 77 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
}
|
| 79 |
|
| 80 |
task_stablepy = {
|
|
@@ -95,11 +109,12 @@ task_stablepy = {
|
|
| 95 |
'depth ControlNet': 'depth',
|
| 96 |
'normalbae ControlNet': 'normalbae',
|
| 97 |
'lineart ControlNet': 'lineart',
|
| 98 |
-
|
| 99 |
'shuffle ControlNet': 'shuffle',
|
| 100 |
'ip2p ControlNet': 'ip2p',
|
| 101 |
'optical pattern ControlNet': 'pattern',
|
| 102 |
-
'
|
|
|
|
| 103 |
}
|
| 104 |
|
| 105 |
task_model_list = list(task_stablepy.keys())
|
|
@@ -122,7 +137,7 @@ def download_things(directory, url, hf_token="", civitai_api_key=""):
|
|
| 122 |
if hf_token:
|
| 123 |
os.system(f"aria2c --console-log-level=error --summary-interval=10 --header={user_header} -c -x 16 -k 1M -s 16 {url} -d {directory} -o {url.split('/')[-1]}")
|
| 124 |
else:
|
| 125 |
-
os.system
|
| 126 |
elif "civitai.com" in url:
|
| 127 |
if "?" in url:
|
| 128 |
url = url.split("?")[0]
|
|
@@ -137,7 +152,7 @@ def download_things(directory, url, hf_token="", civitai_api_key=""):
|
|
| 137 |
|
| 138 |
def get_model_list(directory_path):
|
| 139 |
model_list = []
|
| 140 |
-
valid_extensions = {'.ckpt'
|
| 141 |
|
| 142 |
for filename in os.listdir(directory_path):
|
| 143 |
if os.path.splitext(filename)[1] in valid_extensions:
|
|
@@ -149,18 +164,6 @@ def get_model_list(directory_path):
|
|
| 149 |
return model_list
|
| 150 |
|
| 151 |
|
| 152 |
-
def process_string(input_string):
|
| 153 |
-
parts = input_string.split('/')
|
| 154 |
-
|
| 155 |
-
if len(parts) == 2:
|
| 156 |
-
first_element = parts[1]
|
| 157 |
-
complete_string = input_string
|
| 158 |
-
result = (first_element, complete_string)
|
| 159 |
-
return result
|
| 160 |
-
else:
|
| 161 |
-
return None
|
| 162 |
-
|
| 163 |
-
|
| 164 |
## BEGIN MOD
|
| 165 |
from modutils import (list_uniq, download_private_repo, get_model_id_list, get_tupled_embed_list,
|
| 166 |
get_lora_model_list, get_all_lora_tupled_list, update_loras, apply_lora_prompt, set_prompt_loras,
|
|
@@ -224,9 +227,15 @@ def get_embed_list(pipeline_name):
|
|
| 224 |
print('\033[33m🏁 Download and listing of valid models completed.\033[0m')
|
| 225 |
|
| 226 |
upscaler_dict_gui = {
|
| 227 |
-
None
|
| 228 |
-
"Lanczos"
|
| 229 |
-
"Nearest"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
"RealESRGAN_x4plus" : "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth",
|
| 231 |
"RealESRNet_x4plus" : "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/RealESRNet_x4plus.pth",
|
| 232 |
"RealESRGAN_x4plus_anime_6B": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth",
|
|
@@ -243,6 +252,7 @@ upscaler_dict_gui = {
|
|
| 243 |
"NickelbackFS4x" : "https://huggingface.co/hollowstrawberry/upscalers-backup/resolve/main/ESRGAN/NickelbackFS%204x.pth"
|
| 244 |
}
|
| 245 |
|
|
|
|
| 246 |
|
| 247 |
def extract_parameters(input_string):
|
| 248 |
parameters = {}
|
|
@@ -487,6 +497,7 @@ class GuiSD:
|
|
| 487 |
model_ip2,
|
| 488 |
mode_ip2,
|
| 489 |
scale_ip2,
|
|
|
|
| 490 |
#progress=gr.Progress(track_tqdm=True),
|
| 491 |
):
|
| 492 |
#progress(0, desc="Preparing inference...")
|
|
@@ -574,7 +585,7 @@ class GuiSD:
|
|
| 574 |
if task == "inpaint" and not image_mask:
|
| 575 |
raise ValueError("No mask image found: Specify one in 'Image Mask'")
|
| 576 |
|
| 577 |
-
if upscaler_model_path in [
|
| 578 |
upscaler_model = upscaler_model_path
|
| 579 |
else:
|
| 580 |
directory_upscalers = 'upscalers'
|
|
@@ -640,6 +651,7 @@ class GuiSD:
|
|
| 640 |
"num_steps": steps,
|
| 641 |
"guidance_scale": cfg,
|
| 642 |
"clip_skip": clip_skip,
|
|
|
|
| 643 |
"seed": seed,
|
| 644 |
"image": image_control,
|
| 645 |
"preprocessor_name": preprocessor_name,
|
|
@@ -874,6 +886,7 @@ with gr.Blocks(theme='NoCrypt/miku@>=1.2.2', elem_id="main", fill_width=True, cs
|
|
| 874 |
cfg_gui = gr.Slider(minimum=0, maximum=30, step=0.5, value=7.0, label="CFG")
|
| 875 |
with gr.Row():
|
| 876 |
seed_gui = gr.Number(minimum=-1, maximum=9999999999, value=-1, label="Seed")
|
|
|
|
| 877 |
num_images_gui = gr.Slider(minimum=1, maximum=4, step=1, value=1, label="Images")
|
| 878 |
clip_skip_gui = gr.Checkbox(value=False, label="Layer 2 Clip Skip")
|
| 879 |
free_u_gui = gr.Checkbox(value=False, label="FreeU")
|
|
@@ -1015,7 +1028,6 @@ with gr.Blocks(theme='NoCrypt/miku@>=1.2.2', elem_id="main", fill_width=True, cs
|
|
| 1015 |
|
| 1016 |
with gr.Column() as menu_advanced:
|
| 1017 |
with gr.Accordion("Hires fix", open=False, visible=True) as menu_hires:
|
| 1018 |
-
upscaler_keys = list(upscaler_dict_gui.keys())
|
| 1019 |
upscaler_model_path_gui = gr.Dropdown(label="Upscaler", choices=upscaler_keys, value=upscaler_dict_gui[upscaler_keys[0]])
|
| 1020 |
with gr.Row():
|
| 1021 |
upscaler_increases_size_gui = gr.Slider(minimum=1.1, maximum=6., step=0.1, value=1.0, label="Upscale by")
|
|
@@ -1557,6 +1569,7 @@ with gr.Blocks(theme='NoCrypt/miku@>=1.2.2', elem_id="main", fill_width=True, cs
|
|
| 1557 |
model_ip2,
|
| 1558 |
mode_ip2,
|
| 1559 |
scale_ip2,
|
|
|
|
| 1560 |
],
|
| 1561 |
outputs=[result_images, actual_task_info],
|
| 1562 |
queue=True,
|
|
|
|
| 67 |
"None",
|
| 68 |
],
|
| 69 |
"canny": [
|
| 70 |
+
"Canny",
|
| 71 |
+
"None",
|
| 72 |
],
|
| 73 |
"mlsd": [
|
| 74 |
+
"MLSD",
|
| 75 |
+
"None",
|
| 76 |
],
|
| 77 |
"ip2p": [
|
| 78 |
"ip2p"
|
| 79 |
],
|
| 80 |
+
"recolor": [
|
| 81 |
+
"Recolor luminance",
|
| 82 |
+
"Recolor intensity",
|
| 83 |
+
"None",
|
| 84 |
+
],
|
| 85 |
+
"tile": [
|
| 86 |
+
"Mild Blur",
|
| 87 |
+
"Moderate Blur",
|
| 88 |
+
"Heavy Blur",
|
| 89 |
+
"None",
|
| 90 |
+
],
|
| 91 |
+
|
| 92 |
}
|
| 93 |
|
| 94 |
task_stablepy = {
|
|
|
|
| 109 |
'depth ControlNet': 'depth',
|
| 110 |
'normalbae ControlNet': 'normalbae',
|
| 111 |
'lineart ControlNet': 'lineart',
|
| 112 |
+
'lineart_anime ControlNet': 'lineart_anime',
|
| 113 |
'shuffle ControlNet': 'shuffle',
|
| 114 |
'ip2p ControlNet': 'ip2p',
|
| 115 |
'optical pattern ControlNet': 'pattern',
|
| 116 |
+
'recolor ControlNet': 'recolor',
|
| 117 |
+
'tile ControlNet': 'tile',
|
| 118 |
}
|
| 119 |
|
| 120 |
task_model_list = list(task_stablepy.keys())
|
|
|
|
| 137 |
if hf_token:
|
| 138 |
os.system(f"aria2c --console-log-level=error --summary-interval=10 --header={user_header} -c -x 16 -k 1M -s 16 {url} -d {directory} -o {url.split('/')[-1]}")
|
| 139 |
else:
|
| 140 |
+
os.system(f"aria2c --optimize-concurrent-downloads --console-log-level=error --summary-interval=10 -c -x 16 -k 1M -s 16 {url} -d {directory} -o {url.split('/')[-1]}")
|
| 141 |
elif "civitai.com" in url:
|
| 142 |
if "?" in url:
|
| 143 |
url = url.split("?")[0]
|
|
|
|
| 152 |
|
| 153 |
def get_model_list(directory_path):
|
| 154 |
model_list = []
|
| 155 |
+
valid_extensions = {'.ckpt', '.pt', '.pth', '.safetensors', '.bin'}
|
| 156 |
|
| 157 |
for filename in os.listdir(directory_path):
|
| 158 |
if os.path.splitext(filename)[1] in valid_extensions:
|
|
|
|
| 164 |
return model_list
|
| 165 |
|
| 166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
## BEGIN MOD
|
| 168 |
from modutils import (list_uniq, download_private_repo, get_model_id_list, get_tupled_embed_list,
|
| 169 |
get_lora_model_list, get_all_lora_tupled_list, update_loras, apply_lora_prompt, set_prompt_loras,
|
|
|
|
| 227 |
print('\033[33m🏁 Download and listing of valid models completed.\033[0m')
|
| 228 |
|
| 229 |
upscaler_dict_gui = {
|
| 230 |
+
None: None,
|
| 231 |
+
"Lanczos": "Lanczos",
|
| 232 |
+
"Nearest": "Nearest",
|
| 233 |
+
'Latent': 'Latent',
|
| 234 |
+
'Latent (antialiased)': 'Latent (antialiased)',
|
| 235 |
+
'Latent (bicubic)': 'Latent (bicubic)',
|
| 236 |
+
'Latent (bicubic antialiased)': 'Latent (bicubic antialiased)',
|
| 237 |
+
'Latent (nearest)': 'Latent (nearest)',
|
| 238 |
+
'Latent (nearest-exact)': 'Latent (nearest-exact)',
|
| 239 |
"RealESRGAN_x4plus" : "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth",
|
| 240 |
"RealESRNet_x4plus" : "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/RealESRNet_x4plus.pth",
|
| 241 |
"RealESRGAN_x4plus_anime_6B": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth",
|
|
|
|
| 252 |
"NickelbackFS4x" : "https://huggingface.co/hollowstrawberry/upscalers-backup/resolve/main/ESRGAN/NickelbackFS%204x.pth"
|
| 253 |
}
|
| 254 |
|
| 255 |
+
upscaler_keys = list(upscaler_dict_gui.keys())
|
| 256 |
|
| 257 |
def extract_parameters(input_string):
|
| 258 |
parameters = {}
|
|
|
|
| 497 |
model_ip2,
|
| 498 |
mode_ip2,
|
| 499 |
scale_ip2,
|
| 500 |
+
pag_scale,
|
| 501 |
#progress=gr.Progress(track_tqdm=True),
|
| 502 |
):
|
| 503 |
#progress(0, desc="Preparing inference...")
|
|
|
|
| 585 |
if task == "inpaint" and not image_mask:
|
| 586 |
raise ValueError("No mask image found: Specify one in 'Image Mask'")
|
| 587 |
|
| 588 |
+
if upscaler_model_path in upscaler_keys[:9]:
|
| 589 |
upscaler_model = upscaler_model_path
|
| 590 |
else:
|
| 591 |
directory_upscalers = 'upscalers'
|
|
|
|
| 651 |
"num_steps": steps,
|
| 652 |
"guidance_scale": cfg,
|
| 653 |
"clip_skip": clip_skip,
|
| 654 |
+
"pag_scale": float(pag_scale),
|
| 655 |
"seed": seed,
|
| 656 |
"image": image_control,
|
| 657 |
"preprocessor_name": preprocessor_name,
|
|
|
|
| 886 |
cfg_gui = gr.Slider(minimum=0, maximum=30, step=0.5, value=7.0, label="CFG")
|
| 887 |
with gr.Row():
|
| 888 |
seed_gui = gr.Number(minimum=-1, maximum=9999999999, value=-1, label="Seed")
|
| 889 |
+
pag_scale_gui = gr.Slider(minimum=0.0, maximum=10.0, step=0.1, value=0.0, label="PAG Scale")
|
| 890 |
num_images_gui = gr.Slider(minimum=1, maximum=4, step=1, value=1, label="Images")
|
| 891 |
clip_skip_gui = gr.Checkbox(value=False, label="Layer 2 Clip Skip")
|
| 892 |
free_u_gui = gr.Checkbox(value=False, label="FreeU")
|
|
|
|
| 1028 |
|
| 1029 |
with gr.Column() as menu_advanced:
|
| 1030 |
with gr.Accordion("Hires fix", open=False, visible=True) as menu_hires:
|
|
|
|
| 1031 |
upscaler_model_path_gui = gr.Dropdown(label="Upscaler", choices=upscaler_keys, value=upscaler_dict_gui[upscaler_keys[0]])
|
| 1032 |
with gr.Row():
|
| 1033 |
upscaler_increases_size_gui = gr.Slider(minimum=1.1, maximum=6., step=0.1, value=1.0, label="Upscale by")
|
|
|
|
| 1569 |
model_ip2,
|
| 1570 |
mode_ip2,
|
| 1571 |
scale_ip2,
|
| 1572 |
+
pag_scale_gui,
|
| 1573 |
],
|
| 1574 |
outputs=[result_images, actual_task_info],
|
| 1575 |
queue=True,
|
env.py
CHANGED
|
@@ -8,20 +8,31 @@ hf_read_token = os.environ.get('HF_READ_TOKEN') # only use for private repo
|
|
| 8 |
load_diffusers_format_model = [
|
| 9 |
'stabilityai/stable-diffusion-xl-base-1.0',
|
| 10 |
'cagliostrolab/animagine-xl-3.1',
|
|
|
|
| 11 |
'misri/epicrealismXL_v7FinalDestination',
|
| 12 |
'misri/juggernautXL_juggernautX',
|
| 13 |
'misri/zavychromaxl_v80',
|
| 14 |
'SG161222/RealVisXL_V4.0',
|
|
|
|
| 15 |
'misri/newrealityxlAllInOne_Newreality40',
|
| 16 |
'eienmojiki/Anything-XL',
|
| 17 |
'eienmojiki/Starry-XL-v5.2',
|
| 18 |
'gsdf/CounterfeitXL',
|
| 19 |
'kitty7779/ponyDiffusionV6XL',
|
|
|
|
|
|
|
|
|
|
| 20 |
'John6666/ebara-mfcg-pony-mix-v12-sdxl',
|
| 21 |
'John6666/t-ponynai3-v51-sdxl',
|
| 22 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
'yodayo-ai/kivotos-xl-2.0',
|
| 24 |
'yodayo-ai/holodayo-xl-2.1',
|
|
|
|
|
|
|
| 25 |
'digiplay/majicMIX_sombre_v2',
|
| 26 |
'digiplay/majicMIX_realistic_v6',
|
| 27 |
'digiplay/majicMIX_realistic_v7',
|
|
@@ -30,18 +41,25 @@ load_diffusers_format_model = [
|
|
| 30 |
'digiplay/DarkSushi2.5D_v1',
|
| 31 |
'digiplay/darkphoenix3D_v1.1',
|
| 32 |
'digiplay/BeenYouLiteL11_diffusers',
|
| 33 |
-
'
|
| 34 |
'youknownothing/cyberrealistic_v50',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
'votepurchase/counterfeitV30_v30',
|
|
|
|
| 36 |
'Meina/MeinaMix_V11',
|
| 37 |
'Meina/MeinaUnreal_V5',
|
| 38 |
'Meina/MeinaPastel_V7',
|
| 39 |
-
'
|
| 40 |
-
'
|
|
|
|
| 41 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
|
| 42 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
|
| 43 |
'KBlueLeaf/Kohaku-XL-Zeta',
|
| 44 |
-
'kayfahaarukku/UrangDiffusion-1.
|
| 45 |
'Eugeoter/artiwaifu-diffusion-2.0',
|
| 46 |
'Raelina/Rae-Diffusion-XL-V2',
|
| 47 |
'Raelina/Raemu-XL-V4',
|
|
|
|
| 8 |
load_diffusers_format_model = [
|
| 9 |
'stabilityai/stable-diffusion-xl-base-1.0',
|
| 10 |
'cagliostrolab/animagine-xl-3.1',
|
| 11 |
+
'John6666/epicrealism-xl-v8kiss-sdxl',
|
| 12 |
'misri/epicrealismXL_v7FinalDestination',
|
| 13 |
'misri/juggernautXL_juggernautX',
|
| 14 |
'misri/zavychromaxl_v80',
|
| 15 |
'SG161222/RealVisXL_V4.0',
|
| 16 |
+
'SG161222/RealVisXL_V5.0',
|
| 17 |
'misri/newrealityxlAllInOne_Newreality40',
|
| 18 |
'eienmojiki/Anything-XL',
|
| 19 |
'eienmojiki/Starry-XL-v5.2',
|
| 20 |
'gsdf/CounterfeitXL',
|
| 21 |
'kitty7779/ponyDiffusionV6XL',
|
| 22 |
+
'WhiteAiZ/autismmixSDXL_autismmixConfetti_diffusers',
|
| 23 |
+
'GraydientPlatformAPI/aniverse-pony',
|
| 24 |
+
'John6666/mistoon-anime-ponyalpha-sdxl',
|
| 25 |
'John6666/ebara-mfcg-pony-mix-v12-sdxl',
|
| 26 |
'John6666/t-ponynai3-v51-sdxl',
|
| 27 |
+
'John6666/mala-anime-mix-nsfw-pony-xl-v5-sdxl',
|
| 28 |
+
'John6666/wai-real-mix-v11-sdxl',
|
| 29 |
+
'John6666/cyberrealistic-pony-v63-sdxl',
|
| 30 |
+
'GraydientPlatformAPI/realcartoon-pony-diffusion',
|
| 31 |
+
'John6666/nova-anime-xl-pony-v5-sdxl',
|
| 32 |
'yodayo-ai/kivotos-xl-2.0',
|
| 33 |
'yodayo-ai/holodayo-xl-2.1',
|
| 34 |
+
'yodayo-ai/clandestine-xl-1.0',
|
| 35 |
+
'John6666/silvermoon-mix-01xl-v11-sdxl',
|
| 36 |
'digiplay/majicMIX_sombre_v2',
|
| 37 |
'digiplay/majicMIX_realistic_v6',
|
| 38 |
'digiplay/majicMIX_realistic_v7',
|
|
|
|
| 41 |
'digiplay/DarkSushi2.5D_v1',
|
| 42 |
'digiplay/darkphoenix3D_v1.1',
|
| 43 |
'digiplay/BeenYouLiteL11_diffusers',
|
| 44 |
+
'Yntec/RevAnimatedV2Rebirth',
|
| 45 |
'youknownothing/cyberrealistic_v50',
|
| 46 |
+
'youknownothing/deliberate-v6',
|
| 47 |
+
'GraydientPlatformAPI/deliberate-cyber3',
|
| 48 |
+
'GraydientPlatformAPI/picx-real',
|
| 49 |
+
'GraydientPlatformAPI/perfectworld6',
|
| 50 |
+
'emilianJR/epiCRealism',
|
| 51 |
'votepurchase/counterfeitV30_v30',
|
| 52 |
+
'votepurchase/ChilloutMix',
|
| 53 |
'Meina/MeinaMix_V11',
|
| 54 |
'Meina/MeinaUnreal_V5',
|
| 55 |
'Meina/MeinaPastel_V7',
|
| 56 |
+
'GraydientPlatformAPI/realcartoon3d-17',
|
| 57 |
+
'GraydientPlatformAPI/realcartoon-pixar11',
|
| 58 |
+
'GraydientPlatformAPI/realcartoon-real17',
|
| 59 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
|
| 60 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
|
| 61 |
'KBlueLeaf/Kohaku-XL-Zeta',
|
| 62 |
+
'kayfahaarukku/UrangDiffusion-1.4',
|
| 63 |
'Eugeoter/artiwaifu-diffusion-2.0',
|
| 64 |
'Raelina/Rae-Diffusion-XL-V2',
|
| 65 |
'Raelina/Raemu-XL-V4',
|