mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 01:04:32 +02:00
keep previous processed state
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import os
|
||||
import torch
|
||||
from modules import devices, shared
|
||||
from modules import shared
|
||||
|
||||
torch_version = float(torch.__version__[:3])
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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,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
@@ -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
|
||||
|
||||
@@ -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
@@ -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, [])
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,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
|
||||
|
||||
Reference in New Issue
Block a user