こんにちは!悠です!
今回は「Stable Diffusion」で、矛盾した2つのプロンプト(例えばblue skyとsunsetなど)を、上手く1枚のイラストに表現できるようになる拡張機能「Neutral Prompt」に関して紹介していきます。
使い方には非常に癖があるんですが、イラストの表現の幅を広げてこれまでに見たことがないような1枚を生成できるかもしれない拡張機能なので、ぜひ試してみて下さいね!
「Neutral Prompt」とは?
「Neutral Prompt」とは、「矛盾した2つのプロンプトを上手く1枚のイラストに表現できるようになる」拡張機能だと表現しましたが、これについてもう少し詳しく見ていきましょう。
まず「Neutral Prompt」を導入すると、固有の接続詞AND_PERPとAND_SALTが使えるようになります。これら2つを使うことで、相反する意味のプロンプトを調和しやすくなるようです。
概要欄によると、例えば「beautiful castle landscape AND monster house castle(美しいお城の風景と怪物が住み着いたお城)」というプロンプトを、ANDとAND_PERPを使って生成すると下記のようになります。

出典:https://github.com/ljleb/sd-webui-neutral-prompt
ANDの方では、「お城」が上手く描かれなかったり、描かれても全体的に紫がかってしまう(対立するプロンプトの影響)ことがありますが、AND_PERPを使うとその2点が解消され鮮明な色彩のお城が描かれるようになります。
矛盾するノイズを無効化することで、高度に重複する概念(プロンプト)を表現できるようにしているそうです。
「Neutral Prompt」の導入方法
Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「Neutral Prompt」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。
#Neutral Promptをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/ljleb/sd-webui-neutral-prompt /content/stable-diffusion-webui/extensions/sd-webui-neutral-prompt
%cd /content/stable-diffusion-webui
ローカル版の場合
「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。
https://github.com/ljleb/sd-webui-neutral-prompt
WebUIを再起動して、txt2imgの設定欄の下にNeutral Promptの項目が追加されていれば導入成功です。
「Neutral Prompt」の使い方
具体例を紹介しつつ、使い方を説明していきます。
まず下記のプロンプトで画像を生成するとします。モデルには「Agelesnate」を使用しています。
masterpiece, 1girl, blue sky AND sunset :1
(worst quality, low quality:1.4), (monochrome, greyscale:1.4), EasyNegative
blue sky(青空)とsunset(夕焼け)という矛盾した2つのプロンプトが使われていますよね。
これで生成される画像は次のようになります。

sunset要素なし

雲が夕焼けっぽい赤色になっている
次にNeutral Promptの項目を開き、Prompt formatterの中にあるプロンプト入力欄にsunsetと入力し、Prompt typeをPerpendicularにして、Apply to promptをクリックします。CFG rescale φはとりあえず0にしましょう。
こうすることで「AND_PERP」が自動挿入されます。
ネガティブは同じなので省略します。画像のSeed値やその他の設定は全て同じです。
masterpiece, 1girl, blue sky AND_PERP sunset :1

青空と夕焼けが反映されている

青空と夕焼けが反映されている。より顕著
次にもう一つの接続詞「AND_SALT」を使ってみましょう。
Neutral Promptの項目を開き、Prompt typeをSaliency-awareに変えてApply to promptを押します。
masterpiece, 1girl, blue sky AND_SALT sunset :1

夕焼け要素なし。失敗かも。

青空と夕焼けが上手く表現されている
「AND_PREP」と「AND_SALT」の違いに関しては正直よくわからないですね。
個人的な体感では「AND_PREP」の方が成功率が高いように思います。
概要欄によると下記のように結論付けられています。(よくわからない…)
・AND_SALT behaves more diplomatically, enhancing areas where its impact makes the most sense and aligning with high activity regions in the output.
・AND gives equal weight to both prompts, creating a blended result.
・AND_PERP will find its way through anything not blocked by the regular prompt.
【Google翻訳】
・AND_SALT:より外交的に行動し、その影響が最も意味のある領域を強化し、生産高の活動が活発な領域と連携します。
・AND:両方のプロンプトに同じ重みを与え、混合された結果を作成します。
・AND_PERP:通常のプロンプトによってブロックされていないものはすべて通過します。
CFG rescale φに関して
Neutral Promptの項目内にあるCFG rescale φですが、これが一体何なのか(私が見逃しているわけでなければ)一切説明がありません。
ですので、CFG rescale φを0.5に設定して、上の項で使ったプロンプト(同seed値)で画像を生成してみました。
masterpiece, 1girl, blue sky AND_PERP sunset :1

青空+夕焼け。少女が消えました。

青空+夕焼け
「CFG rescale φの値を上げるとsunset成分が強くなって、1girlが無視されるのでは?」と予想しましたが、全く違う気もします。

マジでこれ何に使うパラメータなんでしょうね。
ちなみに、CFG rescale φの値は生成された画像のメタデータ内に記載されます。
Neutral Promptのネスト化
概要欄によると、下記のようにAND_PREPとAND_SALTを同時に使うことも可能なようです。
magical tree forests, eternal city AND_PERP [ electrical pole voyage AND_SALT small nocturne companion ] AND_SALT [ electrical tornado AND_SALT electric arcs, bzzz, sparks ]
下の黒いバオウザケルガのような画像が生成されていました。

出典: https://github.com/ljleb/sd-webui-neutral-prompt
まとめ
以上が「Stable Diffusion」で、矛盾した2つのプロンプト(例えばblue skyとsunsetなど)を、上手く1枚のイラストに表現できるようになる拡張機能「Neutral Prompt」の紹介でした。
例えばflameとice、cyberpunkとfantasy、universeとdeep seaのように、普段混ぜて使うことがないようなプロンプトを試してみると面白いような気がします。
ぜひ皆さんもいろいろ試して遊んでみて下さいね!
では、ここまで読んでいただきありがとうございました。
コメント