「Stable Diffusion のサンプラー」について書いてみたいと思います。
サンプラーは、Stable Diffusionがどのように動作するかを理解するための重要な部分であり、さまざまなサンプラーが提供する特性を理解することは重要です。
※アイキャッチ画像は Stable Diffusion で生成しています。
サンプリングとは何か?
Stable Diffusion では、サンプラーがデノイジング(ノイズの除去)ステップを担当します。完全にランダムな画像を生成し、そのノイズを推定した後、推定されたノイズを画像から減算します。このプロセスは指定したステップ数だけ繰り返され、最終的にクリーンな画像が得られます。このデノイジングプロセスはサンプリングと呼ばれ、各ステップで新しいサンプル画像が生成されます。
ノイズスケジュール
ノイズスケジュールは各サンプリングステップでのノイズレベルを制御します。
最初のステップではノイズが最も高く、最後のステップではゼロに減少します。各ステップでは、サンプラーの役割はノイズスケジュールに一致するノイズレベルの画像を生成することです。サンプリングステップの数を増やすと、各ステップ間のノイズ削減が小さくなり、サンプリングの切り捨て誤差を減らすことができます。
サンプラーの種類
WebUI AUTOMATIC1111 では、19種類以上のサンプラーが利用可能です。それぞれには独自の特性と効率性があります。
旧式の ODE ソルバー
Euler、Heun、LMS (Linear Multi-Step Method)など、大変古くからあるサンプラーです、通常の微分方程式(ODE)の旧式のソルバーです。
Ancestral sampler(祖先サンプラー)
Euler a、DPM2 a、DPM 2S a Karrasなど、一部のサンプラーは祖先サンプラーと呼ばれ、各サンプリングステップで画像にノイズを追加します。これらは結果にランダム性を持つ確率的なサンプラーです。ただし、生成されるイラストが収束しないという欠点があります。
Karras ノイズスケジュール
Karrasとラベル付けされたサンプラーは、Karrasの記事で推奨されたノイズスケジュールを使用します。これは画像の品質を向上させるとされています。
DDIM と PLMS
DDIM (Denoising Diffusion Implicit Model)とPLMS (Pseudo Linear Multi-Step method)は、元々Stable Diffusion v1に付属していたサンプラーで、PLMS は現在ではあまり使用されていません。
DPM と DPM++
DPM (Diffusion Probabilistic Model solver)とDPM++ は、2022年にリリースされた拡散モデル用の新しいサンプラーです。これらは、類似のアーキテクチャを持つソルバーのファミリーを代表しています。
これらの情報を基に、あなたがどのサンプラーを使用するかを選択することができます。それぞれには一長一短があり、あなたの具体的なニーズに合わせて選択することが重要です。
よく使われているサンプラー
最近では以下のサンプラーがよく使われています。
- Euler a
- DPM++ SDE Karras
- DPM++ 2M Karras
- DDIM
これ以外のサンプラーは後述の方法で非表示にしてみると良いでしょう。
DDIM を使って比較的低いステップで生成して、良い画像ができたら DPM++ SDE Karras などで仕上げるのはいかがでしょうか。
サンプラーの比較
モデルは anything v4.5、Steps 30 で X/Y Plot を使って出力して比較しました。
Steps 30 程度では破綻しているサンプラーもあります。
サンプラーの非表示
あまり使用しないサンプラーは、その表示をオフにすることがおすすめです。一般的に、使用するサンプラーは限られていますので、インターフェースをすっきりさせるために、使わないものは非表示にしておきましょう。
AUTOMATIC1111 の WebUI での設定方法は以下の通り。
「Settings」に進み、「Sampler parameter」セクション内の「samplers in user interface (requires restart)」を選択します。そこで、不要なサンプラーにチェックを入れてください。
この設定はサンプラーを削除するわけではなく、表示を非表示にするだけですので、後から何度でも設定を変更することが可能です。