Upload 22 files
Browse files
app.py
CHANGED
|
@@ -9,7 +9,9 @@ from dc import (infer, _infer, pass_result, get_diffusers_model_list, get_sample
|
|
| 9 |
download_my_lora, search_civitai_lora, update_civitai_selection, select_civitai_lora, search_civitai_lora_json,
|
| 10 |
get_t2i_model_info, get_civitai_tag, CIVITAI_SORT, CIVITAI_PERIOD, CIVITAI_BASEMODEL,
|
| 11 |
SCHEDULE_TYPE_OPTIONS, SCHEDULE_PREDICTION_TYPE_OPTIONS, preprocessor_tab, SDXL_TASK, TASK_MODEL_LIST,
|
| 12 |
-
PROMPT_W_OPTIONS
|
|
|
|
|
|
|
| 13 |
# Translator
|
| 14 |
from llmdolphin import (dolphin_respond_auto, dolphin_parse_simple,
|
| 15 |
get_llm_formats, get_dolphin_model_format, get_dolphin_models,
|
|
@@ -63,6 +65,7 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 63 |
|
| 64 |
result = gr.Image(label="Result", elem_id="result", format="png", type="filepath", show_label=False, interactive=False,
|
| 65 |
show_download_button=True, show_share_button=False, container=True)
|
|
|
|
| 66 |
with gr.Accordion("History", open=False):
|
| 67 |
history_gallery = gr.Gallery(label="History", columns=6, object_fit="contain", format="png", interactive=False, show_share_button=False,
|
| 68 |
show_download_button=True)
|
|
@@ -70,42 +73,48 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 70 |
history_clear_button = gr.Button(value="Clear History", variant="secondary")
|
| 71 |
history_clear_button.click(lambda: ([], []), None, [history_gallery, history_files], queue=False, show_api=False)
|
| 72 |
|
| 73 |
-
with gr.Accordion("Advanced Settings", open=
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
free_u = gr.Checkbox(value=False, label="FreeU")
|
| 92 |
-
|
| 93 |
-
with gr.Row():
|
| 94 |
-
with gr.Column(scale=4):
|
| 95 |
-
model_name = gr.Dropdown(label="Model", info="You can enter a huggingface model repo_id to want to use.",
|
| 96 |
-
choices=get_diffusers_model_list(), value=get_diffusers_model_list()[0],
|
| 97 |
-
allow_custom_value=True, interactive=True, min_width=320)
|
| 98 |
-
model_info = gr.Markdown(elem_classes="info")
|
| 99 |
-
with gr.Column(scale=1):
|
| 100 |
-
model_detail = gr.Checkbox(label="Show detail of model in list", value=False)
|
| 101 |
|
| 102 |
-
with gr.
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
|
| 108 |
-
with gr.
|
| 109 |
def lora_dropdown(label, visible=True):
|
| 110 |
return gr.Dropdown(label=label, choices=get_all_lora_tupled_list(), value="", allow_custom_value=True, elem_classes="lora", min_width=320, visible=visible)
|
| 111 |
|
|
@@ -190,17 +199,136 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 190 |
lora_search_civitai_result = gr.Dropdown(label="Search Results", choices=[("", "")], value="", allow_custom_value=True, visible=False)
|
| 191 |
lora_download_url = gr.Textbox(label="LoRA's download URL", placeholder="https://civitai.com/api/download/models/28907", info="It has to be .safetensors files, and you can also download them from Hugging Face.", lines=1)
|
| 192 |
lora_download = gr.Button("Get and set LoRA and apply to prompt")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 193 |
|
| 194 |
-
with gr.
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
|
| 199 |
-
with gr.
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
chatbot = gr.Chatbot(render_markdown=False, visible=False) # component for auto-translation
|
| 205 |
chat_model = gr.Dropdown(choices=get_dolphin_models(), value=get_dolphin_models()[0][1], allow_custom_value=True, label="Model")
|
| 206 |
chat_model_info = gr.Markdown(value=get_dolphin_model_info(get_dolphin_models()[0][1]), label="Model info")
|
|
@@ -225,15 +353,34 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 225 |
cache_examples=False,
|
| 226 |
)
|
| 227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
gr.on( #lambda x: None, inputs=None, outputs=result).then(
|
| 229 |
triggers=[run_button.click, prompt.submit],
|
| 230 |
fn=infer,
|
| 231 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 232 |
guidance_scale, num_inference_steps, model_name,
|
| 233 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 234 |
-
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt,
|
| 235 |
-
sampler, vae_model,
|
| 236 |
-
clip_skip, pag_scale, free_u, guidance_rescale,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
outputs=[result],
|
| 238 |
queue=True,
|
| 239 |
show_progress="full",
|
|
@@ -246,9 +393,22 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 246 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 247 |
guidance_scale, num_inference_steps, model_name,
|
| 248 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 249 |
-
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt,
|
| 250 |
-
sampler, vae_model,
|
| 251 |
-
clip_skip, pag_scale, free_u, guidance_rescale,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 252 |
outputs=[result],
|
| 253 |
queue=False,
|
| 254 |
show_api=True,
|
|
@@ -271,9 +431,22 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 271 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 272 |
guidance_scale, num_inference_steps, model_name,
|
| 273 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 274 |
-
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt,
|
| 275 |
-
sampler, vae_model,
|
| 276 |
-
clip_skip, pag_scale, free_u, guidance_rescale,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 277 |
outputs=[result],
|
| 278 |
queue=True,
|
| 279 |
show_progress="full",
|
|
@@ -285,7 +458,7 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 285 |
|
| 286 |
gr.on(
|
| 287 |
triggers=[lora1.change, lora1_wt.change, lora2.change, lora2_wt.change, lora3.change, lora3_wt.change,
|
| 288 |
-
|
| 289 |
fn=update_loras,
|
| 290 |
inputs=[prompt, prompt_syntax, lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt, lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt],
|
| 291 |
outputs=[prompt, lora1, lora1_wt, lora1_info, lora1_copy, lora1_md,
|
|
@@ -433,7 +606,7 @@ with gr.Blocks(fill_width=True, elem_id="container", css=css, delete_cache=(60,
|
|
| 433 |
).success(
|
| 434 |
insert_recom_prompt, [output_text_pony, dummy_np, recom_pony], [output_text_pony, dummy_np], queue=False, show_api=False,
|
| 435 |
).success(lambda: (gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True)),
|
| 436 |
-
|
| 437 |
copy_btn.click(gradio_copy_text, [output_text], js=COPY_ACTION_JS, show_api=False)
|
| 438 |
copy_btn_pony.click(gradio_copy_text, [output_text_pony], js=COPY_ACTION_JS, show_api=False)
|
| 439 |
copy_prompt_btn.click(gradio_copy_prompt, inputs=[output_text], outputs=[prompt], show_api=False)
|
|
|
|
| 9 |
download_my_lora, search_civitai_lora, update_civitai_selection, select_civitai_lora, search_civitai_lora_json,
|
| 10 |
get_t2i_model_info, get_civitai_tag, CIVITAI_SORT, CIVITAI_PERIOD, CIVITAI_BASEMODEL,
|
| 11 |
SCHEDULE_TYPE_OPTIONS, SCHEDULE_PREDICTION_TYPE_OPTIONS, preprocessor_tab, SDXL_TASK, TASK_MODEL_LIST,
|
| 12 |
+
PROMPT_W_OPTIONS, POST_PROCESSING_SAMPLER, IP_ADAPTERS_SD, IP_ADAPTERS_SDXL, DIFFUSERS_CONTROLNET_MODEL,
|
| 13 |
+
TASK_AND_PREPROCESSORS, update_task_options, change_preprocessor_choices, get_ti_choices,
|
| 14 |
+
update_textual_inversion, set_textual_inversion_prompt, create_mask_now)
|
| 15 |
# Translator
|
| 16 |
from llmdolphin import (dolphin_respond_auto, dolphin_parse_simple,
|
| 17 |
get_llm_formats, get_dolphin_model_format, get_dolphin_models,
|
|
|
|
| 65 |
|
| 66 |
result = gr.Image(label="Result", elem_id="result", format="png", type="filepath", show_label=False, interactive=False,
|
| 67 |
show_download_button=True, show_share_button=False, container=True)
|
| 68 |
+
|
| 69 |
with gr.Accordion("History", open=False):
|
| 70 |
history_gallery = gr.Gallery(label="History", columns=6, object_fit="contain", format="png", interactive=False, show_share_button=False,
|
| 71 |
show_download_button=True)
|
|
|
|
| 73 |
history_clear_button = gr.Button(value="Clear History", variant="secondary")
|
| 74 |
history_clear_button.click(lambda: ([], []), None, [history_gallery, history_files], queue=False, show_api=False)
|
| 75 |
|
| 76 |
+
with gr.Accordion("Advanced Settings", open=True):
|
| 77 |
+
task = gr.Radio(label="Task", choices=SDXL_TASK, value=TASK_MODEL_LIST[0])
|
| 78 |
+
with gr.Tab("Model & Prompt"):
|
| 79 |
+
with gr.Row():
|
| 80 |
+
negative_prompt = gr.Text(label="Negative prompt", lines=1, max_lines=6, placeholder="Enter a negative prompt", show_copy_button=True,
|
| 81 |
+
value="(low quality, worst quality:1.2), very displeasing, watermark, signature, ugly")
|
| 82 |
+
with gr.Row():
|
| 83 |
+
with gr.Column(scale=4):
|
| 84 |
+
model_name = gr.Dropdown(label="Model", info="You can enter a huggingface model repo_id to want to use.",
|
| 85 |
+
choices=get_diffusers_model_list(), value=get_diffusers_model_list()[0],
|
| 86 |
+
allow_custom_value=True, interactive=True, min_width=320)
|
| 87 |
+
model_info = gr.Markdown(elem_classes="info")
|
| 88 |
+
with gr.Column(scale=1):
|
| 89 |
+
model_detail = gr.Checkbox(label="Show detail of model in list", value=False)
|
| 90 |
+
with gr.Row():
|
| 91 |
+
quality_selector = gr.Radio(label="Quality Tag Presets", interactive=True, choices=list(preset_quality.keys()), value="None", scale=3)
|
| 92 |
+
style_selector = gr.Radio(label="Style Presets", interactive=True, choices=list(preset_styles.keys()), value="None", scale=3)
|
| 93 |
+
recom_prompt = gr.Checkbox(label="Recommended prompt", value=True, scale=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
|
| 95 |
+
with gr.Tab("Generation Settings"):
|
| 96 |
+
with gr.Row():
|
| 97 |
+
seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=0)
|
| 98 |
+
randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
|
| 99 |
+
gpu_duration = gr.Slider(label="GPU time duration (seconds)", minimum=5, maximum=240, value=59)
|
| 100 |
+
with gr.Row():
|
| 101 |
+
width = gr.Slider(label="Width", minimum=MIN_IMAGE_SIZE, maximum=MAX_IMAGE_SIZE, step=32, value=1024) # 832
|
| 102 |
+
height = gr.Slider(label="Height", minimum=MIN_IMAGE_SIZE, maximum=MAX_IMAGE_SIZE, step=32, value=1024) # 1216
|
| 103 |
+
guidance_scale = gr.Slider(label="Guidance scale", minimum=0.0, maximum=30.0, step=0.1, value=7)
|
| 104 |
+
guidance_rescale = gr.Slider(label="CFG rescale", value=0., step=0.01, minimum=0., maximum=1.5)
|
| 105 |
+
with gr.Row():
|
| 106 |
+
num_inference_steps = gr.Slider(label="Number of inference steps", minimum=1, maximum=100, step=1, value=28)
|
| 107 |
+
pag_scale = gr.Slider(minimum=0.0, maximum=10.0, step=0.1, value=0.0, label="PAG Scale")
|
| 108 |
+
clip_skip = gr.Checkbox(value=True, label="Layer 2 Clip Skip")
|
| 109 |
+
free_u = gr.Checkbox(value=False, label="FreeU")
|
| 110 |
+
with gr.Row():
|
| 111 |
+
sampler = gr.Dropdown(label="Sampler", choices=get_samplers(), value="Euler")
|
| 112 |
+
schedule_type = gr.Dropdown(label="Schedule type", choices=SCHEDULE_TYPE_OPTIONS, value=SCHEDULE_TYPE_OPTIONS[0])
|
| 113 |
+
schedule_prediction_type = gr.Dropdown(label="Discrete Sampling Type", choices=SCHEDULE_PREDICTION_TYPE_OPTIONS, value=SCHEDULE_PREDICTION_TYPE_OPTIONS[0])
|
| 114 |
+
vae_model = gr.Dropdown(label="VAE Model", choices=get_vaes(), value=get_vaes()[0])
|
| 115 |
+
prompt_syntax = gr.Dropdown(label="Prompt Syntax", choices=PROMPT_W_OPTIONS, value=PROMPT_W_OPTIONS[1][1])
|
| 116 |
|
| 117 |
+
with gr.Tab("LoRA"):
|
| 118 |
def lora_dropdown(label, visible=True):
|
| 119 |
return gr.Dropdown(label=label, choices=get_all_lora_tupled_list(), value="", allow_custom_value=True, elem_classes="lora", min_width=320, visible=visible)
|
| 120 |
|
|
|
|
| 199 |
lora_search_civitai_result = gr.Dropdown(label="Search Results", choices=[("", "")], value="", allow_custom_value=True, visible=False)
|
| 200 |
lora_download_url = gr.Textbox(label="LoRA's download URL", placeholder="https://civitai.com/api/download/models/28907", info="It has to be .safetensors files, and you can also download them from Hugging Face.", lines=1)
|
| 201 |
lora_download = gr.Button("Get and set LoRA and apply to prompt")
|
| 202 |
+
|
| 203 |
+
with gr.Tab("ControlNet / Img2img / Inpaint"):
|
| 204 |
+
with gr.Row():
|
| 205 |
+
image_control = gr.Image(label="Image ControlNet / Inpaint / Img2img", type="filepath", height=384, sources=["upload", "clipboard", "webacam"], show_share_button=False)
|
| 206 |
+
#image_control = gr.ImageEditor(label="Image ControlNet / Inpaint / Img2img", type="filepath", sources=["upload", "clipboard", "webcam"], image_mode='RGB',
|
| 207 |
+
# show_share_button=False, show_fullscreen_button=False, layers=False, canvas_size=(384, 384), width=384, height=512,
|
| 208 |
+
# brush=gr.Brush(colors=["#FFFFFF"], color_mode="fixed", default_size=32), eraser=gr.Eraser(default_size="32"))
|
| 209 |
+
image_mask = gr.Image(label="Image Mask", type="filepath", height=384, sources=["upload", "clipboard"], show_share_button=False)
|
| 210 |
+
with gr.Row():
|
| 211 |
+
strength = gr.Slider(minimum=0.01, maximum=1.0, step=0.01, value=0.55, label="Strength",
|
| 212 |
+
info="This option adjusts the level of changes for img2img and inpainting.")
|
| 213 |
+
image_resolution = gr.Slider(minimum=64, maximum=2048, step=64, value=1024, label="Image Resolution",
|
| 214 |
+
info="The maximum proportional size of the generated image based on the uploaded image.")
|
| 215 |
+
with gr.Row():
|
| 216 |
+
controlnet_model = gr.Dropdown(label="ControlNet model", choices=DIFFUSERS_CONTROLNET_MODEL, value=DIFFUSERS_CONTROLNET_MODEL[0])
|
| 217 |
+
control_net_output_scaling = gr.Slider(minimum=0, maximum=5.0, step=0.1, value=1, label="ControlNet Output Scaling in UNet")
|
| 218 |
+
control_net_start_threshold = gr.Slider(minimum=0, maximum=1, step=0.01, value=0, label="ControlNet Start Threshold (%)")
|
| 219 |
+
control_net_stop_threshold = gr.Slider(minimum=0, maximum=1, step=0.01, value=1, label="ControlNet Stop Threshold (%)")
|
| 220 |
+
with gr.Row():
|
| 221 |
+
preprocessor_name = gr.Dropdown(label="Preprocessor Name", choices=TASK_AND_PREPROCESSORS["canny"])
|
| 222 |
+
preprocess_resolution = gr.Slider(minimum=64, maximum=2048, step=64, value=512, label="Preprocessor Resolution")
|
| 223 |
+
low_threshold = gr.Slider(minimum=1, maximum=255, step=1, value=100, label="'CANNY' low threshold")
|
| 224 |
+
high_threshold = gr.Slider(minimum=1, maximum=255, step=1, value=200, label="'CANNY' high threshold")
|
| 225 |
+
with gr.Row():
|
| 226 |
+
value_threshold = gr.Slider(minimum=1, maximum=2.0, step=0.01, value=0.1, label="'MLSD' Hough value threshold")
|
| 227 |
+
distance_threshold = gr.Slider(minimum=1, maximum=20.0, step=0.01, value=0.1, label="'MLSD' Hough distance threshold")
|
| 228 |
+
recolor_gamma_correction = gr.Number(minimum=0., maximum=25., value=1., step=0.001, label="'RECOLOR' gamma correction")
|
| 229 |
+
tile_blur_sigma = gr.Number(minimum=0, maximum=100, value=9, step=1, label="'TILE' blur sigma")
|
| 230 |
+
|
| 231 |
+
with gr.Tab("IP-Adapter"):
|
| 232 |
+
IP_MODELS = sorted(list(set(IP_ADAPTERS_SD + IP_ADAPTERS_SDXL)))
|
| 233 |
+
MODE_IP_OPTIONS = ["original", "style", "layout", "style+layout"]
|
| 234 |
+
with gr.Row():
|
| 235 |
+
with gr.Accordion("IP-Adapter 1", open=True, visible=True):
|
| 236 |
+
image_ip1 = gr.Image(label="IP Image", type="filepath", height=384, sources=["upload", "clipboard"], show_share_button=False)
|
| 237 |
+
mask_ip1 = gr.Image(label="IP Mask (optional)", type="filepath", height=384, sources=["upload", "clipboard"], show_share_button=False)
|
| 238 |
+
with gr.Row():
|
| 239 |
+
model_ip1 = gr.Dropdown(value="plus_face", label="Model", choices=IP_MODELS)
|
| 240 |
+
mode_ip1 = gr.Dropdown(value="original", label="Mode", choices=MODE_IP_OPTIONS)
|
| 241 |
+
scale_ip1 = gr.Slider(minimum=0., maximum=2., step=0.01, value=0.7, label="Scale")
|
| 242 |
+
with gr.Accordion("IP-Adapter 2", open=True, visible=True):
|
| 243 |
+
image_ip2 = gr.Image(label="IP Image", type="filepath", height=384, sources=["upload", "clipboard"], show_share_button=False)
|
| 244 |
+
mask_ip2 = gr.Image(label="IP Mask (optional)", type="filepath", height=384, sources=["upload", "clipboard"], show_share_button=False)
|
| 245 |
+
with gr.Row():
|
| 246 |
+
model_ip2 = gr.Dropdown(value="base", label="Model", choices=IP_MODELS)
|
| 247 |
+
mode_ip2 = gr.Dropdown(value="style", label="Mode", choices=MODE_IP_OPTIONS)
|
| 248 |
+
scale_ip2 = gr.Slider(minimum=0., maximum=2., step=0.01, value=0.7, label="Scale")
|
| 249 |
|
| 250 |
+
with gr.Tab("Inpaint Mask Maker"):
|
| 251 |
+
with gr.Row():
|
| 252 |
+
with gr.Column(scale=2):
|
| 253 |
+
image_base = gr.ImageEditor(sources=["upload", "clipboard", "webcam"],
|
| 254 |
+
brush=gr.Brush(default_size="32", color_mode="fixed", colors=["rgba(0, 0, 0, 1)", "rgba(0, 0, 0, 0.1)", "rgba(255, 255, 255, 0.1)"]),
|
| 255 |
+
eraser=gr.Eraser(default_size="32"), show_share_button=False, show_fullscreen_button=False,
|
| 256 |
+
canvas_size=(384, 384), width=384, height=512)
|
| 257 |
+
invert_mask = gr.Checkbox(value=False, label="Invert mask")
|
| 258 |
+
cm_btn = gr.Button("Create mask")
|
| 259 |
+
with gr.Column(scale=1):
|
| 260 |
+
img_source = gr.Image(interactive=False, height=384, show_share_button=False)
|
| 261 |
+
img_result = gr.Image(label="Mask image", show_label=True, interactive=False, height=384, show_share_button=False)
|
| 262 |
+
cm_btn_send = gr.Button("Send to ControlNet / Img2img / Inpaint")
|
| 263 |
+
cm_btn_send_ip1 = gr.Button("Send to IP-Adapter 1")
|
| 264 |
+
cm_btn_send_ip2 = gr.Button("Send to IP-Adapter 2")
|
| 265 |
+
cm_btn.click(create_mask_now, [image_base, invert_mask], [img_source, img_result], queue=False, show_api=False)
|
| 266 |
+
def send_img(img_source, img_result):
|
| 267 |
+
return img_source, img_result
|
| 268 |
+
cm_btn_send.click(send_img, [img_source, img_result], [image_control, image_mask], queue=False, show_api=False)
|
| 269 |
+
cm_btn_send_ip1.click(send_img, [img_source, img_result], [image_ip1, mask_ip1], queue=False, show_api=False)
|
| 270 |
+
cm_btn_send_ip2.click(send_img, [img_source, img_result], [image_ip2, mask_ip2], queue=False, show_api=False)
|
| 271 |
+
|
| 272 |
+
with gr.Tab("Hires fix"):
|
| 273 |
+
with gr.Row():
|
| 274 |
+
upscaler_model_path = gr.Dropdown(label="Upscaler", choices=UPSCALER_KEYS, value=UPSCALER_KEYS[0])
|
| 275 |
+
upscaler_increases_size = gr.Slider(minimum=1.1, maximum=4., step=0.1, value=1.2, label="Upscale by")
|
| 276 |
+
esrgan_tile = gr.Slider(minimum=0, value=0, maximum=500, step=1, label="ESRGAN Tile")
|
| 277 |
+
esrgan_tile_overlap = gr.Slider(minimum=1, maximum=200, step=1, value=8, label="ESRGAN Tile Overlap")
|
| 278 |
+
with gr.Row():
|
| 279 |
+
hires_steps = gr.Slider(minimum=0, value=30, maximum=100, step=1, label="Hires Steps")
|
| 280 |
+
hires_denoising_strength = gr.Slider(minimum=0.1, maximum=1.0, step=0.01, value=0.55, label="Hires Denoising Strength")
|
| 281 |
+
hires_sampler = gr.Dropdown(label="Hires Sampler", choices=POST_PROCESSING_SAMPLER, value=POST_PROCESSING_SAMPLER[0])
|
| 282 |
+
hires_schedule_list = ["Use same schedule type"] + SCHEDULE_TYPE_OPTIONS
|
| 283 |
+
hires_schedule_type = gr.Dropdown(label="Hires Schedule type", choices=hires_schedule_list, value=hires_schedule_list[0])
|
| 284 |
+
hires_guidance_scale = gr.Slider(minimum=-1., maximum=30., step=0.5, value=-1., label="Hires CFG", info="If the value is -1, the main CFG will be used")
|
| 285 |
+
with gr.Row():
|
| 286 |
+
hires_prompt = gr.Textbox(label="Hires Prompt", placeholder="Main prompt will be use", lines=3)
|
| 287 |
+
hires_negative_prompt = gr.Textbox(label="Hires Negative Prompt", placeholder="Main negative prompt will be use", lines=3)
|
| 288 |
|
| 289 |
+
with gr.Tab("Detailfix"):
|
| 290 |
+
with gr.Row():
|
| 291 |
+
# Adetailer Inpaint Only
|
| 292 |
+
adetailer_inpaint_only = gr.Checkbox(label="Inpaint only", value=True)
|
| 293 |
+
# Adetailer Verbose
|
| 294 |
+
adetailer_verbose = gr.Checkbox(label="Verbose", value=False)
|
| 295 |
+
# Adetailer Sampler
|
| 296 |
+
adetailer_sampler = gr.Dropdown(label="Adetailer sampler:", choices=POST_PROCESSING_SAMPLER, value=POST_PROCESSING_SAMPLER[0])
|
| 297 |
+
with gr.Row():
|
| 298 |
+
with gr.Accordion("Detailfix A", open=True, visible=True):
|
| 299 |
+
# Adetailer A
|
| 300 |
+
adetailer_active_a = gr.Checkbox(label="Enable Adetailer A", value=False)
|
| 301 |
+
prompt_ad_a = gr.Textbox(label="Main prompt", placeholder="Main prompt will be use", lines=3)
|
| 302 |
+
negative_prompt_ad_a = gr.Textbox(label="Negative prompt", placeholder="Main negative prompt will be use", lines=3)
|
| 303 |
+
with gr.Row():
|
| 304 |
+
strength_ad_a = gr.Number(label="Strength:", value=0.35, step=0.01, minimum=0.01, maximum=1.0)
|
| 305 |
+
face_detector_ad_a = gr.Checkbox(label="Face detector", value=False)
|
| 306 |
+
person_detector_ad_a = gr.Checkbox(label="Person detector", value=True)
|
| 307 |
+
hand_detector_ad_a = gr.Checkbox(label="Hand detector", value=False)
|
| 308 |
+
with gr.Row():
|
| 309 |
+
mask_dilation_a = gr.Number(label="Mask dilation:", value=4, minimum=1)
|
| 310 |
+
mask_blur_a = gr.Number(label="Mask blur:", value=4, minimum=1)
|
| 311 |
+
mask_padding_a = gr.Number(label="Mask padding:", value=32, minimum=1)
|
| 312 |
+
with gr.Accordion("Detailfix B", open=True, visible=True):
|
| 313 |
+
# Adetailer B
|
| 314 |
+
adetailer_active_b = gr.Checkbox(label="Enable Adetailer B", value=False)
|
| 315 |
+
prompt_ad_b = gr.Textbox(label="Main prompt", placeholder="Main prompt will be use", lines=3)
|
| 316 |
+
negative_prompt_ad_b = gr.Textbox(label="Negative prompt", placeholder="Main negative prompt will be use", lines=3)
|
| 317 |
+
with gr.Row():
|
| 318 |
+
strength_ad_b = gr.Number(label="Strength:", value=0.35, step=0.01, minimum=0.01, maximum=1.0)
|
| 319 |
+
face_detector_ad_b = gr.Checkbox(label="Face detector", value=False)
|
| 320 |
+
person_detector_ad_b = gr.Checkbox(label="Person detector", value=True)
|
| 321 |
+
hand_detector_ad_b = gr.Checkbox(label="Hand detector", value=False)
|
| 322 |
+
with gr.Row():
|
| 323 |
+
mask_dilation_b = gr.Number(label="Mask dilation:", value=4, minimum=1)
|
| 324 |
+
mask_blur_b = gr.Number(label="Mask blur:", value=4, minimum=1)
|
| 325 |
+
mask_padding_b = gr.Number(label="Mask padding:", value=32, minimum=1)
|
| 326 |
+
|
| 327 |
+
with gr.Tab("Textual inversion"):
|
| 328 |
+
active_textual_inversion = gr.Checkbox(value=False, label="Active Textual Inversion in prompt")
|
| 329 |
+
use_textual_inversion = gr.CheckboxGroup(choices=get_ti_choices(model_name.value) if active_textual_inversion.value else [], value=None, label="Use Textual Invertion in prompt")
|
| 330 |
+
|
| 331 |
+
with gr.Tab("Translation Settings"):
|
| 332 |
chatbot = gr.Chatbot(render_markdown=False, visible=False) # component for auto-translation
|
| 333 |
chat_model = gr.Dropdown(choices=get_dolphin_models(), value=get_dolphin_models()[0][1], allow_custom_value=True, label="Model")
|
| 334 |
chat_model_info = gr.Markdown(value=get_dolphin_model_info(get_dolphin_models()[0][1]), label="Model info")
|
|
|
|
| 353 |
cache_examples=False,
|
| 354 |
)
|
| 355 |
|
| 356 |
+
model_name.change(update_task_options, [model_name, task], [task], queue=False, show_api=False)
|
| 357 |
+
task.change(change_preprocessor_choices, [task], [preprocessor_name], queue=False, show_api=False)
|
| 358 |
+
active_textual_inversion.change(update_textual_inversion, [active_textual_inversion, model_name], [use_textual_inversion], queue=False, show_api=False)
|
| 359 |
+
model_name.change(update_textual_inversion, [active_textual_inversion, model_name], [use_textual_inversion], queue=False, show_api=False)
|
| 360 |
+
use_textual_inversion.change(set_textual_inversion_prompt, [use_textual_inversion, prompt, negative_prompt, prompt_syntax], [prompt, negative_prompt])
|
| 361 |
+
|
| 362 |
gr.on( #lambda x: None, inputs=None, outputs=result).then(
|
| 363 |
triggers=[run_button.click, prompt.submit],
|
| 364 |
fn=infer,
|
| 365 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 366 |
guidance_scale, num_inference_steps, model_name,
|
| 367 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 368 |
+
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt, task, prompt_syntax,
|
| 369 |
+
sampler, vae_model, schedule_type, schedule_prediction_type,
|
| 370 |
+
clip_skip, pag_scale, free_u, guidance_rescale,
|
| 371 |
+
image_control, image_mask, strength, image_resolution,
|
| 372 |
+
controlnet_model, control_net_output_scaling, control_net_start_threshold, control_net_stop_threshold,
|
| 373 |
+
preprocessor_name, preprocess_resolution, low_threshold, high_threshold,
|
| 374 |
+
value_threshold, distance_threshold, recolor_gamma_correction, tile_blur_sigma,
|
| 375 |
+
image_ip1, mask_ip1, model_ip1, mode_ip1, scale_ip1,
|
| 376 |
+
image_ip2, mask_ip2, model_ip2, mode_ip2, scale_ip2,
|
| 377 |
+
upscaler_model_path, upscaler_increases_size, esrgan_tile, esrgan_tile_overlap, hires_steps, hires_denoising_strength,
|
| 378 |
+
hires_sampler, hires_schedule_type, hires_guidance_scale, hires_prompt, hires_negative_prompt,
|
| 379 |
+
adetailer_inpaint_only, adetailer_verbose, adetailer_sampler, adetailer_active_a,
|
| 380 |
+
prompt_ad_a, negative_prompt_ad_a, strength_ad_a, face_detector_ad_a, person_detector_ad_a, hand_detector_ad_a,
|
| 381 |
+
mask_dilation_a, mask_blur_a, mask_padding_a, adetailer_active_b, prompt_ad_b, negative_prompt_ad_b, strength_ad_b,
|
| 382 |
+
face_detector_ad_b, person_detector_ad_b, hand_detector_ad_b, mask_dilation_b, mask_blur_b, mask_padding_b,
|
| 383 |
+
active_textual_inversion, gpu_duration, auto_trans, recom_prompt],
|
| 384 |
outputs=[result],
|
| 385 |
queue=True,
|
| 386 |
show_progress="full",
|
|
|
|
| 393 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 394 |
guidance_scale, num_inference_steps, model_name,
|
| 395 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 396 |
+
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt, task, prompt_syntax,
|
| 397 |
+
sampler, vae_model, schedule_type, schedule_prediction_type,
|
| 398 |
+
clip_skip, pag_scale, free_u, guidance_rescale,
|
| 399 |
+
image_control, image_mask, strength, image_resolution,
|
| 400 |
+
controlnet_model, control_net_output_scaling, control_net_start_threshold, control_net_stop_threshold,
|
| 401 |
+
preprocessor_name, preprocess_resolution, low_threshold, high_threshold,
|
| 402 |
+
value_threshold, distance_threshold, recolor_gamma_correction, tile_blur_sigma,
|
| 403 |
+
image_ip1, mask_ip1, model_ip1, mode_ip1, scale_ip1,
|
| 404 |
+
image_ip2, mask_ip2, model_ip2, mode_ip2, scale_ip2,
|
| 405 |
+
upscaler_model_path, upscaler_increases_size, esrgan_tile, esrgan_tile_overlap, hires_steps, hires_denoising_strength,
|
| 406 |
+
hires_sampler, hires_schedule_type, hires_guidance_scale, hires_prompt, hires_negative_prompt,
|
| 407 |
+
adetailer_inpaint_only, adetailer_verbose, adetailer_sampler, adetailer_active_a,
|
| 408 |
+
prompt_ad_a, negative_prompt_ad_a, strength_ad_a, face_detector_ad_a, person_detector_ad_a, hand_detector_ad_a,
|
| 409 |
+
mask_dilation_a, mask_blur_a, mask_padding_a, adetailer_active_b, prompt_ad_b, negative_prompt_ad_b, strength_ad_b,
|
| 410 |
+
face_detector_ad_b, person_detector_ad_b, hand_detector_ad_b, mask_dilation_b, mask_blur_b, mask_padding_b,
|
| 411 |
+
active_textual_inversion, gpu_duration, auto_trans, recom_prompt],
|
| 412 |
outputs=[result],
|
| 413 |
queue=False,
|
| 414 |
show_api=True,
|
|
|
|
| 431 |
inputs=[prompt, negative_prompt, seed, randomize_seed, width, height,
|
| 432 |
guidance_scale, num_inference_steps, model_name,
|
| 433 |
lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt,
|
| 434 |
+
lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt, task, prompt_syntax,
|
| 435 |
+
sampler, vae_model, schedule_type, schedule_prediction_type,
|
| 436 |
+
clip_skip, pag_scale, free_u, guidance_rescale,
|
| 437 |
+
image_control, image_mask, strength, image_resolution,
|
| 438 |
+
controlnet_model, control_net_output_scaling, control_net_start_threshold, control_net_stop_threshold,
|
| 439 |
+
preprocessor_name, preprocess_resolution, low_threshold, high_threshold,
|
| 440 |
+
value_threshold, distance_threshold, recolor_gamma_correction, tile_blur_sigma,
|
| 441 |
+
image_ip1, mask_ip1, model_ip1, mode_ip1, scale_ip1,
|
| 442 |
+
image_ip2, mask_ip2, model_ip2, mode_ip2, scale_ip2,
|
| 443 |
+
upscaler_model_path, upscaler_increases_size, esrgan_tile, esrgan_tile_overlap, hires_steps, hires_denoising_strength,
|
| 444 |
+
hires_sampler, hires_schedule_type, hires_guidance_scale, hires_prompt, hires_negative_prompt,
|
| 445 |
+
adetailer_inpaint_only, adetailer_verbose, adetailer_sampler, adetailer_active_a,
|
| 446 |
+
prompt_ad_a, negative_prompt_ad_a, strength_ad_a, face_detector_ad_a, person_detector_ad_a, hand_detector_ad_a,
|
| 447 |
+
mask_dilation_a, mask_blur_a, mask_padding_a, adetailer_active_b, prompt_ad_b, negative_prompt_ad_b, strength_ad_b,
|
| 448 |
+
face_detector_ad_b, person_detector_ad_b, hand_detector_ad_b, mask_dilation_b, mask_blur_b, mask_padding_b,
|
| 449 |
+
active_textual_inversion, gpu_duration, auto_trans, recom_prompt],
|
| 450 |
outputs=[result],
|
| 451 |
queue=True,
|
| 452 |
show_progress="full",
|
|
|
|
| 458 |
|
| 459 |
gr.on(
|
| 460 |
triggers=[lora1.change, lora1_wt.change, lora2.change, lora2_wt.change, lora3.change, lora3_wt.change,
|
| 461 |
+
lora4.change, lora4_wt.change, lora5.change, lora5_wt.change, lora6.change, lora6_wt.change, lora7.change, lora7_wt.change, prompt_syntax.change],
|
| 462 |
fn=update_loras,
|
| 463 |
inputs=[prompt, prompt_syntax, lora1, lora1_wt, lora2, lora2_wt, lora3, lora3_wt, lora4, lora4_wt, lora5, lora5_wt, lora6, lora6_wt, lora7, lora7_wt],
|
| 464 |
outputs=[prompt, lora1, lora1_wt, lora1_info, lora1_copy, lora1_md,
|
|
|
|
| 606 |
).success(
|
| 607 |
insert_recom_prompt, [output_text_pony, dummy_np, recom_pony], [output_text_pony, dummy_np], queue=False, show_api=False,
|
| 608 |
).success(lambda: (gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True)),
|
| 609 |
+
None, [copy_btn, copy_btn_pony, copy_prompt_btn, copy_prompt_btn_pony], queue=False, show_api=False)
|
| 610 |
copy_btn.click(gradio_copy_text, [output_text], js=COPY_ACTION_JS, show_api=False)
|
| 611 |
copy_btn_pony.click(gradio_copy_text, [output_text_pony], js=COPY_ACTION_JS, show_api=False)
|
| 612 |
copy_prompt_btn.click(gradio_copy_prompt, inputs=[output_text], outputs=[prompt], show_api=False)
|
dc.py
CHANGED
|
@@ -119,8 +119,8 @@ vae_model_list = get_model_list(DIRECTORY_VAES)
|
|
| 119 |
vae_model_list.insert(0, "BakedVAE")
|
| 120 |
vae_model_list.insert(0, "None")
|
| 121 |
|
| 122 |
-
|
| 123 |
-
|
| 124 |
embed_sdxl_list = get_model_list(DIRECTORY_EMBEDS_SDXL) + get_model_list(DIRECTORY_EMBEDS_POSITIVE_SDXL)
|
| 125 |
|
| 126 |
def get_embed_list(pipeline_name):
|
|
@@ -148,7 +148,7 @@ class GuiSD:
|
|
| 148 |
self.last_load = datetime.now()
|
| 149 |
self.inventory = []
|
| 150 |
|
| 151 |
-
def update_storage_models(self, storage_floor_gb=
|
| 152 |
while get_used_storage_gb() > storage_floor_gb:
|
| 153 |
if len(self.inventory) < required_inventory_for_purge:
|
| 154 |
break
|
|
@@ -741,8 +741,8 @@ import random
|
|
| 741 |
import json
|
| 742 |
import shutil
|
| 743 |
from tagger.tagger import insert_model_recom_prompt
|
| 744 |
-
from modutils import (safe_float, escape_lora_basename, to_lora_key, to_lora_path, valid_model_name,
|
| 745 |
-
get_local_model_list, get_private_lora_model_lists, get_valid_lora_name, get_state, set_state,
|
| 746 |
get_valid_lora_path, get_valid_lora_wt, get_lora_info, CIVITAI_SORT, CIVITAI_PERIOD, CIVITAI_BASEMODEL,
|
| 747 |
normalize_prompt_list, get_civitai_info, search_lora_on_civitai, translate_to_en, get_t2i_model_info, get_civitai_tag, save_image_history,
|
| 748 |
get_all_lora_list, get_all_lora_tupled_list, update_lora_dict, download_lora, copy_lora, download_my_lora, set_prompt_loras,
|
|
@@ -753,45 +753,26 @@ from modutils import (safe_float, escape_lora_basename, to_lora_key, to_lora_pat
|
|
| 753 |
def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps,
|
| 754 |
model_name=load_diffusers_format_model[0], lora1=None, lora1_wt=1.0, lora2=None, lora2_wt=1.0,
|
| 755 |
lora3=None, lora3_wt=1.0, lora4=None, lora4_wt=1.0, lora5=None, lora5_wt=1.0, lora6=None, lora6_wt=1.0, lora7=None, lora7_wt=1.0,
|
| 756 |
-
sampler="Euler", vae=None,
|
| 757 |
-
clip_skip=True, pag_scale=0.0, free_u=False, guidance_rescale=0.,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 758 |
MAX_SEED = np.iinfo(np.int32).max
|
| 759 |
|
| 760 |
-
task = TASK_MODEL_LIST[0]
|
| 761 |
-
image_control = None
|
| 762 |
-
preprocessor_name = "Canny"
|
| 763 |
-
preprocess_resolution = 512
|
| 764 |
-
image_resolution = 1024
|
| 765 |
style_prompt = None
|
| 766 |
style_json = None
|
| 767 |
-
image_mask = None
|
| 768 |
-
strength = 0.35
|
| 769 |
-
low_threshold = 100
|
| 770 |
-
high_threshold = 200
|
| 771 |
-
value_threshold = 0.1
|
| 772 |
-
distance_threshold = 0.1
|
| 773 |
-
recolor_gamma_correction = 1.
|
| 774 |
-
tile_blur_sigma = 9
|
| 775 |
-
control_net_output_scaling = 1.0
|
| 776 |
-
control_net_start_threshold = 0.
|
| 777 |
-
control_net_stop_threshold = 1.
|
| 778 |
-
active_textual_inversion = False
|
| 779 |
-
prompt_syntax = "Classic"
|
| 780 |
-
upscaler_model_path = None # UPSCALER_KEYS[0]
|
| 781 |
-
upscaler_increases_size = 1.0 # 1.2
|
| 782 |
-
esrgan_tile = 5
|
| 783 |
-
esrgan_tile_overlap = 8
|
| 784 |
-
hires_steps = 30
|
| 785 |
-
hires_denoising_strength = 0.55
|
| 786 |
-
hires_sampler = "Use same sampler" # POST_PROCESSING_SAMPLER[0]
|
| 787 |
-
hires_prompt = ""
|
| 788 |
-
hires_negative_prompt = ""
|
| 789 |
hires_before_adetailer = False
|
| 790 |
hires_after_adetailer = True
|
| 791 |
-
hires_schedule_list = ["Use same schedule type"] + SCHEDULE_TYPE_OPTIONS
|
| 792 |
-
hires_schedule_type = hires_schedule_list[0]
|
| 793 |
-
hires_guidance_scale = -1
|
| 794 |
-
controlnet_model = DIFFUSERS_CONTROLNET_MODEL[0]
|
| 795 |
loop_generation = 1
|
| 796 |
leave_progress_bar = True
|
| 797 |
disable_progress_bar = False
|
|
@@ -808,40 +789,7 @@ def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance
|
|
| 808 |
adapter_conditioning_factor = 0.55
|
| 809 |
xformers_memory_efficient_attention = False
|
| 810 |
generator_in_cpu = False
|
| 811 |
-
adetailer_inpaint_only = True
|
| 812 |
-
adetailer_verbose = False
|
| 813 |
-
adetailer_sampler = "Use same sampler"
|
| 814 |
-
adetailer_active_a = False
|
| 815 |
-
prompt_ad_a = ""
|
| 816 |
-
negative_prompt_ad_a = ""
|
| 817 |
-
strength_ad_a = 0.35
|
| 818 |
-
face_detector_ad_a = True
|
| 819 |
-
person_detector_ad_a = True
|
| 820 |
-
hand_detector_ad_a = False
|
| 821 |
-
mask_dilation_a = 4
|
| 822 |
-
mask_blur_a = 4
|
| 823 |
-
mask_padding_a = 32
|
| 824 |
-
adetailer_active_b = False
|
| 825 |
-
prompt_ad_b = ""
|
| 826 |
-
negative_prompt_ad_b = ""
|
| 827 |
-
strength_ad_b = 0.35
|
| 828 |
-
face_detector_ad_b = True
|
| 829 |
-
person_detector_ad_b = True
|
| 830 |
-
hand_detector_ad_b = False
|
| 831 |
-
mask_dilation_b = 4
|
| 832 |
-
mask_blur_b = 4
|
| 833 |
-
mask_padding_b = 32
|
| 834 |
retain_task_cache = True
|
| 835 |
-
image_ip1 = None
|
| 836 |
-
mask_ip1 = None
|
| 837 |
-
model_ip1 = "plus_face"
|
| 838 |
-
mode_ip1 = "original"
|
| 839 |
-
scale_ip1 = 0.7
|
| 840 |
-
image_ip2 = None
|
| 841 |
-
mask_ip2 = None
|
| 842 |
-
model_ip2 = "base"
|
| 843 |
-
mode_ip2 = "style"
|
| 844 |
-
scale_ip2 = 0.7
|
| 845 |
load_lora_cpu = False
|
| 846 |
verbose_info = False
|
| 847 |
|
|
@@ -901,8 +849,8 @@ def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance
|
|
| 901 |
def _infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps,
|
| 902 |
model_name=load_diffusers_format_model[0], lora1=None, lora1_wt=1.0, lora2=None, lora2_wt=1.0,
|
| 903 |
lora3=None, lora3_wt=1.0, lora4=None, lora4_wt=1.0, lora5=None, lora5_wt=1.0, lora6=None, lora6_wt=1.0, lora7=None, lora7_wt=1.0,
|
| 904 |
-
sampler="Euler", vae=None,
|
| 905 |
-
clip_skip=True, pag_scale=0.0, free_u=False, guidance_rescale=0., gpu_duration=59, recom_prompt=True, progress=gr.Progress(track_tqdm=True)):
|
| 906 |
return gr.update()
|
| 907 |
|
| 908 |
|
|
@@ -922,6 +870,32 @@ def get_vaes():
|
|
| 922 |
return vae_model_list
|
| 923 |
|
| 924 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 925 |
cached_diffusers_model_tupled_list = get_tupled_model_list(load_diffusers_format_model)
|
| 926 |
def get_diffusers_model_list(state: dict = {}):
|
| 927 |
show_diffusers_model_list_detail = get_state(state, "show_diffusers_model_list_detail")
|
|
|
|
| 119 |
vae_model_list.insert(0, "BakedVAE")
|
| 120 |
vae_model_list.insert(0, "None")
|
| 121 |
|
| 122 |
+
download_private_repo(HF_SDXL_EMBEDS_NEGATIVE_PRIVATE_REPO, DIRECTORY_EMBEDS_SDXL, False)
|
| 123 |
+
download_private_repo(HF_SDXL_EMBEDS_POSITIVE_PRIVATE_REPO, DIRECTORY_EMBEDS_POSITIVE_SDXL, False)
|
| 124 |
embed_sdxl_list = get_model_list(DIRECTORY_EMBEDS_SDXL) + get_model_list(DIRECTORY_EMBEDS_POSITIVE_SDXL)
|
| 125 |
|
| 126 |
def get_embed_list(pipeline_name):
|
|
|
|
| 148 |
self.last_load = datetime.now()
|
| 149 |
self.inventory = []
|
| 150 |
|
| 151 |
+
def update_storage_models(self, storage_floor_gb=24, required_inventory_for_purge=3):
|
| 152 |
while get_used_storage_gb() > storage_floor_gb:
|
| 153 |
if len(self.inventory) < required_inventory_for_purge:
|
| 154 |
break
|
|
|
|
| 741 |
import json
|
| 742 |
import shutil
|
| 743 |
from tagger.tagger import insert_model_recom_prompt
|
| 744 |
+
from modutils import (safe_float, escape_lora_basename, to_lora_key, to_lora_path, valid_model_name, set_textual_inversion_prompt,
|
| 745 |
+
get_local_model_list, get_model_pipeline, get_private_lora_model_lists, get_valid_lora_name, get_state, set_state,
|
| 746 |
get_valid_lora_path, get_valid_lora_wt, get_lora_info, CIVITAI_SORT, CIVITAI_PERIOD, CIVITAI_BASEMODEL,
|
| 747 |
normalize_prompt_list, get_civitai_info, search_lora_on_civitai, translate_to_en, get_t2i_model_info, get_civitai_tag, save_image_history,
|
| 748 |
get_all_lora_list, get_all_lora_tupled_list, update_lora_dict, download_lora, copy_lora, download_my_lora, set_prompt_loras,
|
|
|
|
| 753 |
def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps,
|
| 754 |
model_name=load_diffusers_format_model[0], lora1=None, lora1_wt=1.0, lora2=None, lora2_wt=1.0,
|
| 755 |
lora3=None, lora3_wt=1.0, lora4=None, lora4_wt=1.0, lora5=None, lora5_wt=1.0, lora6=None, lora6_wt=1.0, lora7=None, lora7_wt=1.0,
|
| 756 |
+
task=TASK_MODEL_LIST[0], prompt_syntax="Classic", sampler="Euler", vae=None, schedule_type=SCHEDULE_TYPE_OPTIONS[0], schedule_prediction_type=SCHEDULE_PREDICTION_TYPE_OPTIONS[0],
|
| 757 |
+
clip_skip=True, pag_scale=0.0, free_u=False, guidance_rescale=0., image_control=None, image_mask=None, strength=0.35, image_resolution=1024,
|
| 758 |
+
controlnet_model=DIFFUSERS_CONTROLNET_MODEL[0], control_net_output_scaling=1.0, control_net_start_threshold=0., control_net_stop_threshold=1.,
|
| 759 |
+
preprocessor_name="Canny", preprocess_resolution=512, low_threshold=100, high_threshold=200,
|
| 760 |
+
value_threshold=0.1, distance_threshold=0.1, recolor_gamma_correction=1., tile_blur_sigma=9,
|
| 761 |
+
image_ip1=None, mask_ip1=None, model_ip1="plus_face", mode_ip1="original", scale_ip1=0.7,
|
| 762 |
+
image_ip2=None, mask_ip2=None, model_ip2="base", mode_ip2="style", scale_ip2=0.7,
|
| 763 |
+
upscaler_model_path=None, upscaler_increases_size=1.0, esrgan_tile=5, esrgan_tile_overlap=8, hires_steps=30, hires_denoising_strength=0.55,
|
| 764 |
+
hires_sampler="Use same sampler", hires_schedule_type="Use same schedule type", hires_guidance_scale=-1, hires_prompt="", hires_negative_prompt="",
|
| 765 |
+
adetailer_inpaint_only=True, adetailer_verbose=False, adetailer_sampler="Use same sampler", adetailer_active_a=False,
|
| 766 |
+
prompt_ad_a="", negative_prompt_ad_a="", strength_ad_a=0.35, face_detector_ad_a=True, person_detector_ad_a=True, hand_detector_ad_a=False,
|
| 767 |
+
mask_dilation_a=4, mask_blur_a=4, mask_padding_a=32, adetailer_active_b=False, prompt_ad_b="", negative_prompt_ad_b="", strength_ad_b=0.35,
|
| 768 |
+
face_detector_ad_b=True, person_detector_ad_b=True, hand_detector_ad_b=False, mask_dilation_b=4, mask_blur_b=4, mask_padding_b=32,
|
| 769 |
+
active_textual_inversion=False, gpu_duration=59, translate=False, recom_prompt=True, progress=gr.Progress(track_tqdm=True)):
|
| 770 |
MAX_SEED = np.iinfo(np.int32).max
|
| 771 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 772 |
style_prompt = None
|
| 773 |
style_json = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 774 |
hires_before_adetailer = False
|
| 775 |
hires_after_adetailer = True
|
|
|
|
|
|
|
|
|
|
|
|
|
| 776 |
loop_generation = 1
|
| 777 |
leave_progress_bar = True
|
| 778 |
disable_progress_bar = False
|
|
|
|
| 789 |
adapter_conditioning_factor = 0.55
|
| 790 |
xformers_memory_efficient_attention = False
|
| 791 |
generator_in_cpu = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 792 |
retain_task_cache = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 793 |
load_lora_cpu = False
|
| 794 |
verbose_info = False
|
| 795 |
|
|
|
|
| 849 |
def _infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps,
|
| 850 |
model_name=load_diffusers_format_model[0], lora1=None, lora1_wt=1.0, lora2=None, lora2_wt=1.0,
|
| 851 |
lora3=None, lora3_wt=1.0, lora4=None, lora4_wt=1.0, lora5=None, lora5_wt=1.0, lora6=None, lora6_wt=1.0, lora7=None, lora7_wt=1.0,
|
| 852 |
+
task=TASK_MODEL_LIST[0], prompt_syntax="Classic", sampler="Euler", vae=None, schedule_type=SCHEDULE_TYPE_OPTIONS[0], schedule_prediction_type=SCHEDULE_PREDICTION_TYPE_OPTIONS[0],
|
| 853 |
+
clip_skip=True, pag_scale=0.0, free_u=False, guidance_rescale=0., gpu_duration=59, translate=False, recom_prompt=True, progress=gr.Progress(track_tqdm=True)):
|
| 854 |
return gr.update()
|
| 855 |
|
| 856 |
|
|
|
|
| 870 |
return vae_model_list
|
| 871 |
|
| 872 |
|
| 873 |
+
def update_task_options(model_name, task_name):
|
| 874 |
+
new_choices = MODEL_TYPE_TASK[get_model_type(valid_model_name(model_name))]
|
| 875 |
+
|
| 876 |
+
if task_name not in new_choices:
|
| 877 |
+
task_name = "txt2img"
|
| 878 |
+
|
| 879 |
+
return gr.update(value=task_name, choices=new_choices)
|
| 880 |
+
|
| 881 |
+
|
| 882 |
+
def change_preprocessor_choices(task):
|
| 883 |
+
task = TASK_STABLEPY[task]
|
| 884 |
+
if task in TASK_AND_PREPROCESSORS.keys():
|
| 885 |
+
choices_task = TASK_AND_PREPROCESSORS[task]
|
| 886 |
+
else:
|
| 887 |
+
choices_task = TASK_AND_PREPROCESSORS["canny"]
|
| 888 |
+
return gr.update(choices=choices_task, value=choices_task[0])
|
| 889 |
+
|
| 890 |
+
|
| 891 |
+
def get_ti_choices(model_name: str):
|
| 892 |
+
return get_embed_list(get_model_pipeline(valid_model_name(model_name)))
|
| 893 |
+
|
| 894 |
+
|
| 895 |
+
def update_textual_inversion(active_textual_inversion: bool, model_name: str):
|
| 896 |
+
return gr.update(choices=get_ti_choices(model_name) if active_textual_inversion else [])
|
| 897 |
+
|
| 898 |
+
|
| 899 |
cached_diffusers_model_tupled_list = get_tupled_model_list(load_diffusers_format_model)
|
| 900 |
def get_diffusers_model_list(state: dict = {}):
|
| 901 |
show_diffusers_model_list_detail = get_state(state, "show_diffusers_model_list_detail")
|
env.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
import os
|
|
|
|
| 2 |
|
| 3 |
CIVITAI_API_KEY = os.environ.get("CIVITAI_API_KEY")
|
| 4 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
|
@@ -38,98 +39,6 @@ LOAD_DIFFUSERS_FORMAT_MODEL = [
|
|
| 38 |
'votepurchase/RealVisXL_V4.0',
|
| 39 |
'votepurchase/juggernautXL_hyper_8step_sfw',
|
| 40 |
'votepurchase/ponyRealism_v21MainVAE',
|
| 41 |
-
'stabilityai/stable-diffusion-xl-base-1.0',
|
| 42 |
-
'black-forest-labs/FLUX.1-dev',
|
| 43 |
-
'John6666/blue-pencil-flux1-v021-fp8-flux',
|
| 44 |
-
'John6666/wai-ani-flux-v10forfp8-fp8-flux',
|
| 45 |
-
'John6666/xe-anime-flux-v04-fp8-flux',
|
| 46 |
-
'John6666/lyh-anime-flux-v2a1-fp8-flux',
|
| 47 |
-
'John6666/carnival-unchained-v10-fp8-flux',
|
| 48 |
-
'Freepik/flux.1-lite-8B-alpha',
|
| 49 |
-
'ostris/OpenFLUX.1',
|
| 50 |
-
'John6666/noobai-xl-nai-xl-epsilonpred10version-sdxl',
|
| 51 |
-
'John6666/noobai-xl-nai-xl-epsilonpred075version-sdxl',
|
| 52 |
-
'John6666/noobai-xl-nai-xl-epsilonpred05version-sdxl',
|
| 53 |
-
'John6666/noobai-cyberfix-v10-sdxl',
|
| 54 |
-
'John6666/noobaiiter-xl-vpred-v075-sdxl',
|
| 55 |
-
'John6666/complicated-noobai-merge-vprediction-sdxl',
|
| 56 |
-
'John6666/noobai-fusion2-vpred-itercomp-v1-sdxl',
|
| 57 |
-
'John6666/noobai-xl-nai-xl-vpredtestversion-sdxl',
|
| 58 |
-
'John6666/chadmix-noobai075-illustrious01-v10-sdxl',
|
| 59 |
-
'OnomaAIResearch/Illustrious-xl-early-release-v0',
|
| 60 |
-
'John6666/obsession-illustriousxl-v21-sdxl',
|
| 61 |
-
'eienmojiki/Anything-XL',
|
| 62 |
-
'eienmojiki/Starry-XL-v5.2',
|
| 63 |
-
'John6666/meinaxl-v2-sdxl',
|
| 64 |
-
'John6666/epicrealism-xl-v10kiss2-sdxl',
|
| 65 |
-
'John6666/epicrealism-xl-v8kiss-sdxl',
|
| 66 |
-
'misri/zavychromaxl_v80',
|
| 67 |
-
'SG161222/RealVisXL_V4.0',
|
| 68 |
-
'SG161222/RealVisXL_V5.0',
|
| 69 |
-
'misri/newrealityxlAllInOne_Newreality40',
|
| 70 |
-
'gsdf/CounterfeitXL',
|
| 71 |
-
'John6666/silvermoon-mix-01xl-v11-sdxl',
|
| 72 |
-
'WhiteAiZ/autismmixSDXL_autismmixConfetti_diffusers',
|
| 73 |
-
'kitty7779/ponyDiffusionV6XL',
|
| 74 |
-
'GraydientPlatformAPI/aniverse-pony',
|
| 75 |
-
'John6666/ras-real-anime-screencap-v1-sdxl',
|
| 76 |
-
'John6666/duchaiten-pony-xl-no-score-v60-sdxl',
|
| 77 |
-
'John6666/mistoon-anime-ponyalpha-sdxl',
|
| 78 |
-
'John6666/3x3x3mixxl-v2-sdxl',
|
| 79 |
-
'John6666/3x3x3mixxl-3dv01-sdxl',
|
| 80 |
-
'John6666/ebara-mfcg-pony-mix-v12-sdxl',
|
| 81 |
-
'John6666/t-ponynai3-v51-sdxl',
|
| 82 |
-
'John6666/t-ponynai3-v65-sdxl',
|
| 83 |
-
'John6666/prefect-pony-xl-v3-sdxl',
|
| 84 |
-
'John6666/mala-anime-mix-nsfw-pony-xl-v5-sdxl',
|
| 85 |
-
'John6666/wai-real-mix-v11-sdxl',
|
| 86 |
-
'John6666/wai-c-v6-sdxl',
|
| 87 |
-
'John6666/iniverse-mix-xl-sfwnsfw-pony-guofeng-v43-sdxl',
|
| 88 |
-
'John6666/sifw-annihilation-xl-v2-sdxl',
|
| 89 |
-
'John6666/photo-realistic-pony-v5-sdxl',
|
| 90 |
-
'John6666/pony-realism-v21main-sdxl',
|
| 91 |
-
'John6666/pony-realism-v22main-sdxl',
|
| 92 |
-
'John6666/cyberrealistic-pony-v63-sdxl',
|
| 93 |
-
'John6666/cyberrealistic-pony-v64-sdxl',
|
| 94 |
-
'John6666/cyberrealistic-pony-v65-sdxl',
|
| 95 |
-
'GraydientPlatformAPI/realcartoon-pony-diffusion',
|
| 96 |
-
'John6666/nova-anime-xl-pony-v5-sdxl',
|
| 97 |
-
'John6666/autismmix-sdxl-autismmix-pony-sdxl',
|
| 98 |
-
'John6666/aimz-dream-real-pony-mix-v3-sdxl',
|
| 99 |
-
'John6666/duchaiten-pony-real-v11fix-sdxl',
|
| 100 |
-
'John6666/duchaiten-pony-real-v20-sdxl',
|
| 101 |
-
'John6666/duchaiten-pony-xl-no-score-v70-sdxl',
|
| 102 |
-
'Eugeoter/artiwaifu-diffusion-2.0',
|
| 103 |
-
'comin/IterComp',
|
| 104 |
-
'KBlueLeaf/Kohaku-XL-Zeta',
|
| 105 |
-
'cagliostrolab/animagine-xl-3.1',
|
| 106 |
-
'yodayo-ai/kivotos-xl-2.0',
|
| 107 |
-
'yodayo-ai/holodayo-xl-2.1',
|
| 108 |
-
'yodayo-ai/clandestine-xl-1.0',
|
| 109 |
-
'digiplay/majicMIX_sombre_v2',
|
| 110 |
-
'digiplay/majicMIX_realistic_v6',
|
| 111 |
-
'digiplay/majicMIX_realistic_v7',
|
| 112 |
-
'digiplay/DreamShaper_8',
|
| 113 |
-
'digiplay/BeautifulArt_v1',
|
| 114 |
-
'digiplay/DarkSushi2.5D_v1',
|
| 115 |
-
'digiplay/darkphoenix3D_v1.1',
|
| 116 |
-
'digiplay/BeenYouLiteL11_diffusers',
|
| 117 |
-
'Yntec/RevAnimatedV2Rebirth',
|
| 118 |
-
'youknownothing/cyberrealistic_v50',
|
| 119 |
-
'youknownothing/deliberate-v6',
|
| 120 |
-
'GraydientPlatformAPI/deliberate-cyber3',
|
| 121 |
-
'GraydientPlatformAPI/picx-real',
|
| 122 |
-
'GraydientPlatformAPI/perfectworld6',
|
| 123 |
-
'emilianJR/epiCRealism',
|
| 124 |
-
'votepurchase/counterfeitV30_v30',
|
| 125 |
-
'votepurchase/ChilloutMix',
|
| 126 |
-
'Meina/MeinaMix_V11',
|
| 127 |
-
'Meina/MeinaUnreal_V5',
|
| 128 |
-
'Meina/MeinaPastel_V7',
|
| 129 |
-
'GraydientPlatformAPI/realcartoon3d-17',
|
| 130 |
-
'GraydientPlatformAPI/realcartoon-pixar11',
|
| 131 |
-
'GraydientPlatformAPI/realcartoon-real17',
|
| 132 |
-
'nitrosocke/Ghibli-Diffusion',
|
| 133 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
|
| 134 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
|
| 135 |
'KBlueLeaf/Kohaku-XL-Zeta',
|
|
@@ -138,6 +47,7 @@ LOAD_DIFFUSERS_FORMAT_MODEL = [
|
|
| 138 |
'Eugeoter/artiwaifu-diffusion-2.0',
|
| 139 |
'comin/IterComp',
|
| 140 |
'OnomaAIResearch/Illustrious-xl-early-release-v0',
|
|
|
|
| 141 |
'Raelina/Rae-Diffusion-XL-V2',
|
| 142 |
'Raelina/Raemu-XL-V4',
|
| 143 |
'Raelina/Raehoshi-illust-XL',
|
|
@@ -150,17 +60,18 @@ LOAD_DIFFUSERS_FORMAT_MODEL = [
|
|
| 150 |
"multimodalart/FLUX.1-dev2pro-full",
|
| 151 |
"Raelina/Raemu-Flux",
|
| 152 |
]
|
|
|
|
| 153 |
|
| 154 |
DIFFUSERS_FORMAT_LORAS = [
|
| 155 |
"nerijs/animation2k-flux",
|
| 156 |
"XLabs-AI/flux-RealismLora",
|
|
|
|
| 157 |
]
|
| 158 |
|
| 159 |
# List all Models for specified user
|
| 160 |
HF_MODEL_USER_LIKES = ["votepurchase"] # sorted by number of likes
|
| 161 |
HF_MODEL_USER_EX = ["John6666"] # sorted by a special rule
|
| 162 |
|
| 163 |
-
|
| 164 |
# - **Download Models**
|
| 165 |
DOWNLOAD_MODEL_LIST = [
|
| 166 |
]
|
|
|
|
| 1 |
import os
|
| 2 |
+
from constants import LOAD_DIFFUSERS_FORMAT_MODEL as LOAD_DIFFUSERS_FORMAT_MODEL_DC
|
| 3 |
|
| 4 |
CIVITAI_API_KEY = os.environ.get("CIVITAI_API_KEY")
|
| 5 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
|
|
|
| 39 |
'votepurchase/RealVisXL_V4.0',
|
| 40 |
'votepurchase/juggernautXL_hyper_8step_sfw',
|
| 41 |
'votepurchase/ponyRealism_v21MainVAE',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
|
| 43 |
'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
|
| 44 |
'KBlueLeaf/Kohaku-XL-Zeta',
|
|
|
|
| 47 |
'Eugeoter/artiwaifu-diffusion-2.0',
|
| 48 |
'comin/IterComp',
|
| 49 |
'OnomaAIResearch/Illustrious-xl-early-release-v0',
|
| 50 |
+
'Laxhar/noobai-XL-1.0',
|
| 51 |
'Raelina/Rae-Diffusion-XL-V2',
|
| 52 |
'Raelina/Raemu-XL-V4',
|
| 53 |
'Raelina/Raehoshi-illust-XL',
|
|
|
|
| 60 |
"multimodalart/FLUX.1-dev2pro-full",
|
| 61 |
"Raelina/Raemu-Flux",
|
| 62 |
]
|
| 63 |
+
LOAD_DIFFUSERS_FORMAT_MODEL = LOAD_DIFFUSERS_FORMAT_MODEL + LOAD_DIFFUSERS_FORMAT_MODEL_DC
|
| 64 |
|
| 65 |
DIFFUSERS_FORMAT_LORAS = [
|
| 66 |
"nerijs/animation2k-flux",
|
| 67 |
"XLabs-AI/flux-RealismLora",
|
| 68 |
+
"Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design",
|
| 69 |
]
|
| 70 |
|
| 71 |
# List all Models for specified user
|
| 72 |
HF_MODEL_USER_LIKES = ["votepurchase"] # sorted by number of likes
|
| 73 |
HF_MODEL_USER_EX = ["John6666"] # sorted by a special rule
|
| 74 |
|
|
|
|
| 75 |
# - **Download Models**
|
| 76 |
DOWNLOAD_MODEL_LIST = [
|
| 77 |
]
|