mirror of
https://github.com/vladmandic/automatic
synced 2026-09-04 03:50:44 +02:00
theme tweaks
This commit is contained in:
@@ -5,6 +5,7 @@ Main ToDo list can be found at [GitHub projects](https://github.com/users/vladma
|
||||
## Candidates for next release
|
||||
|
||||
- defork
|
||||
- stable diffusion 3.0
|
||||
- stable cascade: <https://github.com/vladmandic/automatic/wiki/Stable-Cascade>
|
||||
- ipadapter masking: <https://github.com/huggingface/diffusers/pull/6847>
|
||||
- x-adapter: <https://github.com/showlab/X-Adapter>
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@
|
||||
{"id":"","label":"Refiner start","localized":"","hint":"Refiner pass will start when base model is this much complete (set to 0 or 1 to run after full base model run)"},
|
||||
{"id":"","label":"Refiner steps","localized":"","hint":"Number of steps to use for refiner pass"},
|
||||
{"id":"","label":"Secondary CFG Scale","localized":"","hint":"CFG scale used for refiner pass"},
|
||||
{"id":"","label":"Guidance rescale","localized":"","hint":"Rescale CFG generated noise to avoid overexposed images"},
|
||||
{"id":"","label":"Rescale guidance","localized":"","hint":"Rescale CFG generated noise to avoid overexposed images"},
|
||||
{"id":"","label":"Secondary Prompt","localized":"","hint":"Prompt used for both second encoder in base model (if it exists) and for refiner pass (if enabled)"},
|
||||
{"id":"","label":"Secondary negative prompt","localized":"","hint":"Negative prompt used for both second encoder in base model (if it exists) and for refiner pass (if enabled)"},
|
||||
{"id":"","label":"Width","localized":"","hint":"Image width"},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; src: local('NotoSans'), url('notosans-nerdfont-regular.ttf') }
|
||||
:root { --left-column: 550px; }
|
||||
:root { --left-column: 520px; }
|
||||
a { font-weight: bold; cursor: pointer; }
|
||||
h2 { margin-top: 1em !important; font-size: var(--text-xxl) !important; }
|
||||
footer { display: none; margin-top: 0 !important;}
|
||||
@@ -45,7 +45,7 @@ input[type='color'] { width: 64px; height: 32px; }
|
||||
.gradio-textbox { overflow: visible !important; }
|
||||
.gradio-radio { padding: 0 !important; width: max-content !important; }
|
||||
.gradio-slider { margin-right: var(--spacing-sm) !important; width: max-content !important }
|
||||
.gradio-slider input[type="number"] { width: 6em; font-size: var(--text-xs); height: 16px; text-align: right; }
|
||||
.gradio-slider input[type="number"] { width: 5em; font-size: var(--text-xs); height: 16px; text-align: right; padding: 0; }
|
||||
|
||||
/* custom gradio elements */
|
||||
.accordion-compact { padding: 8px 0px 4px 0px !important; }
|
||||
@@ -301,9 +301,10 @@ table.settings-value-table td { padding: 0.4em; border: 1px solid #ccc; max-widt
|
||||
--spacing-xxs: 1px;
|
||||
--spacing-xs: 2px;
|
||||
--spacing-sm: 3px;
|
||||
--spacing-lg: 4px;
|
||||
--spacing-xl: 5px;
|
||||
--spacing-xxl: 6px;
|
||||
--spacing-md: 4px;
|
||||
--spacing-lg: 5px;
|
||||
--spacing-xl: 6px;
|
||||
--spacing-xxl: 7px;
|
||||
}
|
||||
|
||||
@media (hover: none) and (pointer: coarse) { /* Apply different styles for devices with coarse pointers dependant on screen resolution */
|
||||
|
||||
@@ -22,6 +22,7 @@ error_reported = False
|
||||
reset_needed = False
|
||||
skip_hypertile = False
|
||||
|
||||
|
||||
def iterative_closest_divisors(hw:int, aspect_ratio:float) -> tuple[int, int]:
|
||||
"""
|
||||
Finds h and w such that h*w = hw and h/w = aspect_ratio
|
||||
@@ -34,6 +35,7 @@ def iterative_closest_divisors(hw:int, aspect_ratio:float) -> tuple[int, int]:
|
||||
closest_pair = pairs[ratios.index(closest_ratio)] # closest pair of divisors to aspect_ratio
|
||||
return closest_pair
|
||||
|
||||
|
||||
@cache
|
||||
def find_hw_candidates(hw:int, aspect_ratio:float) -> tuple[int, int]:
|
||||
"""
|
||||
@@ -96,7 +98,7 @@ def split_attention(layer: nn.Module, tile_size: int=256, min_tile_size: int=128
|
||||
def self_attn_forward(forward: Callable) -> Callable:
|
||||
@wraps(forward)
|
||||
def wrapper(*args, **kwargs):
|
||||
global height, width, max_h, max_w, reset_needed, error_reported, skip_hypertile # pylint: disable=global-statement
|
||||
global height, width, max_h, max_w, reset_needed, error_reported # pylint: disable=global-statement
|
||||
if skip_hypertile:
|
||||
return forward(*args, **kwargs)
|
||||
x = args[0]
|
||||
@@ -198,7 +200,6 @@ def context_hypertile_vae(p):
|
||||
return split_attention(vae, tile_size=tile_size, min_tile_size=128, swap_size=shared.opts.hypertile_vae_swap_size)
|
||||
|
||||
|
||||
|
||||
def context_hypertile_unet(p):
|
||||
from modules import shared
|
||||
if p.sd_model is None or not shared.opts.hypertile_unet_enabled:
|
||||
|
||||
@@ -106,7 +106,7 @@ def create_advanced_inputs(tab):
|
||||
cfg_end = gr.Slider(minimum=0.0, maximum=1.0, step=0.1, label='CFG end', value=1.0, elem_id=f"{tab}_cfg_end")
|
||||
with gr.Row():
|
||||
image_cfg_scale = gr.Slider(minimum=0.0, maximum=30.0, step=0.1, label='Secondary guidance', value=6.0, elem_id=f"{tab}_image_cfg_scale")
|
||||
diffusers_guidance_rescale = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='Guidance rescale', value=0.7, elem_id=f"{tab}_image_cfg_rescale", visible=shared.backend == shared.Backend.DIFFUSERS)
|
||||
diffusers_guidance_rescale = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='Rescale guidance', value=0.7, elem_id=f"{tab}_image_cfg_rescale", visible=shared.backend == shared.Backend.DIFFUSERS)
|
||||
diffusers_sag_scale = gr.Slider(minimum=0.0, maximum=1.0, step=0.05, label='Attention guidance', value=0.0, elem_id=f"{tab}_image_sag_scale", visible=shared.backend == shared.Backend.DIFFUSERS)
|
||||
with gr.Row():
|
||||
clip_skip = gr.Slider(label='CLIP skip', value=1, minimum=0, maximum=12, step=0.1, elem_id=f"{tab}_clip_skip", interactive=True)
|
||||
|
||||
+1
-1
Submodule wiki updated: ddd8158ac1...0c9322422f
Reference in New Issue
Block a user