Stable Diffusionのサンプラー(Sampling method)って何?生成される画像を比較検証!

Stable Diffusionで画像生成を行う際に、「サンプラー」や「Sampling method」というキーワードが出てきて混乱していませんか?

Stable Diffusionで思い通りの画像を生成するためには、適切なサンプラー(Sampling method)を使用することが求められます。

今回PROMPTYでは、サンプラー(Sampling method)について解説し、生成される画像を比較した結果をご紹介します。

Stable Diffusion WebUIの利用方法を知りたい場合は、こちらの記事をご覧ください。

関連記事

「Stable Diffusionを使用したいが、どのように始めれば良いのだろう...」「低スペックPCでもStable Diffusionを使用できるの?...」 そう思う方もいるのではないでしょうか。 実は、高性能なPCを持っ[…]

サンプラー(Sampling method)とは?

Stable Diffusionでは、画像を生成する際、人間が手で絵を描くときと異なり、初めにノイズが混じった黒いキャンバスからスタートし、このノイズを段階的に取り除いていくことで、美しいイラストを生成します。

引用元:Stable Diffusion Samplers: A Comprehensive Guide

このノイズを消去する作業のことを「サンプリング」といいます。

サンプリングをどう進めていくかを定めるアルゴリズムが「サンプラー」あるいは「Sampling method」であり、Stable Diffusionではいくつものサンプラーが用意されています。そのため、使用するサンプラーを選びながらイラストを生成することが可能です。

それぞれのサンプラーは、収束までのステップ数と精度により特性が異なります。よく使われるサンプラー(Sampling method)は次の通りです。

  • Euler a
  • DPM++ SDE Karras
  • DPM++ 2M Karras
  • DDIM

サンプラー(Sampling method)の違いを比較

本記事では、さまざまなサンプラー(Sampling method)を使って生成される画像を比較します。

また、Samping stepsを変えて生成される画像がどのように変化するのかを検証します。

プロンプト

今回生成する画像のプロンプトは次の通りです。

プロンプト:

masterpiece,high quality,1 girl,standing,blonde long hair,extremely detailed face,smile,forest,wallpaper

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic)

モデル:AnythingV5
Sampling steps:20~40
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Seed:2751732982
Script:None

生成した画像

Sampling stepsが20から40までの生成画像を比較すると次のようになります。

このように、Sampling methodが変わると生成される画像が異なります。

Sampling methodと生成された画像の質を大まかに分類すると次のようになります。

生成される画像Sampling method
Sampling steps 40まできちんとした画像が生成されないLMS, DPM fast, PLMS,
Sampling steps 20~40にかけて画像が変化するEuler, Euler a, DPM++ 2S a, DPM++ 2M, DPM++ SDE, LMS Karras, DPM2 a Karras, DPM++ 2S a  Karras, DPM++SDE Karras, DDIM, UniPC
Sampling steps 20である程度画像が収束しているHeun, DPM adaptive, DPM2 Karras, DPM++2M  Karras

おすすめのサンプラー(Sampling method)は?

モデルごとに生成される画像が異なることが分かりましたが、結局どのサンプラー(Sampling method)を使えばいいの?という疑問が残ります。

ここでは、用途に応じて最適なサンプラーを決める方法をご紹介します。

① モデルが推奨するサンプラーを確認する

はじめに、モデルごとに最適なサンプラーが異なります。Hugging faceなどのモデルのダウンロードページにサンプラーの指定があれば、そのサンプラーを使用することがお勧めです。

引用元:Hugging Face

モデルをダウンロードする際に、”Sampler”の項目をチェックしておきましょう。

② 収束性の高いサンプラーを選択する

「Ancestral samplers」と呼ばれるサンプラーでは、イラストが収束しません。「収束しない」ということは、Sampling stepごとにイラストの形が変わってしまいます。

「Ancestral samplers」には、主に「Euler a」「DPM2 a」「DPM++ 2S a」「DPM++ 2S a Karras」など、名前に”a”の文字が付いているものが含まれます。これらの特性として、ランダム性が高くイラストの再現性が落ちてしまうというデメリットがあります。

Euler aを使って生成した画像(再掲):

画像のクオリティには問題ありませんが、構図や服がバラバラになっています。

一般的にイラストを大量に制作する際には、そのデメリットはあまり影響を及ぼしませんが、同じ構図が求められる状況には向かないので、収束性の低いサンプラーを避ける必要があります。

③ 画像生成が速く、品質の高いサンプラーを選択する

通常、イラストを作成する際には、美しいイラストを迅速に作成できるかどうかが重要な観点となります。その観点から見ると、「DDIM」が最も推奨されます。画像のquialityとsampling stepsを比較したグラフを確認してみましょう。

引用元:Stable Diffusion Samplers: A Comprehensive Guide

グラフの縦軸が低いほど品質が良いのですが、DDIM(水色)は少ないステップ数でも高い品質を達成しています。Euler(黒色)よりも早く品質が向上するという結果が出ています。

そのため、再現性などにはこだわらず、生成時間が短く品質の高い画像を生成したい場合はDDIMがおすすめということになります。

番外編:使わないサンプラーを削除する

いくつものサンプラーが存在しますが、普段使いこなすのは数種類に絞られます。

使わないサンプラーは、サンプラーの選択リストから見えなくしておくと便利です。

設定方法としては、Settings>Sampler parameterの中の”samplers in user interface (requires restart)”にある不必要なサンプラーを選択することができます。

ここで選択したサンプラーは完全に削除されるわけではないため、後から改めて追加することも可能です。

まとめ

今回PROMPTYでは、Stable Diffusionのサンプラー(Sampling method)について詳しく解説し、それぞれが生成する画像を比較検証しました。

モデルによって、収束性や再現性が異なることが分かりました。また、用途に応じたサンプラーの選択方法をご紹介しました。

今回の例を参考に、皆さまも自分の目的に合わせて最適なサンプラーを選び、より高品質な画像生成を楽しんでみていかがでしょうか。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。