3.4 KiB
3.4 KiB
Documentation
- Class name: Inference_Core_LayeredDiffusionApply
- Category: layer_diffuse
- Output node: False
此节点旨在对输入模型应用分层扩散过程,利用特定配置和条件来修改模型的行为,以增强图像生成或转换效果。它将复杂的扩散和条件逻辑抽象为更易于用户使用的接口,旨在促进创建细腻高质量的视觉内容。
Input types
Required
- model
- 代表将应用分层扩散过程的模型,在决定扩散过程的结果方面起着至关重要的作用,通过影响模型的行为和生成图像的质量。
- Comfy dtype: MODEL
- Python dtype: ModelPatcher
- config
- 指定分层扩散过程特定设置或参数的配置字符串,直接影响模型在图像生成过程中的修改和行为方式。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- weight
- 一个浮点值,影响应用扩散过程的强度或程度,通过调整模型参数的修改方式来影响最终的视觉输出。
- Comfy dtype: FLOAT
- Python dtype: float
Output types
- model
- 应用分层扩散过程后的修改模型,展示了扩散和条件处理对模型生成或转换图像能力的影响。
- Comfy dtype: MODEL
- Python dtype: ModelPatcher
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class LayeredDiffusionFG:
"""Generate foreground with transparent background."""
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"model": ("MODEL",),
"config": ([c.config_string for c in s.MODELS],),
"weight": (
"FLOAT",
{"default": 1.0, "min": -1, "max": 3, "step": 0.05},
),
},
}
RETURN_TYPES = ("MODEL",)
FUNCTION = "apply_layered_diffusion"
CATEGORY = "layer_diffuse"
MODELS = (
LayeredDiffusionBase(
model_file_name="layer_xl_transparent_attn.safetensors",
model_url="https://huggingface.co/LayerDiffusion/layerdiffusion-v1/resolve/main/layer_xl_transparent_attn.safetensors",
sd_version=StableDiffusionVersion.SDXL,
injection_method=LayerMethod.ATTN,
),
LayeredDiffusionBase(
model_file_name="layer_xl_transparent_conv.safetensors",
model_url="https://huggingface.co/LayerDiffusion/layerdiffusion-v1/resolve/main/layer_xl_transparent_conv.safetensors",
sd_version=StableDiffusionVersion.SDXL,
injection_method=LayerMethod.CONV,
),
LayeredDiffusionBase(
model_file_name="layer_sd15_transparent_attn.safetensors",
model_url="https://huggingface.co/LayerDiffusion/layerdiffusion-v1/resolve/main/layer_sd15_transparent_attn.safetensors",
sd_version=StableDiffusionVersion.SD1x,
injection_method=LayerMethod.ATTN,
attn_sharing=True,
),
)
def apply_layered_diffusion(
self,
model: ModelPatcher,
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
if ld_model.attn_sharing:
return ld_model.apply_layered_diffusion_attn_sharing(model)
else:
return ld_model.apply_layered_diffusion(model, weight)