SDWebUI上でDanbooruタグを自動生成したい!「sd-danbooru-tags-upsampler」の紹介
以下の記事では、画像生成のプロンプトを生成したり補完したりできるLLMを作ったり、その使い方を解説しました。
便利そうなプロンプト生成、ローカルのWebUI でも使いたいと思うかもしれません。
そんなプロンプトを生成してくれる拡張機能を Stable Diffusion WebUI 向けに作成しました。Forge と本家版で動作確認しています。
インストール
多くの拡張機能と変わらず同じようにインストールでき、特殊な操作は必要ありません。
Extensions > Install from URL > URL for extension's repository に
https://github.com/p1atdev/sd-danbooru-tags-upsampler
を入れて Install します。
多分 WebUI の再起動が必要になるので再起しましょう。
使い方
雑に生成する
再起すると ControlNet 等と同じような場所に Danbooru Tags Upsampler が追加されていると思います。
基本的には Enabled のチェックを入れるだけでプロンプトのかさ増しが動作するようになります。
あとはいつもと同じようにプロンプトを入力し、生成するだけです。
プロンプトを入れなくても何かしら生成されるので、もはや空っぽにしても大丈夫です。(ネガティブプロンプトは指定しようね)
基本的に何も指定しない場合は 1girl になりますが、稀に 1boy が発生するのでそれが嫌な人はなにか指定しましょう。
版権・キャラクタータグ
Spaceのデモと異なり、キャラクターや版権タグの入力がありませんが問題なく指定することができます。といっても、普段の生成と変わったことは必要ありません。プロンプトに版権・キャラクタータグを含めると自動でそれを認識して適切に処理してくれます。
フリーレンはわりと学習件数が多いのと服装のバリエーションが少ないのでうまくいきますが、ものによってはうまくいったりいかなかったりします。
レーティング
版権やキャラクタータグと同様に、こちらも自動で判定して裏側でいい感じに処理しています。
対応しているタグは
rating:general (スペースなし)
rating:sensitive
rating:questionable
rating:explicit
sfw
nsfw
です。特に何も指定がない場合は、"rating:sfw, rating:general` の条件でプロンプト生成されます。安全です。
逆に、このうちのどれかが指定された場合はそれに応じて補完されるプロンプトが変わるので、プロンプトを組む際は特に細かいこと気にする必要はないです。
矛盾するレーティングのタグを入れたらどうなるんだろう!?とか考える人もいるかもしれませんが、複数あった場合はプロンプトの補完では基本的に NSFW 度が強い方のタグが採用されます。ただし、sfw, nsfw の両方のみだった場合はどっちにしたいのかよくわからないので安全を取って sfw が採用されます。(画像生成時には入力された部分のプロンプトが削られたりすることはないです)
存在しないタグ・文字列の扱い
不正なタグや語彙にないタグについては、アップサンプル時には無視されますが最終的な画像生成のプロンプトにはそのまま含まれるので、特に気にしなくて大丈夫です。
拡張機能のパラメーターについて
「有効か無効か」を決めるチェックボックス以外にもいくつか変更できる要素があるので紹介します。
Upsampling timing について
上でも軽く説明しているようにアップサンプル処理を行うタイミングが変わるのですが、実装の都合上他の副作用もあります。
Batch count などを指定して生成した場合の挙動がそれぞれ違います。
Seed for upsampling tags が -1 の場合、Before applying other prompt processing の場合、同一バッチ内のプロンプトは全て同じになりますが、After ~の場合はそれぞれ異なるタグがアップサンプルされます。
Variety level について
補完されるタグの多様性を指定できます。
Very unvaried、Unvaried は多様性が落ちますが、同時に入力されたプロンプトに忠実になるため、無難なタグを生成しやすくなります。
Very varied, Varied は多様性が上がりますが、入力されたプロンプトを無視したり不自然な生成になりやすくなります。
このパラメーターはLLMの生成設定のプリセットになっているので、こっちを直接弄って出力されるタグの傾向を変えることもできます。
Temperature は今回は 1.0~4.0 まで取れるようにしたのですが、高くても2.0くらいがいいと思います。高すぎると意味不明なことになります。
Top p は下げれば下げるほどまともなタグ(無難なタグ)を選ぶようになりますが多様性とのトレードオフです。
Top k は上げると奇抜なタグが入りやすくなります。一応10~1000まで取れます。
Num beams は上げるほど無難な結果になりやすくなりますが、多様性が著しく下がるので基本的に 1 でいいと思います。(1~10まで取れます)
生成速度について
Spaceのデモではプロンプト生成に5秒くらいかかっていましたが、この拡張機能では 0.5 秒くらいで生成ができます。
GPU を使わず CPU のみの推論でこの速度になっているので、よっぽど強い GPU を使っていなければTensorRTを使っていてもボトルネックにはあんまりならないと思います。
おわり
プロンプトについて全然知らなくても 1girl さえ知ってればそれっぽい画像が生成できるようになりました。danbooru タグに詳しくない人や初心者の人でも扱いやすくなったと思います。
1024x1024 サイズで TensorRT と併用しながらランダムなプロンプトで生成してデータセット作成をしたり、ファインチューンモデルやマージモデルを作ったあとの性能検証用プロンプトを考えるときが面倒くさいときや、モデルカード用の画像のプロンプト考えるの面倒くさいときなどに便利そうです。
自動化したいときや色々と面倒くさいときに結構役に立ってくれるじゃないでしょうか。
変更履歴
2024/2/23
最初のバージョン (0.1.0) をリリースしました。
2024/2/25
0.1.1 をリリースしました。
拡張機能のインターフェースが変更されたので記事中の一部のスクリーンショットは差し替えられましたが、一部は古いままなので少し注意です。
() を含むタグの処理を修正しました。エスケープされた状態のタグでも認識できるようになったのと、出力時のタグに () が含まれる場合にエスケープされるようになりました。
シードの扱い、特にX/Y/Zでの不自然な挙動が修正されました。
"Seed for upsampling tags" のデフォルト値が -1 になりました。-1じゃない変な数値になっている場合は WebUI のルートフォルダ直下にある ui-config.json の "customscript/dart_upsampler.py/txt2img/Seed for upsampling tags/value" の項目を削除して再起動すると -1 になります。
その他軽微なバグやタイポが修正されました
2024/2/29
0.2.0 をリリースしました。
LLMの生成設定を変更できるようにしました。
多様性プリセットのオプションを追加しました。
範囲禁止タグで、出力タグの制限を簡単にできるようにしました。
その他軽微なバグやタイポが修正されました
この記事が気に入ったらサポートをしてみませんか?