keep previous processed state

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2025-08-31 15:20:15 -04:00
parent b2dbef53e5
commit 9743c8e4bf
16 changed files with 39 additions and 33 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ class Script(scripts_manager.Script):
app = get_app('buffalo_l')
from modules.face.faceid import face_id
processed_images = face_id(p, app=app, source_images=input_images, model=ip_model, override=ip_override, cache=ip_cache, scale=ip_strength, structure=ip_structure) # run faceid pipeline
processed = processing.Processed(p, images_list=processed_images, seed=p.seed, subseed=p.subseed, index_of_first_image=0) # manually created processed object
processed = processing.get_processed(p, images_list=processed_images, seed=p.seed, subseed=p.subseed, index_of_first_image=0) # manually created processed object
elif mode == 'PhotoMaker': # photomaker creates pipeline and triggers original process_images
from modules.face.insightface import get_app
app = get_app('buffalo_l')
+1 -1
View File
@@ -317,7 +317,7 @@ def img2img(id_task: str, state: str, mode: int,
p.is_batch = mode == 5
if p.is_batch:
process_batch(p, img2img_batch_files, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, args)
processed = processing.Processed(p, [], p.seed, "")
processed = processing.get_processed(p, [], p.seed, "")
else:
processed = scripts_manager.scripts_img2img.run(p, *args)
if processed is None:
+18 -11
View File
@@ -27,6 +27,7 @@ get_sampler_index = processing_helpers.get_sampler_index
validate_sample = processing_helpers.validate_sample
decode_first_stage = processing_helpers.decode_first_stage
images_tensor_to_samples = processing_helpers.images_tensor_to_samples
processed = None # last known processed results
class Processed:
@@ -113,6 +114,12 @@ class Processed:
return f'{self.__class__.__name__}: {self.__dict__}'
def get_processed(*args, **kwargs):
global processed # pylint: disable=global-statement
processed = Processed(*args, **kwargs)
return processed
def process_images(p: StableDiffusionProcessing) -> Processed:
timer.process.reset()
debug(f'Process images: {vars(p)}')
@@ -133,7 +140,7 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
p.override_settings.pop(k, None)
for k in p.override_settings.keys():
stored_opts[k] = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default
processed = None
results = None
try:
# if no checkpoint override or the override checkpoint can't be found, remove override entry and load opts checkpoint
if p.override_settings.get('sd_model_checkpoint', None) is not None and sd_checkpoint.checkpoint_aliases.get(p.override_settings.get('sd_model_checkpoint')) is None:
@@ -196,11 +203,11 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
shared.log.debug(f'Torch profile: {profile_args}')
shared.profiler = torch.profiler.profile(**profile_args)
shared.profiler.start()
processed = process_images_inner(p)
results = process_images_inner(p)
errors.profile_torch(shared.profiler, 'Process')
else:
with context_hypertile_vae(p), context_hypertile_unet(p):
processed = process_images_inner(p)
results = process_images_inner(p)
finally:
script_callbacks.after_process_callback(p)
@@ -215,7 +222,7 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
if k == 'sd_vae':
sd_vae.reload_vae_weights()
timer.process.record('post')
return processed
return results
def process_init(p: StableDiffusionProcessing):
@@ -399,10 +406,10 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
samples = None
timer.process.record('init')
if p.scripts is not None and isinstance(p.scripts, scripts_manager.ScriptRunner):
processed = p.scripts.process_images(p)
if processed is not None:
samples = processed.images
for script_image, script_infotext in zip(processed.images, processed.infotexts):
results = p.scripts.process_images(p)
if results is not None:
samples = results.images
for script_image, script_infotext in zip(results.images, results.infotexts):
output_images.append(script_image)
infotexts.append(script_infotext)
if samples is None:
@@ -453,7 +460,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
if shared.opts.grid_save:
images.save_image(grid, p.outpath_grids, "", p.all_seeds[0], p.all_prompts[0], shared.opts.grid_format, info=grid_info, p=p, grid=True) # main save grid
processed = Processed(
results = Processed(
p,
images_list=output_images,
seed=p.all_seeds[0],
@@ -464,7 +471,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
infotexts=infotexts,
)
if p.scripts is not None and isinstance(p.scripts, scripts_manager.ScriptRunner) and not (shared.state.interrupted or shared.state.skipped):
p.scripts.postprocess(p, processed)
p.scripts.postprocess(p, results)
timer.process.record('post')
p.ops = list(set(p.ops))
if not p.disable_extra_networks:
@@ -474,4 +481,4 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
if shared.cmd_opts.lowvram or shared.cmd_opts.medvram:
devices.torch_gc(force=True, reason='final')
return processed
return results
+1 -1
View File
@@ -2,7 +2,7 @@
import os
import torch
from modules import devices, shared
from modules import shared
torch_version = float(torch.__version__[:3])
+1 -2
View File
@@ -1,7 +1,6 @@
# pylint: disable=relative-beyond-top-level,redefined-builtin,protected-access
from typing import Tuple, Optional
from typing import Tuple
import torch
from ...common import use_torch_compile # noqa: TID252
+1 -1
View File
@@ -205,7 +205,7 @@ class Script(scripts_manager.Script):
self.offload(offload)
frames = self.generate(p, model)
devices.torch_gc()
processed = processing.Processed(p, images_list=frames)
processed = processing.get_processed(p, images_list=frames)
shared.state.end()
return processed
+1 -1
View File
@@ -210,7 +210,7 @@ class Script(scripts_manager.Script):
images.append(image)
shared.sd_model.disable_freeu()
processed = processing.Processed(p, images)
processed = processing.get_processed(p, images)
return processed
def after(self, p: processing.StableDiffusionProcessing, processed: processing.Processed, *args): # pylint: disable=arguments-differ, unused-argument
+2 -2
View File
@@ -2,7 +2,7 @@ import copy
import ast
import gradio as gr
from modules import scripts_manager
from modules.processing import Processed
from modules.processing import Processed, get_processed
from modules.shared import opts, cmd_opts, state # pylint: disable=unused-import
@@ -87,4 +87,4 @@ __webuitemp__()"""
if isinstance(result, Processed):
return result
return Processed(p, *display_result_data)
return get_processed(p, *display_result_data)
+2 -2
View File
@@ -4,7 +4,7 @@ import numpy as np
import gradio as gr
from PIL import Image
from modules import images, processing, shared, scripts_manager
from modules.processing import Processed
from modules.processing import get_processed
from modules.shared import opts, state
@@ -95,5 +95,5 @@ class Script(scripts_manager.Script):
grid = [images.image_grid(imgs, rows=1)] if opts.return_grid else []
imgs = [img] + grid
processed = Processed(p, images_list=imgs, seed=p.seed, info=info)
processed = get_processed(p, images_list=imgs, seed=p.seed, info=info)
return processed
+1 -1
View File
@@ -101,7 +101,7 @@ class Script(scripts_manager.Script):
auto_scale = False,
simple_cfg_mode = False,
)
processed = processing.Processed(p, images_list=image_list, seed=p.seed, subseed=p.subseed, index_of_first_image=0) # manually created processed object
processed = processing.get_processed(p, images_list=image_list, seed=p.seed, subseed=p.subseed, index_of_first_image=0) # manually created processed object
# p.extra_generation_params["IPInstruct"] = f''
return processed
+1 -1
View File
@@ -131,6 +131,6 @@ class Script(scripts_manager.Script):
if output_image is not None:
output_image.resize((ori_h_bg, ori_w_bg))
return processing.Processed(p, [output_image])
return processing.get_processed(p, [output_image])
else:
return processing.Processed(p, [])
+2 -2
View File
@@ -3,7 +3,7 @@ import numpy as np
import gradio as gr
from PIL import Image, ImageDraw
from modules import images, scripts_manager
from modules.processing import Processed, process_images
from modules.processing import get_processed, process_images
from modules.shared import opts, state
@@ -222,7 +222,7 @@ class Script(scripts_manager.Script):
combined_grid_image = images.image_grid(all_processed_images)
if opts.return_grid and len(all_processed_images) > 1:
all_images = [combined_grid_image] + all_processed_images
res = Processed(p, all_images, initial_seed_and_info[0], initial_seed_and_info[1])
res = get_processed(p, all_images, initial_seed_and_info[0], initial_seed_and_info[1])
if opts.samples_save:
for img in all_processed_images:
images.save_image(img, p.outpath_samples, "", res.seed, p.prompt, opts.samples_format, info=res.info, p=p)
+2 -2
View File
@@ -2,7 +2,7 @@ import math
import gradio as gr
from PIL import Image, ImageDraw
from modules import images, devices, scripts_manager
from modules.processing import Processed, process_images
from modules.processing import get_processed, process_images
from modules.shared import opts, state, log
@@ -108,5 +108,5 @@ class Script(scripts_manager.Script):
combined_image = images.combine_grid(grid)
if opts.samples_save:
images.save_image(combined_image, p.outpath_samples, "", initial_seed, p.prompt, opts.samples_format, info=initial_info, p=p)
processed = Processed(p, [combined_image], initial_seed, initial_info)
processed = get_processed(p, [combined_image], initial_seed, initial_info)
return processed
+2 -2
View File
@@ -3,7 +3,7 @@ import random
import shlex
import gradio as gr
from modules import sd_samplers, errors, scripts_manager
from modules.processing import Processed, process_images
from modules.processing import get_processed, process_images
from modules.shared import state, log
@@ -148,4 +148,4 @@ class Script(scripts_manager.Script):
all_negative += proc.all_negative_prompts
images += proc.images
infotexts += proc.infotexts
return Processed(p, images, p.seed, "", all_prompts=all_prompts, all_seeds=all_seeds, all_negative_prompts=all_negative, infotexts=infotexts)
return get_processed(p, images, p.seed, "", all_prompts=all_prompts, all_seeds=all_seeds, all_negative_prompts=all_negative, infotexts=infotexts)
+1 -1
View File
@@ -273,7 +273,7 @@ class Script(scripts_manager.Script):
id_scale=strength,
)[0]
info = processing.create_infotext(p)
processed = processing.Processed(p, [output], info=info)
processed = processing.get_processed(p, [output], info=info)
shared.state.end()
else: # let processing run the pipeline
p.task_args['id_embedding'] = id_embedding
+2 -2
View File
@@ -2,7 +2,7 @@ import math
import gradio as gr
from PIL import Image
from modules import processing, shared, images, devices, scripts_manager
from modules.processing import Processed
from modules.processing import get_processed
from modules.shared import opts, state, log
@@ -89,6 +89,6 @@ class Script(scripts_manager.Script):
if opts.samples_save:
images.save_image(combined_image, p.outpath_samples, "", start_seed, p.prompt, opts.samples_format, info=initial_info, p=p)
processed = Processed(p, result_images, seed, initial_info)
processed = get_processed(p, result_images, seed, initial_info)
log.info(f"SD upscale: images={result_images}")
return processed