KSampler

(comfyanonymous/ComfyUI)
sampling/KSampler
latent 表現の画像からノイズを除去する

入力された仮の latent 画像にノイズを加えた後に除去し、元の画像を復元 (生成) します。 Stable Diffusion の本体です。

seed

加えるノイズ (正規乱数) のシードを指定します。

シードを使った乱数生成器の初期化は、バッチの先頭でのみ行われます。

steps

ノイズスケジュールの分割数を指定します。

cfg

CFG scale を指定します。 値を大きくすると、よりプロンプトが効くようになります。 詳細→CFG Scale とは何か

sampler_name

使用するサンプラーを指定します。 サンプラーは、U-Net による推定ノイズをもとにノイズを除去します。

scheduler

使用するスケジューラを指定します。 スケジューラは、各ステップでどのくらいのノイズを除去するかを決定します。

  • normal: 元の 1000 ステップで定義された sigmas[] から、等間隔で step 数サンプル (discrete sampling 用に補間する)。
  • karras: normal と比較して中間ステップで t を早く戻すような非線形な t を使う。 小さい σ の領域でステップを多く使うので、細部の表現が良くなる、らしい。
  • exponential: サンプラー dpmpp_2m_sde で推奨されている、らしい (自分は未確認)。 前半でかなりしっかりノイズ除去を行う。 karras 以上に小さい σ の領域でステップを多く使う、けど、細部の表現が良くなるかは分からない。
  • simple: 元の 1000 ステップで定義された sigmas[] から、ほぼ等間隔で step 数サンプル (sigmas[floor(t)] をそのまま使う)。 normal と比較すると、各ステップで t がわずかに小さい。 ComfyUI 独自のスケジューラ。
  • ddim_uniform: Stable Diffusion の公式参照実装と同じ。 DDIM 専用というわけでもない。 steps によってノイズ量が変わる。 良く使われる範囲の steps では、加えるノイズがかなり小さい。

現実的には、使うのは normalkarrasexponential の 3 種のみでしょう。 ddim_uniform は、steps によってノイズ量が変わるという面倒な性質があるので、お勧めできません。

denoise

加えるノイズ量を指定します。 実際に加えられるノイズの量は、scheduler に依存して微妙に変わります。

denoise が具体的に何を指定する値なのかについては、KSamplerAdvanced で denoise 量を指定する方法 を参照してください。

preview 表示

公式 README にも記載されていますが、ステップ毎の画像をノード上にリアルタイム表示するように、コマンドライン引数で指定することができます。

--preview-method none (デフォルト)
preview 表示しない。
--preview-method auto
taesd のモデルがあれば taesd で preview 表示する。そうでなければ latent2rgb で preview 表示する。
--preview-method latent2rgb
超簡易版の VAE decoder を使って RGB 化して preview に使う。 デコードの計算量は latent 画素数に比例。 1 latent 画素が 1 pixel となるようにデコード後、画像全体が 512 * 512 pixel に納まるように拡大縮小される。 やっていることは単なる色空間の変換で、latent 画素ごとに乗算 1 回しか行わないので、実際のオーバーヘッドはほぼゼロ。 ボケ & ザラザラした見た目になるが、おおまかな確認は十分できる。
--preview-method taesd
簡易版の VAE decoder (Tiny AutoEncoder for Stable Diffusion) を使って RGB 化して preview に使う。 デコードの計算量は latent 画素数に比例。 1 latent 画素が 8 * 8 pixel となるようにデコード後、画像全体が 512 * 512 pixel に納まるように拡大縮小される。 初回実行時にはモデルのセットアップで数秒消費する。 latent2rgb よりもかなり綺麗な結果が得られる。

taesd を使用するには、デコーダのチェックポイントファイル taesd_decoder.pth (SD1 および SD2) (github)taesdxl_decoder.pth (SDXL) (github)/models/vae_approx/ に置く必要があります。

ノイズ量 (標準偏差) と denoise との相互変換計算機

denoise = normal: , karras: , exponential:
sigma = ,

steps と各スケジューラによる違い

各ステップ終了後に画像に残存するノイズの量 (標準偏差) を図で示します。

steps = 1000, sampler = ddim, denoise = 1 を指定した場合:

steps = 20, sampler = ddim, denoise = 1 を指定した場合:

steps = 10, sampler = ddim, denoise = 1 を指定した場合:

関連

外部リンク

使用例

まだ