Add Mage-Flow architecture model.
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- README.md +5 -0
- chain_injectors/reference_image_injector.py +64 -0
- core/pipelines/pipeline_input_processor.py +12 -0
- core/pipelines/sd_image_pipeline.py +2 -0
- core/pipelines/workflow_executor.py +24 -0
- core/pipelines/workflow_recipes/_partials/_base_sampler_sd.yaml +0 -8
- core/pipelines/workflow_recipes/_partials/conditioning/anima.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/auraflow.yaml +56 -48
- core/pipelines/workflow_recipes/_partials/conditioning/boogu-image.yaml +66 -58
- core/pipelines/workflow_recipes/_partials/conditioning/chroma1-radiance.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/chroma1.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/cosmos-predict2.yaml +55 -47
- core/pipelines/workflow_recipes/_partials/conditioning/ernie-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/flux1.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/hidream-i1.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/hidream-o1.yaml +75 -67
- core/pipelines/workflow_recipes/_partials/conditioning/hunyuanimage.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/ideogram-4.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/joyai-image.yaml +86 -86
- core/pipelines/workflow_recipes/_partials/conditioning/kandinsky-5.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/krea-2.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/lens.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/longcat-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/lumina.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/mage-flow.yaml +77 -0
- core/pipelines/workflow_recipes/_partials/conditioning/newbie-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/omnigen2.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/ovis-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/pixeldit.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/qwen-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sd15.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sd35.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sdxl.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/conditioning/z-image.yaml +8 -0
- core/pipelines/workflow_recipes/_partials/input/txt2img_hidream_o1_latent.yaml +11 -11
- core/pipelines/workflow_recipes/_partials/input/txt2img_none.yaml +5 -0
- ui/events/chain_handlers.py +33 -0
- ui/events/change_handlers.py +4 -3
- ui/events/main.py +8 -3
- ui/events/run_handlers.py +3 -1
- ui/shared/hires_fix_ui.py +2 -1
- ui/shared/img2img_ui.py +2 -1
- ui/shared/inpaint_ui.py +2 -1
- ui/shared/outpaint_ui.py +2 -1
- ui/shared/txt2img_ui.py +2 -1
- ui/shared/ui_components.py +29 -0
- yaml/constants.yaml +10 -1
- yaml/file_list.yaml +22 -1
- yaml/image_gen_features.yaml +4 -0
- yaml/injectors.yaml +3 -0
README.md
CHANGED
|
@@ -52,6 +52,7 @@ models:
|
|
| 52 |
- Comfy-Org/Lens
|
| 53 |
- Comfy-Org/LongCat-Image
|
| 54 |
- Comfy-Org/Lumina_Image_2.0_Repackaged
|
|
|
|
| 55 |
- Comfy-Org/NewBie-image-Exp0.1_repackaged
|
| 56 |
- Comfy-Org/Omnigen2_ComfyUI_repackaged
|
| 57 |
- Comfy-Org/Ovis-Image
|
|
@@ -144,6 +145,10 @@ models:
|
|
| 144 |
- meituan-longcat/LongCat-Image
|
| 145 |
- microsoft/Lens
|
| 146 |
- microsoft/Lens-Turbo
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
- NewBie-AI/NewBie-image-Exp0.1
|
| 148 |
- nvidia/PiD
|
| 149 |
- nvidia/PixelDiT-1300M-1024px
|
|
|
|
| 52 |
- Comfy-Org/Lens
|
| 53 |
- Comfy-Org/LongCat-Image
|
| 54 |
- Comfy-Org/Lumina_Image_2.0_Repackaged
|
| 55 |
+
- Comfy-Org/Mage-Flow
|
| 56 |
- Comfy-Org/NewBie-image-Exp0.1_repackaged
|
| 57 |
- Comfy-Org/Omnigen2_ComfyUI_repackaged
|
| 58 |
- Comfy-Org/Ovis-Image
|
|
|
|
| 145 |
- meituan-longcat/LongCat-Image
|
| 146 |
- microsoft/Lens
|
| 147 |
- microsoft/Lens-Turbo
|
| 148 |
+
- microsoft/Mage-Flow
|
| 149 |
+
- microsoft/Mage-Flow-Edit
|
| 150 |
+
- microsoft/Mage-Flow-Edit-Turbo
|
| 151 |
+
- microsoft/Mage-Flow-Turbo
|
| 152 |
- NewBie-AI/NewBie-image-Exp0.1
|
| 153 |
- nvidia/PiD
|
| 154 |
- nvidia/PixelDiT-1300M-1024px
|
chain_injectors/reference_image_injector.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
def inject(assembler, chain_definition, chain_items):
|
| 4 |
+
if not chain_items:
|
| 5 |
+
return
|
| 6 |
+
|
| 7 |
+
valid_images = []
|
| 8 |
+
for item in chain_items:
|
| 9 |
+
if not item:
|
| 10 |
+
continue
|
| 11 |
+
img_path = item
|
| 12 |
+
if isinstance(item, dict):
|
| 13 |
+
img_path = item.get('image') or item.get('filename') or item.get('path')
|
| 14 |
+
if img_path:
|
| 15 |
+
valid_images.append(img_path)
|
| 16 |
+
|
| 17 |
+
if not valid_images:
|
| 18 |
+
return
|
| 19 |
+
|
| 20 |
+
text_encode_name = chain_definition.get('text_encode_node')
|
| 21 |
+
text_encode_id = None
|
| 22 |
+
if text_encode_name and text_encode_name in assembler.node_map:
|
| 23 |
+
text_encode_id = assembler.node_map[text_encode_name]
|
| 24 |
+
else:
|
| 25 |
+
for node_id, node in assembler.workflow.items():
|
| 26 |
+
if isinstance(node, dict) and node.get('class_type') == 'TextEncodeMageFlowEdit':
|
| 27 |
+
text_encode_id = node_id
|
| 28 |
+
break
|
| 29 |
+
|
| 30 |
+
if not text_encode_id or text_encode_id not in assembler.workflow:
|
| 31 |
+
print("Warning: TextEncodeMageFlowEdit node not found for Reference Image chain. Skipping.")
|
| 32 |
+
return
|
| 33 |
+
|
| 34 |
+
vae_node_name = chain_definition.get('vae_node', 'vae_loader')
|
| 35 |
+
vae_node_id = assembler.node_map.get(vae_node_name)
|
| 36 |
+
if not vae_node_id:
|
| 37 |
+
for node_id, node in assembler.workflow.items():
|
| 38 |
+
if isinstance(node, dict) and node.get('class_type') == 'VAELoader':
|
| 39 |
+
vae_node_id = node_id
|
| 40 |
+
break
|
| 41 |
+
|
| 42 |
+
if vae_node_id:
|
| 43 |
+
assembler.workflow[text_encode_id]['inputs']['vae'] = [vae_node_id, 0]
|
| 44 |
+
|
| 45 |
+
for i, img_filename in enumerate(valid_images):
|
| 46 |
+
load_id = assembler._get_unique_id()
|
| 47 |
+
load_node = assembler._get_node_template("LoadImage")
|
| 48 |
+
load_node['inputs']['image'] = img_filename
|
| 49 |
+
load_node['_meta']['title'] = f"Load Reference Image {i+1}"
|
| 50 |
+
assembler.workflow[load_id] = load_node
|
| 51 |
+
|
| 52 |
+
scale_id = assembler._get_unique_id()
|
| 53 |
+
scale_node = assembler._get_node_template("ImageScaleToTotalPixels")
|
| 54 |
+
scale_node['inputs']['megapixels'] = 1.0
|
| 55 |
+
scale_node['inputs']['upscale_method'] = "nearest-exact"
|
| 56 |
+
scale_node['inputs']['resolution_steps'] = 1
|
| 57 |
+
scale_node['inputs']['image'] = [load_id, 0]
|
| 58 |
+
scale_node['_meta']['title'] = f"Scale Reference {i+1}"
|
| 59 |
+
assembler.workflow[scale_id] = scale_node
|
| 60 |
+
|
| 61 |
+
input_key = f"images.image_{i+1}"
|
| 62 |
+
assembler.workflow[text_encode_id]['inputs'][input_key] = [scale_id, 0]
|
| 63 |
+
|
| 64 |
+
print(f"Reference Image injector applied. Injected {len(valid_images)} reference images to TextEncodeMageFlowEdit node '{text_encode_id}'.")
|
core/pipelines/pipeline_input_processor.py
CHANGED
|
@@ -351,6 +351,17 @@ def process_pipeline_inputs(ui_inputs: Dict[str, Any], progress: gr.Progress, wo
|
|
| 351 |
temp_files_to_clean.append(temp_path)
|
| 352 |
active_joyai_reference.append(os.path.basename(temp_path))
|
| 353 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 354 |
vae_source = ui_inputs.get('vae_source')
|
| 355 |
vae_id = ui_inputs.get('vae_id')
|
| 356 |
vae_name_override = None
|
|
@@ -390,6 +401,7 @@ def process_pipeline_inputs(ui_inputs: Dict[str, Any], progress: gr.Progress, wo
|
|
| 390 |
"active_reference_latents": active_reference_latents,
|
| 391 |
"active_hidream_o1_reference": active_hidream_o1_reference,
|
| 392 |
"active_joyai_reference": active_joyai_reference,
|
|
|
|
| 393 |
"active_conditioning": active_conditioning,
|
| 394 |
"temp_files_to_clean": temp_files_to_clean
|
| 395 |
}
|
|
|
|
| 351 |
temp_files_to_clean.append(temp_path)
|
| 352 |
active_joyai_reference.append(os.path.basename(temp_path))
|
| 353 |
|
| 354 |
+
reference_image_data = ui_inputs.get('reference_image_data', [])
|
| 355 |
+
active_reference_images = []
|
| 356 |
+
if reference_image_data:
|
| 357 |
+
for img in reference_image_data:
|
| 358 |
+
if img:
|
| 359 |
+
if not os.path.exists(INPUT_DIR): os.makedirs(INPUT_DIR)
|
| 360 |
+
temp_path = os.path.join(INPUT_DIR, f"temp_ref_img_{random.randint(1000, 9999)}.png")
|
| 361 |
+
img.save(temp_path, "PNG")
|
| 362 |
+
temp_files_to_clean.append(temp_path)
|
| 363 |
+
active_reference_images.append(os.path.basename(temp_path))
|
| 364 |
+
|
| 365 |
vae_source = ui_inputs.get('vae_source')
|
| 366 |
vae_id = ui_inputs.get('vae_id')
|
| 367 |
vae_name_override = None
|
|
|
|
| 401 |
"active_reference_latents": active_reference_latents,
|
| 402 |
"active_hidream_o1_reference": active_hidream_o1_reference,
|
| 403 |
"active_joyai_reference": active_joyai_reference,
|
| 404 |
+
"active_reference_images": active_reference_images,
|
| 405 |
"active_conditioning": active_conditioning,
|
| 406 |
"temp_files_to_clean": temp_files_to_clean
|
| 407 |
}
|
core/pipelines/sd_image_pipeline.py
CHANGED
|
@@ -117,6 +117,7 @@ class SdImagePipeline(BasePipeline):
|
|
| 117 |
active_reference_latents = processed["active_reference_latents"]
|
| 118 |
active_hidream_o1_reference = processed["active_hidream_o1_reference"]
|
| 119 |
active_joyai_reference = processed.get("active_joyai_reference", [])
|
|
|
|
| 120 |
active_conditioning = processed["active_conditioning"]
|
| 121 |
|
| 122 |
loras_string = f"LoRAs: [{', '.join(active_loras_for_meta)}]" if active_loras_for_meta else ""
|
|
@@ -174,6 +175,7 @@ class SdImagePipeline(BasePipeline):
|
|
| 174 |
"reference_latent_chain": active_reference_latents,
|
| 175 |
"hidream_o1_reference_chain": active_hidream_o1_reference,
|
| 176 |
"joyai_reference_chain": active_joyai_reference,
|
|
|
|
| 177 |
"vae_chain": [ui_inputs.get('vae_name')] if ui_inputs.get('vae_name') else [],
|
| 178 |
"hidream_o1_smoothing_chain": hidream_o1_smoothing_data,
|
| 179 |
"pid_chain": [ui_inputs.get('pid_settings', 'OFF')] if is_pid_enabled else [],
|
|
|
|
| 117 |
active_reference_latents = processed["active_reference_latents"]
|
| 118 |
active_hidream_o1_reference = processed["active_hidream_o1_reference"]
|
| 119 |
active_joyai_reference = processed.get("active_joyai_reference", [])
|
| 120 |
+
active_reference_images = processed.get("active_reference_images", [])
|
| 121 |
active_conditioning = processed["active_conditioning"]
|
| 122 |
|
| 123 |
loras_string = f"LoRAs: [{', '.join(active_loras_for_meta)}]" if active_loras_for_meta else ""
|
|
|
|
| 175 |
"reference_latent_chain": active_reference_latents,
|
| 176 |
"hidream_o1_reference_chain": active_hidream_o1_reference,
|
| 177 |
"joyai_reference_chain": active_joyai_reference,
|
| 178 |
+
"reference_image_chain": active_reference_images,
|
| 179 |
"vae_chain": [ui_inputs.get('vae_name')] if ui_inputs.get('vae_name') else [],
|
| 180 |
"hidream_o1_smoothing_chain": hidream_o1_smoothing_data,
|
| 181 |
"pid_chain": [ui_inputs.get('pid_settings', 'OFF')] if is_pid_enabled else [],
|
core/pipelines/workflow_executor.py
CHANGED
|
@@ -42,6 +42,30 @@ class WorkflowExecutor:
|
|
| 42 |
|
| 43 |
try:
|
| 44 |
sorted_node_ids = WorkflowExecutor.topological_sort(workflow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
print(f"--- [Workflow Executor] Execution order: {sorted_node_ids}")
|
| 46 |
except RuntimeError as e:
|
| 47 |
print("--- [Workflow Executor] ERROR: Failed to sort workflow. Dumping graph details. ---")
|
|
|
|
| 42 |
|
| 43 |
try:
|
| 44 |
sorted_node_ids = WorkflowExecutor.topological_sort(workflow)
|
| 45 |
+
|
| 46 |
+
final_node_id = None
|
| 47 |
+
for node_id in reversed(sorted_node_ids):
|
| 48 |
+
if workflow[node_id].get('class_type') == 'SaveImage':
|
| 49 |
+
final_node_id = node_id
|
| 50 |
+
break
|
| 51 |
+
|
| 52 |
+
if final_node_id:
|
| 53 |
+
required_nodes = set()
|
| 54 |
+
nodes_to_visit = [final_node_id]
|
| 55 |
+
while nodes_to_visit:
|
| 56 |
+
curr_id = nodes_to_visit.pop()
|
| 57 |
+
if curr_id in required_nodes:
|
| 58 |
+
continue
|
| 59 |
+
required_nodes.add(curr_id)
|
| 60 |
+
curr_info = workflow.get(curr_id, {})
|
| 61 |
+
for input_val in curr_info.get('inputs', {}).values():
|
| 62 |
+
if isinstance(input_val, list) and len(input_val) == 2 and isinstance(input_val[0], str):
|
| 63 |
+
src_id = input_val[0]
|
| 64 |
+
if src_id in workflow and src_id not in required_nodes:
|
| 65 |
+
nodes_to_visit.append(src_id)
|
| 66 |
+
|
| 67 |
+
sorted_node_ids = [nid for nid in sorted_node_ids if nid in required_nodes]
|
| 68 |
+
|
| 69 |
print(f"--- [Workflow Executor] Execution order: {sorted_node_ids}")
|
| 70 |
except RuntimeError as e:
|
| 71 |
print("--- [Workflow Executor] ERROR: Failed to sort workflow. Dumping graph details. ---")
|
core/pipelines/workflow_recipes/_partials/_base_sampler_sd.yaml
CHANGED
|
@@ -1,10 +1,4 @@
|
|
| 1 |
nodes:
|
| 2 |
-
pos_prompt:
|
| 3 |
-
class_type: CLIPTextEncode
|
| 4 |
-
title: "CLIP Text Encode (Positive)"
|
| 5 |
-
neg_prompt:
|
| 6 |
-
class_type: CLIPTextEncode
|
| 7 |
-
title: "CLIP Text Encode (Negative)"
|
| 8 |
ksampler:
|
| 9 |
class_type: KSampler
|
| 10 |
title: "KSampler"
|
|
@@ -25,8 +19,6 @@ connections:
|
|
| 25 |
to: "save_image:images"
|
| 26 |
|
| 27 |
ui_map:
|
| 28 |
-
positive_prompt: "pos_prompt:text"
|
| 29 |
-
negative_prompt: "neg_prompt:text"
|
| 30 |
seed: "ksampler:seed"
|
| 31 |
steps: "ksampler:steps"
|
| 32 |
cfg: "ksampler:cfg"
|
|
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
ksampler:
|
| 3 |
class_type: KSampler
|
| 4 |
title: "KSampler"
|
|
|
|
| 19 |
to: "save_image:images"
|
| 20 |
|
| 21 |
ui_map:
|
|
|
|
|
|
|
| 22 |
seed: "ksampler:seed"
|
| 23 |
steps: "ksampler:steps"
|
| 24 |
cfg: "ksampler:cfg"
|
core/pipelines/workflow_recipes/_partials/conditioning/anima.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -57,6 +63,8 @@ dynamic_pid_chains:
|
|
| 57 |
ksampler_node: "ksampler"
|
| 58 |
|
| 59 |
ui_map:
|
|
|
|
|
|
|
| 60 |
unet_name: "unet_loader:unet_name"
|
| 61 |
vae_name: "vae_loader:vae_name"
|
| 62 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 63 |
ksampler_node: "ksampler"
|
| 64 |
|
| 65 |
ui_map:
|
| 66 |
+
positive_prompt: "pos_prompt:text"
|
| 67 |
+
negative_prompt: "neg_prompt:text"
|
| 68 |
unet_name: "unet_loader:unet_name"
|
| 69 |
vae_name: "vae_loader:vae_name"
|
| 70 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/auraflow.yaml
CHANGED
|
@@ -1,48 +1,56 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
|
| 3 |
-
class_type:
|
| 4 |
-
title: "
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
- from: "
|
| 14 |
-
to: "ksampler:
|
| 15 |
-
- from: "
|
| 16 |
-
to: "
|
| 17 |
-
- from: "ckpt_loader:
|
| 18 |
-
to: "
|
| 19 |
-
- from: "
|
| 20 |
-
to: "
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
"
|
| 40 |
-
"
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
+
ckpt_loader:
|
| 9 |
+
class_type: CheckpointLoaderSimple
|
| 10 |
+
title: "Load Checkpoint"
|
| 11 |
+
|
| 12 |
+
connections:
|
| 13 |
+
- from: "ckpt_loader:0"
|
| 14 |
+
to: "ksampler:model"
|
| 15 |
+
- from: "ckpt_loader:1"
|
| 16 |
+
to: "pos_prompt:clip"
|
| 17 |
+
- from: "ckpt_loader:1"
|
| 18 |
+
to: "neg_prompt:clip"
|
| 19 |
+
- from: "pos_prompt:0"
|
| 20 |
+
to: "ksampler:positive"
|
| 21 |
+
- from: "neg_prompt:0"
|
| 22 |
+
to: "ksampler:negative"
|
| 23 |
+
- from: "ckpt_loader:2"
|
| 24 |
+
to: "vae_decode:vae"
|
| 25 |
+
- from: "ckpt_loader:2"
|
| 26 |
+
to: "vae_encode:vae"
|
| 27 |
+
|
| 28 |
+
dynamic_vae_chains:
|
| 29 |
+
vae_chain:
|
| 30 |
+
targets:
|
| 31 |
+
- "vae_decode:vae"
|
| 32 |
+
- "vae_encode:vae"
|
| 33 |
+
|
| 34 |
+
dynamic_lora_chains:
|
| 35 |
+
lora_chain:
|
| 36 |
+
template: "LoraLoader"
|
| 37 |
+
start: "ckpt_loader"
|
| 38 |
+
output_map:
|
| 39 |
+
"0": "model"
|
| 40 |
+
"1": "clip"
|
| 41 |
+
input_map:
|
| 42 |
+
"model": "model"
|
| 43 |
+
"clip": "clip"
|
| 44 |
+
end_input_map:
|
| 45 |
+
"model": ["ksampler:model"]
|
| 46 |
+
"clip": ["pos_prompt:clip", "neg_prompt:clip"]
|
| 47 |
+
|
| 48 |
+
dynamic_conditioning_chains:
|
| 49 |
+
conditioning_chain:
|
| 50 |
+
ksampler_node: "ksampler"
|
| 51 |
+
clip_source: "ckpt_loader:1"
|
| 52 |
+
|
| 53 |
+
ui_map:
|
| 54 |
+
positive_prompt: "pos_prompt:text"
|
| 55 |
+
negative_prompt: "neg_prompt:text"
|
| 56 |
+
model_name: "ckpt_loader:ckpt_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/boogu-image.yaml
CHANGED
|
@@ -1,58 +1,66 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
|
| 3 |
-
class_type:
|
| 4 |
-
title: "
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
class_type:
|
| 15 |
-
title: "Load
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
- from: "
|
| 25 |
-
to: "ksampler:
|
| 26 |
-
- from: "
|
| 27 |
-
to: "
|
| 28 |
-
- from: "
|
| 29 |
-
to: "
|
| 30 |
-
- from: "
|
| 31 |
-
to: "
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
"
|
| 44 |
-
"
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
+
unet_loader:
|
| 9 |
+
class_type: UNETLoader
|
| 10 |
+
title: "Load Diffusion Model"
|
| 11 |
+
params:
|
| 12 |
+
weight_dtype: "default"
|
| 13 |
+
clip_loader:
|
| 14 |
+
class_type: CLIPLoader
|
| 15 |
+
title: "Load CLIP"
|
| 16 |
+
params:
|
| 17 |
+
type: "boogu"
|
| 18 |
+
device: "default"
|
| 19 |
+
vae_loader:
|
| 20 |
+
class_type: VAELoader
|
| 21 |
+
title: "Load VAE"
|
| 22 |
+
|
| 23 |
+
connections:
|
| 24 |
+
- from: "unet_loader:0"
|
| 25 |
+
to: "ksampler:model"
|
| 26 |
+
- from: "clip_loader:0"
|
| 27 |
+
to: "pos_prompt:clip"
|
| 28 |
+
- from: "clip_loader:0"
|
| 29 |
+
to: "neg_prompt:clip"
|
| 30 |
+
- from: "pos_prompt:0"
|
| 31 |
+
to: "ksampler:positive"
|
| 32 |
+
- from: "neg_prompt:0"
|
| 33 |
+
to: "ksampler:negative"
|
| 34 |
+
- from: "vae_loader:0"
|
| 35 |
+
to: "vae_decode:vae"
|
| 36 |
+
- from: "vae_loader:0"
|
| 37 |
+
to: "vae_encode:vae"
|
| 38 |
+
|
| 39 |
+
dynamic_lora_chains:
|
| 40 |
+
lora_chain:
|
| 41 |
+
template: "LoraLoader"
|
| 42 |
+
output_map:
|
| 43 |
+
"unet_loader:0": "model"
|
| 44 |
+
"clip_loader:0": "clip"
|
| 45 |
+
input_map:
|
| 46 |
+
"model": "model"
|
| 47 |
+
"clip": "clip"
|
| 48 |
+
end_input_map:
|
| 49 |
+
"model": ["ksampler:model"]
|
| 50 |
+
"clip": ["pos_prompt:clip", "neg_prompt:clip"]
|
| 51 |
+
|
| 52 |
+
dynamic_conditioning_chains:
|
| 53 |
+
conditioning_chain:
|
| 54 |
+
ksampler_node: "ksampler"
|
| 55 |
+
clip_source: "clip_loader:0"
|
| 56 |
+
|
| 57 |
+
dynamic_pid_chains:
|
| 58 |
+
pid_chain:
|
| 59 |
+
ksampler_node: "ksampler"
|
| 60 |
+
|
| 61 |
+
ui_map:
|
| 62 |
+
positive_prompt: "pos_prompt:text"
|
| 63 |
+
negative_prompt: "neg_prompt:text"
|
| 64 |
+
unet_name: "unet_loader:unet_name"
|
| 65 |
+
clip_name: "clip_loader:clip_name"
|
| 66 |
+
vae_name: "vae_loader:vae_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/chroma1-radiance.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -55,5 +61,7 @@ dynamic_conditioning_chains:
|
|
| 55 |
clip_source: "t5_tokenizer:0"
|
| 56 |
|
| 57 |
ui_map:
|
|
|
|
|
|
|
| 58 |
unet_name: "unet_loader:unet_name"
|
| 59 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 61 |
clip_source: "t5_tokenizer:0"
|
| 62 |
|
| 63 |
ui_map:
|
| 64 |
+
positive_prompt: "pos_prompt:text"
|
| 65 |
+
negative_prompt: "neg_prompt:text"
|
| 66 |
unet_name: "unet_loader:unet_name"
|
| 67 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/chroma1.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -60,6 +66,8 @@ dynamic_pid_chains:
|
|
| 60 |
ksampler_node: "ksampler"
|
| 61 |
|
| 62 |
ui_map:
|
|
|
|
|
|
|
| 63 |
unet_name: "unet_loader:unet_name"
|
| 64 |
vae_name: "vae_loader:vae_name"
|
| 65 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 66 |
ksampler_node: "ksampler"
|
| 67 |
|
| 68 |
ui_map:
|
| 69 |
+
positive_prompt: "pos_prompt:text"
|
| 70 |
+
negative_prompt: "neg_prompt:text"
|
| 71 |
unet_name: "unet_loader:unet_name"
|
| 72 |
vae_name: "vae_loader:vae_name"
|
| 73 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/cosmos-predict2.yaml
CHANGED
|
@@ -1,47 +1,55 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
|
| 3 |
-
class_type:
|
| 4 |
-
title: "
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
- from: "
|
| 25 |
-
to: "ksampler:
|
| 26 |
-
- from: "
|
| 27 |
-
to: "
|
| 28 |
-
- from: "
|
| 29 |
-
to: "
|
| 30 |
-
- from: "
|
| 31 |
-
to: "
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
+
unet_loader:
|
| 9 |
+
class_type: UNETLoader
|
| 10 |
+
title: "Load Diffusion Model"
|
| 11 |
+
params:
|
| 12 |
+
weight_dtype: "default"
|
| 13 |
+
vae_loader:
|
| 14 |
+
class_type: VAELoader
|
| 15 |
+
title: "Load VAE"
|
| 16 |
+
clip_loader:
|
| 17 |
+
class_type: CLIPLoader
|
| 18 |
+
title: "Load CLIP"
|
| 19 |
+
params:
|
| 20 |
+
type: "cosmos"
|
| 21 |
+
device: "default"
|
| 22 |
+
|
| 23 |
+
connections:
|
| 24 |
+
- from: "unet_loader:0"
|
| 25 |
+
to: "ksampler:model"
|
| 26 |
+
- from: "clip_loader:0"
|
| 27 |
+
to: "pos_prompt:clip"
|
| 28 |
+
- from: "clip_loader:0"
|
| 29 |
+
to: "neg_prompt:clip"
|
| 30 |
+
- from: "pos_prompt:0"
|
| 31 |
+
to: "ksampler:positive"
|
| 32 |
+
- from: "neg_prompt:0"
|
| 33 |
+
to: "ksampler:negative"
|
| 34 |
+
- from: "vae_loader:0"
|
| 35 |
+
to: "vae_decode:vae"
|
| 36 |
+
- from: "vae_loader:0"
|
| 37 |
+
to: "vae_encode:vae"
|
| 38 |
+
|
| 39 |
+
dynamic_vae_chains:
|
| 40 |
+
vae_chain:
|
| 41 |
+
targets:
|
| 42 |
+
- "vae_decode:vae"
|
| 43 |
+
- "vae_encode:vae"
|
| 44 |
+
|
| 45 |
+
dynamic_conditioning_chains:
|
| 46 |
+
conditioning_chain:
|
| 47 |
+
ksampler_node: "ksampler"
|
| 48 |
+
clip_source: "clip_loader:0"
|
| 49 |
+
|
| 50 |
+
ui_map:
|
| 51 |
+
positive_prompt: "pos_prompt:text"
|
| 52 |
+
negative_prompt: "neg_prompt:text"
|
| 53 |
+
unet_name: "unet_loader:unet_name"
|
| 54 |
+
vae_name: "vae_loader:vae_name"
|
| 55 |
+
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/ernie-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -53,6 +59,8 @@ dynamic_pid_chains:
|
|
| 53 |
ksampler_node: "ksampler"
|
| 54 |
|
| 55 |
ui_map:
|
|
|
|
|
|
|
| 56 |
unet_name: "unet_loader:unet_name"
|
| 57 |
clip_name: "clip_loader:clip_name"
|
| 58 |
vae_name: "vae_loader:vae_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 59 |
ksampler_node: "ksampler"
|
| 60 |
|
| 61 |
ui_map:
|
| 62 |
+
positive_prompt: "pos_prompt:text"
|
| 63 |
+
negative_prompt: "neg_prompt:text"
|
| 64 |
unet_name: "unet_loader:unet_name"
|
| 65 |
clip_name: "clip_loader:clip_name"
|
| 66 |
vae_name: "vae_loader:vae_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/flux1.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load FLUX UNET"
|
|
@@ -61,6 +67,8 @@ dynamic_pid_chains:
|
|
| 61 |
ksampler_node: "ksampler"
|
| 62 |
|
| 63 |
ui_map:
|
|
|
|
|
|
|
| 64 |
unet_name: "unet_loader:unet_name"
|
| 65 |
vae_name: "vae_loader:vae_name"
|
| 66 |
clip1_name: "clip_loader:clip_name1"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load FLUX UNET"
|
|
|
|
| 67 |
ksampler_node: "ksampler"
|
| 68 |
|
| 69 |
ui_map:
|
| 70 |
+
positive_prompt: "pos_prompt:text"
|
| 71 |
+
negative_prompt: "neg_prompt:text"
|
| 72 |
unet_name: "unet_loader:unet_name"
|
| 73 |
vae_name: "vae_loader:vae_name"
|
| 74 |
clip1_name: "clip_loader:clip_name1"
|
core/pipelines/workflow_recipes/_partials/conditioning/hidream-i1.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load HiDream-I1 UNET"
|
|
@@ -49,6 +55,8 @@ dynamic_pid_chains:
|
|
| 49 |
ksampler_node: "ksampler"
|
| 50 |
|
| 51 |
ui_map:
|
|
|
|
|
|
|
| 52 |
unet_name: "unet_loader:unet_name"
|
| 53 |
vae_name: "vae_loader:vae_name"
|
| 54 |
clip1_name: "clip_loader:clip_name1"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load HiDream-I1 UNET"
|
|
|
|
| 55 |
ksampler_node: "ksampler"
|
| 56 |
|
| 57 |
ui_map:
|
| 58 |
+
positive_prompt: "pos_prompt:text"
|
| 59 |
+
negative_prompt: "neg_prompt:text"
|
| 60 |
unet_name: "unet_loader:unet_name"
|
| 61 |
vae_name: "vae_loader:vae_name"
|
| 62 |
clip1_name: "clip_loader:clip_name1"
|
core/pipelines/workflow_recipes/_partials/conditioning/hidream-o1.yaml
CHANGED
|
@@ -1,68 +1,76 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
|
| 3 |
-
class_type:
|
| 4 |
-
title: "
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
- from: "ckpt_loader:
|
| 20 |
-
to: "
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
"
|
| 52 |
-
"
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
model_name: "ckpt_loader:ckpt_name"
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
+
ckpt_loader:
|
| 9 |
+
class_type: CheckpointLoaderSimple
|
| 10 |
+
title: "Load Checkpoint"
|
| 11 |
+
|
| 12 |
+
model_noise_scale:
|
| 13 |
+
class_type: ModelNoiseScale
|
| 14 |
+
title: "ModelNoiseScale"
|
| 15 |
+
params:
|
| 16 |
+
noise_scale: 8
|
| 17 |
+
|
| 18 |
+
connections:
|
| 19 |
+
- from: "ckpt_loader:0"
|
| 20 |
+
to: "model_noise_scale:model"
|
| 21 |
+
|
| 22 |
+
- from: "model_noise_scale:0"
|
| 23 |
+
to: "ksampler:model"
|
| 24 |
+
|
| 25 |
+
- from: "ckpt_loader:1"
|
| 26 |
+
to: "pos_prompt:clip"
|
| 27 |
+
- from: "ckpt_loader:1"
|
| 28 |
+
to: "neg_prompt:clip"
|
| 29 |
+
|
| 30 |
+
- from: "pos_prompt:0"
|
| 31 |
+
to: "ksampler:positive"
|
| 32 |
+
- from: "neg_prompt:0"
|
| 33 |
+
to: "ksampler:negative"
|
| 34 |
+
|
| 35 |
+
- from: "ckpt_loader:2"
|
| 36 |
+
to: "vae_decode:vae"
|
| 37 |
+
- from: "ckpt_loader:2"
|
| 38 |
+
to: "vae_encode:vae"
|
| 39 |
+
|
| 40 |
+
dynamic_vae_chains:
|
| 41 |
+
vae_chain:
|
| 42 |
+
targets:
|
| 43 |
+
- "vae_decode:vae"
|
| 44 |
+
- "vae_encode:vae"
|
| 45 |
+
|
| 46 |
+
dynamic_lora_chains:
|
| 47 |
+
lora_chain:
|
| 48 |
+
template: "LoraLoader"
|
| 49 |
+
start: "ckpt_loader"
|
| 50 |
+
output_map:
|
| 51 |
+
"0": "model"
|
| 52 |
+
"1": "clip"
|
| 53 |
+
input_map:
|
| 54 |
+
"model": "model"
|
| 55 |
+
"clip": "clip"
|
| 56 |
+
end_input_map:
|
| 57 |
+
"model": ["model_noise_scale:model"]
|
| 58 |
+
"clip": ["pos_prompt:clip", "neg_prompt:clip"]
|
| 59 |
+
|
| 60 |
+
dynamic_hidream_o1_smoothing_chains:
|
| 61 |
+
hidream_o1_smoothing_chain:
|
| 62 |
+
target_node: "ksampler"
|
| 63 |
+
|
| 64 |
+
dynamic_conditioning_chains:
|
| 65 |
+
conditioning_chain:
|
| 66 |
+
ksampler_node: "ksampler"
|
| 67 |
+
clip_source: "ckpt_loader:1"
|
| 68 |
+
|
| 69 |
+
dynamic_hidream_o1_reference_chains:
|
| 70 |
+
hidream_o1_reference_chain:
|
| 71 |
+
ksampler_node: "ksampler"
|
| 72 |
+
|
| 73 |
+
ui_map:
|
| 74 |
+
positive_prompt: "pos_prompt:text"
|
| 75 |
+
negative_prompt: "neg_prompt:text"
|
| 76 |
model_name: "ckpt_loader:ckpt_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/hunyuanimage.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Hunyuan UNET"
|
|
@@ -36,6 +42,8 @@ dynamic_conditioning_chains:
|
|
| 36 |
clip_source: "clip_loader:0"
|
| 37 |
|
| 38 |
ui_map:
|
|
|
|
|
|
|
| 39 |
unet_name: "unet_loader:unet_name"
|
| 40 |
vae_name: "vae_loader:vae_name"
|
| 41 |
clip1_name: "clip_loader:clip_name1"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Hunyuan UNET"
|
|
|
|
| 42 |
clip_source: "clip_loader:0"
|
| 43 |
|
| 44 |
ui_map:
|
| 45 |
+
positive_prompt: "pos_prompt:text"
|
| 46 |
+
negative_prompt: "neg_prompt:text"
|
| 47 |
unet_name: "unet_loader:unet_name"
|
| 48 |
vae_name: "vae_loader:vae_name"
|
| 49 |
clip1_name: "clip_loader:clip_name1"
|
core/pipelines/workflow_recipes/_partials/conditioning/ideogram-4.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -95,6 +101,8 @@ dynamic_pid_chains:
|
|
| 95 |
ksampler_node: "ksampler"
|
| 96 |
|
| 97 |
ui_map:
|
|
|
|
|
|
|
| 98 |
unet_name: "unet_loader:unet_name"
|
| 99 |
unet_uncond_name: "unet_uncond_loader:unet_name"
|
| 100 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 101 |
ksampler_node: "ksampler"
|
| 102 |
|
| 103 |
ui_map:
|
| 104 |
+
positive_prompt: "pos_prompt:text"
|
| 105 |
+
negative_prompt: "neg_prompt:text"
|
| 106 |
unet_name: "unet_loader:unet_name"
|
| 107 |
unet_uncond_name: "unet_uncond_loader:unet_name"
|
| 108 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/joyai-image.yaml
CHANGED
|
@@ -1,86 +1,86 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
unet_loader:
|
| 3 |
-
class_type: UNETLoader
|
| 4 |
-
title: "Load Diffusion Model"
|
| 5 |
-
params:
|
| 6 |
-
weight_dtype: "default"
|
| 7 |
-
vae_loader:
|
| 8 |
-
class_type: VAELoader
|
| 9 |
-
title: "Load VAE"
|
| 10 |
-
clip_loader:
|
| 11 |
-
class_type: CLIPLoader
|
| 12 |
-
title: "Load CLIP"
|
| 13 |
-
params:
|
| 14 |
-
type: "joyimage"
|
| 15 |
-
device: "default"
|
| 16 |
-
|
| 17 |
-
pos_prompt:
|
| 18 |
-
class_type: TextEncodeJoyImageEdit
|
| 19 |
-
title: "TextEncodeJoyImageEdit (Positive)"
|
| 20 |
-
neg_prompt:
|
| 21 |
-
class_type: TextEncodeJoyImageEdit
|
| 22 |
-
title: "TextEncodeJoyImageEdit (Negative)"
|
| 23 |
-
|
| 24 |
-
cfg_norm:
|
| 25 |
-
class_type: CFGNorm
|
| 26 |
-
title: "CFGNorm"
|
| 27 |
-
params:
|
| 28 |
-
strength: 1.0
|
| 29 |
-
pre_cfg: true
|
| 30 |
-
|
| 31 |
-
connections:
|
| 32 |
-
- from: "unet_loader:0"
|
| 33 |
-
to: "cfg_norm:model"
|
| 34 |
-
- from: "cfg_norm:0"
|
| 35 |
-
to: "ksampler:model"
|
| 36 |
-
|
| 37 |
-
- from: "clip_loader:0"
|
| 38 |
-
to: "pos_prompt:clip"
|
| 39 |
-
- from: "clip_loader:0"
|
| 40 |
-
to: "neg_prompt:clip"
|
| 41 |
-
|
| 42 |
-
- from: "pos_prompt:0"
|
| 43 |
-
to: "ksampler:positive"
|
| 44 |
-
- from: "neg_prompt:0"
|
| 45 |
-
to: "ksampler:negative"
|
| 46 |
-
|
| 47 |
-
- from: "vae_loader:0"
|
| 48 |
-
to: "vae_decode:vae"
|
| 49 |
-
- from: "vae_loader:0"
|
| 50 |
-
to: "vae_encode:vae"
|
| 51 |
-
|
| 52 |
-
dynamic_lora_chains:
|
| 53 |
-
lora_chain:
|
| 54 |
-
template: "LoraLoader"
|
| 55 |
-
output_map:
|
| 56 |
-
"unet_loader:0": "model"
|
| 57 |
-
"clip_loader:0": "clip"
|
| 58 |
-
input_map:
|
| 59 |
-
"model": "model"
|
| 60 |
-
"clip": "clip"
|
| 61 |
-
end_input_map:
|
| 62 |
-
"model": ["cfg_norm:model"]
|
| 63 |
-
"clip": ["pos_prompt:clip", "neg_prompt:clip"]
|
| 64 |
-
|
| 65 |
-
dynamic_conditioning_chains:
|
| 66 |
-
conditioning_chain:
|
| 67 |
-
ksampler_node: "ksampler"
|
| 68 |
-
clip_source: "clip_loader:0"
|
| 69 |
-
|
| 70 |
-
dynamic_pid_chains:
|
| 71 |
-
pid_chain:
|
| 72 |
-
ksampler_node: "ksampler"
|
| 73 |
-
|
| 74 |
-
dynamic_joyai_reference_chains:
|
| 75 |
-
joyai_reference_chain:
|
| 76 |
-
pos_prompt_node: "pos_prompt"
|
| 77 |
-
neg_prompt_node: "neg_prompt"
|
| 78 |
-
vae_node: "vae_loader"
|
| 79 |
-
|
| 80 |
-
ui_map:
|
| 81 |
-
unet_name: "unet_loader:unet_name"
|
| 82 |
-
vae_name: "vae_loader:vae_name"
|
| 83 |
-
clip_name: "clip_loader:clip_name"
|
| 84 |
-
positive_prompt: "pos_prompt:prompt"
|
| 85 |
-
negative_prompt: "neg_prompt:prompt"
|
| 86 |
-
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
unet_loader:
|
| 3 |
+
class_type: UNETLoader
|
| 4 |
+
title: "Load Diffusion Model"
|
| 5 |
+
params:
|
| 6 |
+
weight_dtype: "default"
|
| 7 |
+
vae_loader:
|
| 8 |
+
class_type: VAELoader
|
| 9 |
+
title: "Load VAE"
|
| 10 |
+
clip_loader:
|
| 11 |
+
class_type: CLIPLoader
|
| 12 |
+
title: "Load CLIP"
|
| 13 |
+
params:
|
| 14 |
+
type: "joyimage"
|
| 15 |
+
device: "default"
|
| 16 |
+
|
| 17 |
+
pos_prompt:
|
| 18 |
+
class_type: TextEncodeJoyImageEdit
|
| 19 |
+
title: "TextEncodeJoyImageEdit (Positive)"
|
| 20 |
+
neg_prompt:
|
| 21 |
+
class_type: TextEncodeJoyImageEdit
|
| 22 |
+
title: "TextEncodeJoyImageEdit (Negative)"
|
| 23 |
+
|
| 24 |
+
cfg_norm:
|
| 25 |
+
class_type: CFGNorm
|
| 26 |
+
title: "CFGNorm"
|
| 27 |
+
params:
|
| 28 |
+
strength: 1.0
|
| 29 |
+
pre_cfg: true
|
| 30 |
+
|
| 31 |
+
connections:
|
| 32 |
+
- from: "unet_loader:0"
|
| 33 |
+
to: "cfg_norm:model"
|
| 34 |
+
- from: "cfg_norm:0"
|
| 35 |
+
to: "ksampler:model"
|
| 36 |
+
|
| 37 |
+
- from: "clip_loader:0"
|
| 38 |
+
to: "pos_prompt:clip"
|
| 39 |
+
- from: "clip_loader:0"
|
| 40 |
+
to: "neg_prompt:clip"
|
| 41 |
+
|
| 42 |
+
- from: "pos_prompt:0"
|
| 43 |
+
to: "ksampler:positive"
|
| 44 |
+
- from: "neg_prompt:0"
|
| 45 |
+
to: "ksampler:negative"
|
| 46 |
+
|
| 47 |
+
- from: "vae_loader:0"
|
| 48 |
+
to: "vae_decode:vae"
|
| 49 |
+
- from: "vae_loader:0"
|
| 50 |
+
to: "vae_encode:vae"
|
| 51 |
+
|
| 52 |
+
dynamic_lora_chains:
|
| 53 |
+
lora_chain:
|
| 54 |
+
template: "LoraLoader"
|
| 55 |
+
output_map:
|
| 56 |
+
"unet_loader:0": "model"
|
| 57 |
+
"clip_loader:0": "clip"
|
| 58 |
+
input_map:
|
| 59 |
+
"model": "model"
|
| 60 |
+
"clip": "clip"
|
| 61 |
+
end_input_map:
|
| 62 |
+
"model": ["cfg_norm:model"]
|
| 63 |
+
"clip": ["pos_prompt:clip", "neg_prompt:clip"]
|
| 64 |
+
|
| 65 |
+
dynamic_conditioning_chains:
|
| 66 |
+
conditioning_chain:
|
| 67 |
+
ksampler_node: "ksampler"
|
| 68 |
+
clip_source: "clip_loader:0"
|
| 69 |
+
|
| 70 |
+
dynamic_pid_chains:
|
| 71 |
+
pid_chain:
|
| 72 |
+
ksampler_node: "ksampler"
|
| 73 |
+
|
| 74 |
+
dynamic_joyai_reference_chains:
|
| 75 |
+
joyai_reference_chain:
|
| 76 |
+
pos_prompt_node: "pos_prompt"
|
| 77 |
+
neg_prompt_node: "neg_prompt"
|
| 78 |
+
vae_node: "vae_loader"
|
| 79 |
+
|
| 80 |
+
ui_map:
|
| 81 |
+
unet_name: "unet_loader:unet_name"
|
| 82 |
+
vae_name: "vae_loader:vae_name"
|
| 83 |
+
clip_name: "clip_loader:clip_name"
|
| 84 |
+
positive_prompt: "pos_prompt:prompt"
|
| 85 |
+
negative_prompt: "neg_prompt:prompt"
|
| 86 |
+
|
core/pipelines/workflow_recipes/_partials/conditioning/kandinsky-5.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -66,6 +72,8 @@ dynamic_pid_chains:
|
|
| 66 |
ksampler_node: "ksampler"
|
| 67 |
|
| 68 |
ui_map:
|
|
|
|
|
|
|
| 69 |
unet_name: "unet_loader:unet_name"
|
| 70 |
vae_name: "vae_loader:vae_name"
|
| 71 |
clip1_name: "clip_loader:clip_name1"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 72 |
ksampler_node: "ksampler"
|
| 73 |
|
| 74 |
ui_map:
|
| 75 |
+
positive_prompt: "pos_prompt:text"
|
| 76 |
+
negative_prompt: "neg_prompt:text"
|
| 77 |
unet_name: "unet_loader:unet_name"
|
| 78 |
vae_name: "vae_loader:vae_name"
|
| 79 |
clip1_name: "clip_loader:clip_name1"
|
core/pipelines/workflow_recipes/_partials/conditioning/krea-2.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -58,6 +64,8 @@ dynamic_pid_chains:
|
|
| 58 |
ksampler_node: "ksampler"
|
| 59 |
|
| 60 |
ui_map:
|
|
|
|
|
|
|
| 61 |
unet_name: "unet_loader:unet_name"
|
| 62 |
clip_name: "clip_loader:clip_name"
|
| 63 |
vae_name: "vae_loader:vae_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 64 |
ksampler_node: "ksampler"
|
| 65 |
|
| 66 |
ui_map:
|
| 67 |
+
positive_prompt: "pos_prompt:text"
|
| 68 |
+
negative_prompt: "neg_prompt:text"
|
| 69 |
unet_name: "unet_loader:unet_name"
|
| 70 |
clip_name: "clip_loader:clip_name"
|
| 71 |
vae_name: "vae_loader:vae_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/lens.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -53,6 +59,8 @@ dynamic_pid_chains:
|
|
| 53 |
ksampler_node: "ksampler"
|
| 54 |
|
| 55 |
ui_map:
|
|
|
|
|
|
|
| 56 |
unet_name: "unet_loader:unet_name"
|
| 57 |
clip_name: "clip_loader:clip_name"
|
| 58 |
vae_name: "vae_loader:vae_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 59 |
ksampler_node: "ksampler"
|
| 60 |
|
| 61 |
ui_map:
|
| 62 |
+
positive_prompt: "pos_prompt:text"
|
| 63 |
+
negative_prompt: "neg_prompt:text"
|
| 64 |
unet_name: "unet_loader:unet_name"
|
| 65 |
clip_name: "clip_loader:clip_name"
|
| 66 |
vae_name: "vae_loader:vae_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/longcat-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -82,6 +88,8 @@ dynamic_pid_chains:
|
|
| 82 |
ksampler_node: "ksampler"
|
| 83 |
|
| 84 |
ui_map:
|
|
|
|
|
|
|
| 85 |
unet_name: "unet_loader:unet_name"
|
| 86 |
vae_name: "vae_loader:vae_name"
|
| 87 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 88 |
ksampler_node: "ksampler"
|
| 89 |
|
| 90 |
ui_map:
|
| 91 |
+
positive_prompt: "pos_prompt:text"
|
| 92 |
+
negative_prompt: "neg_prompt:text"
|
| 93 |
unet_name: "unet_loader:unet_name"
|
| 94 |
vae_name: "vae_loader:vae_name"
|
| 95 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/lumina.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
ckpt_loader:
|
| 3 |
class_type: CheckpointLoaderSimple
|
| 4 |
title: "Load Checkpoint"
|
|
@@ -58,4 +64,6 @@ dynamic_pid_chains:
|
|
| 58 |
ksampler_node: "ksampler"
|
| 59 |
|
| 60 |
ui_map:
|
|
|
|
|
|
|
| 61 |
model_name: "ckpt_loader:ckpt_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
ckpt_loader:
|
| 9 |
class_type: CheckpointLoaderSimple
|
| 10 |
title: "Load Checkpoint"
|
|
|
|
| 64 |
ksampler_node: "ksampler"
|
| 65 |
|
| 66 |
ui_map:
|
| 67 |
+
positive_prompt: "pos_prompt:text"
|
| 68 |
+
negative_prompt: "neg_prompt:text"
|
| 69 |
model_name: "ckpt_loader:ckpt_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/mage-flow.yaml
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
unet_loader:
|
| 3 |
+
class_type: UNETLoader
|
| 4 |
+
title: "Load Diffusion Model"
|
| 5 |
+
params:
|
| 6 |
+
weight_dtype: "default"
|
| 7 |
+
vae_loader:
|
| 8 |
+
class_type: VAELoader
|
| 9 |
+
title: "Load VAE"
|
| 10 |
+
clip_loader:
|
| 11 |
+
class_type: CLIPLoader
|
| 12 |
+
title: "Load CLIP"
|
| 13 |
+
params:
|
| 14 |
+
type: "mage"
|
| 15 |
+
device: "default"
|
| 16 |
+
text_encode_latent:
|
| 17 |
+
class_type: TextEncodeMageFlowEdit
|
| 18 |
+
title: "TextEncodeMageFlowEdit"
|
| 19 |
+
|
| 20 |
+
connections:
|
| 21 |
+
- from: "unet_loader:0"
|
| 22 |
+
to: "ksampler:model"
|
| 23 |
+
- from: "clip_loader:0"
|
| 24 |
+
to: "text_encode_latent:clip"
|
| 25 |
+
- from: "vae_loader:0"
|
| 26 |
+
to: "vae_decode:vae"
|
| 27 |
+
- from: "vae_loader:0"
|
| 28 |
+
to: "vae_encode:vae"
|
| 29 |
+
- from: "text_encode_latent:0"
|
| 30 |
+
to: "ksampler:positive"
|
| 31 |
+
- from: "text_encode_latent:1"
|
| 32 |
+
to: "ksampler:negative"
|
| 33 |
+
- from: "text_encode_latent:2"
|
| 34 |
+
to: "ksampler:latent_image"
|
| 35 |
+
|
| 36 |
+
dynamic_lora_chains:
|
| 37 |
+
lora_chain:
|
| 38 |
+
template: "LoraLoader"
|
| 39 |
+
output_map:
|
| 40 |
+
"unet_loader:0": "model"
|
| 41 |
+
"clip_loader:0": "clip"
|
| 42 |
+
input_map:
|
| 43 |
+
"model": "model"
|
| 44 |
+
"clip": "clip"
|
| 45 |
+
end_input_map:
|
| 46 |
+
"model": ["ksampler:model"]
|
| 47 |
+
"clip": ["text_encode_latent:clip"]
|
| 48 |
+
|
| 49 |
+
dynamic_controlnet_chains:
|
| 50 |
+
controlnet_chain:
|
| 51 |
+
template: "ControlNetApplyAdvanced"
|
| 52 |
+
ksampler_node: "ksampler"
|
| 53 |
+
vae_source: "vae_loader:0"
|
| 54 |
+
|
| 55 |
+
dynamic_conditioning_chains:
|
| 56 |
+
conditioning_chain:
|
| 57 |
+
ksampler_node: "ksampler"
|
| 58 |
+
clip_source: "clip_loader:0"
|
| 59 |
+
|
| 60 |
+
dynamic_pid_chains:
|
| 61 |
+
pid_chain:
|
| 62 |
+
ksampler_node: "ksampler"
|
| 63 |
+
|
| 64 |
+
dynamic_reference_image_chains:
|
| 65 |
+
reference_image_chain:
|
| 66 |
+
text_encode_node: "text_encode_latent"
|
| 67 |
+
vae_node: "vae_loader"
|
| 68 |
+
|
| 69 |
+
ui_map:
|
| 70 |
+
unet_name: "unet_loader:unet_name"
|
| 71 |
+
vae_name: "vae_loader:vae_name"
|
| 72 |
+
clip_name: "clip_loader:clip_name"
|
| 73 |
+
positive_prompt: "text_encode_latent:prompt"
|
| 74 |
+
negative_prompt: "text_encode_latent:negative_prompt"
|
| 75 |
+
width: "text_encode_latent:width"
|
| 76 |
+
height: "text_encode_latent:height"
|
| 77 |
+
batch_size: "text_encode_latent:batch_size"
|
core/pipelines/workflow_recipes/_partials/conditioning/newbie-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -63,6 +69,8 @@ dynamic_pid_chains:
|
|
| 63 |
ksampler_node: "ksampler"
|
| 64 |
|
| 65 |
ui_map:
|
|
|
|
|
|
|
| 66 |
unet_name: "unet_loader:unet_name"
|
| 67 |
vae_name: "vae_loader:vae_name"
|
| 68 |
clip1_name: "clip_loader:clip_name1"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 69 |
ksampler_node: "ksampler"
|
| 70 |
|
| 71 |
ui_map:
|
| 72 |
+
positive_prompt: "pos_prompt:text"
|
| 73 |
+
negative_prompt: "neg_prompt:text"
|
| 74 |
unet_name: "unet_loader:unet_name"
|
| 75 |
vae_name: "vae_loader:vae_name"
|
| 76 |
clip1_name: "clip_loader:clip_name1"
|
core/pipelines/workflow_recipes/_partials/conditioning/omnigen2.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -58,6 +64,8 @@ dynamic_pid_chains:
|
|
| 58 |
ksampler_node: "ksampler"
|
| 59 |
|
| 60 |
ui_map:
|
|
|
|
|
|
|
| 61 |
unet_name: "unet_loader:unet_name"
|
| 62 |
vae_name: "vae_loader:vae_name"
|
| 63 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 64 |
ksampler_node: "ksampler"
|
| 65 |
|
| 66 |
ui_map:
|
| 67 |
+
positive_prompt: "pos_prompt:text"
|
| 68 |
+
negative_prompt: "neg_prompt:text"
|
| 69 |
unet_name: "unet_loader:unet_name"
|
| 70 |
vae_name: "vae_loader:vae_name"
|
| 71 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/ovis-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -49,6 +55,8 @@ dynamic_pid_chains:
|
|
| 49 |
ksampler_node: "ksampler"
|
| 50 |
|
| 51 |
ui_map:
|
|
|
|
|
|
|
| 52 |
unet_name: "unet_loader:unet_name"
|
| 53 |
vae_name: "vae_loader:vae_name"
|
| 54 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 55 |
ksampler_node: "ksampler"
|
| 56 |
|
| 57 |
ui_map:
|
| 58 |
+
positive_prompt: "pos_prompt:text"
|
| 59 |
+
negative_prompt: "neg_prompt:text"
|
| 60 |
unet_name: "unet_loader:unet_name"
|
| 61 |
vae_name: "vae_loader:vae_name"
|
| 62 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/pixeldit.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -38,6 +44,8 @@ dynamic_conditioning_chains:
|
|
| 38 |
clip_source: "clip_loader:0"
|
| 39 |
|
| 40 |
ui_map:
|
|
|
|
|
|
|
| 41 |
unet_name: "unet_loader:unet_name"
|
| 42 |
vae_name: "vae_loader:vae_name"
|
| 43 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 44 |
clip_source: "clip_loader:0"
|
| 45 |
|
| 46 |
ui_map:
|
| 47 |
+
positive_prompt: "pos_prompt:text"
|
| 48 |
+
negative_prompt: "neg_prompt:text"
|
| 49 |
unet_name: "unet_loader:unet_name"
|
| 50 |
vae_name: "vae_loader:vae_name"
|
| 51 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/qwen-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Qwen UNET"
|
|
@@ -70,6 +76,8 @@ dynamic_pid_chains:
|
|
| 70 |
ksampler_node: "ksampler"
|
| 71 |
|
| 72 |
ui_map:
|
|
|
|
|
|
|
| 73 |
unet_name: "unet_loader:unet_name"
|
| 74 |
vae_name: "vae_loader:vae_name"
|
| 75 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Qwen UNET"
|
|
|
|
| 76 |
ksampler_node: "ksampler"
|
| 77 |
|
| 78 |
ui_map:
|
| 79 |
+
positive_prompt: "pos_prompt:text"
|
| 80 |
+
negative_prompt: "neg_prompt:text"
|
| 81 |
unet_name: "unet_loader:unet_name"
|
| 82 |
vae_name: "vae_loader:vae_name"
|
| 83 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/sd15.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
ckpt_loader:
|
| 3 |
class_type: CheckpointLoaderSimple
|
| 4 |
title: "Load Checkpoint"
|
|
@@ -65,5 +71,7 @@ dynamic_conditioning_chains:
|
|
| 65 |
clip_source: "clip_set_last_layer:0"
|
| 66 |
|
| 67 |
ui_map:
|
|
|
|
|
|
|
| 68 |
model_name: "ckpt_loader:ckpt_name"
|
| 69 |
clip_skip: "clip_set_last_layer:stop_at_clip_layer"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
ckpt_loader:
|
| 9 |
class_type: CheckpointLoaderSimple
|
| 10 |
title: "Load Checkpoint"
|
|
|
|
| 71 |
clip_source: "clip_set_last_layer:0"
|
| 72 |
|
| 73 |
ui_map:
|
| 74 |
+
positive_prompt: "pos_prompt:text"
|
| 75 |
+
negative_prompt: "neg_prompt:text"
|
| 76 |
model_name: "ckpt_loader:ckpt_name"
|
| 77 |
clip_skip: "clip_set_last_layer:stop_at_clip_layer"
|
core/pipelines/workflow_recipes/_partials/conditioning/sd35.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
ckpt_loader:
|
| 3 |
class_type: CheckpointLoaderSimple
|
| 4 |
title: "Load Checkpoint"
|
|
@@ -59,4 +65,6 @@ dynamic_pid_chains:
|
|
| 59 |
ksampler_node: "ksampler"
|
| 60 |
|
| 61 |
ui_map:
|
|
|
|
|
|
|
| 62 |
model_name: "ckpt_loader:ckpt_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
ckpt_loader:
|
| 9 |
class_type: CheckpointLoaderSimple
|
| 10 |
title: "Load Checkpoint"
|
|
|
|
| 65 |
ksampler_node: "ksampler"
|
| 66 |
|
| 67 |
ui_map:
|
| 68 |
+
positive_prompt: "pos_prompt:text"
|
| 69 |
+
negative_prompt: "neg_prompt:text"
|
| 70 |
model_name: "ckpt_loader:ckpt_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/sdxl.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
ckpt_loader:
|
| 3 |
class_type: CheckpointLoaderSimple
|
| 4 |
title: "Load Checkpoint"
|
|
@@ -64,4 +70,6 @@ dynamic_pid_chains:
|
|
| 64 |
ksampler_node: "ksampler"
|
| 65 |
|
| 66 |
ui_map:
|
|
|
|
|
|
|
| 67 |
model_name: "ckpt_loader:ckpt_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
ckpt_loader:
|
| 9 |
class_type: CheckpointLoaderSimple
|
| 10 |
title: "Load Checkpoint"
|
|
|
|
| 70 |
ksampler_node: "ksampler"
|
| 71 |
|
| 72 |
ui_map:
|
| 73 |
+
positive_prompt: "pos_prompt:text"
|
| 74 |
+
negative_prompt: "neg_prompt:text"
|
| 75 |
model_name: "ckpt_loader:ckpt_name"
|
core/pipelines/workflow_recipes/_partials/conditioning/z-image.yaml
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
nodes:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
unet_loader:
|
| 3 |
class_type: UNETLoader
|
| 4 |
title: "Load Diffusion Model"
|
|
@@ -64,6 +70,8 @@ dynamic_pid_chains:
|
|
| 64 |
ksampler_node: "ksampler"
|
| 65 |
|
| 66 |
ui_map:
|
|
|
|
|
|
|
| 67 |
unet_name: "unet_loader:unet_name"
|
| 68 |
vae_name: "vae_loader:vae_name"
|
| 69 |
clip_name: "clip_loader:clip_name"
|
|
|
|
| 1 |
nodes:
|
| 2 |
+
pos_prompt:
|
| 3 |
+
class_type: CLIPTextEncode
|
| 4 |
+
title: "CLIP Text Encode (Positive)"
|
| 5 |
+
neg_prompt:
|
| 6 |
+
class_type: CLIPTextEncode
|
| 7 |
+
title: "CLIP Text Encode (Negative)"
|
| 8 |
unet_loader:
|
| 9 |
class_type: UNETLoader
|
| 10 |
title: "Load Diffusion Model"
|
|
|
|
| 70 |
ksampler_node: "ksampler"
|
| 71 |
|
| 72 |
ui_map:
|
| 73 |
+
positive_prompt: "pos_prompt:text"
|
| 74 |
+
negative_prompt: "neg_prompt:text"
|
| 75 |
unet_name: "unet_loader:unet_name"
|
| 76 |
vae_name: "vae_loader:vae_name"
|
| 77 |
clip_name: "clip_loader:clip_name"
|
core/pipelines/workflow_recipes/_partials/input/txt2img_hidream_o1_latent.yaml
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
-
nodes:
|
| 2 |
-
latent_source:
|
| 3 |
-
class_type: "EmptyHiDreamO1LatentImage"
|
| 4 |
-
title: "Empty HiDream-O1 Latent Image"
|
| 5 |
-
|
| 6 |
-
connections: []
|
| 7 |
-
|
| 8 |
-
ui_map:
|
| 9 |
-
width: "latent_source:width"
|
| 10 |
-
height: "latent_source:height"
|
| 11 |
-
batch_size: "latent_source:batch_size"
|
|
|
|
| 1 |
+
nodes:
|
| 2 |
+
latent_source:
|
| 3 |
+
class_type: "EmptyHiDreamO1LatentImage"
|
| 4 |
+
title: "Empty HiDream-O1 Latent Image"
|
| 5 |
+
|
| 6 |
+
connections: []
|
| 7 |
+
|
| 8 |
+
ui_map:
|
| 9 |
+
width: "latent_source:width"
|
| 10 |
+
height: "latent_source:height"
|
| 11 |
+
batch_size: "latent_source:batch_size"
|
core/pipelines/workflow_recipes/_partials/input/txt2img_none.yaml
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nodes: {}
|
| 2 |
+
|
| 3 |
+
connections: []
|
| 4 |
+
|
| 5 |
+
ui_map: {}
|
ui/events/chain_handlers.py
CHANGED
|
@@ -748,6 +748,39 @@ def create_joyai_reference_event_handlers(prefix, ui_components):
|
|
| 748 |
del_button.click(fn=del_ref_row, inputs=[count_state], outputs=del_outputs, show_progress=False)
|
| 749 |
|
| 750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 751 |
def create_embedding_event_handlers(prefix, ui_components):
|
| 752 |
rows = ui_components.get(f'embedding_rows_{prefix}')
|
| 753 |
if not rows: return
|
|
|
|
| 748 |
del_button.click(fn=del_ref_row, inputs=[count_state], outputs=del_outputs, show_progress=False)
|
| 749 |
|
| 750 |
|
| 751 |
+
def create_reference_image_event_handlers(prefix, ui_components):
|
| 752 |
+
ref_rows = ui_components.get(f'reference_image_rows_{prefix}')
|
| 753 |
+
if not ref_rows: return
|
| 754 |
+
count_state = ui_components[f'reference_image_count_state_{prefix}']
|
| 755 |
+
add_button = ui_components[f'add_reference_image_button_{prefix}']
|
| 756 |
+
del_button = ui_components[f'delete_reference_image_button_{prefix}']
|
| 757 |
+
images = ui_components[f'reference_image_images_{prefix}']
|
| 758 |
+
|
| 759 |
+
def add_ref_row(c):
|
| 760 |
+
c += 1
|
| 761 |
+
return {
|
| 762 |
+
count_state: c,
|
| 763 |
+
ref_rows[c - 1]: gr.update(visible=True),
|
| 764 |
+
add_button: gr.update(visible=c < 10),
|
| 765 |
+
del_button: gr.update(visible=True),
|
| 766 |
+
}
|
| 767 |
+
|
| 768 |
+
def del_ref_row(c):
|
| 769 |
+
c -= 1
|
| 770 |
+
return {
|
| 771 |
+
count_state: c,
|
| 772 |
+
ref_rows[c]: gr.update(visible=False),
|
| 773 |
+
images[c]: None,
|
| 774 |
+
add_button: gr.update(visible=True),
|
| 775 |
+
del_button: gr.update(visible=c > 0),
|
| 776 |
+
}
|
| 777 |
+
|
| 778 |
+
add_outputs = [count_state, add_button, del_button] + ref_rows
|
| 779 |
+
del_outputs = [count_state, add_button, del_button] + ref_rows + images
|
| 780 |
+
add_button.click(fn=add_ref_row, inputs=[count_state], outputs=add_outputs, show_progress=False)
|
| 781 |
+
del_button.click(fn=del_ref_row, inputs=[count_state], outputs=del_outputs, show_progress=False)
|
| 782 |
+
|
| 783 |
+
|
| 784 |
def create_embedding_event_handlers(prefix, ui_components):
|
| 785 |
rows = ui_components.get(f'embedding_rows_{prefix}')
|
| 786 |
if not rows: return
|
ui/events/change_handlers.py
CHANGED
|
@@ -17,7 +17,7 @@ from .config_loaders import (
|
|
| 17 |
load_ipadapter_config
|
| 18 |
)
|
| 19 |
|
| 20 |
-
def make_update_fn(m_comp, cat_comp, cs_comp, ar_comp, width_comp, height_comp, cn_types, cn_series, cn_filepaths, anima_cn_types, anima_cn_series, anima_cn_filepaths, diffsynth_cn_types, diffsynth_cn_series, diffsynth_cn_filepaths, krea2_cn_types, krea2_cn_series, krea2_cn_filepaths, ipa_preset, lora_acc, cn_acc, anima_cn_acc, diffsynth_cn_acc, krea2_cn_acc, ipa_acc, sd3_ipa_acc, flux1_ipa_acc, style_acc, embed_acc, cond_acc, ref_latent_acc, hidream_o1_ref_acc, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp, pid_acc=None, vae_acc=None, joyai_ref_acc=None):
|
| 21 |
def update_fn(*args):
|
| 22 |
arch = args[0]
|
| 23 |
category = args[1]
|
|
@@ -69,6 +69,7 @@ def make_update_fn(m_comp, cat_comp, cs_comp, ar_comp, width_comp, height_comp,
|
|
| 69 |
if ref_latent_acc: updates[ref_latent_acc] = gr.update(visible=('reference_latent' in enabled_chains))
|
| 70 |
if hidream_o1_ref_acc: updates[hidream_o1_ref_acc] = gr.update(visible=('hidream_o1_reference' in enabled_chains))
|
| 71 |
if joyai_ref_acc: updates[joyai_ref_acc] = gr.update(visible=('joyai_reference' in enabled_chains))
|
|
|
|
| 72 |
if pid_acc: updates[pid_acc] = gr.update(visible=('pid' in enabled_chains))
|
| 73 |
if vae_acc: updates[vae_acc] = gr.update(visible=('vae' in enabled_chains))
|
| 74 |
|
|
@@ -143,7 +144,7 @@ def make_update_fn(m_comp, cat_comp, cs_comp, ar_comp, width_comp, height_comp,
|
|
| 143 |
return update_fn
|
| 144 |
|
| 145 |
|
| 146 |
-
def make_model_change_fn(cat_comp_ref, cs_comp, ar_comp, width_comp, height_comp, cn_types, cn_series, cn_filepaths, anima_cn_types, anima_cn_series, anima_cn_filepaths, diffsynth_cn_types, diffsynth_cn_series, diffsynth_cn_filepaths, krea2_cn_types, krea2_cn_series, krea2_cn_filepaths, arch_comp_ref, ipa_preset, lora_acc, cn_acc, anima_cn_acc, diffsynth_cn_acc, krea2_cn_acc, ipa_acc, sd3_ipa_acc, flux1_ipa_acc, style_acc, embed_acc, cond_acc, ref_latent_acc, hidream_o1_ref_acc, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp, pid_acc=None, vae_acc=None, joyai_ref_acc=None):
|
| 147 |
def change_fn(*args):
|
| 148 |
model_name = args[0]
|
| 149 |
idx = 1
|
|
@@ -200,9 +201,9 @@ def make_model_change_fn(cat_comp_ref, cs_comp, ar_comp, width_comp, height_comp
|
|
| 200 |
if ref_latent_acc: updates[ref_latent_acc] = gr.update(visible=('reference_latent' in enabled_chains))
|
| 201 |
if hidream_o1_ref_acc: updates[hidream_o1_ref_acc] = gr.update(visible=('hidream_o1_reference' in enabled_chains))
|
| 202 |
if joyai_ref_acc: updates[joyai_ref_acc] = gr.update(visible=('joyai_reference' in enabled_chains))
|
|
|
|
| 203 |
if pid_acc: updates[pid_acc] = gr.update(visible=('pid' in enabled_chains))
|
| 204 |
if vae_acc: updates[vae_acc] = gr.update(visible=('vae' in enabled_chains))
|
| 205 |
-
if vae_acc: updates[vae_acc] = gr.update(visible=('vae' in enabled_chains))
|
| 206 |
|
| 207 |
if cs_comp:
|
| 208 |
updates[cs_comp] = gr.update(visible=(arch_model_type == "sd15"))
|
|
|
|
| 17 |
load_ipadapter_config
|
| 18 |
)
|
| 19 |
|
| 20 |
+
def make_update_fn(m_comp, cat_comp, cs_comp, ar_comp, width_comp, height_comp, cn_types, cn_series, cn_filepaths, anima_cn_types, anima_cn_series, anima_cn_filepaths, diffsynth_cn_types, diffsynth_cn_series, diffsynth_cn_filepaths, krea2_cn_types, krea2_cn_series, krea2_cn_filepaths, ipa_preset, lora_acc, cn_acc, anima_cn_acc, diffsynth_cn_acc, krea2_cn_acc, ipa_acc, sd3_ipa_acc, flux1_ipa_acc, style_acc, embed_acc, cond_acc, ref_latent_acc, hidream_o1_ref_acc, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp, pid_acc=None, vae_acc=None, joyai_ref_acc=None, ref_img_acc=None):
|
| 21 |
def update_fn(*args):
|
| 22 |
arch = args[0]
|
| 23 |
category = args[1]
|
|
|
|
| 69 |
if ref_latent_acc: updates[ref_latent_acc] = gr.update(visible=('reference_latent' in enabled_chains))
|
| 70 |
if hidream_o1_ref_acc: updates[hidream_o1_ref_acc] = gr.update(visible=('hidream_o1_reference' in enabled_chains))
|
| 71 |
if joyai_ref_acc: updates[joyai_ref_acc] = gr.update(visible=('joyai_reference' in enabled_chains))
|
| 72 |
+
if ref_img_acc: updates[ref_img_acc] = gr.update(visible=('reference_image' in enabled_chains))
|
| 73 |
if pid_acc: updates[pid_acc] = gr.update(visible=('pid' in enabled_chains))
|
| 74 |
if vae_acc: updates[vae_acc] = gr.update(visible=('vae' in enabled_chains))
|
| 75 |
|
|
|
|
| 144 |
return update_fn
|
| 145 |
|
| 146 |
|
| 147 |
+
def make_model_change_fn(cat_comp_ref, cs_comp, ar_comp, width_comp, height_comp, cn_types, cn_series, cn_filepaths, anima_cn_types, anima_cn_series, anima_cn_filepaths, diffsynth_cn_types, diffsynth_cn_series, diffsynth_cn_filepaths, krea2_cn_types, krea2_cn_series, krea2_cn_filepaths, arch_comp_ref, ipa_preset, lora_acc, cn_acc, anima_cn_acc, diffsynth_cn_acc, krea2_cn_acc, ipa_acc, sd3_ipa_acc, flux1_ipa_acc, style_acc, embed_acc, cond_acc, ref_latent_acc, hidream_o1_ref_acc, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp, pid_acc=None, vae_acc=None, joyai_ref_acc=None, ref_img_acc=None):
|
| 148 |
def change_fn(*args):
|
| 149 |
model_name = args[0]
|
| 150 |
idx = 1
|
|
|
|
| 201 |
if ref_latent_acc: updates[ref_latent_acc] = gr.update(visible=('reference_latent' in enabled_chains))
|
| 202 |
if hidream_o1_ref_acc: updates[hidream_o1_ref_acc] = gr.update(visible=('hidream_o1_reference' in enabled_chains))
|
| 203 |
if joyai_ref_acc: updates[joyai_ref_acc] = gr.update(visible=('joyai_reference' in enabled_chains))
|
| 204 |
+
if ref_img_acc: updates[ref_img_acc] = gr.update(visible=('reference_image' in enabled_chains))
|
| 205 |
if pid_acc: updates[pid_acc] = gr.update(visible=('pid' in enabled_chains))
|
| 206 |
if vae_acc: updates[vae_acc] = gr.update(visible=('vae' in enabled_chains))
|
|
|
|
| 207 |
|
| 208 |
if cs_comp:
|
| 209 |
updates[cs_comp] = gr.update(visible=(arch_model_type == "sd15"))
|
ui/events/main.py
CHANGED
|
@@ -13,7 +13,8 @@ from .chain_handlers import (
|
|
| 13 |
create_style_event_handlers,
|
| 14 |
create_reference_latent_event_handlers,
|
| 15 |
create_hidream_o1_reference_event_handlers,
|
| 16 |
-
create_joyai_reference_event_handlers
|
|
|
|
| 17 |
)
|
| 18 |
from .change_handlers import (
|
| 19 |
make_update_fn,
|
|
@@ -68,6 +69,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 68 |
ref_latent_accordion = ui_components.get(f'reference_latent_accordion_{prefix}')
|
| 69 |
hidream_o1_ref_accordion = ui_components.get(f'hidream_o1_reference_accordion_{prefix}')
|
| 70 |
joyai_ref_accordion = ui_components.get(f'joyai_reference_accordion_{prefix}')
|
|
|
|
| 71 |
pid_accordion = ui_components.get(f'pid_accordion_{prefix}')
|
| 72 |
vae_accordion = ui_components.get(f'vae_accordion_{prefix}')
|
| 73 |
|
|
@@ -106,6 +108,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 106 |
if ref_latent_accordion: outputs.append(ref_latent_accordion)
|
| 107 |
if hidream_o1_ref_accordion: outputs.append(hidream_o1_ref_accordion)
|
| 108 |
if joyai_ref_accordion: outputs.append(joyai_ref_accordion)
|
|
|
|
| 109 |
if pid_accordion: outputs.append(pid_accordion)
|
| 110 |
if vae_accordion: outputs.append(vae_accordion)
|
| 111 |
if ipa_preset_list: outputs.append(ipa_preset_list)
|
|
@@ -120,7 +123,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 120 |
krea2_cn_types_list, krea2_cn_series_list, krea2_cn_filepaths_list,
|
| 121 |
ipa_preset_list, lora_accordion, cn_accordion, anima_cn_accordion, diffsynth_cn_accordion, krea2_cn_accordion, ipa_accordion, sd3_ipa_accordion, flux1_ipa_accordion, style_accordion, embedding_accordion, conditioning_accordion,
|
| 122 |
ref_latent_accordion, hidream_o1_ref_accordion, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp,
|
| 123 |
-
pid_acc=pid_accordion, vae_acc=vae_accordion, joyai_ref_acc=joyai_ref_accordion
|
| 124 |
)
|
| 125 |
inputs = [arch_comp, cat_comp]
|
| 126 |
if aspect_ratio_comp:
|
|
@@ -153,6 +156,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 153 |
if ref_latent_accordion: outputs2.append(ref_latent_accordion)
|
| 154 |
if hidream_o1_ref_accordion: outputs2.append(hidream_o1_ref_accordion)
|
| 155 |
if joyai_ref_accordion: outputs2.append(joyai_ref_accordion)
|
|
|
|
| 156 |
if pid_accordion: outputs2.append(pid_accordion)
|
| 157 |
if vae_accordion: outputs2.append(vae_accordion)
|
| 158 |
if ipa_preset_list: outputs2.append(ipa_preset_list)
|
|
@@ -172,7 +176,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 172 |
krea2_cn_types_list, krea2_cn_series_list, krea2_cn_filepaths_list,
|
| 173 |
arch_comp, ipa_preset_list, lora_accordion, cn_accordion, anima_cn_accordion, diffsynth_cn_accordion, krea2_cn_accordion, ipa_accordion, sd3_ipa_accordion, flux1_ipa_accordion, style_accordion, embedding_accordion, conditioning_accordion,
|
| 174 |
ref_latent_accordion, hidream_o1_ref_accordion, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp,
|
| 175 |
-
pid_acc=pid_accordion, vae_acc=vae_accordion, joyai_ref_acc=joyai_ref_accordion
|
| 176 |
)
|
| 177 |
model_comp.change(fn=change_fn, inputs=inputs2, outputs=outputs2)
|
| 178 |
|
|
@@ -190,6 +194,7 @@ def attach_event_handlers(ui_components, demo):
|
|
| 190 |
create_reference_latent_event_handlers(prefix, ui_components)
|
| 191 |
create_hidream_o1_reference_event_handlers(prefix, ui_components)
|
| 192 |
create_joyai_reference_event_handlers(prefix, ui_components)
|
|
|
|
| 193 |
create_run_event(prefix, task_type, ui_components)
|
| 194 |
|
| 195 |
if 'view_mode_inpaint' in ui_components:
|
|
|
|
| 13 |
create_style_event_handlers,
|
| 14 |
create_reference_latent_event_handlers,
|
| 15 |
create_hidream_o1_reference_event_handlers,
|
| 16 |
+
create_joyai_reference_event_handlers,
|
| 17 |
+
create_reference_image_event_handlers
|
| 18 |
)
|
| 19 |
from .change_handlers import (
|
| 20 |
make_update_fn,
|
|
|
|
| 69 |
ref_latent_accordion = ui_components.get(f'reference_latent_accordion_{prefix}')
|
| 70 |
hidream_o1_ref_accordion = ui_components.get(f'hidream_o1_reference_accordion_{prefix}')
|
| 71 |
joyai_ref_accordion = ui_components.get(f'joyai_reference_accordion_{prefix}')
|
| 72 |
+
ref_img_accordion = ui_components.get(f'reference_image_accordion_{prefix}')
|
| 73 |
pid_accordion = ui_components.get(f'pid_accordion_{prefix}')
|
| 74 |
vae_accordion = ui_components.get(f'vae_accordion_{prefix}')
|
| 75 |
|
|
|
|
| 108 |
if ref_latent_accordion: outputs.append(ref_latent_accordion)
|
| 109 |
if hidream_o1_ref_accordion: outputs.append(hidream_o1_ref_accordion)
|
| 110 |
if joyai_ref_accordion: outputs.append(joyai_ref_accordion)
|
| 111 |
+
if ref_img_accordion: outputs.append(ref_img_accordion)
|
| 112 |
if pid_accordion: outputs.append(pid_accordion)
|
| 113 |
if vae_accordion: outputs.append(vae_accordion)
|
| 114 |
if ipa_preset_list: outputs.append(ipa_preset_list)
|
|
|
|
| 123 |
krea2_cn_types_list, krea2_cn_series_list, krea2_cn_filepaths_list,
|
| 124 |
ipa_preset_list, lora_accordion, cn_accordion, anima_cn_accordion, diffsynth_cn_accordion, krea2_cn_accordion, ipa_accordion, sd3_ipa_accordion, flux1_ipa_accordion, style_accordion, embedding_accordion, conditioning_accordion,
|
| 125 |
ref_latent_accordion, hidream_o1_ref_accordion, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp,
|
| 126 |
+
pid_acc=pid_accordion, vae_acc=vae_accordion, joyai_ref_acc=joyai_ref_accordion, ref_img_acc=ref_img_accordion
|
| 127 |
)
|
| 128 |
inputs = [arch_comp, cat_comp]
|
| 129 |
if aspect_ratio_comp:
|
|
|
|
| 156 |
if ref_latent_accordion: outputs2.append(ref_latent_accordion)
|
| 157 |
if hidream_o1_ref_accordion: outputs2.append(hidream_o1_ref_accordion)
|
| 158 |
if joyai_ref_accordion: outputs2.append(joyai_ref_accordion)
|
| 159 |
+
if ref_img_accordion: outputs2.append(ref_img_accordion)
|
| 160 |
if pid_accordion: outputs2.append(pid_accordion)
|
| 161 |
if vae_accordion: outputs2.append(vae_accordion)
|
| 162 |
if ipa_preset_list: outputs2.append(ipa_preset_list)
|
|
|
|
| 176 |
krea2_cn_types_list, krea2_cn_series_list, krea2_cn_filepaths_list,
|
| 177 |
arch_comp, ipa_preset_list, lora_accordion, cn_accordion, anima_cn_accordion, diffsynth_cn_accordion, krea2_cn_accordion, ipa_accordion, sd3_ipa_accordion, flux1_ipa_accordion, style_accordion, embedding_accordion, conditioning_accordion,
|
| 178 |
ref_latent_accordion, hidream_o1_ref_accordion, guidance_comp, prompt_comp, neg_prompt_comp, steps_comp, cfg_comp, sampler_comp, scheduler_comp,
|
| 179 |
+
pid_acc=pid_accordion, vae_acc=vae_accordion, joyai_ref_acc=joyai_ref_accordion, ref_img_acc=ref_img_accordion
|
| 180 |
)
|
| 181 |
model_comp.change(fn=change_fn, inputs=inputs2, outputs=outputs2)
|
| 182 |
|
|
|
|
| 194 |
create_reference_latent_event_handlers(prefix, ui_components)
|
| 195 |
create_hidream_o1_reference_event_handlers(prefix, ui_components)
|
| 196 |
create_joyai_reference_event_handlers(prefix, ui_components)
|
| 197 |
+
create_reference_image_event_handlers(prefix, ui_components)
|
| 198 |
create_run_event(prefix, task_type, ui_components)
|
| 199 |
|
| 200 |
if 'view_mode_inpaint' in ui_components:
|
ui/events/run_handlers.py
CHANGED
|
@@ -53,6 +53,7 @@ def create_run_event(prefix: str, task_type: str, ui_components: dict):
|
|
| 53 |
reference_latent_data_components = ui_components.get(f'all_reference_latent_components_flat_{prefix}', [])
|
| 54 |
hidream_o1_reference_data_components = ui_components.get(f'all_hidream_o1_reference_components_flat_{prefix}', [])
|
| 55 |
joyai_reference_data_components = ui_components.get(f'all_joyai_reference_components_flat_{prefix}', [])
|
|
|
|
| 56 |
|
| 57 |
run_inputs_map['vae_source'] = ui_components.get(f'vae_source_{prefix}')
|
| 58 |
run_inputs_map['vae_id'] = ui_components.get(f'vae_id_{prefix}')
|
|
@@ -63,7 +64,7 @@ def create_run_event(prefix: str, task_type: str, ui_components: dict):
|
|
| 63 |
all_chains = [
|
| 64 |
lora_data_components, controlnet_data_components, anima_controlnet_lllite_data_components, diffsynth_controlnet_data_components, krea2_controlnet_data_components, ipadapter_data_components,
|
| 65 |
sd3_ipadapter_data_components, flux1_ipadapter_data_components, style_data_components,
|
| 66 |
-
embedding_data_components, conditioning_data_components, reference_latent_data_components, hidream_o1_reference_data_components, joyai_reference_data_components
|
| 67 |
]
|
| 68 |
for chain in all_chains:
|
| 69 |
if chain:
|
|
@@ -94,6 +95,7 @@ def create_run_event(prefix: str, task_type: str, ui_components: dict):
|
|
| 94 |
assign_chain_data('reference_latent_data', reference_latent_data_components)
|
| 95 |
assign_chain_data('hidream_o1_reference_data', hidream_o1_reference_data_components)
|
| 96 |
assign_chain_data('joyai_reference_data', joyai_reference_data_components)
|
|
|
|
| 97 |
|
| 98 |
return ui_dict
|
| 99 |
|
|
|
|
| 53 |
reference_latent_data_components = ui_components.get(f'all_reference_latent_components_flat_{prefix}', [])
|
| 54 |
hidream_o1_reference_data_components = ui_components.get(f'all_hidream_o1_reference_components_flat_{prefix}', [])
|
| 55 |
joyai_reference_data_components = ui_components.get(f'all_joyai_reference_components_flat_{prefix}', [])
|
| 56 |
+
reference_image_data_components = ui_components.get(f'all_reference_image_components_flat_{prefix}', [])
|
| 57 |
|
| 58 |
run_inputs_map['vae_source'] = ui_components.get(f'vae_source_{prefix}')
|
| 59 |
run_inputs_map['vae_id'] = ui_components.get(f'vae_id_{prefix}')
|
|
|
|
| 64 |
all_chains = [
|
| 65 |
lora_data_components, controlnet_data_components, anima_controlnet_lllite_data_components, diffsynth_controlnet_data_components, krea2_controlnet_data_components, ipadapter_data_components,
|
| 66 |
sd3_ipadapter_data_components, flux1_ipadapter_data_components, style_data_components,
|
| 67 |
+
embedding_data_components, conditioning_data_components, reference_latent_data_components, hidream_o1_reference_data_components, joyai_reference_data_components, reference_image_data_components
|
| 68 |
]
|
| 69 |
for chain in all_chains:
|
| 70 |
if chain:
|
|
|
|
| 95 |
assign_chain_data('reference_latent_data', reference_latent_data_components)
|
| 96 |
assign_chain_data('hidream_o1_reference_data', hidream_o1_reference_data_components)
|
| 97 |
assign_chain_data('joyai_reference_data', joyai_reference_data_components)
|
| 98 |
+
assign_chain_data('reference_image_data', reference_image_data_components)
|
| 99 |
|
| 100 |
return ui_dict
|
| 101 |
|
ui/shared/hires_fix_ui.py
CHANGED
|
@@ -7,7 +7,7 @@ from .ui_components import (
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
-
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
@@ -102,6 +102,7 @@ def create_ui():
|
|
| 102 |
components.update(create_reference_latent_ui(prefix))
|
| 103 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 104 |
components.update(create_joyai_reference_ui(prefix))
|
|
|
|
| 105 |
components.update(create_vae_override_ui(prefix))
|
| 106 |
|
| 107 |
return components
|
|
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
+
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui, create_reference_image_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
|
|
| 102 |
components.update(create_reference_latent_ui(prefix))
|
| 103 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 104 |
components.update(create_joyai_reference_ui(prefix))
|
| 105 |
+
components.update(create_reference_image_ui(prefix))
|
| 106 |
components.update(create_vae_override_ui(prefix))
|
| 107 |
|
| 108 |
return components
|
ui/shared/img2img_ui.py
CHANGED
|
@@ -7,7 +7,7 @@ from .ui_components import (
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
-
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
@@ -83,6 +83,7 @@ def create_ui():
|
|
| 83 |
components.update(create_reference_latent_ui(prefix))
|
| 84 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 85 |
components.update(create_joyai_reference_ui(prefix))
|
|
|
|
| 86 |
components.update(create_vae_override_ui(prefix))
|
| 87 |
|
| 88 |
return components
|
|
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
+
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui, create_reference_image_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
|
|
| 83 |
components.update(create_reference_latent_ui(prefix))
|
| 84 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 85 |
components.update(create_joyai_reference_ui(prefix))
|
| 86 |
+
components.update(create_reference_image_ui(prefix))
|
| 87 |
components.update(create_vae_override_ui(prefix))
|
| 88 |
|
| 89 |
return components
|
ui/shared/inpaint_ui.py
CHANGED
|
@@ -6,7 +6,7 @@ from .ui_components import (
|
|
| 6 |
create_conditioning_ui, create_vae_override_ui,
|
| 7 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 8 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 9 |
-
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui
|
| 10 |
)
|
| 11 |
|
| 12 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
@@ -115,6 +115,7 @@ def create_ui():
|
|
| 115 |
components.update(create_reference_latent_ui(prefix))
|
| 116 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 117 |
components.update(create_joyai_reference_ui(prefix))
|
|
|
|
| 118 |
components.update(create_vae_override_ui(prefix))
|
| 119 |
components[f'accordion_wrapper_{prefix}'] = accordion_wrapper
|
| 120 |
|
|
|
|
| 6 |
create_conditioning_ui, create_vae_override_ui,
|
| 7 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 8 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 9 |
+
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui, create_reference_image_ui
|
| 10 |
)
|
| 11 |
|
| 12 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
|
|
| 115 |
components.update(create_reference_latent_ui(prefix))
|
| 116 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 117 |
components.update(create_joyai_reference_ui(prefix))
|
| 118 |
+
components.update(create_reference_image_ui(prefix))
|
| 119 |
components.update(create_vae_override_ui(prefix))
|
| 120 |
components[f'accordion_wrapper_{prefix}'] = accordion_wrapper
|
| 121 |
|
ui/shared/outpaint_ui.py
CHANGED
|
@@ -7,7 +7,7 @@ from .ui_components import (
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
-
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
@@ -98,6 +98,7 @@ def create_ui():
|
|
| 98 |
components.update(create_reference_latent_ui(prefix))
|
| 99 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 100 |
components.update(create_joyai_reference_ui(prefix))
|
|
|
|
| 101 |
components.update(create_vae_override_ui(prefix))
|
| 102 |
|
| 103 |
return components
|
|
|
|
| 7 |
create_conditioning_ui, create_vae_override_ui,
|
| 8 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 9 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 10 |
+
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui, create_reference_image_ui
|
| 11 |
)
|
| 12 |
|
| 13 |
default_vals = MODEL_DEFAULTS_CONFIG.get('Default', {})
|
|
|
|
| 98 |
components.update(create_reference_latent_ui(prefix))
|
| 99 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 100 |
components.update(create_joyai_reference_ui(prefix))
|
| 101 |
+
components.update(create_reference_image_ui(prefix))
|
| 102 |
components.update(create_vae_override_ui(prefix))
|
| 103 |
|
| 104 |
return components
|
ui/shared/txt2img_ui.py
CHANGED
|
@@ -6,7 +6,7 @@ from .ui_components import (
|
|
| 6 |
create_conditioning_ui, create_vae_override_ui,
|
| 7 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 8 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 9 |
-
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui,
|
| 10 |
create_pid_ui
|
| 11 |
)
|
| 12 |
|
|
@@ -55,6 +55,7 @@ def create_ui():
|
|
| 55 |
components.update(create_reference_latent_ui(prefix))
|
| 56 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 57 |
components.update(create_joyai_reference_ui(prefix))
|
|
|
|
| 58 |
components.update(create_vae_override_ui(prefix))
|
| 59 |
components.update(create_pid_ui(prefix))
|
| 60 |
|
|
|
|
| 6 |
create_conditioning_ui, create_vae_override_ui,
|
| 7 |
create_model_architecture_filter_ui, create_category_filter_ui,
|
| 8 |
create_sd3_ipadapter_ui, create_flux1_ipadapter_ui, create_style_ui,
|
| 9 |
+
create_reference_latent_ui, create_hidream_o1_reference_ui, create_joyai_reference_ui, create_reference_image_ui,
|
| 10 |
create_pid_ui
|
| 11 |
)
|
| 12 |
|
|
|
|
| 55 |
components.update(create_reference_latent_ui(prefix))
|
| 56 |
components.update(create_hidream_o1_reference_ui(prefix))
|
| 57 |
components.update(create_joyai_reference_ui(prefix))
|
| 58 |
+
components.update(create_reference_image_ui(prefix))
|
| 59 |
components.update(create_vae_override_ui(prefix))
|
| 60 |
components.update(create_pid_ui(prefix))
|
| 61 |
|
ui/shared/ui_components.py
CHANGED
|
@@ -725,6 +725,35 @@ def create_joyai_reference_ui(prefix: str, max_units=2):
|
|
| 725 |
|
| 726 |
return components
|
| 727 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 728 |
def create_pid_ui(prefix: str):
|
| 729 |
components = {}
|
| 730 |
key = lambda name: f"{name}_{prefix}"
|
|
|
|
| 725 |
|
| 726 |
return components
|
| 727 |
|
| 728 |
+
def create_reference_image_ui(prefix: str, max_units=10):
|
| 729 |
+
components = {}
|
| 730 |
+
key = lambda name: f"{name}_{prefix}"
|
| 731 |
+
|
| 732 |
+
with gr.Accordion("Mage-Flow Reference Edit Settings", open=False, visible=('reference_image' in default_enabled_chains)) as ref_accordion:
|
| 733 |
+
components[key('reference_image_accordion')] = ref_accordion
|
| 734 |
+
gr.Markdown("💡 **Tip:** (Mage-Flow-Edit-Turbo/Mage-Flow-Edit recommended) For multimodal models, this feature enables powerful editing and combining capabilities. In txt2img mode, adding a single reference image performs an **Image Edit**, while adding multiple images performs an **Image Combine**.")
|
| 735 |
+
|
| 736 |
+
ref_image_groups = []
|
| 737 |
+
ref_image_inputs = []
|
| 738 |
+
with gr.Row():
|
| 739 |
+
for i in range(max_units):
|
| 740 |
+
with gr.Column(visible=(i < 1), min_width=160) as img_col:
|
| 741 |
+
img_comp = gr.Image(type="pil", label=f"Ref. {i+1}", sources=["upload"], height=150)
|
| 742 |
+
ref_image_groups.append(img_col)
|
| 743 |
+
ref_image_inputs.append(img_comp)
|
| 744 |
+
|
| 745 |
+
components[key('reference_image_rows')] = ref_image_groups
|
| 746 |
+
components[key('reference_image_images')] = ref_image_inputs
|
| 747 |
+
|
| 748 |
+
with gr.Row():
|
| 749 |
+
components[key('add_reference_image_button')] = gr.Button("✚ Add Reference Image")
|
| 750 |
+
components[key('delete_reference_image_button')] = gr.Button("➖ Delete Reference Image", visible=False)
|
| 751 |
+
components[key('reference_image_count_state')] = gr.State(1)
|
| 752 |
+
|
| 753 |
+
components[key('all_reference_image_components_flat')] = ref_image_inputs
|
| 754 |
+
|
| 755 |
+
return components
|
| 756 |
+
|
| 757 |
def create_pid_ui(prefix: str):
|
| 758 |
components = {}
|
| 759 |
key = lambda name: f"{name}_{prefix}"
|
yaml/constants.yaml
CHANGED
|
@@ -15,6 +15,14 @@ RESOLUTION_MAP:
|
|
| 15 |
"3:4 (Classic Portrait)": [896, 1152]
|
| 16 |
"3:2 (Photography)": [1216, 832]
|
| 17 |
"2:3 (Photography Portrait)": [832, 1216]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
joyai-image:
|
| 19 |
"1:1 (Square)": [1024, 1024]
|
| 20 |
"16:9 (Landscape)": [1344, 768]
|
|
@@ -241,8 +249,9 @@ RESOLUTION_MAP:
|
|
| 241 |
"2:3 (Portrait)": [512, 768]
|
| 242 |
|
| 243 |
MULTIPLIERS_MAP:
|
| 244 |
-
joyai-image: 1
|
| 245 |
krea-2: 1
|
|
|
|
|
|
|
| 246 |
boogu-image: 1
|
| 247 |
pixeldit: 1
|
| 248 |
ideogram-4: 1
|
|
|
|
| 15 |
"3:4 (Classic Portrait)": [896, 1152]
|
| 16 |
"3:2 (Photography)": [1216, 832]
|
| 17 |
"2:3 (Photography Portrait)": [832, 1216]
|
| 18 |
+
mage-flow:
|
| 19 |
+
"1:1 (Square)": [1024, 1024]
|
| 20 |
+
"16:9 (Landscape)": [1344, 768]
|
| 21 |
+
"9:16 (Portrait)": [768, 1344]
|
| 22 |
+
"4:3 (Classic)": [1152, 896]
|
| 23 |
+
"3:4 (Classic Portrait)": [896, 1152]
|
| 24 |
+
"3:2 (Photography)": [1216, 832]
|
| 25 |
+
"2:3 (Photography Portrait)": [832, 1216]
|
| 26 |
joyai-image:
|
| 27 |
"1:1 (Square)": [1024, 1024]
|
| 28 |
"16:9 (Landscape)": [1344, 768]
|
|
|
|
| 249 |
"2:3 (Portrait)": [512, 768]
|
| 250 |
|
| 251 |
MULTIPLIERS_MAP:
|
|
|
|
| 252 |
krea-2: 1
|
| 253 |
+
mage-flow: 1
|
| 254 |
+
joyai-image: 1
|
| 255 |
boogu-image: 1
|
| 256 |
pixeldit: 1
|
| 257 |
ideogram-4: 1
|
yaml/file_list.yaml
CHANGED
|
@@ -405,6 +405,23 @@ file:
|
|
| 405 |
source: "hf"
|
| 406 |
repo_id: "Comfy-Org/Krea-2"
|
| 407 |
repository_file_path: "diffusion_models/krea2_raw_fp8_scaled.safetensors"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 408 |
# JoyAI-Image
|
| 409 |
- filename: "joyai_image_edit_int8_convrot.safetensors"
|
| 410 |
source: "hf"
|
|
@@ -916,4 +933,8 @@ file:
|
|
| 916 |
- filename: "flux2-vae.safetensors"
|
| 917 |
source: "hf"
|
| 918 |
repo_id: "Comfy-Org/flux2-dev"
|
| 919 |
-
repository_file_path: "split_files/vae/flux2-vae.safetensors"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 405 |
source: "hf"
|
| 406 |
repo_id: "Comfy-Org/Krea-2"
|
| 407 |
repository_file_path: "diffusion_models/krea2_raw_fp8_scaled.safetensors"
|
| 408 |
+
# Mage-Flow
|
| 409 |
+
- filename: "mage_flow_turbo_int8_convrot.safetensors"
|
| 410 |
+
source: "hf"
|
| 411 |
+
repo_id: "Comfy-Org/Mage-Flow"
|
| 412 |
+
repository_file_path: "diffusion_models/mage_flow_turbo_int8_convrot.safetensors"
|
| 413 |
+
- filename: "mage_flow_int8_convrot.safetensors"
|
| 414 |
+
source: "hf"
|
| 415 |
+
repo_id: "Comfy-Org/Mage-Flow"
|
| 416 |
+
repository_file_path: "diffusion_models/mage_flow_int8_convrot.safetensors"
|
| 417 |
+
- filename: "mage_flow_edit_turbo_int8_convrot.safetensors"
|
| 418 |
+
source: "hf"
|
| 419 |
+
repo_id: "Comfy-Org/Mage-Flow"
|
| 420 |
+
repository_file_path: "diffusion_models/mage_flow_edit_turbo_int8_convrot.safetensors"
|
| 421 |
+
- filename: "mage_flow_edit_int8_convrot.safetensors"
|
| 422 |
+
source: "hf"
|
| 423 |
+
repo_id: "Comfy-Org/Mage-Flow"
|
| 424 |
+
repository_file_path: "diffusion_models/mage_flow_edit_int8_convrot.safetensors"
|
| 425 |
# JoyAI-Image
|
| 426 |
- filename: "joyai_image_edit_int8_convrot.safetensors"
|
| 427 |
source: "hf"
|
|
|
|
| 933 |
- filename: "flux2-vae.safetensors"
|
| 934 |
source: "hf"
|
| 935 |
repo_id: "Comfy-Org/flux2-dev"
|
| 936 |
+
repository_file_path: "split_files/vae/flux2-vae.safetensors"
|
| 937 |
+
- filename: "mage_flow_vae_bf16.safetensors"
|
| 938 |
+
source: "hf"
|
| 939 |
+
repo_id: "Comfy-Org/Mage-Flow"
|
| 940 |
+
repository_file_path: "vae/mage_flow_vae_bf16.safetensors"
|
yaml/image_gen_features.yaml
CHANGED
|
@@ -8,6 +8,10 @@ default:
|
|
| 8 |
- conditioning
|
| 9 |
- vae
|
| 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
joyai-image:
|
| 12 |
enabled_chains:
|
| 13 |
- joyai_reference
|
|
|
|
| 8 |
- conditioning
|
| 9 |
- vae
|
| 10 |
|
| 11 |
+
mage-flow:
|
| 12 |
+
enabled_chains:
|
| 13 |
+
- reference_image
|
| 14 |
+
|
| 15 |
joyai-image:
|
| 16 |
enabled_chains:
|
| 17 |
- joyai_reference
|
yaml/injectors.yaml
CHANGED
|
@@ -31,6 +31,8 @@ injector_definitions:
|
|
| 31 |
module: "chain_injectors.hidream_o1_reference_injector"
|
| 32 |
dynamic_joyai_reference_chains:
|
| 33 |
module: "chain_injectors.joyai_reference_injector"
|
|
|
|
|
|
|
| 34 |
dynamic_pid_chains:
|
| 35 |
module: "chain_injectors.pid_injector"
|
| 36 |
|
|
@@ -51,4 +53,5 @@ injector_order:
|
|
| 51 |
- dynamic_hidream_o1_smoothing_chains
|
| 52 |
- dynamic_hidream_o1_reference_chains
|
| 53 |
- dynamic_joyai_reference_chains
|
|
|
|
| 54 |
- dynamic_pid_chains
|
|
|
|
| 31 |
module: "chain_injectors.hidream_o1_reference_injector"
|
| 32 |
dynamic_joyai_reference_chains:
|
| 33 |
module: "chain_injectors.joyai_reference_injector"
|
| 34 |
+
dynamic_reference_image_chains:
|
| 35 |
+
module: "chain_injectors.reference_image_injector"
|
| 36 |
dynamic_pid_chains:
|
| 37 |
module: "chain_injectors.pid_injector"
|
| 38 |
|
|
|
|
| 53 |
- dynamic_hidream_o1_smoothing_chains
|
| 54 |
- dynamic_hidream_o1_reference_chains
|
| 55 |
- dynamic_joyai_reference_chains
|
| 56 |
+
- dynamic_reference_image_chains
|
| 57 |
- dynamic_pid_chains
|