Files
2024-05-15 08:09:49 +08:00

3.6 KiB

Documentation

SamplerCustomAdvanced节点旨在对潜在图像执行高级采样操作。它利用各种组件,如噪声生成、引导和采样机制,以产生高质量的输出。此节点在自定义采样工作流程中至关重要,提供了一种复杂的生成和完善潜在表示的方法。

Input types

Required

  • noise
    • 噪声参数对于采样过程至关重要,因为它在潜在空间中引入了随机性,使得能够生成多样化的输出。它在确定采样图像的质量和多样性方面起着重要作用。
    • Comfy dtype: NOISE
    • Python dtype: torch.Tensor
  • guider
    • 引导器参数对于将采样过程引导至期望结果至关重要。它通过基于特定标准或目标提供指导,有助于完善潜在表示。
    • Comfy dtype: GUIDER
    • Python dtype: torch.nn.Module
  • sampler
    • 采样器参数决定了节点使用的采样策略。它是采样过程效率和有效性的关键决定因素,影响节点生成高保真潜在图像的能力。
    • Comfy dtype: SAMPLER
    • Python dtype: torch.nn.Module
  • sigmas
    • sigmas参数表示采样过程中使用的噪声水平或尺度。它对于控制生成图像中的噪声量和细节很重要,因此影响输出的整体质量。
    • Comfy dtype: SIGMAS
    • Python dtype: torch.Tensor
  • latent_image
    • latent_image参数是采样过程的输入,代表潜在表示的初始状态。它是节点操作的基础,因为它是生成最终采样图像的基础。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]

Output types

  • output
    • SamplerCustomAdvanced节点的输出参数包含采样的潜在图像。它是节点操作的主要结果,对进一步处理或分析具有重要价值。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]
  • denoised_output
    • denoised_output参数提供了经过去噪处理的采样潜在图像的版本。对于需要优先考虑噪声降低的应用,此输出特别有用。
    • Comfy dtype: LATENT
    • Python dtype: Dict[str, torch.Tensor]

Usage tips

  • Infra type: GPU

Source code

class SamplerCustomAdvanced:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'noise': ('NOISE',), 'guider': ('GUIDER',), 'sampler': ('SAMPLER',), 'sigmas': ('SIGMAS',), 'latent_image': ('LATENT',)}}
    RETURN_TYPES = ('LATENT', 'LATENT')
    RETURN_NAMES = ('output', 'denoised_output')
    FUNCTION = 'sample'
    CATEGORY = 'sampling/custom_sampling'

    def sample(self, noise, guider, sampler, sigmas, latent_image):
        latent = latent_image
        latent_image = latent['samples']
        noise_mask = None
        if 'noise_mask' in latent:
            noise_mask = latent['noise_mask']
        x0_output = {}
        callback = latent_preview.prepare_callback(guider.model_patcher, sigmas.shape[-1] - 1, x0_output)
        disable_pbar = not comfy.utils.PROGRESS_BAR_ENABLED
        samples = guider.sample(noise.generate_noise(latent), latent_image, sampler, sigmas, denoise_mask=noise_mask, callback=callback, disable_pbar=disable_pbar, seed=noise.seed)
        samples = samples.to(comfy.model_management.intermediate_device())
        out = latent.copy()
        out['samples'] = samples
        if 'x0' in x0_output:
            out_denoised = latent.copy()
            out_denoised['samples'] = guider.model_patcher.model.process_latent_out(x0_output['x0'].cpu())
        else:
            out_denoised = out
        return (out, out_denoised)