Stable Diffusionの各Sampling methodの違い

Stable Diffusion web UI (AUTOMATIC1111)

※ noteにも同一の内容で投稿しています
https://note.com/honjoh

Sampling method

  • Euler a
  • Euler
  • LMS
  • Heun
  • DPM2
  • DPM2 a
  • DDIM
  • PLMS

Stable Diffusionにおいては、現在上記のようなサンプリング・メソッドが提供されていますが、MidJourneyにしてもDreamStudioにしても、それぞれのサンプリングを果たしてどのように選択するべきなのか、迷ってしまいます。

いじり始めて1日目ですが、自分なりに方法論を考えてみた結果、結局のところは呪文(プロンプト)と変数(パラメータ)の調整をしながら構図を探っていき、生成したい画像に近い構図を探り当てたら、後は必要に応じてSeed値を固定したりしながらstep数を増やし、精度を高める調整段階に入っていくような流れの感覚です。

変数以外は結局ガチャ要素の比重が大きいため、Batch数(バッチカウント)を増やして同時生成できるようにし、あとはスピード勝負。それぞれのサンプリングで何が得意・不得意、などは現状まだ不明ですが、スピードが一番大切なのではないかと考えています。

スピードに関して計測しているような記事がまだ見つからないため、ここで簡単な実験を、簡単な報告で行ってみることにします。

実験1: a sleeping cat

promptは「a sleeping cat」とし、それ以外の条件はすべてデフォルトのままです。

  • txt2img
  • prompt: a sleeping cat
  • Sampling Steps: 20
  • Sampling method: 下記(1)~(8)
  • Restore faces: None
  • Tiling: None
  • Batch count: 1
  • Batch size: 1
  • CFG Scale: 7
  • Height: 512
  • Width: 512
  • Seed: -1
  • Script: None

果たして、どのような違いが生まれるのでしょうか。

(1) Euler a

6.15s, 6.26s, 6.25s

(2) Euler

6.19s, 6.37s, 6.26s

(3) LMS

6.14s, 6.17s, 5.94s

(4) Heun

11.25s, 11.41s, 11.26s

(5) DPM2

11.54s, 11.63s, 11.45s

(6) DPM2 a

11.62s, 11.37s, 11.47s

(7) DDIM

6.36s, 6.31s, 6.50s

(8) PLMS

6.80s, 6.71s, 6.77s

実験1の結果

  • (4) Heun
  • (5) DPM2
  • (6) DPM2 a

のみ11秒台、それ以外は全て6秒台と、非常に分かりやすい実験結果が出ました。複雑な条件に変えていった際にどのような違いが出るのでしょうか。次回の記事で書いてみたいと思います。


Stable Diffusionの各Sampling methodの違い (2)
https://note.com/honjoh/n/n8d123d36c051