Sampling methodの比較・検証

2023年8月15日

Samplingとは

Stable Diffusionは、高次元空間内での確率分布からのサンプリングを行う手法で、初期点をランダムに選択し、微分方程式に従って点を移動させます。定常状態での分布が目的の分布に近くなるよう微分方程式が設計されており、一定時間移動した点をサンプリングとして採用するかどうかを決定します。Metropolis-Hastings法などを用いて採用するかどうかを決め、手順を繰り返すことで目的の分布からの有効なサンプリングが可能となります。

広告

比較・検証

サンプリング方法は全部で20種類有りますが、何が違うのでしょうか。

縦軸がサンプラー・横軸がseedナンバーを固定して X/Y/Z plot で書き出しています。

モデル固定 seedナンバー固定の条件で生成しましたが画像にハッキリとした違いがみられます。

前回、検証した時は同じような画像が生成されたはずよね? 今回,違いが出たのはなぜかしら?

そうなんだ! サンプラーなんてどれを使っても同じだろうと思っていたんだけど結構、違いがハッキリと出て僕も驚いているんだ。
今回使用したモデルはLora学習で作ったキャラクターを使っているんだ、プロンプトで指示したのと違って自由度が低い状態なんだと思うよ、ノイズが残ってしまったサンプラーも増えているしね!

LMSのノイズはCFGスケールを2.5まで下げると解消したんだけどLoRAの効果は薄れてしまってもはや別物でした。
修正結果がこれです。・・・・これは、これで可愛い💘

DPM fastも酷いわね!
これも修正するね・・・これも可愛い😍

PLMSも修正するよ!
変な所に腕が生えているから、CFGスケールを2まで下げるよ!

検証結果

サンプラー毎に生成される画像は異なるため、こだわるならX/Y/Z plot で書き出して確認する事をお勧めいたします。 又、一見、失敗に思えるサンプラーでも調整すれば以外な結果になる場合が有りますので試してみてはどうでしょうか?