3.6 KiB
3.6 KiB
Documentation
- Class name: Inference_Core_LayeredDiffusionCondApply
- Category: layer_diffuse
- Output node: False
本节点专门用于对输入数据应用条件化分层扩散过程,利用特定的配置和权重来调节扩散效果。它集成了条件化输入来引导扩散过程,从而以细致的控制增强数据的生成或转换。
Input types
Required
- model
- 将应用分层扩散过程的模型,作为扩散修改的基础。
- Comfy dtype: MODEL
- Python dtype: ModelPatcher
- cond
- 前景的条件化输入,用于引导扩散过程以实现特定的视觉效果或特征。
- Comfy dtype: CONDITIONING
- Python dtype: Optional[List[List[torch.TensorType]]]
- uncond
- 背景的无条件输入,为扩散过程提供基准并影响整体输出。
- Comfy dtype: CONDITIONING
- Python dtype: Optional[List[List[torch.TensorType]]]
- latent
- 扩散过程中使用的潜在表示,有助于输出的生成或转换。
- Comfy dtype: LATENT
- Python dtype: torch.Tensor
- config
- 指定扩散模型和设置的配置字符串,对确定扩散过程的行为至关重要。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- weight
- 影响应用于模型的扩散效果的强度和特征的权重因子。
- Comfy dtype: FLOAT
- Python dtype: float
Output types
- model
- 输出经过条件化分层扩散处理的修改后模型,反映了应用的条件和调整。
- Comfy dtype: MODEL
- Python dtype: ModelPatcher
- conditioning
- 扩散过程中使用的条件化信息,表明条件化输入如何影响输出。
- Comfy dtype: CONDITIONING
- Python dtype: Dict[str, Any]
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class LayeredDiffusionCond:
"""Generate foreground + background given background / foreground.
- FG => Blended
- BG => Blended
"""
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"model": ("MODEL",),
"cond": ("CONDITIONING",),
"uncond": ("CONDITIONING",),
"latent": ("LATENT",),
"config": ([c.config_string for c in s.MODELS],),
"weight": (
"FLOAT",
{"default": 1.0, "min": -1, "max": 3, "step": 0.05},
),
},
}
RETURN_TYPES = ("MODEL", "CONDITIONING", "CONDITIONING")
FUNCTION = "apply_layered_diffusion"
CATEGORY = "layer_diffuse"
MODELS = (
LayeredDiffusionBase(
model_file_name="layer_xl_fg2ble.safetensors",
model_url="https://huggingface.co/LayerDiffusion/layerdiffusion-v1/resolve/main/layer_xl_fg2ble.safetensors",
sd_version=StableDiffusionVersion.SDXL,
cond_type=LayerType.FG,
),
LayeredDiffusionBase(
model_file_name="layer_xl_bg2ble.safetensors",
model_url="https://huggingface.co/LayerDiffusion/layerdiffusion-v1/resolve/main/layer_xl_bg2ble.safetensors",
sd_version=StableDiffusionVersion.SDXL,
cond_type=LayerType.BG,
),
)
def apply_layered_diffusion(
self,
model: ModelPatcher,
cond,
uncond,
latent,
config: str,
weight: float,
):
ld_model = [m for m in self.MODELS if m.config_string == config][0]
assert get_model_sd_version(model) == ld_model.sd_version
c_concat = model.model.latent_format.process_in(latent["samples"])
return ld_model.apply_layered_diffusion(
model, weight
) + ld_model.apply_c_concat(cond, uncond, c_concat)