mirror of
https://github.com/lllyasviel/stable-diffusion-webui-forge.git
synced 2026-04-30 11:11:15 +00:00
distilled cfg scale
This commit is contained in:
@@ -78,10 +78,13 @@ class Flux(ForgeDiffusionEngine):
|
|||||||
cond_l, pooled_l = self.text_processing_engine_l(prompt)
|
cond_l, pooled_l = self.text_processing_engine_l(prompt)
|
||||||
cond_t5 = self.text_processing_engine_t5(prompt)
|
cond_t5 = self.text_processing_engine_t5(prompt)
|
||||||
|
|
||||||
|
distilled_cfg_scale = getattr(prompt, 'distilled_cfg_scale', 3.5) or 3.5
|
||||||
|
print(f'distilled_cfg_scale = {distilled_cfg_scale}')
|
||||||
|
|
||||||
cond = dict(
|
cond = dict(
|
||||||
crossattn=cond_t5,
|
crossattn=cond_t5,
|
||||||
vector=pooled_l,
|
vector=pooled_l,
|
||||||
guidance=torch.FloatTensor([3.5] * len(prompt))
|
guidance=torch.FloatTensor([distilled_cfg_scale] * len(prompt))
|
||||||
)
|
)
|
||||||
|
|
||||||
return cond
|
return cond
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ def process_batch(p, input, output_dir, inpaint_mask_dir, args, to_scale=False,
|
|||||||
return batch_results
|
return batch_results
|
||||||
|
|
||||||
|
|
||||||
def img2img_function(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, img2img_batch_source_type: str, img2img_batch_upload: list, *args):
|
def img2img_function(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, distilled_cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, img2img_batch_source_type: str, img2img_batch_upload: list, *args):
|
||||||
|
|
||||||
override_settings = create_override_settings_dict(override_settings_texts)
|
override_settings = create_override_settings_dict(override_settings_texts)
|
||||||
|
|
||||||
@@ -218,6 +218,7 @@ def img2img_function(id_task: str, request: gr.Request, mode: int, prompt: str,
|
|||||||
inpaint_full_res_padding=inpaint_full_res_padding,
|
inpaint_full_res_padding=inpaint_full_res_padding,
|
||||||
inpainting_mask_invert=inpainting_mask_invert,
|
inpainting_mask_invert=inpainting_mask_invert,
|
||||||
override_settings=override_settings,
|
override_settings=override_settings,
|
||||||
|
distilled_cfg_scale=distilled_cfg_scale
|
||||||
)
|
)
|
||||||
|
|
||||||
p.scripts = modules.scripts.scripts_img2img
|
p.scripts = modules.scripts.scripts_img2img
|
||||||
@@ -259,5 +260,5 @@ def img2img_function(id_task: str, request: gr.Request, mode: int, prompt: str,
|
|||||||
return processed.images + processed.extra_images, generation_info_js, plaintext_to_html(processed.info), plaintext_to_html(processed.comments, classname="comments")
|
return processed.images + processed.extra_images, generation_info_js, plaintext_to_html(processed.info), plaintext_to_html(processed.comments, classname="comments")
|
||||||
|
|
||||||
|
|
||||||
def img2img(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, img2img_batch_source_type: str, img2img_batch_upload: list, *args):
|
def img2img(id_task: str, request: gr.Request, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur: int, mask_alpha: float, inpainting_fill: int, n_iter: int, batch_size: int, cfg_scale: float, distilled_cfg_scale: float, image_cfg_scale: float, denoising_strength: float, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, img2img_batch_use_png_info: bool, img2img_batch_png_info_props: list, img2img_batch_png_info_dir: str, img2img_batch_source_type: str, img2img_batch_upload: list, *args):
|
||||||
return main_thread.run_and_wait_result(img2img_function, id_task, request, mode, prompt, negative_prompt, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur, mask_alpha, inpainting_fill, n_iter, batch_size, cfg_scale, image_cfg_scale, denoising_strength, selected_scale_tab, height, width, scale_by, resize_mode, inpaint_full_res, inpaint_full_res_padding, inpainting_mask_invert, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, override_settings_texts, img2img_batch_use_png_info, img2img_batch_png_info_props, img2img_batch_png_info_dir, img2img_batch_source_type, img2img_batch_upload, *args)
|
return main_thread.run_and_wait_result(img2img_function, id_task, request, mode, prompt, negative_prompt, prompt_styles, init_img, sketch, sketch_fg, init_img_with_mask, init_img_with_mask_fg, inpaint_color_sketch, inpaint_color_sketch_fg, init_img_inpaint, init_mask_inpaint, mask_blur, mask_alpha, inpainting_fill, n_iter, batch_size, cfg_scale, distilled_cfg_scale, image_cfg_scale, denoising_strength, selected_scale_tab, height, width, scale_by, resize_mode, inpaint_full_res, inpaint_full_res_padding, inpainting_mask_invert, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, override_settings_texts, img2img_batch_use_png_info, img2img_batch_png_info_props, img2img_batch_png_info_dir, img2img_batch_source_type, img2img_batch_upload, *args)
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ class StableDiffusionProcessing:
|
|||||||
n_iter: int = 1
|
n_iter: int = 1
|
||||||
steps: int = 50
|
steps: int = 50
|
||||||
cfg_scale: float = 7.0
|
cfg_scale: float = 7.0
|
||||||
|
distilled_cfg_scale: float = 3.5
|
||||||
width: int = 512
|
width: int = 512
|
||||||
height: int = 512
|
height: int = 512
|
||||||
restore_faces: bool = None
|
restore_faces: bool = None
|
||||||
@@ -475,8 +476,8 @@ class StableDiffusionProcessing:
|
|||||||
return cache[1]
|
return cache[1]
|
||||||
|
|
||||||
def setup_conds(self):
|
def setup_conds(self):
|
||||||
prompts = prompt_parser.SdConditioning(self.prompts, width=self.width, height=self.height)
|
prompts = prompt_parser.SdConditioning(self.prompts, width=self.width, height=self.height, distilled_cfg_scale=self.distilled_cfg_scale)
|
||||||
negative_prompts = prompt_parser.SdConditioning(self.negative_prompts, width=self.width, height=self.height, is_negative_prompt=True)
|
negative_prompts = prompt_parser.SdConditioning(self.negative_prompts, width=self.width, height=self.height, is_negative_prompt=True, distilled_cfg_scale=self.distilled_cfg_scale)
|
||||||
|
|
||||||
sampler_config = sd_samplers.find_sampler_config(self.sampler_name)
|
sampler_config = sd_samplers.find_sampler_config(self.sampler_name)
|
||||||
total_steps = sampler_config.total_steps(self.steps) if sampler_config else self.steps
|
total_steps = sampler_config.total_steps(self.steps) if sampler_config else self.steps
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ class SdConditioning(list):
|
|||||||
A list with prompts for stable diffusion's conditioner model.
|
A list with prompts for stable diffusion's conditioner model.
|
||||||
Can also specify width and height of created image - SDXL needs it.
|
Can also specify width and height of created image - SDXL needs it.
|
||||||
"""
|
"""
|
||||||
def __init__(self, prompts, is_negative_prompt=False, width=None, height=None, copy_from=None):
|
def __init__(self, prompts, is_negative_prompt=False, width=None, height=None, copy_from=None, distilled_cfg_scale=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.extend(prompts)
|
self.extend(prompts)
|
||||||
|
|
||||||
@@ -151,6 +151,7 @@ class SdConditioning(list):
|
|||||||
self.is_negative_prompt = is_negative_prompt or getattr(copy_from, 'is_negative_prompt', False)
|
self.is_negative_prompt = is_negative_prompt or getattr(copy_from, 'is_negative_prompt', False)
|
||||||
self.width = width or getattr(copy_from, 'width', None)
|
self.width = width or getattr(copy_from, 'width', None)
|
||||||
self.height = height or getattr(copy_from, 'height', None)
|
self.height = height or getattr(copy_from, 'height', None)
|
||||||
|
self.distilled_cfg_scale = distilled_cfg_scale or getattr(copy_from, 'distilled_cfg_scale', None)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import gradio as gr
|
|||||||
from modules_forge import main_thread
|
from modules_forge import main_thread
|
||||||
|
|
||||||
|
|
||||||
def txt2img_create_processing(id_task: str, request: gr.Request, prompt: str, negative_prompt: str, prompt_styles, n_iter: int, batch_size: int, cfg_scale: float, height: int, width: int, enable_hr: bool, denoising_strength: float, hr_scale: float, hr_upscaler: str, hr_second_pass_steps: int, hr_resize_x: int, hr_resize_y: int, hr_checkpoint_name: str, hr_sampler_name: str, hr_scheduler: str, hr_prompt: str, hr_negative_prompt, override_settings_texts, *args, force_enable_hr=False):
|
def txt2img_create_processing(id_task: str, request: gr.Request, prompt: str, negative_prompt: str, prompt_styles, n_iter: int, batch_size: int, cfg_scale: float, distilled_cfg_scale: float, height: int, width: int, enable_hr: bool, denoising_strength: float, hr_scale: float, hr_upscaler: str, hr_second_pass_steps: int, hr_resize_x: int, hr_resize_y: int, hr_checkpoint_name: str, hr_sampler_name: str, hr_scheduler: str, hr_prompt: str, hr_negative_prompt, override_settings_texts, *args, force_enable_hr=False):
|
||||||
override_settings = create_override_settings_dict(override_settings_texts)
|
override_settings = create_override_settings_dict(override_settings_texts)
|
||||||
|
|
||||||
if force_enable_hr:
|
if force_enable_hr:
|
||||||
@@ -28,6 +28,7 @@ def txt2img_create_processing(id_task: str, request: gr.Request, prompt: str, ne
|
|||||||
batch_size=batch_size,
|
batch_size=batch_size,
|
||||||
n_iter=n_iter,
|
n_iter=n_iter,
|
||||||
cfg_scale=cfg_scale,
|
cfg_scale=cfg_scale,
|
||||||
|
distilled_cfg_scale=distilled_cfg_scale,
|
||||||
width=width,
|
width=width,
|
||||||
height=height,
|
height=height,
|
||||||
enable_hr=enable_hr,
|
enable_hr=enable_hr,
|
||||||
|
|||||||
@@ -306,6 +306,9 @@ def create_ui():
|
|||||||
batch_size = gr.Slider(minimum=1, maximum=8, step=1, label='Batch size', value=1, elem_id="txt2img_batch_size")
|
batch_size = gr.Slider(minimum=1, maximum=8, step=1, label='Batch size', value=1, elem_id="txt2img_batch_size")
|
||||||
|
|
||||||
elif category == "cfg":
|
elif category == "cfg":
|
||||||
|
with gr.Row():
|
||||||
|
from backend.args import args
|
||||||
|
distilled_cfg_scale = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, label='Distilled CFG Scale', value=3.5, elem_id="txt2img_distilled_cfg_scale", visible=args.i_am_lllyasviel)
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
cfg_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.5, label='CFG Scale', value=7.0, elem_id="txt2img_cfg_scale")
|
cfg_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.5, label='CFG Scale', value=7.0, elem_id="txt2img_cfg_scale")
|
||||||
|
|
||||||
@@ -393,6 +396,7 @@ def create_ui():
|
|||||||
batch_count,
|
batch_count,
|
||||||
batch_size,
|
batch_size,
|
||||||
cfg_scale,
|
cfg_scale,
|
||||||
|
distilled_cfg_scale,
|
||||||
height,
|
height,
|
||||||
width,
|
width,
|
||||||
enable_hr,
|
enable_hr,
|
||||||
@@ -456,6 +460,7 @@ def create_ui():
|
|||||||
PasteField(toprow.prompt, "Prompt", api="prompt"),
|
PasteField(toprow.prompt, "Prompt", api="prompt"),
|
||||||
PasteField(toprow.negative_prompt, "Negative prompt", api="negative_prompt"),
|
PasteField(toprow.negative_prompt, "Negative prompt", api="negative_prompt"),
|
||||||
PasteField(cfg_scale, "CFG scale", api="cfg_scale"),
|
PasteField(cfg_scale, "CFG scale", api="cfg_scale"),
|
||||||
|
PasteField(distilled_cfg_scale, "Distilled CFG scale", api="distilled_cfg_scale"),
|
||||||
PasteField(width, "Size-1", api="width"),
|
PasteField(width, "Size-1", api="width"),
|
||||||
PasteField(height, "Size-2", api="height"),
|
PasteField(height, "Size-2", api="height"),
|
||||||
PasteField(batch_size, "Batch size", api="batch_size"),
|
PasteField(batch_size, "Batch size", api="batch_size"),
|
||||||
@@ -483,17 +488,6 @@ def create_ui():
|
|||||||
|
|
||||||
steps = scripts.scripts_txt2img.script('Sampler').steps
|
steps = scripts.scripts_txt2img.script('Sampler').steps
|
||||||
|
|
||||||
txt2img_preview_params = [
|
|
||||||
toprow.prompt,
|
|
||||||
toprow.negative_prompt,
|
|
||||||
steps,
|
|
||||||
scripts.scripts_txt2img.script('Sampler').sampler_name,
|
|
||||||
cfg_scale,
|
|
||||||
scripts.scripts_txt2img.script('Seed').seed,
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
]
|
|
||||||
|
|
||||||
toprow.ui_styles.dropdown.change(fn=wrap_queued_call(update_token_counter), inputs=[toprow.prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.token_counter])
|
toprow.ui_styles.dropdown.change(fn=wrap_queued_call(update_token_counter), inputs=[toprow.prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.token_counter])
|
||||||
toprow.ui_styles.dropdown.change(fn=wrap_queued_call(update_negative_prompt_token_counter), inputs=[toprow.negative_prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.negative_token_counter])
|
toprow.ui_styles.dropdown.change(fn=wrap_queued_call(update_negative_prompt_token_counter), inputs=[toprow.negative_prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.negative_token_counter])
|
||||||
toprow.token_button.click(fn=wrap_queued_call(update_token_counter), inputs=[toprow.prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.token_counter])
|
toprow.token_button.click(fn=wrap_queued_call(update_token_counter), inputs=[toprow.prompt, steps, toprow.ui_styles.dropdown], outputs=[toprow.token_counter])
|
||||||
@@ -653,6 +647,9 @@ def create_ui():
|
|||||||
denoising_strength = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label='Denoising strength', value=0.75, elem_id="img2img_denoising_strength")
|
denoising_strength = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label='Denoising strength', value=0.75, elem_id="img2img_denoising_strength")
|
||||||
|
|
||||||
elif category == "cfg":
|
elif category == "cfg":
|
||||||
|
with gr.Row():
|
||||||
|
from backend.args import args as backend_args
|
||||||
|
distilled_cfg_scale = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, label='Distilled CFG Scale', value=3.5, elem_id="img2img_distilled_cfg_scale", visible=backend_args.i_am_lllyasviel)
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
cfg_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.5, label='CFG Scale', value=7.0, elem_id="img2img_cfg_scale")
|
cfg_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.5, label='CFG Scale', value=7.0, elem_id="img2img_cfg_scale")
|
||||||
image_cfg_scale = gr.Slider(minimum=0, maximum=3.0, step=0.05, label='Image CFG Scale', value=1.5, elem_id="img2img_image_cfg_scale", visible=False)
|
image_cfg_scale = gr.Slider(minimum=0, maximum=3.0, step=0.05, label='Image CFG Scale', value=1.5, elem_id="img2img_image_cfg_scale", visible=False)
|
||||||
@@ -734,6 +731,7 @@ def create_ui():
|
|||||||
batch_count,
|
batch_count,
|
||||||
batch_size,
|
batch_size,
|
||||||
cfg_scale,
|
cfg_scale,
|
||||||
|
distilled_cfg_scale,
|
||||||
image_cfg_scale,
|
image_cfg_scale,
|
||||||
denoising_strength,
|
denoising_strength,
|
||||||
selected_scale_tab,
|
selected_scale_tab,
|
||||||
@@ -830,6 +828,7 @@ def create_ui():
|
|||||||
(toprow.prompt, "Prompt"),
|
(toprow.prompt, "Prompt"),
|
||||||
(toprow.negative_prompt, "Negative prompt"),
|
(toprow.negative_prompt, "Negative prompt"),
|
||||||
(cfg_scale, "CFG scale"),
|
(cfg_scale, "CFG scale"),
|
||||||
|
(distilled_cfg_scale, "Distilled CFG scale"),
|
||||||
(image_cfg_scale, "Image CFG scale"),
|
(image_cfg_scale, "Image CFG scale"),
|
||||||
(width, "Size-1"),
|
(width, "Size-1"),
|
||||||
(height, "Size-2"),
|
(height, "Size-2"),
|
||||||
|
|||||||
Reference in New Issue
Block a user