Home Artists Posts Import Register

Content

こんばんは、スタジオ真榊です。今夜はStableDiffusionWebUI上で生成結果の比較実験ができる機能「X/Y/Z plot」を使って、初めて使うcheckpoint(学習モデル)と仲良くなる方法について書いていきますよ。


ダウンロードしたばかりのモデルはどんなクォリティタグが効くのか、どんなステップやスケールにしたら自分好みのイラストが生成できるかが分からず、実力を活かしきれないままお蔵入りになってしまうことがよくあると思います。X/Y/Z plotとある裏技をうまく組み合わせると、外出中に全部の総当りを済ませて一番好みの組み合わせを探り当てることができるんです! 「X/Y/Zプロットは研究好きなマニア向け機能なんでしょ?」と思っていた方も、使い方さえ分かればとっても簡単・親切・便利な機能なので、ぜひこの機会に試してみてくださいね。


X/Y/Zプロットの基本



さて、さっそく使い方の解説から。WebUIの生成画面の一番下にあるプルダウンメニューから「X/Y/Z Plot」を選択すると現れるのがこちらの画面です(▲)。「X軸(横軸)」や「Y軸(縦軸)」に比較したいSeed値や学習モデルなどを入れると、それぞれの組み合わせを総当りで生成し、下図のように比較一覧画像まで生成してくれます。「凡例を描画」のチェックを外すと、一覧画像は作られません。



こちらの画像は、X軸に「checkpoint名」、縦軸に「prompt S/R」を指定して、2つの学習モデル✕2つのプロンプトの組み合わせを試したケースです。他にもSeed値やステップ、スケール、Controlnetの各種設定や拡張機能のオンオフなど、ありとあらゆる設定を総当りできるので、新しいモデルや拡張機能を導入したときにはぜひ試しておきたい機能と言えます。


試せる設定値の一覧

「X(orY,Z)軸の種類」欄から総当りできる設定値を下記に示しました。※新たな拡張機能がインストールされると、操作できる値が自動的にこの一覧に追加されるので、人によって表示は異なります。



これらの設定を選んで、すぐ右側の欄に試したい数値を入れます。例えば、スケールなら「5,6,7,8」と入れると、順番に5~8の4つの画像が(スケール値以外はそのままで)生成されます。※最後の数字のあとには「,」を入れないようにしましょう。AIが「空欄」を指示されたと勘違いして、もう一枚余計な画像が生成されてしまうことがあります。


下記がよく使う設定値の一覧です。


・なし

こうしておくと、この欄は使用されない。X軸が「なし」だと、生成画像は縦一列に並ぶ。Y軸が「なし」だと、横一列に並ぶ。Z軸を使うことは滅多にない(総当りの下図が膨大になる)ので、基本は「なし」にしておくことになる。


・シード

複数のシード値で画像生成したいときに使う。と言ってもピンとこないが、本来の使い方はY軸:「-1,-,1-,1-,1-,1」のように指定する。こうすると、縦軸にランダムに5種類のSeed値(例:12823721、28367493、2888221...)が割り振られ、それぞれのSeed値におけるX軸の違いが分かる。下図はCutoff機能のオン・オフでどう画像が変わるかを検証する際に、画像が1組だとわかりづらいのでY軸を「-1,-,1-,1-,1-,1」にしたケース。



・Var.seed、Var.Strength

バリエーション機能を使ったときのSeed値とStrength。


・高解像度でのステップ数

「高解像度補助(hires.fix)」をオンにしたときのステップ数。


・PromptS/R

プロンプトを比較したいときに使う。(後述)


・PromptOrder

プロンプトの順番を入れ替えた影響を調べたいときに使う。入れ替えたい複数のタグを「カンマ(,)」入りで指定すると、順序を入れ替えたすべての組み合わせが総当り生成される。下図は「1girl,sky,sea」を入れた結果(X軸は-1,-1)。膨大な生成数になりかねないので、PromptOrderに入力するプロンプトは3つまでにしておこう。



・Checkpoint名…使用する学習モデル。どう指定すればいいのか迷ってしまうが、そういうときは入力欄の右側に黄色いボタン(▼)が出るので、これをクリックすると使用できるすべての値が入力されるので、いらないものを削除すればOK。サンプラーとかVAEとかアップスケーラーとかでも同じボタンが出るので迷わないで済む。



・[Controlnet]enabled

使用しているcontrolnetのオンオフを切り替えられる。これも黄色いボタンを押せばオンオフを示すtrue,falseというキーワードが自動で入力されるので分かりやすい。他にも「重み」や「preprosessor」などほとんどの数値を入れ替えられるので、例えばCannyをうまく効かせるにはどの設定がいいか探りたいときに有用。


PromptS/Rについて


プロンプトの組み合わせを試せる「prompt S/R」には少し特殊なルールがあり、通常のプロンプト欄にあるタグのうち一つを、複数の候補に「入れ替える」形で作用します。


例えばプロンプト「1girl,black hair,blue eyes」のうち、髪色だけをいろいろ変更したい場合は、「prompt S/R」欄の「X軸の値」に「black hair,blue hair,red hair,yellow hair」と入力すればOK。入力欄の一つ目のタグが2つめ以降のタグに順次切り替わり、黒髪、青髪、赤髪、黄髪の4画像が生成されます。「prompt S/R」欄の一つ目のタグ「black hair」がプロンプト内にないと、何と何を入れ替えてよいか判断できずエラーが生じるので注意しましょう。



こちら(▲)は、「1girl,very short hair」をプロンプト欄に入れ、Y軸に「prompt S/R」で「very short hair,short hair,medium hair,long hair」と入れたものです。それぞれ「1girl,very short hair」「1girl,short hair」…が生成されて一覧になっています。


ちなみに、複数のタグを入れ替えたい場合は、2つの「"」でくくります。さきほどの例で、「black hair,blue eyes」を入れ替えていく場合なら、prompt S/Rの「X軸(またはY軸)の値」の欄に「"black hair,blue eyes","blue hair,red eyes","yellow hair,silver eyes"」のように入力します。こうすれば、黒髪青目・青髪赤目・黄髪銀目の3画像が横軸に並ぶことになります。


【注意】前述したように、入力欄の最後が「,」で終わっていると、「最後は空欄に入れ替えるんだな」と誤認識されてしまいます。あえてそうしたい場合を除き、最後は必ずカンマなしで終わるようにしましょう。



初めてのモデルと仲良くなるには

X/Y/Zplotは一瞬とっつきにくそうに見えて、触ってみるととても分かりやすい、非常によくできたUIですね。これを使って初めてのモデルと仲良くなる、つまり自分好みの設定を探るためには、次の組み合わせを試してみるのがオススメです。


①サンプラーテスト

スケール、ステップはCheckpoint配布者のおすすめ設定で、プロンプトは「1girl」(※いわゆる「うちの子」がいる場合はその起動術式でもOK。違いが分かりやすいものにすると良い)

X軸:サンプラー よく使うものを2~4種ほど

Y軸:シード -1,-1,-1,-1,-1


②スケール、ステップテスト

配布者は「スケール5~8」とか「ステップは20以上」などと指定していることが多いので、その中で好みのものを見つける。

サンプラーは先程の結果から好みのものを選び、プロンプトは「1girl」

X軸:スケール 5,6,7,8

Y軸:ステップ 16,20,24,28

※数は配布者のおすすめ設定をもとに、違いがわかりやすそうな数値を考えるとよい。あまり細かく刻むと違いが分かりにくい。


③Hiresアップスケーラーテスト ※高解像度補助を使う人向け

X軸:シード -1,-,1

Y軸:高解像度アップスケーラー Latent, Latent (antialiased), Latent (bicubic), Latent (bicubic antialiased), Latent (nearest), Latent (nearest-exact), None, Lanczos, Nearest, ESRGAN_4x, LDSR, R-ESRGAN 4x+, R-ESRGAN 4x+ Anime6B, SwinIR_4x

→総当りが面倒なら、使う可能性があるものだけでOK。一列だと違いがわかりにくいので、シード2種類で試そう。


④クリップスキップ

X軸:クリップスキップ 1,2

Y軸:-1,-1,-1,-1,-1

→クリップスキップを変更すると、プロンプトを処理する「CLIP」というテキストエンコーダによるプロンプトの処理をより早くストップすることができ、それによって画像生成の結果が微妙に変わる。クリップスキップは「1」で固定している人が多いが、実は2の方が好みだったという人は結構いるし、Checkpointによっては「2」を前提に調整されているものもある。必須ではないが、試しておくと発見があるかも。


⑤ネガティブプロンプト探究

X軸:シード -1,-1(2列くらいがちょうどよい。好みで変えよう)

Y軸:PromptS/R (入力欄は適宜)

配布者オススメのネガティブプロンプトをまずは試そう。その上で、クォリティーに関わりそうなものを足したり引いたりして、好みのネガティブプロンプトを探る。

候補になるのはrealistic,3d,worst quality, low quality, greyscale, monochrome, text, title, logo, signatureなど。bad_prompt_version2,bad-artist-anime,EasyNegativeあたりのネガティブ用TIも試しておく。


⑥クォリティータグ研究

ここまで固まってから、クォリティータグを研究する。プロンプト欄を1girl,masterpieceとし、masterpiece部分をPromptS/Rでいろいろ入れ替えてみる。

X軸:PromptS/R (先程検出したネガティブプロンプト候補を2~3種ほど)

Y軸:PromptS/R (好みのクォリティータグを適宜入れ替える)

候補になるのは、anime coloring,masterpiece,extremely detailed CG,official art,high resolusion,illustration,unity 8k wall paperなどなど。好みのものを入れたり外したりして効果を確かめよう。一つずつ入れ替えるのではなく、masterpiece部分を"masterpiece,extremely detailed CG,official art,high resolusion,illustration"と入れ替えるなど、複数の組み合わせを試すのが良い。


複数タブを使う「裏技」


さて、こうした総当り実験はそれぞれそれなりに時間が掛かるのですが、いちいち成果が出るまで座って待っているのも面倒ですし、外出中に全部やってくれないかな…という場面は多いですよね。そうした場合の「キュー」代わりに、以前「Wildcard」機能を使う方法を紹介しましたが(詳しくはWild cardでもっとForever生成を楽しもう!参照)、今回はもっと荒業を使ってみます。


StableDiffusionWebUIの画面が開かれているタブを、タブブラウザ上で「複製」します。それぞれの画面で、これから生成したい別々の総当り条件をすべて設定します。例えば、画面1でサンプラー総当り、画面2でスケールステップ総当り、画面3で…という具合。全部設定できたら、おもむろにすべての画面で「生成(Generate)」ボタンを押してしまいましょう。


すると…

最初にボタンが押された画面では通常通り生成が始まりますが、それ以降の生成画面では「in queue…」と表示され、キュー(順番待ち)状態になります。一つ前の生成が終わると、ボタンが押された順に指定された条件の生成が始まるので、一つ一つの生成が終わるまで待っている必要がありません。これは本当に便利!


例えば、「外出中にForever生成を3種類やりたいな」というときは、Forever生成ではなく「バッチ回数:100(同条件の生成を100回繰り返す)」にしておいて、3つの画面で生成ボタンを押せば、画面1で100枚生成されたら画面2の生成が始まり、それが終わったら画面3…と、帰宅するまでに計300枚の画像が完成していることになります。私も最近この方法を使うようになったのですが、非常に快適ですし、エラーも今のところ起きていません。何より、帰宅するまでずっと生成を続けているとマシンへの負担も大きいので、ちょうどよい枚数でストップしてくれるのが素晴らしいですね。


                 ◇


そんなわけで、今日は「X/Y/Z plotで初めてのモデルと仲良くなろう!」でした。X/Y/Zプロットがなかったら、このFANBOXもとても運営できなかっただろうな…というほどに便利な機能ですので、ぜひ先程の「裏技」と合わせて活用してみてくださいね。



ちなみに、prompt orderは使い方がよくわからないので敬遠されがちなのですが、地味にこんな実験(▲)もできます。他にも、生成がうまくいかなかったときの原因探しや、ControlnetやCutoffの使い方が分からないときの数撃ちゃ当たる式実験など、さまざまな活用法があるので、いろいろ試してみてくださいね。


それでは皆様、素晴らしき研究ライフを!


スタジオ真榊でした。






Files

Comments

z-kumagon

いつもわかりやすい説明ありがとうございます。 早速試させていただきます。 前回のスケールアップも感動ものでした。

tama

こちらの記事を参考にStableDiffusionデビューすることができました。本当にありがとうございます。 私はStabilityMatrixでForgeをローカルにインストールしたのですが、X/Y/Z plotの設定値に[ControlNet]関連の項目が表示されませんでした。 ForgeはデフォルトでControlNetが内蔵されていますが そういう仕様なのでしょうか? それとも私のローカル環境の設定等が原因で表示されないのでしょうか? 突然の質問で大変申し訳ないのですが、何かご存知でしたらご教示いただけますと幸いです。

スタジオ真榊

コメントありがとうございます。ご指摘の通り、大変不思議なことなのですが、ForgeのXYZ plotにはControlnetの項目が存在しません。Controlnetの生みの親が作ったwebUIなのに何故!?と思うところなのですが、今後のアップデートに期待するしかないようです。Githubのコミュニティでも指摘されているので、illyasviel氏も認識されているとは思うのですが…

tama

お忙しいところ、回答頂きありがとうございます。承知しました。少々不便でありますが、気長にアップデートを待ちたいと思います。 これからも新しい記事を楽しみにしています!