Home Artists Posts Import Register

Content

こんにちは!スタジオ真榊です。本日はStable Diffusion WebUIの見落としがちな便利機能や、ローカル生成をより快適にしてくれる各種TIPSの紹介記事です。


NovelAIのようにプロンプトのタグをオートコンプリートしてくれたり、画像生成完了時に音を鳴らしたり、WebUI起動時に読み込みが終わったらURLのコピペをすっ飛ばしてブラウザを即起動してくれたり…。SDWebUIは頻繁にアプデされているので、知っている人は当たり前のように使っているけど、知らないと「なにそれ!?」となっちゃう機能がいろいろあるんですよね。


一つくらいは「なにそれ!?」がある記事だと良いな…と思いつつ、今夜もよろしくお願いします。


目次

・まずはSD WebUIをアップデートしよう

・プロンプトにオートコンプリート機能を導入しよう

・image browserを使いこなそう

・75トークンの壁を「BREAK」する

・xformersで快速生成!

・読み込みが終わったらブラウザを自動起動

・画像生成終了時に音を鳴らそう!

・X/Y/Z Plotを使いこなそう

・LoRAやTextual Inversionを一覧できるボタン

・学習モデルの不意な変更を防ごう

・意外と知らない?便利なショートカットキー


まずはSD WebUIをアップデートしよう


今回紹介する便利機能は、記事執筆時(2023/02/14)のStable diffusion WebUI (Automatic1111)最新版に準拠しています。こちらのスクリーンショット(▲)を見て、ボタンの位置などが自分のと違うなと感じた場合は下記の手順でアプデをおすすめします。(特に画像サイズの横縦交換ボタンや、生成ボタンの下に並んでいる小さなアイコンあたりに注目してみてください)


【Gitを使ったアップデート手順】


・(WebUIが起動している場合は黒いウィンドウを閉じて一旦終了してから)Stable Diffusion WebUIのインストールフォルダを開く

・インストールされたフォルダ内でShiftキーを押しながら右クリック。メニュー内の「PowerShellウインドウをここで開く」を選択(▼画像参照)



・開いた画面に「git pull」と入力してEnterキーを押すだけでOK。しばらく待つと最新版にアップデートされます。

(※既にフォルダ内にある学習モデルやLoRA、Outputフォルダにある画像などが消滅することはありませんのでご安心を。なお、既に最新版になっていれば「Already up to date.」と表示されます)


プロンプトにオートコンプリート機能を導入しよう


NovelAIではプロンプト欄に英字を打ち込むと、タグ候補が自動でポップアップして便利でしたよね。WebUIにも似たように、danbooruタグを中心としたプロンプトをオートコンプリートしてくれる拡張機能があります!


それがこちら、「a1111-sd-webui-tagcomplete」。インストール時にgitを使った方なら似たような手順なので大丈夫と思いますが、エキスプローラーでフォルダ内を右クリックして「Git Bash here」をクリックし、画面に下記の文字列を「右クリック→Paste」してEnterキーでインストールできます。


git clone "https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git" extensions/tag-autocomplete



インストールに成功していれば、プロンプトを打ち込んだ際に下図のようなタグ候補が表示されます。学習した画像が多いタグほど上位に表示されるのもNovelAIと同じ。スペルがうろ覚えだったり、似たようなプロンプトを探したかったりするときにありがたい機能ですね。



image browserを使いこなそう



前にも紹介した拡張機能「image browser」がアップデートされ、画像のレーティング機能が追加されています。上の画像の右側を見ると「ranking filter」というのが追加されているのが分かると思います。image browser上で生成画像を選択すると左上に「ranking」という欄ができており、ここから各画像に評価を加えることができるようになりました。1が★、5が最大の★★★★★のイメージで、「ranking filter」欄から★の数を指定して画像検索することができるようになっています。


また、画像をキーワード検索できるようにもなっており、「blue hair」などとプロンプトの一部を入力するとあっという間にお目当ての画像にたどり着くことができます。いちいちOutputフォルダを開いて検索しなくてもいいので、大変ありがたい!


なおこちら、なぜか普通にアップデートしても反映されないようです。賢木の場合は「stable-diffusion-webui\extensions\stable-diffusion-webui-images-browser」フォルダを一旦削除した後、拡張機能欄から「Image browser」を探して再度インストールしたらうまく反映されたので、できない方は試してみてください。


75トークンの壁を「BREAK」する

Stable Diffusionでは、プロンプトに「75トークン」ごとの区切りがあります。CLIPというテキストエンコーダーが一度に処理できるトークンの数が75までと決まっているためで、75トークンを超えるプロンプトが入力されると、いったんそこでプロンプトが分割され、まず75トークンまでの固まりを処理したあとに、新たに76トークン以降の固まりが送られる…という流れで画像生成が行われます。


プロンプト入力欄の右上に表示されているのが、現在入力中のトークン数です。(▼75/75を超えたので分母が150に変化したところ。ネガティブプロンプトにも75トークンの区切りがある)

もちろん76トークン以降の呪文が全く効かないわけではないのですが、区切られる位置によっては呪文が断裂(blue hair→blue|hairとなって髪が青くならない)してしまったり、新たに処理される固まりの冒頭である76トークン目の呪文がやけに強く影響したり…といった現象がどうしても起こってしまうわけです。こうした現象を防ぐため、新たに「BREAK」というワードを使って強制的にプロンプトを区切ることができるようになりました!


プロンプトの途中に「BREAK」(すべて大文字)と入れると、そこで現在のプロンプト群が区切られ、すぐに次の75トークンの固まりを始めることができます。意図と異なる位置でプロンプトが分割されることがないので、予想外の生成結果になることを防ぐことができるわけですね。「長いプロンプトで生成するときは、75トークンに近づいたところでBREAKを挟むと安心」と覚えておく感じ。BREAK直後のタグは強めに影響することも意識してプロンプトを組むと良いでしょう。


xformersで快速生成!


これはもっと早く紹介しておくべきだったのですが、Xformersという画像生成を高速化するためのオプションを導入することで、環境にもよりますが生成にかかる時間を1〜2割程度短縮し、かつ使用するメモリも減らすことができます。そのかわり、生成される画像に若干の影響がある(毎回微妙に生成結果が変わる)とのことですが、正直賢木は違いを体感できたことがないので、未導入の方はとりあえず導入してみることをおすすめします。


やり方は簡単。WEBUIをインストールしたフォルダにある「webui-user.bat」を右クリックして「編集」か、メモ帳にドラッグアンドドロップで開きます。そうすると、下記のような文字列が表示されます。


こちらの「set COMMANDLINE_ARGS=」の後ろに、追い込み(スペースなし)で「--xformers」と入力して上書き保存すればOKです。普段起動に使っていた「webui.bat」ではなく、「webui-user.bat」を起動することで、今後はxformersが適用された状態で画像生成を行うことができます。



読み込みが終わったらブラウザを自動起動


普段WEBUIを使う際は読み込みが終わるのを待った後、「Running on loal : http://127.0.0.1:7860/」というURLをブラウザにコピペしていたと思いますが、実はこの手順をすっとばすことができます。


「webui-user.bat」を編集するところまではさきほどのxformers導入と同じ手順。「set COMMANDLINE_ARGS=」のあとに「--autolaunch」と入力すればOKです。xformersと同時に利用したい場合は、2つの追記の間を半角スペースで区切って「set COMMANDLINE_ARGS=--xformers --autolaunch」とします。


あとは「webui-user.bat」からWEBUIを起動すれば、読み込み終了後即座に規定ブラウザでUI画面が立ち上がります。これまでは何だったんだ。


画像生成終了時に音を鳴らそう!


画像生成中、別の作業をして出来上がるのを待っている人は多いんじゃないでしょうか。「そろそろできたかな?」と何度もWebUIのタブをブラウザで開くのも、初心者のお料理みたいでアレですよね。実はWebUIには、画像生成が終わったときに電子レンジのごとく音を鳴らす機能があります。


やり方は、Stable DiffusionWebUIのインストールフォルダ直下に「notification.mp3」という名前にしたmp3ファイルを置くだけでOK。音はなんでもいいのですが、「フリー効果音 mp3」などで検索するとそれらしいいろいろ出てくるので、好みのものをチョイスすれば良いと思います。(なるべくシンプルなやつがおすすめ)



えっ探すのがめんどくさいって?じゃあここのアクセント03でいいんじゃないかな…


X/Y/Z Plotを使いこなそう


「逆引きプロンプト辞典」でも活躍しているX/Yプロット(アップデートされて最新版ではX/Y/Zプロット)は、プロンプトやステップなどあらゆる要素を任意に組み合わせて画像生成できる便利機能です。例えば、複数の学習モデルでさまざまなプロンプトを生成したり、i2iするときのStrengthを0.1刻みで変更して実験したりと、あらゆる実験に使うことができます。


また、実験によって出力されたまとめ画像をoutputのgridフォルダに分かりやすくまとめて生成してくれるのも素晴らしいですね(▼下図参照)

やり方は簡単。WebUIの生成画面の一番下にあるプルダウンメニューから「X/Y prot」、最新バージョンなら「X/Y/Z Plot」を選択し、「X軸」や「Y軸」に比較したいSeed値や学習モデルなどを入れるだけです。上の画像は、X軸に「checkpoint名」、縦軸に「prompt S/R」を指定して、2つの学習モデルで複数のプロンプト生成を行ったケース。試したい要素は、基本的には「,」で区切って実験したい対象データを入力すればOKです。


プロンプトの組み合わせを試せる「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」がプロンプト内にないと、何と何を入れ替えてよいか判断できずエラーが生じるので注意しましょう。


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

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



LoRAやTextual Inversionを一覧できるボタン


こちらをご覧ください。見慣れたオレンジ色の生成(generation)ボタンの下に、花札のような赤いボタンがありますね(ないぞ!という人はアップデートしよう)


こちらを押すと、現在フォルダ内に放り込んであるLoRAやTextual Inversion、Hypernetwork、学習モデル(checkpoint)をパネルにして一覧することができます。「Search」欄に文字を入力して探すこともでき、いちいちインストールフォルダ内を開かなくても良いのが大変便利ですね。


なお、最初はすべて「No Preview」状態で寂しいのですが、サムネイル上の文字列部分にマウスを持っていくと「replace preview」ボタンが現れ、現在生成画面にある画像をサムネイルにすることができます。LoRAやTIで何か生成したときは、ぽちっと押しておくと見栄えがよくなって楽しいですよ。



わざわざいちから生成しなくても、ファイル名をその追加学習モデルと同じにしたpngを同じフォルダに放り込んでおけば、その画像がサムネイルとして表示されます。(例:sakaki.safetensorsというLoRAのサムネイルなら、同じLoRAにフォルダにsakaki.pngを入れればOK)

Civitaiなどで新しいLoRAやTIをダウンロードしたときは、ついでにサムネイル画像を一緒にダウンロードしてしまうのも手かもしれません。

学習モデルの不意な変更を防ごう


やったことがある人なら分かると思うんですが、WebUI左上のcheckpoint選択欄で学習モデルAを選択しているときに、PNG Infoから学習モデルBで生成した画像のプロンプトを送ろうとすると、プロンプトだけじゃなくて学習モデルまでA→Bに読み込みし直しになってしまうんですよ。これ、無駄に時間を奪われてムカツクんですよね~!


実はこれ、設定をいじるだけで回避できるので、早めに直しておきましょう。


設定タブから「UI設定」を選択。「テキストからUIに生成パラメータを読み込む場合(PNG情報または貼り付けられたテキストから)、選択されたモデル/チェックポイントは変更しない」=「英:When reading generation parameters from text into UI (from PNG info or pasted text), do not change the selected model/checkpoint」という項目にチェックを入れればOKです。



意外と知らない?便利なショートカットキー


最後に、下記の3つは、プロンプト欄で使えるショートカットキー。他にもいくつかあったと思うんですが、ぱっと思い出せないのでこれだけ書いておきます…。あとで思い出したらこっそり追記しておきますね。


【Ctrl+ENTER】:プロンプト入力欄でこのキーを押すと即座に生成開始できる

【Ctrl+↑or↓】:プロンプト入力欄で文字列を選択し、このキーを押すと強弱を自動入力してくれる。例えば「blue hair」を選択した状態でCtrl+↑キーを押すと、(blue hair:1.1)となり、押すたびに1.2、1.3と変わっていく。うまくできない人はアップデートしましょう

【Ctrl + Z】「元に戻す」操作したプロンプトを一つ前に戻すのに使いましょう

【Ctrl + Y】「やり直す」戻したプロンプトをやっぱりやり直すときに使いましょう


(※この記事は随時加筆修正します)


Files

Comments

takuwan

BREAKのプロンプトって「~,BREAK,~」こんな感じで打ち込めばいいんでしょうか?

スタジオ真榊

前後のカンマ不要で、いきなりBREAKだけ打ち込むと、そこでトークン数が75/75になりますわ~。 1girl,~red hair BREAK blue eyes,みたいな形でOKのはずです。もちろんカンマを入れても別に問題ありませんわ~。

takuwan

いつも分かりやすい解説ありがとうございます!