KSampler dans ComfyUI : steps, CFG, seed et denoise

ComfyUI Wiki

KSampler dans ComfyUI débruite un latent avec un modèle et les conditionnements positif et négatif. Couvre les valeurs de steps, cfg, seed, sampler_name, scheduler et denoise.

Nœud ComfyUI - KSampler | Nœud composant ComfyUI

Documentation

  • Nom de la classe : KSampler
  • Catégorie : Sampling
  • Nœud de sortie : Non

Le KSampler fonctionne ainsi : il modifie les informations de l'image latente d'origine fournies, en se basant sur un modèle spécifique et sur des conditions positives et négatives. D'abord, il ajoute du bruit aux données de l'image d'origine selon la graine et la force de débruitage définies, puis il utilise le modèle prédéfini combiné aux conditions de guidage positive et négative pour générer l'image.

Paramètres d'entrée

Nom du paramètreType de donnéesRequisDéfautPlage/OptionsDescription
ModelcheckpointOuiAucun-Modèle d'entrée utilisé pour le processus de débruitage
seedIntOui00 ~ 18446744073709551615Sert à générer du bruit aléatoire ; utiliser la même « graine » génère des images identiques
stepsIntOui201 ~ 10000Nombre d'étapes utilisées dans le processus de débruitage ; plus d'étapes signifient des résultats plus précis
cfgfloatOui8.00.0 ~ 100.0Contrôle à quel point l'image générée correspond aux conditions d'entrée ; 6-8 recommandé
sampler_nameUI OptionOuiAucunPlusieurs algorithmesChoix de l'échantillonneur pour le débruitage ; affecte la vitesse et le style de génération
schedulerUI OptionOuiAucunPlusieurs planificateursContrôle la façon dont le bruit est retiré ; affecte le processus de génération
PositiveconditioningOuiAucun-Conditions positives guidant le débruitage, ce que vous voulez voir apparaître dans l'image
NegativeconditioningOuiAucun-Conditions négatives guidant le débruitage, ce que vous ne voulez pas dans l'image
Latent_ImageLatentOuiAucun-Image latente utilisée pour le débruitage
denoisefloatNon1.00.0 ~ 1.0Détermine le taux de suppression du bruit ; des valeurs plus faibles signifient moins de lien avec l'image d'entrée
control_after_generateUI OptionNonAucunRandom/Inc/Dec/KeepPermet de modifier la graine après chaque prompt

Sortie

Nom du paramètreFonction
LatentRenvoie le latent après le débruitage par l'échantillonneur

Code source

[Mis à jour le 15 mai 2025]

def common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent, denoise=1.0, disable_noise=False, start_step=None, last_step=None, force_full_denoise=False):
    latent_image = latent["samples"]
    latent_image = comfy.sample.fix_empty_latent_channels(model, latent_image)

    if disable_noise:
        noise = torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu")
    else:
        batch_inds = latent["batch_index"] if "batch_index" in latent else None
        noise = comfy.sample.prepare_noise(latent_image, seed, batch_inds)

    noise_mask = None
    if "noise_mask" in latent:
        noise_mask = latent["noise_mask"]

    callback = latent_preview.prepare_callback(model, steps)
    disable_pbar = not comfy.utils.PROGRESS_BAR_ENABLED
    samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
                                  denoise=denoise, disable_noise=disable_noise, start_step=start_step, last_step=last_step,
                                  force_full_denoise=force_full_denoise, noise_mask=noise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
    out = latent.copy()
    out["samples"] = samples
    return (out, )


class KSampler:
    @classmethod
    def INPUT_TYPES(s):
        return {
            "required": {
                "model": ("MODEL", {"tooltip": "The model used for denoising the input latent."}),
                "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff, "control_after_generate": True, "tooltip": "The random seed used for creating the noise."}),
                "steps": ("INT", {"default": 20, "min": 1, "max": 10000, "tooltip": "The number of steps used in the denoising process."}),
                "cfg": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0, "step":0.1, "round": 0.01, "tooltip": "The Classifier-Free Guidance scale balances creativity and adherence to the prompt. Higher values result in images more closely matching the prompt however too high values will negatively impact quality."}),
                "sampler_name": (comfy.samplers.KSampler.SAMPLERS, {"tooltip": "The algorithm used when sampling, this can affect the quality, speed, and style of the generated output."}),
                "scheduler": (comfy.samplers.KSampler.SCHEDULERS, {"tooltip": "The scheduler controls how noise is gradually removed to form the image."}),
                "positive": ("CONDITIONING", {"tooltip": "The conditioning describing the attributes you want to include in the image."}),
                "negative": ("CONDITIONING", {"tooltip": "The conditioning describing the attributes you want to exclude from the image."}),
                "latent_image": ("LATENT", {"tooltip": "The latent image to denoise."}),
                "denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01, "tooltip": "The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling."}),
            }
        }

    RETURN_TYPES = ("LATENT",)
    OUTPUT_TOOLTIPS = ("The denoised latent.",)
    FUNCTION = "sample"

    CATEGORY = "sampling"
    DESCRIPTION = "Uses the provided model, positive and negative conditioning to denoise the latent image."

    def sample(self, model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=1.0):
        return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)

Commentaires

Connectez-vous avec GitHub pour rejoindre la discussion.

Chargement des commentaires…