cn always generate blended processed image

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2025-07-18 18:19:56 -04:00
parent 1b36607bce
commit e576ea4319
4 changed files with 16 additions and 13 deletions
+2 -1
View File
@@ -94,6 +94,7 @@ def preprocess_image(
# run image processors
processed_images = []
blended_image = None
for i, process in enumerate(active_process): # list[image]
debug_log(f'Control: i={i+1} process="{process.processor_id}" input={masked_image} override={process.override}')
processed_image = process(
@@ -244,4 +245,4 @@ def preprocess_image(
t1 = time.time()
process_timer.add('proc', t1-t0)
return processed_image
return processed_image, blended_image
+3 -1
View File
@@ -506,7 +506,9 @@ def control_run(state: str = '', # pylint: disable=keyword-arg-before-vararg
continue
index += 1
processed_image = preprocess_image(p, pipe, input_image, init_image, mask, input_type, unit_type, active_process, active_model, selected_models, has_models)
processed_image, blended_image = preprocess_image(p, pipe, input_image, init_image, mask, input_type, unit_type, active_process, active_model, selected_models, has_models)
if is_generator:
yield (None, blended_image, '') # result is control_output, proces_output
# final check
if has_models:
+10 -10
View File
@@ -253,7 +253,7 @@ def create_ui(_blocks: gr.Blocks=None):
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)
process_btn= ui_components.ToolButton(value=ui_symbols.preview)
btn_preview= ui_components.ToolButton(value=ui_symbols.preview)
image_preview = gr.Image(label="Input", type="pil", height=128, width=128, visible=False, interactive=True, show_label=False, show_download_button=False, container=False, elem_id=f'control_unit-{i}-override')
controlnet_ui_units.append(unit_ui)
units.append(unit.Unit(
@@ -267,7 +267,7 @@ def create_ui(_blocks: gr.Blocks=None):
model_id = model_id,
model_strength = model_strength,
preview_process = preview_process,
preview_btn = process_btn,
preview_btn = btn_preview,
image_upload = image_upload,
image_reuse = image_reuse,
image_preview = image_preview,
@@ -302,7 +302,7 @@ def create_ui(_blocks: gr.Blocks=None):
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)
process_btn= ui_components.ToolButton(value=ui_symbols.preview)
btn_preview= ui_components.ToolButton(value=ui_symbols.preview)
image_preview = gr.Image(label="Input", show_label=False, type="pil", interactive=False, height=128, width=128, visible=False, elem_id=f'control_unit-{i}-override')
adapter_ui_units.append(unit_ui)
units.append(unit.Unit(
@@ -316,7 +316,7 @@ def create_ui(_blocks: gr.Blocks=None):
model_id = model_id,
model_strength = model_strength,
preview_process = preview_process,
preview_btn = process_btn,
preview_btn = btn_preview,
image_upload = image_upload,
image_reuse = image_reuse,
image_preview = image_preview,
@@ -349,7 +349,7 @@ def create_ui(_blocks: gr.Blocks=None):
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)
process_btn= ui_components.ToolButton(value=ui_symbols.preview)
btn_preview= ui_components.ToolButton(value=ui_symbols.preview)
image_preview = gr.Image(label="Input", show_label=False, type="pil", interactive=False, height=128, width=128, visible=False, elem_id=f'control_unit-{i}-override')
controlnetxs_ui_units.append(unit_ui)
units.append(unit.Unit(
@@ -363,7 +363,7 @@ def create_ui(_blocks: gr.Blocks=None):
model_id = model_id,
model_strength = model_strength,
preview_process = preview_process,
preview_btn = process_btn,
preview_btn = btn_preview,
image_upload = image_upload,
image_reuse = image_reuse,
image_preview = image_preview,
@@ -396,7 +396,7 @@ def create_ui(_blocks: gr.Blocks=None):
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)
image_preview = gr.Image(label="Input", show_label=False, type="pil", interactive=False, height=128, width=128, visible=False, elem_id=f'control_unit-{i}-override')
process_btn= ui_components.ToolButton(value=ui_symbols.preview)
btn_preview= ui_components.ToolButton(value=ui_symbols.preview)
lite_ui_units.append(unit_ui)
units.append(unit.Unit(
unit_type = 'lite',
@@ -409,7 +409,7 @@ def create_ui(_blocks: gr.Blocks=None):
model_id = model_id,
model_strength = model_strength,
preview_process = preview_process,
preview_btn = process_btn,
preview_btn = btn_preview,
image_upload = image_upload,
image_reuse = image_reuse,
image_preview = image_preview,
@@ -440,7 +440,7 @@ def create_ui(_blocks: gr.Blocks=None):
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)
image_preview = gr.Image(label="Input", show_label=False, type="pil", interactive=False, height=128, width=128, visible=False, elem_id=f'control_unit-{i}-override')
process_btn= ui_components.ToolButton(value=ui_symbols.preview)
btn_preview= ui_components.ToolButton(value=ui_symbols.preview)
units.append(unit.Unit(
unit_type = 'reference',
index = i,
@@ -452,7 +452,7 @@ def create_ui(_blocks: gr.Blocks=None):
model_id = model_id,
model_strength = model_strength,
preview_process = preview_process,
preview_btn = process_btn,
preview_btn = btn_preview,
image_upload = image_upload,
image_reuse = image_reuse,
image_preview = image_preview,
+1 -1
View File
@@ -330,7 +330,7 @@ def apply_control(field):
active_process, active_model, active_strength, active_start, active_end = run.check_active(p, unit.type, run.unit.current)
has_models, selected_models, control_conditioning, control_guidance_start, control_guidance_end = run.check_enabled(p, unit.type, run.unit.current, active_model, active_strength, active_start, active_end)
pipe = run.set_pipe(p, has_models, unit.type, selected_models, active_model, active_strength, control_conditioning, control_guidance_start, control_guidance_end)
_processed_image = processor.preprocess_image(p, pipe, input_image=init_images[0], unit_type=unit.type, active_process=active_process, active_model=active_model, selected_models=selected_models, has_models=has_models)
_processed_image, _blended_image = processor.preprocess_image(p, pipe, input_image=init_images[0], unit_type=unit.type, active_process=active_process, active_model=active_model, selected_models=selected_models, has_models=has_models)
if pipe is not None:
shared.sd_model = pipe
elif field == 'control_start':