「Sampling method(サンプラー)って何だろう?」
「どのSampling methodを使ったらいいか分からない…」
と困っていませんか?
Sampling methodを変えることで
体の部位が崩れにくくなったり
上手く生成できなかったポーズが生成できたりするので重要な設定項目になります。
モデルによって良い画像生成結果になる「Sampling method」は違うので
全て試して特徴を把握する必要があります。
比較的どのモデルにも良い生成結果になりやすい、おすすめの「Sampling method」があります。
記事内で紹介するので是非参考にしてください。
この記事では、Sampling methodとは何なのか、おすすめの設定などについて解説します。
・Sampling methodが何なのか分かる
・各Sampling methodの特徴が分かる
・どのSampling methodを使うと良い生成結果になりやすいのか分かる
Sampling methodとは

「Sampling method」は、ノイズを除去していく方法を変更することができます。
以下の画像は、「Sampling method」の「Euler a」「PLMS」「UniPC」であり
上の3枚では、「Sampling steps」を「1」にした結果であり
下の3枚では、「Sampling steps」を「20」にした結果になります。
「Euler a」「PLMS」「UniPC」は、それぞれ違った生成結果になっています。
Sampling steps「1」では、全体がぼやけていたり、ノイズがあったり、怪しい人物が出ていたりするのですが、
steps数を上げていくことによって、少しずつノイズを取り除いていって綺麗になっていきます。
ノイズを取り除く方法は「Sampling method」によって違います。
steps「20」では、20回ノイズが除去されて、綺麗な人物で生成できていることが確認できます。

各Sampling methodの特徴と比較結果

ここからは、各「Sampling method」の特徴と、
Sampling steps数を「20」「40」「60」に設定して画像生成した3枚を並べて、どう変わるのか比較していきます。
Euler a
「Euler a」では、Sampling stepsを「150」まで上げても背景や服装が変わりやすいです。
以下の画像で分かりますが、steps「20」と「60」を比べると全体が変わっています。
steps「20」では手の指が崩れていますが、「40」になると手の指が綺麗に生成できています。
このように、steps数を変えることで手の指の崩れを治せる場合があるので試してみてください。
また、Sampling steps数は「150」まで上げても、クオリティが良くなるとは限りませんから「40」くらいの設定でいいと思います。

以下の動画は、「Euler a」で「Sampling steps」数を「1〜30」まで上げていった例になります。
背景や服装などがコロコロ変わって安定していないことが確認できます。
Euler
先ほどの「Euler a」では、steps「20」と「60」を比べると大きく全体が変わっていましたね。
以下の画像のように「Euler」では、sampling steps「20」以上からポーズや背景などがほとんど固定されていることが確認できます。

LMS
「LMS」では、steps数「20」と「40」を比べると、背景や服の色などが変わっており、まだ固定されている感じはありません。
「40」と「60」を比べると背景は固定されていて、目の色・服装のリボン・袖の部分が変わっているくらいになっており、大きく目立って変わっていません。

Heun
「Heun」では、「Euler a」「Euler」「LMS」と比べるとほとんど変わっていません。
目の色が少し薄くなったのと、袖の部分くらいでしょうか。

DPM2
「DPM2」のsteps「40」では、「20」と比べると指が綺麗にできています。
ですが、steps「60」に上げると、逆に再度指が崩れるようになって質が下がっています。
必ずしもsteps数を上げたからといって
指の形状が固定されてクオリティが上がるとは限らないようです。

DPM2 a
「DPM2 a」では、「20」と「60」を比べると全体が変わっています。
「DPM2 a」も、「Euler a」と同様に「150」まで上げても固定されることがありません。
「a」の文字が入った「Sampling method」は、step数をいくら上げても変わりやすいです。

DPM++ 2S a
こちらも「DPM2 a」と同じように全体が変わりやすいです。
一番良くできてるのが真ん中のstep「40」です。
手の指にあまり違和感がありませんね。

DPM++ 2M
step「20」から全体が大きく変わっている感じがありません。
「20」の方が、手を綺麗に生成できていて質が良いです。

DPM++ SDE
・背景は固定されやすい
・人物の服装などが少し変わる

DPM++ 2M SDE
・背景は固定されやすい
・服装が変わりやすい

DPM fast
「DPM fast」のstep数「20」では、ぼやけていてまだクオリティが低い状況になっています。
「40」以上からはしっかりと生成できています。
「DPM fast」では、「40」と「60」を比べた時に
「a」の文字が入っているSampling methodと同様に全体が大きく変わります。

「DPM fast」はstep数が、1,4,7,10…と3ずつ飛んで処理されているようです。
なので、7回目でsteps「20」まで処理されているためなのか、まだ全体がぼやけて質が悪く生成されています。
steps数は「40」くらいから質が良くなってきます。

DPM adaptive
・人物と背景どちらもあまり変わらない

LMS Karras
・人物と背景が少しだけ変わる

DPM2 Karras
・人物と背景があまり変わらない

DPM2 a Karras
・最大「150」にしても、人物と背景がコロコロ変わる

DPM++ 2S a Karras
クオリティが安定して高く画像生成されやすいサンプラーが「DPM++ 2S a Karras」になります。
個人的にはよく使っています。

DPM++ 2M Karras
こちらのサンプラーもよく使っておりおすすめです。
モデルによっては「DPM++ 2S a Karras」と比べると
やや質が劣って画像生成される場合があります。

DPM++ SDE Karras
「DPM++ 2S a Karras」と同様に、安定してクオリティが高い画像生成がされやすい傾向にあります。
こちらもおすすめです。

DPM++ 2M SDE Karras
Karras系全般は、比較的良い画像生成結果が得られやすいです。
Sampling step数は「40」くらいに合わせるといいでしょう。

DDIM
DDIMでは指の形状が20以上から良くなっており、クオリティが高く見えるので使用してみてください。

PLMS
・人物と背景が少しだけ変わる

UniPC
・人物と背景が少しだけ変わる

Sampling steps数によって手や目が良くなる
Sampling steps数を変えることで
手の指が良くなったり、目のハイライト(白い光)の部分が両目でしっかりと綺麗に生成できたりする場合があります。
分かりやすい例として、「Samplig method」の「UniPC」のstep数を「40」と「60」で比べた場合になります。
左側の「40」の設定では、両目に綺麗に白い光が入っています。
また、手の指が5本で生成されています。
ですが、右側の「60」の設定では、両目に白い光の入り方が不自然になっており、手の指も崩れています。

「Sampling steps」数は、必ずしも上げたからといってクオリティが良くなるわけではなく
逆に目や手の指を崩してしまう原因になったりするので、適切な数値を見つける必要があります。
おすすめのSampling method

「結局どのSampling methodを使えばいいの?」と迷っている方に
おすすめの設定として以下の4つになります。
・DPM++ 2M Karras
・DPM++ SDE Karras
・DPM++ 2S a Karras
・DDIM
これら4つは、安定して質の良い画像生成がされやすい傾向にある(腕や脚などが崩れにくい)ので是非試してみてください。
まとめ

以上で、Sampling method(サンプラー)について解説しました。
・Euler a
・DPM a
・DPM++ 2S a
・DPM fast
・DPM2 a Karras
・DPM++ 2S a Karras
steps数を変更すると、目や手の形状が良くなってクオリティが上がる場合があります。
特定のsteps数にすると、逆に質が悪くなってしまう時もあるので
最適な数値を試行錯誤して探す必要があります。
ぜひ記事を参考にして良い「Sampling method」を探してみてください!