Files
CavinHuang-comfyui-nodes-docs/docs/BNK_InjectNoise.md
2024-05-26 20:35:16 +08:00

2.3 KiB

Documentation

InjectNoise节点旨在向一组潜在表示中引入噪声,从而模拟噪声对生成过程的影响。它的作用是通过控制的变异性增强数据,这可以提高生成输出的鲁棒性和多样性。

Input types

Required

  • latents
    • latents参数至关重要,因为它包含将要进行噪声注入的原始潜在表示。它直接影响噪声增强过程的结果。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]
  • strength
    • strength参数决定了要注入到latents中的噪声的强度。它对于控制引入数据的变异程度至关重要。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • noise
    • 可选的noise参数提供了要应用于latents的噪声源。它很重要,因为它允许定制噪声特性。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]
  • mask
    • 当提供mask参数时,它指定latents的哪些区域应该受到噪声的影响。这对于针对性的噪声应用很重要。
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor

Output types

  • latents
    • 输出的latents是已经注入了噪声的修改后的潜在表示,准备进行进一步的处理或生成。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]

Usage tips

  • Infra type: CPU

Source code

class InjectNoise:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'latents': ('LATENT',), 'strength': ('FLOAT', {'default': 1.0, 'min': 0.0, 'max': 200.0, 'step': 0.01})}, 'optional': {'noise': ('LATENT',), 'mask': ('MASK',)}}
    RETURN_TYPES = ('LATENT',)
    FUNCTION = 'inject_noise'
    CATEGORY = 'latent/noise'

    def inject_noise(self, latents, strength, noise=None, mask=None):
        s = latents.copy()
        if noise is None:
            return (s,)
        if latents['samples'].shape != noise['samples'].shape:
            print('warning, shapes in InjectNoise not the same, ignoring')
            return (s,)
        noised = s['samples'].clone() + noise['samples'].clone() * strength
        if mask is not None:
            mask = prepare_mask(mask, noised.shape)
            noised = mask * noised + (1 - mask) * latents['samples']
        s['samples'] = noised
        return (s,)