We can't find the internet
Attempting to reconnect
入力された仮の latent 画像にノイズを加えた後に除去し、元の画像を復元 (生成) します。 Stable Diffusion の本体です。
- seed
-
加えるノイズ (正規乱数) のシードを指定します。
シードを使った乱数生成器の初期化は、バッチの先頭でのみ行われます。
- steps
-
ノイズスケジュールの分割数を指定します。
- cfg
-
CFG scale を指定します。 値を大きくすると、よりプロンプトが効くようになります。 詳細→CFG Scale とは何か
- sampler_name
-
使用するサンプラーを指定します。 サンプラーは、U-Net による推定ノイズをもとにノイズを除去します。
- scheduler
-
使用するスケジューラを指定します。 スケジューラは、各ステップでどのくらいのノイズを除去するかを決定します。
- : 元の 1000 ステップで定義された sigmas[] から、等間隔で step 数サンプル (discrete sampling 用に補間する)。
- : と比較して中間ステップで t を早く戻すような非線形な t を使う。 小さい σ の領域でステップを多く使うので、細部の表現が良くなる、らしい。
- : サンプラー で推奨されている、らしい (自分は未確認)。 前半でかなりしっかりノイズ除去を行う。 以上に小さい σ の領域でステップを多く使う、けど、細部の表現が良くなるかは分からない。
- : 元の 1000 ステップで定義された sigmas[] から、ほぼ等間隔で step 数サンプル (sigmas[floor(t)] をそのまま使う)。 と比較すると、各ステップで t がわずかに小さい。 ComfyUI 独自のスケジューラ。
- steps によってノイズ量が変わる。 良く使われる範囲の steps では、加えるノイズがかなり小さい。 : Stable Diffusion の公式参照実装と同じ。 DDIM 専用というわけでもない。
現実的には、使うのは steps によってノイズ量が変わるという面倒な性質があるので、お勧めできません。
、 、 の 3 種のみでしょう。 は、 - 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 との相互変換計算機
steps と各スケジューラによる違い
各ステップ終了後に画像に残存するノイズの量 (標準偏差) を図で示します。
steps = , sampler = , denoise = を指定した場合:
steps = , sampler = , denoise = を指定した場合:
steps = , sampler = , denoise = を指定した場合:
関連
- 高機能版: KSamplerAdvanced
- 使用するモデルの読み込み: CheckpointLoaderSimple、CheckpointLoader
- プロンプトのエンコード: CLIPTextEncode
- 空の latent image 生成: EmptyLatentImage
- そもそもノイズとは: [基礎] "ノイズ" の正体 (書きかけ)
- cfg について: CFG Scale とは何か
- denoise の正体: KSamplerAdvanced で denoise 量を指定する方法
外部リンク
- scheduler について comfyanonymous による説明
- karras scheduler の詳細 (ページ 5、式 5 周辺。ComfyUI では ρ = 7): Elucidating the Design Space of Diffusion-Based Generative Models