69 lines
3.1 KiB
Markdown
69 lines
3.1 KiB
Markdown
# Documentation
|
|
- Class name: AddNoise
|
|
- Category: _for_testing/custom_sampling/noise
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
|
|
|
|
AddNoise节点旨在向潜在图像引入随机噪声,这是生成合成图像过程中的关键步骤。它通过根据指定的sigmas对噪声进行缩放,然后将噪声与潜在图像结合,以产生带噪声的输出。该节点对于模拟图像数据中固有的噪声特性至关重要,从而增强了生成图像的多样性和逼真度。
|
|
|
|
# Input types
|
|
## Required
|
|
- model
|
|
- 模型参数对于AddNoise节点至关重要,因为它决定了用于采样和处理潜在图像的模型。它是节点执行的基础,直接影响生成的带噪声图像的质量和特性。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: torch.nn.Module
|
|
- noise
|
|
- 噪声参数对于AddNoise节点至关重要,因为它提供了将被整合到潜在图像中的随机性来源。噪声的类型和属性可以显著影响输出图像的多样性和不可预测性。
|
|
- Comfy dtype: NOISE
|
|
- Python dtype: Callable[..., torch.Tensor]
|
|
- sigmas
|
|
- sigmas参数决定了要添加到潜在图像中的噪声的规模。它在控制噪声水平以及合成图像的视觉外观中起着关键作用。
|
|
- Comfy dtype: SIGMAS
|
|
- Python dtype: List[float]
|
|
- latent_image
|
|
- latent_image参数是AddNoise节点的核心输入,代表将通过添加噪声进行修改的图像数据。其结构和内容对节点的功能以及图像合成过程的最终结果至关重要。
|
|
- Comfy dtype: LATENT
|
|
- Python dtype: Dict[str, torch.Tensor]
|
|
|
|
# Output types
|
|
- latent
|
|
- 输出的latent参数代表应用AddNoise节点后得到的带噪声图像。它封装了携带所需噪声特性的合成数据,可供进一步处理或分析。
|
|
- Comfy dtype: LATENT
|
|
- Python dtype: Dict[str, torch.Tensor]
|
|
|
|
# Usage tips
|
|
- Infra type: CPU
|
|
|
|
# Source code
|
|
```
|
|
class AddNoise:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {'required': {'model': ('MODEL',), 'noise': ('NOISE',), 'sigmas': ('SIGMAS',), 'latent_image': ('LATENT',)}}
|
|
RETURN_TYPES = ('LATENT',)
|
|
FUNCTION = 'add_noise'
|
|
CATEGORY = '_for_testing/custom_sampling/noise'
|
|
|
|
def add_noise(self, model, noise, sigmas, latent_image):
|
|
if len(sigmas) == 0:
|
|
return latent_image
|
|
latent = latent_image
|
|
latent_image = latent['samples']
|
|
noisy = noise.generate_noise(latent)
|
|
model_sampling = model.get_model_object('model_sampling')
|
|
process_latent_out = model.get_model_object('process_latent_out')
|
|
process_latent_in = model.get_model_object('process_latent_in')
|
|
if len(sigmas) > 1:
|
|
scale = torch.abs(sigmas[0] - sigmas[-1])
|
|
else:
|
|
scale = sigmas[0]
|
|
if torch.count_nonzero(latent_image) > 0:
|
|
latent_image = process_latent_in(latent_image)
|
|
noisy = model_sampling.noise_scaling(scale, noisy, latent_image)
|
|
noisy = process_latent_out(noisy)
|
|
noisy = torch.nan_to_num(noisy, nan=0.0, posinf=0.0, neginf=0.0)
|
|
out = latent.copy()
|
|
out['samples'] = noisy
|
|
return (out,)
|
|
``` |