こんばんは、スタジオ真榊です。今回はStableDiffusionWebUI上で生成結果の比較実験ができる機能「XYZ plot」に関する解説記事をお届けします。(※2023年3月配信のアーカイブ記事「XYZ plotで初めてのモデルと仲良くなろう!」の内容をアップデートしたものです)
入手したばかりのモデルはどんなクォリティタグが効くのか、どんなステップやスケール、サンプラーを選んだら自分好みのイラストが生成できるかがよく分からないため、思い通りの画像生成ができず、結局普段のモデルに戻ってしまった…ということがよくあります。Civitaiなどではモデルの公開者がオススメ設定を書いてくれていることが多いですが、XYZ Plotを使って最も自分好みに動いてくれるスケールやステップ、サンプラーの「スイートスポット」を探すことで、さらに実力を引き出すことができます。
この記事では、XYZ Plotの基本的な使い方をはじめ、初めてダウンロードしたモデル(Checkpoint)や自分でマージしたオリジナルモデルの最適設定を探るため、入力値をコピペして放っておくだけで各種比較実験が完了できるオススメのルーチン設定などを紹介していきます。
XYZプロットの基本
XYZプロットは、A1111版やForgeなどのStableDiffusion Web UIに標準搭載されている機能で、最大で3つの次元(X軸、Y軸、Z軸)のパラメータを同時に組み合わせて画像生成を比較することができます。異なるモデルやステップ、サンプラー、プロンプトなどの組み合わせを自由に「総当たり」することができるため、そのモデルに最適な設定をビジュアライズできるのが特徴です。
WebUIの生成画面の一番下にあるプルダウンメニューから「X/Y/Z Plot」を選択すると、こちらの画面が現れます。(※以下、日本語化環境によって表示が異なる点にご注意下さい)

「X軸(横軸)」と「Y軸(縦軸)」に比較したいSeed値や学習モデルなどを入れた状態で生成開始すると、それぞれの組み合わせを総当たりで生成し、下図のように凡例(比較一覧画像)を生成してくれます。上のスクリーンショットでは、Stepを10と20、CFGスケールを4~7までの整数で指定していますので、それぞれの画像と一緒にこのような凡例が出力されます。

必ずしも複数軸を組み合わせる必要はなく、X軸だけ、Y軸だけにパラメータを設定しても、問題なく比較生成を行うことができます(Xなら横一列、Yなら縦一列に画像が並びます)。「凡例を描画」のチェックを外すと、一覧画像は作られず、全ての組み合わせの画像だけが保存されます。
「凡例を描画」するときは「サブ画像を含める」にもチェックしておきましょう。こうしないと、UI右側の生成結果画面に各生成画像が表示されず、凡例画像だけが表示されます(内部的には指定フォルダに生成・出力されています)
比較可能なパラメータ
XYZ軸に入力できる主な設定値は次のようなものがあります。
なし:その軸を使わない場合は「なし」を選ぶ
Seed: シード値
Steps: 生成ステップ数
Prompt S/R: プロンプト置換。プロンプトの一部を指定したものに置き換えできる
Sampler: サンプラー
Scheduler: スケジューラー
Checkpoint名: 使用するモデル
CFG Scale: CFGスケール値
Hires upscaler: 高解像度補助(Hires)アップスケーラー
Hires steps: 高解像度補助(Hires)ステップ数
Clip skip: CLIPスキップ値
ノイズ除去: ノイズ除去強度
Prompt order: プロンプトの順序変更
VAE: 使用するVAEを切り替える。主にキャンバス全体の彩度に影響する
これらに加え、webUIにインストールしたさまざまな拡張機能のパラメータも追加されていくため、環境によって入力できる設定値はさまざま。webUIによって、設定できる数値に差がある点にも注意が必要です(例えば、ForgeではControlnetのパラメータを比較生成することができません)
基本は"XYのみ"で考えよう
最初はZ軸のことは忘れて、「横軸X/縦軸Yの二次元で総当たりできる機能」と理解したほうが早いです。実際、この機能は当初は「XY plot」という名前の機能でした。Z軸にパラメータを指定すると、そのXYの組み合わせ表をさらにZ軸の個数だけ作ることになります。
例えば、横軸Xにステップ、縦軸Xにスケールを3種類設定したとすると、3×3で9枚の画像からなる比較表が生成されます。さらに、Z軸にサンプラーを3種類指定すると、さきほどの3×3のステップ/スケール比較表がサンプラーA、B、Cで3つ生成されることになり、計27枚の画像が生成されるわけです。
3軸掛け合わせるとすぐに膨大な生成枚数になってしまいますから、実際は1軸か2軸で比較することがほとんどです。
パラメータと値の入力方法
試したいパラメータを軸ごとに選んだら、すぐ右側の欄に比較したい数値を半角カンマ「,」もしくは半角ハイフン「-」で区切って入力します。例えば、スケールを選んで入力欄に「5,6,7,8」と入れると、順番にスケール5~8の4つの画像が(スケール値以外はそのままで)生成されます。
ハイフン(-)で整数をつないだ場合、その間の全ての整数が選択されます。つまり「5-8」と「5,6,7,8」は同じ意味ということです。
他にもこのような特殊入力法がありますが、滅多に使わないので覚えなくてもOK。

【例】
5-20(+5) 5から20までの間、5刻みで増やす。つまり5,10,15,20と同じ意味
5-9[3] 5から9までの間で、3つ分整数を採用する。つまり「5,7,9」となる
【注意】最後の数字のあとには「,」を入れないようにしましょう。AIが「空欄」を指示されたと勘違いして、もう一枚余計な画像が生成されます。逆に言えば、わざと「,」を入れることで、その設定値を空白にしたケースと比較することも可能です。
パラメータごとの特徴
先ほど紹介した主なパラメータについて、それぞれの特徴やどのような比較ができるかをまとめました。
・なし
使わない軸は必ず「なし」にしておこう。X軸が「なし」だと、生成画像は縦一列に並ぶ。Y軸が「なし」だと横一列。Z軸を使う場面はそこまでないので、基本は「なし」にしておくことになる。
・シード
複数のシード値で画像生成したいときに使う。実務的には「11111,22222,33333」のように分かりやすい数字を指定することが多い(1,2,3でもよい)。1つのSeed値だけで比較すると、画像生成がうまくいったり失敗したりした原因が分かりにくいため、ある1つのパラメータだけを比較したい場合も、もう一つの軸に一応Seed値を2種類以上入れておくのがオススメ。
ちなみに「-1,-1,-1」のように入力すると、下図のようにランダムな3種類のSeed値が割り振られる。

・PromptS/R
プロンプトを比較したいときに使う。メインのプロンプト欄(ポジティブ・ネガティブ両方)に入力された文字列を、指定したものに順次置き換えられる機能。例えば、「1girl,smile」というプロンプトの場合、PromptS/Rに「smile,sad,surprised,expressionless」と入力すると、女の子の表情を変更した4枚の画像が生成される仕組み。最後に「,」を余計につけると、最初のプロンプトを除去した状態で生成できる(下図の一番右)

自分好みの画風タグやクォリティタグ、ネガティブタグ、LoRAの適正強度などを見つけるのによく使うパラメータですので、詳しくは後述します。
・高解像度補助(Hires)関係
通常の画像生成に引き続いて、アップスケーラーで解像度をアップするHires。XYZ plotでは
①高解像度でのアップスケール
②高解像度でのステップ数
③ノイズ除去(=Hiresの強度)
…の3つを組み合わせて比較することが多い。
画像生成は20~30ステップくらいで行うことが一般的だが、Hiresは20ステップ未満でも十分飽和することが多い。ただ、デフォルトの「0ステップ」指示だと、画像生成と同じステップ数だけHiresを掛ける設定になるため、生成時間が無駄にかかってしまう。普段使っているHiresがどれくらいで飽和するのか、適切なノイズ除去強度はどれくらいか、XYZ plotで一度は確かめておきたい。
・PromptOrder
プロンプトは基本的に順序が前にあるものの方が注目度が高くなるため、タグの順番を入れ替えた影響を調べたいときに使う。入れ替えたい複数のタグを「カンマ(,)」入りで指定すると、順序を入れ替えたすべての組み合わせが総当り生成される。下図は「1girl,sky,sea」を入れた結果。

膨大な生成数になりかねないので、PromptOrderに入力するプロンプトは3つまでにしておこう。最近のSDXLモデルはそこまでプロンプト順による変化が見られなくなったので、使いどころは減っている印象。
・Checkpoint名
使用する学習モデル。入力欄の▼ボタンを押すと、現在「models/StableDiffusion」フォルダに入っているcheckpointが一覧表示されるので、比較したいものにチェックを入れる。一番右側の本のボタンを押すと、登録してあるcheckpoint全てを記入することもできる。サンプラーやアップスケーラーなども同じ操作なので、総当たりしたいときはこれを使おう。
Civitaiでとりあえず目に付いたモデルをDLする人や、自分でモデルマージをよくする人の場合、いま手元のフォルダにあるモデルがそれぞれどんなものだったかよく分からなくなることが往々にしてある。たまには同じ設定で総ざらえすると、意外に好みのモデルを見つけられたりするので、オススメ(ストレージを圧迫している不要なモデルの掃除にもなる)
・Sampler
サンプラー。最近の人気SDXLモデルは「Euler」や「Euler A」がオススメとだけ説明欄に書かれていることが多いが、総当たりでチェックすると意外にモデルの能力を引き出せるサンプラーが見つかることもある。とりあえずでEulerを使っている人は、一度は試してみよう。スケジューラ(Schedule type)と組み合わせてみると良い。
・Schedule type
画像生成過程のノイズ除去の方法を制御するパラメータ。サンプラーほどではないが、生成結果や生成時間を左右する。「Automatic」だと、モデルが自動的に最適なスケジュールを選択してくれるので、基本的にはこれで構わないが、KarrasやExponentialといったスケジューラを選ぶと、意外に良い結果が得られることもある。サンプラーと掛け合わせて試してみよう。
・[Controlnet]enabled
使用しているcontrolnetのオンオフを切り替えられる。黄色いボタンを押せばオンオフを示すtrue,falseというキーワードが自動で入力されるので分かりやすい。他にも「重み」や「preprosessor」などほとんどの数値を入れ替えられるので、そのControlnetをうまく効かせるにはどの設定がいいか探りたいときに有用。
(※A1111でControlnetをインストールすると選べるようになるが、デフォルトでControlnet Integratedが入っているForgeやreForgeでは実装されていないもよう)




