diff --git a/CHANGELOG.md b/CHANGELOG.md
index 55fc85424..d91500b2e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -116,6 +116,8 @@ Plus tons of minor items and fixes - see [changelog](https://github.com/vladmand
- **modern-ui** add override field
- full **lint** updates
- use `diffusers` from main branch, no longer tied to release
+- improve diffusers/transformers/huggingface_hub progress reporting
+- use unique identifiers for all ui components
- fix handling of model configs if offline config is not available
- fix vae decode in backend original
- fix model path typos
diff --git a/modules/face/__init__.py b/modules/face/__init__.py
index d1ded8c37..d5d51e647 100644
--- a/modules/face/__init__.py
+++ b/modules/face/__init__.py
@@ -72,7 +72,7 @@ class Script(scripts.Script):
id_strength = gr.Slider(label='Strength', minimum=0.0, maximum=2.0, step=0.01, value=1.0)
id_conditioning = gr.Slider(label='Control', minimum=0.0, maximum=2.0, step=0.01, value=0.5)
with gr.Row(visible=True):
- id_cache = gr.Checkbox(label='Cache model', value=False)
+ id_cache = gr.Checkbox(label='Cache model', value=True)
with gr.Group(visible=False) as cfg_photomaker:
with gr.Row():
gr.HTML('  Tenecent ARC Lab PhotoMaker
')
diff --git a/modules/loader.py b/modules/loader.py
index 52b802eaa..0aad4d76b 100644
--- a/modules/loader.py
+++ b/modules/loader.py
@@ -53,19 +53,33 @@ timer.startup.record("pydantic")
import diffusers # pylint: disable=W0611,C0411
import diffusers.loaders.single_file # pylint: disable=W0611,C0411
+import huggingface_hub # pylint: disable=W0611,C0411
logging.getLogger("diffusers.loaders.single_file").setLevel(logging.ERROR)
+timer.startup.record("diffusers")
+
+
+# patch different progress bars
+import tqdm as tqdm_lib # pylint: disable=C0411
from tqdm.rich import tqdm # pylint: disable=W0611,C0411
diffusers.loaders.single_file.logging.tqdm = partial(tqdm, unit='C')
-import tqdm as tqdm_lib
-class _tqdm_cls:
+class _tqdm_cls():
def __call__(self, *args, **kwargs):
bar_format = 'Diffusers {rate_fmt}{postfix} {bar} {percentage:3.0f}% {n_fmt}/{total_fmt} {elapsed} {remaining} ' + '\x1b[38;5;71m' + '{desc}' + '\x1b[0m'
return tqdm_lib.tqdm(*args, bar_format=bar_format, ncols=80, colour='#327fba', **kwargs)
+class _tqdm_old(tqdm_lib.tqdm):
+ def __init__(self, *args, **kwargs):
+ kwargs.pop("name", None)
+ kwargs['bar_format'] = 'Diffusers {rate_fmt}{postfix} {bar} {percentage:3.0f}% {n_fmt}/{total_fmt} {elapsed} {remaining} ' + '\x1b[38;5;71m' + '{desc}' + '\x1b[0m'
+ kwargs['ncols'] = 80
+ super().__init__(*args, **kwargs)
+
+
transformers.utils.logging.tqdm = _tqdm_cls()
diffusers.pipelines.pipeline_utils.logging.tqdm = _tqdm_cls()
-timer.startup.record("diffusers")
+huggingface_hub._snapshot_download.hf_tqdm = _tqdm_old # pylint: disable=protected-access
+
def get_packages():
return {
diff --git a/modules/ui_control.py b/modules/ui_control.py
index eab565b04..dfa81a0c5 100644
--- a/modules/ui_control.py
+++ b/modules/ui_control.py
@@ -201,10 +201,10 @@ def create_ui(_blocks: gr.Blocks=None):
process_id = gr.Dropdown(label="Processor", choices=processors.list_models(), value='None')
model_id = gr.Dropdown(label="ControlNet", choices=controlnet.list_models(), value='None')
ui_common.create_refresh_button(model_id, controlnet.list_models, lambda: {"choices": controlnet.list_models(refresh=True)}, f'refresh_controlnet_models_{i}')
- model_strength = gr.Slider(label="Strength", minimum=0.01, maximum=2.0, step=0.01, value=1.0-i/10)
+ model_strength = gr.Slider(label="CN Strength", minimum=0.01, maximum=2.0, step=0.01, value=1.0)
control_start = gr.Slider(label="Start", minimum=0.0, maximum=1.0, step=0.05, value=0)
control_end = gr.Slider(label="End", minimum=0.0, maximum=1.0, step=0.05, value=1.0)
- control_mode = gr.Dropdown(label="Mode", choices=['', 'Canny', 'Tile', 'Depth', 'Blur', 'Pose', 'Gray', 'LQ'], value=0, type='index', visible=False)
+ control_mode = gr.Dropdown(label="CN Mode", choices=['', 'Canny', 'Tile', 'Depth', 'Blur', 'Pose', 'Gray', 'LQ'], value=0, type='index', visible=False)
reset_btn = ui_components.ToolButton(value=ui_symbols.reset)
image_upload = gr.UploadButton(label=ui_symbols.upload, file_types=['image'], elem_classes=['form', 'gradio-button', 'tool'])
image_reuse= ui_components.ToolButton(value=ui_symbols.reuse)
@@ -251,7 +251,7 @@ def create_ui(_blocks: gr.Blocks=None):
process_id = gr.Dropdown(label="Processor", choices=processors.list_models(), value='None')
model_id = gr.Dropdown(label="Adapter", choices=t2iadapter.list_models(), value='None')
ui_common.create_refresh_button(model_id, t2iadapter.list_models, lambda: {"choices": t2iadapter.list_models(refresh=True)}, f'refresh_adapter_models_{i}')
- model_strength = gr.Slider(label="Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0-i/10)
+ model_strength = gr.Slider(label="T2I Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0)
reset_btn = ui_components.ToolButton(value=ui_symbols.reset)
image_upload = gr.UploadButton(label=ui_symbols.upload, file_types=['image'], elem_classes=['form', 'gradio-button', 'tool'])
image_reuse= ui_components.ToolButton(value=ui_symbols.reuse)
@@ -295,7 +295,7 @@ def create_ui(_blocks: gr.Blocks=None):
process_id = gr.Dropdown(label="Processor", choices=processors.list_models(), value='None')
model_id = gr.Dropdown(label="ControlNet-XS", choices=xs.list_models(), value='None')
ui_common.create_refresh_button(model_id, xs.list_models, lambda: {"choices": xs.list_models(refresh=True)}, f'refresh_xs_models_{i}')
- model_strength = gr.Slider(label="Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0-i/10)
+ model_strength = gr.Slider(label="CN Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0)
control_start = gr.Slider(label="Start", minimum=0.0, maximum=1.0, step=0.05, value=0)
control_end = gr.Slider(label="End", minimum=0.0, maximum=1.0, step=0.05, value=1.0)
reset_btn = ui_components.ToolButton(value=ui_symbols.reset)
@@ -342,7 +342,7 @@ def create_ui(_blocks: gr.Blocks=None):
process_id = gr.Dropdown(label="Processor", choices=processors.list_models(), value='None')
model_id = gr.Dropdown(label="Model", choices=lite.list_models(), value='None')
ui_common.create_refresh_button(model_id, lite.list_models, lambda: {"choices": lite.list_models(refresh=True)}, f'refresh_lite_models_{i}')
- model_strength = gr.Slider(label="Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0-i/10)
+ model_strength = gr.Slider(label="CN Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0)
reset_btn = ui_components.ToolButton(value=ui_symbols.reset)
image_upload = gr.UploadButton(label=ui_symbols.upload, file_types=['image'], elem_classes=['form', 'gradio-button', 'tool'])
image_reuse= ui_components.ToolButton(value=ui_symbols.reuse)
@@ -385,7 +385,7 @@ def create_ui(_blocks: gr.Blocks=None):
with gr.Row():
enabled_cb = gr.Checkbox(enabled, label='', container=False, show_label=False)
model_id = gr.Dropdown(label="Reference", choices=reference.list_models(), value='Reference', visible=False)
- model_strength = gr.Slider(label="Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0, visible=False)
+ model_strength = gr.Slider(label="CN Strength", minimum=0.01, maximum=1.0, step=0.01, value=1.0, visible=False)
reset_btn = ui_components.ToolButton(value=ui_symbols.reset)
image_upload = gr.UploadButton(label=ui_symbols.upload, file_types=['image'], elem_classes=['form', 'gradio-button', 'tool'])
image_reuse= ui_components.ToolButton(value=ui_symbols.reuse)
@@ -434,21 +434,21 @@ def create_ui(_blocks: gr.Blocks=None):
with gr.Accordion('Leres Depth', open=True, elem_classes=['processor-settings']):
settings.append(gr.Checkbox(label="Boost", value=False))
settings.append(gr.Slider(label="Near threshold", minimum=0.0, maximum=1.0, step=0.01, value=0.0))
- settings.append(gr.Slider(label="Background threshold", minimum=0.0, maximum=1.0, step=0.01, value=0.0))
+ settings.append(gr.Slider(label="Depth threshold", minimum=0.0, maximum=1.0, step=0.01, value=0.0))
with gr.Accordion('MediaPipe Face', open=True, elem_classes=['processor-settings']):
settings.append(gr.Slider(label="Max faces", minimum=1, maximum=10, step=1, value=1))
- settings.append(gr.Slider(label="Min confidence", minimum=0.0, maximum=1.0, step=0.01, value=0.5))
+ settings.append(gr.Slider(label="Face confidence", minimum=0.0, maximum=1.0, step=0.01, value=0.5))
with gr.Accordion('Canny', open=True, elem_classes=['processor-settings']):
settings.append(gr.Slider(label="Low threshold", minimum=0, maximum=1000, step=1, value=100))
settings.append(gr.Slider(label="High threshold", minimum=0, maximum=1000, step=1, value=200))
with gr.Accordion('DWPose', open=True, elem_classes=['processor-settings']):
- settings.append(gr.Radio(label="Model", choices=['Tiny', 'Medium', 'Large'], value='Tiny'))
- settings.append(gr.Slider(label="Min confidence", minimum=0.0, maximum=1.0, step=0.01, value=0.3))
+ settings.append(gr.Radio(label="Pose Model", choices=['Tiny', 'Medium', 'Large'], value='Tiny'))
+ settings.append(gr.Slider(label="Pose confidence", minimum=0.0, maximum=1.0, step=0.01, value=0.3))
with gr.Accordion('SegmentAnything', open=True, elem_classes=['processor-settings']):
- settings.append(gr.Radio(label="Model", choices=['Base', 'Large'], value='Base'))
+ settings.append(gr.Radio(label="Segment Model", choices=['Base', 'Large'], value='Base'))
with gr.Accordion('Edge', open=True, elem_classes=['processor-settings']):
settings.append(gr.Checkbox(label="Parameter free", value=True))
- settings.append(gr.Radio(label="Mode", choices=['edge', 'gradient'], value='edge'))
+ settings.append(gr.Radio(label="Edge mode", choices=['edge', 'gradient'], value='edge'))
with gr.Accordion('Zoe Depth', open=True, elem_classes=['processor-settings']):
settings.append(gr.Checkbox(label="Gamma corrected", value=False))
with gr.Accordion('Marigold Depth', open=True, elem_classes=['processor-settings']):
@@ -456,7 +456,7 @@ def create_ui(_blocks: gr.Blocks=None):
settings.append(gr.Slider(label="Denoising steps", minimum=1, maximum=99, step=1, value=10))
settings.append(gr.Slider(label="Ensemble size", minimum=1, maximum=99, step=1, value=10))
with gr.Accordion('Depth Anything', open=True, elem_classes=['processor-settings']):
- settings.append(gr.Dropdown(label="Color map", choices=['none'] + masking.COLORMAP, value='inferno'))
+ settings.append(gr.Dropdown(label="Depth map", choices=['none'] + masking.COLORMAP, value='inferno'))
for setting in settings:
setting.change(fn=processors.update_settings, inputs=settings, outputs=[])
diff --git a/modules/ui_img2img.py b/modules/ui_img2img.py
index 46a2da06e..5e8aa464e 100644
--- a/modules/ui_img2img.py
+++ b/modules/ui_img2img.py
@@ -139,7 +139,7 @@ def create_ui():
inpaint_full_res_padding = gr.Slider(label='Padding', minimum=0, maximum=256, step=4, value=32, elem_id="img2img_inpaint_full_res_padding")
mask_alpha = gr.Slider(label="Alpha", minimum=0.0, maximum=1.0, step=0.05, value=1.0, elem_id="img2img_mask_alpha")
with gr.Row():
- inpainting_mask_invert = gr.Radio(label='Mode', choices=['masked', 'invert'], value='masked', type="index", elem_id="img2img_mask_mode")
+ inpainting_mask_invert = gr.Radio(label='Inpaint Mode', choices=['masked', 'invert'], value='masked', type="index", elem_id="img2img_mask_mode")
inpaint_full_res = gr.Radio(label="Inpaint area", choices=["full", "masked"], type="index", value="full", elem_id="img2img_inpaint_full_res")
inpainting_fill = gr.Radio(label='Masked content', choices=['fill', 'original', 'noise', 'nothing'], value='original', type="index", elem_id="img2img_inpainting_fill", visible=not shared.native)
diff --git a/modules/ui_loadsave.py b/modules/ui_loadsave.py
index 69d79f879..9f2aa4100 100644
--- a/modules/ui_loadsave.py
+++ b/modules/ui_loadsave.py
@@ -125,6 +125,8 @@ class UiLoadsave:
def iter_changes(self, values):
for i, name in enumerate(self.component_mapping):
+ # if '__init__' in name:
+ # continue
component = self.component_mapping[name]
choices = getattr(component, 'choices', None)
if type(choices) is list and len(choices) > 0: # fix gradio radio button choices being tuples
diff --git a/modules/ui_sections.py b/modules/ui_sections.py
index 4bd8c0b40..e32752447 100644
--- a/modules/ui_sections.py
+++ b/modules/ui_sections.py
@@ -179,7 +179,7 @@ def create_correction_inputs(tab):
with gr.Accordion(open=False, label="Corrections", elem_id=f"{tab}_corrections", elem_classes=["small-accordion"], visible=shared.native):
with gr.Group(visible=shared.native):
with gr.Row(elem_id=f"{tab}_hdr_mode_row"):
- hdr_mode = gr.Dropdown(label="Mode", choices=["Relative values", "Absolute values"], type="index", value="Relative values", elem_id=f"{tab}_hdr_mode", show_label=False)
+ hdr_mode = gr.Dropdown(label="Correction mode", choices=["Relative values", "Absolute values"], type="index", value="Relative values", elem_id=f"{tab}_hdr_mode", show_label=False)
gr.HTML('
')
with gr.Row(elem_id=f"{tab}_correction_row"):
hdr_brightness = gr.Slider(minimum=-1.0, maximum=1.0, step=0.1, value=0, label='Brightness', elem_id=f"{tab}_hdr_brightness")