Stable Diffusion
前回、Stable Diffusionでテキスト(文字列)から画像を生成する方法(txt2img)、そしてプロンプトとネガティブプロンプトの紹介をしました。

今回はStable DiffusionのパラメータとしてSampling method、Schedule type、Sampling stepsを見ていきましょう。
それでは始めていきましょう。
場所の確認と各パラメータの意味
まずはSampling method、Schedule type、Sampling stepsがWeb UIのどこにあるか確認してみましょう。

ページの中程に3つ並んでいました。
それぞれのパラメータの意味ですが、生成AIでは画像範囲に大量のノイズを配置して、そのノイズを少しずつ取り除くことで絵を描いていくそうです。
Sampling methodはそのノイズの除去の仕方を指定します。
またSchedule typeはSampling methodどどのように進めていくかを指定します。
最後にSampling stepはノイズを減らしていくステップ数です。
それぞれに関して詳しく説明してくれているサイトを見つけたので、良かったらこちらを参考にしてください。

blue_pencil-XLのパラメータを確認
現在使っているチェックポイントはblue_pencil-XLですので、どんなSampling method、Schedule type、Sampling stepsを使っているか確認してみましょう。
前回参考にしたこちらの画像を今回も参考にしてみます。

「SAMPLER」がSampling methodで、「STEPS」がSampling stepsのようです。
Schedule typeは書かれていないようです。
ということでSampling method:DPM++ 2M SDE、Schedule type:Automatic、Sampling steps:30を中心に色々遊んでみましょう。
Sampling method
まずはSampling methodをいくつか試してみましょう。
先ほど紹介したこちらのページによるとDPM++ 2M SDEは「効率と滑らかさを兼ね備えたバージョン」とのことです。

また同じ方向性のSampling methodでさらに品質の良い画像を生成しそうなものは「DPM++ 2M SDE Heun」と「DPM++ 3M SDE」のようなので、こちらの2つを試して比較してみましょう。
プロンプトは前回やってみて良かった「1girl, long hair, brown hair, school」を使います(masterpieceやbest quality、またネガティブプロンプトは無しにしました。)。
まずはblue_pencil-XLでよく使われている基本のパラメータから。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Automatic
Sampling steps: 30

ちなみにこの画像生成ではSchedule typeは「Exponential」が使われ、22.4秒で生成したようです。

Sampling methodを「DPM++ 2M SDE Heun」に変えてみます。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE Heun
Schedule type: Automatic
Sampling steps: 30

こちらではSchedule typeが「Karras」に変わってしまいました。
そのためSchedule typeを「Exponential」に固定してもう一度生成してみます。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE Heun
Schedule type: Exponential
Sampling steps: 30

最後に「DPM++ 3M SDE」を試してみます。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 3M SDE
Schedule type: Exponential
Sampling steps: 30

個人的には「DPM++ 2M SDE Heun」が品質の良い画像を生成してくれた気がします(素人なのでなんとも判断つきません)。
とりあえず「DPM++ 2M SDE」か「DPM++ 2M SDE Heun」あたりを使ってみようかなと思います。
Schedule type
Schedule typeは特にこだわりがなければ「Automatic」を使っておけば良さそうですが、「とりあえずKarrasを使うと良い」的なサイトがいくつかあったので、「Karras」と先ほど出てきた「Exponential」、「SGM uniform」を試してみましょう。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 30

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Exponential
Sampling steps: 30

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: SGM uniform
Sampling steps: 30

個人的には「Karras」、「SGM uniform」、「Exponential」という順で品質が良いと感じました。
ちなみに先ほど「DPM++ 2M SDE Heun」でSchedule typeを「Automatic」にしたときに選択された「Karras」と「Exponential」での画像では「Exponential」の方がいい感じだったので、Sampling methodとの相性もあるのかもしれません。
Sampling steps
最後にSampling stepsです。
Sampling methodを「DPM++ 2M SDE」、Schedule typeを「Karras」に固定して、Sampling stepsを10、20、30、40、50、60、70、80、90、100としてみます。
Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 10

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 20

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 30

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 40

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 50

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 60

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 70

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 80

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 90

Prompt: 1girl, long hair, brown hair, school
Sampling method: DPM++ 2M SDE
Schedule type: Karras
Sampling steps: 100

Sampling stepsが10の時だけは全く途中で止まった感じの画像になりましたが、20からはそれほど品質の差が無いように見えます(これは結構皆さんが言われていることと同じだったりします)。
ただ私の環境(Mac mini 2024: CPU:M4 Pro、メモリ:24 GB)では10 steps増えるごとに7秒程度増えていく感じでしたので、とりあえず20 stepsか、少し余裕を見て30 stepsくらいがちょうどいいのでは無いかなと思います。
これで結構「Sampling method」、「Schedule type」、「Sampling steps」はそこそこ自信を持って選べるようになったかなと。
次回は同じくStable Diffusionで「CFG Scale」をいじってみましょう。
ではでは今回はこんな感じで。
コメント