lora: keep parsed network data through pipeline

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2026-09-13 16:31:16 +02:00
parent a3b8a7e353
commit 489cbf8048
9 changed files with 72 additions and 26 deletions
+2 -2
View File
@@ -102,8 +102,8 @@ class HEDdetector:
if scribble:
detected_map = nms(detected_map, 127, 3.0)
detected_map = cv2.GaussianBlur(detected_map, (0, 0), 3.0)
detected_map[detected_map > 4] = 255
detected_map[detected_map < 255] = 0
detected_map[detected_map > 4] = 255 # pylint: disable=unsupported-assignment-operation
detected_map[detected_map < 255] = 0 # pylint: disable=unsupported-assignment-operation
if opts.control_move_processor:
self.model.to('cpu')
if output_type == "pil":
+14 -11
View File
@@ -168,17 +168,20 @@ def parse_prompt(prompt: str | None) -> tuple[str, defaultdict[str, list[ExtraNe
return updated_prompt, res
def parse_prompts(prompts: list[str], extra_data: defaultdict[str, list[ExtraNetworkParams]] | None = None):
updated_prompt_list: list[str] = []
extra_data = extra_data or defaultdict(list)
def parse_prompts(
prompts: list[str],
extra_data: defaultdict[str, list[ExtraNetworkParams]] | None = None,
):
updated_prompts: list[str] = []
if extra_data is None:
extra_data = defaultdict(list)
for prompt in prompts:
updated_prompt, parsed_extra_data = parse_prompt(prompt)
if not extra_data:
extra_data = parsed_extra_data
elif parsed_extra_data:
extra_data = parsed_extra_data
else:
pass
updated_prompt_list.append(updated_prompt)
if parsed_extra_data:
for key, values in parsed_extra_data.items():
for item in values:
if item not in extra_data[key]:
extra_data[key].append(item)
return updated_prompt_list, extra_data
updated_prompts.append(updated_prompt)
return updated_prompts, extra_data
+1 -1
View File
@@ -249,7 +249,7 @@ def get_conditions(width, height, condition_strength, condition_images, conditio
def get_prompts(p):
prompt = shared.prompt_styles.apply_styles_to_prompt(p.prompt, p.styles)
negative = shared.prompt_styles.apply_negative_styles_to_prompt(p.negative_prompt, p.styles)
prompts, networks = extra_networks.parse_prompts([prompt])
prompts, networks = extra_networks.parse_prompts([prompt], p.network_data)
prompt = prompts[0] if len(prompts) > 0 else prompt
return prompt, negative, networks
+1 -2
View File
@@ -510,8 +510,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
p.scripts.before_process_batch(p, batch_number=n, prompts=p.prompts, seeds=p.seeds, subseeds=p.subseeds)
if not p.prompts:
break
p.prompts, p.network_data = extra_networks.parse_prompts(p.prompts)
p.prompts, p.network_data = extra_networks.parse_prompts(p.prompts, p.network_data)
if p.scripts is not None and isinstance(p.scripts, scripts_manager.ScriptRunner):
p.scripts.process_batch(p, batch_number=n, prompts=p.prompts, seeds=p.seeds, subseeds=p.subseeds)
+1 -1
View File
@@ -307,7 +307,7 @@ def process_hires(p: processing.StableDiffusionProcessing, output):
sched_eta = p.scheduler_eta if p.scheduler_eta is not None else shared.opts.scheduler_eta
if len(p.refiner_prompt) > 0:
prompts = len(output.images)* [p.refiner_prompt]
prompts, p.network_data = extra_networks.parse_prompts(prompts)
prompts, p.network_data = extra_networks.parse_prompts(prompts, p.network_data)
reset_prompts = True
if reset_prompts or ('base' in p.skip):
extra_networks.activate(p)