95 lines
3.5 KiB
Markdown
95 lines
3.5 KiB
Markdown
---
|
|
tags:
|
|
- Sampling
|
|
---
|
|
|
|
# SamplerCustomAdvanced
|
|
## Documentation
|
|
- Class name: `SamplerCustomAdvanced`
|
|
- Category: `sampling/custom_sampling`
|
|
- Output node: `False`
|
|
|
|
The SamplerCustomAdvanced node is designed to provide advanced custom sampling functionalities within a generative modeling framework. It enables the creation and utilization of custom samplers, offering a flexible approach to sampling strategies that can be tailored to specific needs or experimental setups.
|
|
## Input types
|
|
### Required
|
|
- **`noise`**
|
|
- Specifies the type of noise to be added to the latent image, affecting the variability and characteristics of the generated samples.
|
|
- Comfy dtype: `NOISE`
|
|
- Python dtype: `Noise`
|
|
- **`guider`**
|
|
- Defines the guiding mechanism for the sampling process, influencing the direction and quality of the generated outputs based on specified conditions.
|
|
- Comfy dtype: `GUIDER`
|
|
- Python dtype: `Guider`
|
|
- **`sampler`**
|
|
- Determines the sampling strategy to be used, impacting the exploration of the latent space and the diversity of the generated samples.
|
|
- Comfy dtype: `SAMPLER`
|
|
- Python dtype: `Sampler`
|
|
- **`sigmas`**
|
|
- Sets the scale of noise to be applied, playing a crucial role in the denoising process and the final quality of the generated images.
|
|
- Comfy dtype: `SIGMAS`
|
|
- Python dtype: `List[float]`
|
|
- **`latent_image`**
|
|
- The initial latent representation to be transformed, serving as the starting point for the sampling process.
|
|
- Comfy dtype: `LATENT`
|
|
- Python dtype: `Latent`
|
|
## Output types
|
|
- **`output`**
|
|
- Comfy dtype: `LATENT`
|
|
- The modified latent representation after the sampling process.
|
|
- Python dtype: `Latent`
|
|
- **`denoised_output`**
|
|
- Comfy dtype: `LATENT`
|
|
- The denoised version of the latent representation, offering a cleaner version of the sampled output.
|
|
- Python dtype: `Latent`
|
|
## Usage tips
|
|
- Infra type: `GPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
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)
|
|
|
|
```
|