【Neutral Prompt】矛盾した2つのプロンプトを上手く調和して表現できる拡張機能!【Stable Diffusion】

こんにちは!悠です!

 

今回は「Stable Diffusion」で、矛盾した2つのプロンプト(例えばblue skyとsunsetなど)を、上手く1枚のイラストに表現できるようになる拡張機能「Neutral Prompt」に関して紹介していきます。

この拡張機能はリポジトリの説明欄があまりにも難しいため、私の解釈が間違っている可能性があります。もし実際に試した方で、「この説明違うなあ?」と思われた方はコメント欄で教えていただけると嬉しいです!

 

使い方には非常に癖があるんですが、イラストの表現の幅を広げてこれまでに見たことがないような1枚を生成できるかもしれない拡張機能なので、ぜひ試してみて下さいね!

アイキャッチ画像はモデルに「Agelesnate」、LoRAに「flat2」を使用しています。
スポンサーリンク
スポンサーリンク

「Neutral Prompt」とは?

GitHub - ljleb/sd-webui-neutral-prompt: Collision-free AND keywords for a1111 webui!
Collision-free AND keywords for a1111 webui! Contribute to ljleb/sd-webui-neutral-prompt development by creating an account on GitHub.

 

「Neutral Prompt」とは、「矛盾した2つのプロンプトを上手く1枚のイラストに表現できるようになる」拡張機能だと表現しましたが、これについてもう少し詳しく見ていきましょう。

まず「Neutral Prompt」を導入すると、固有の接続詞AND_PERPAND_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」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

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」を使用しています。

【Positive】
masterpiece, 1girl, blue sky AND sunset :1
【Negative】
(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にしましょう。

この際、ポジティブには「masterpiece, 1girl, blue sky」だけが入力されています。

 

こうすることで「AND_PERP」が自動挿入されます。

ネガティブは同じなので省略します。画像のSeed値やその他の設定は全て同じです。

【Positive】
masterpiece, 1girl, blue sky AND_PERP sunset :1

 

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

 

青空と夕焼けが反映されている。より顕著

 

次にもう一つの接続詞「AND_SALT」を使ってみましょう。

Neutral Promptの項目を開き、Prompt typeをSaliency-awareに変えてApply to promptを押します。

【Positive】
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.

出典: https://github.com/ljleb/sd-webui-neutral-prompt

 

【Google翻訳】
AND_SALT
:より外交的に行動し、その影響が最も意味のある領域を強化し、生産高の活動が活発な領域と連携します。
AND:両方のプロンプトに同じ重みを与え、混合された結果を作成します。
AND_PERP:通常のプロンプトによってブロックされていないものはすべて通過します。



CFG rescale φに関して

Neutral Promptの項目内にあるCFG rescale φですが、これが一体何なのか(私が見逃しているわけでなければ)一切説明がありません。

 

ですので、CFG rescale φを0.5に設定して、上の項で使ったプロンプト(同seed値)で画像を生成してみました。

【Positive】
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

 

下の黒いバオウザケルガのような画像が生成されていました。

出典: https://github.com/ljleb/sd-webui-neutral-prompt



まとめ

以上が「Stable Diffusion」で、矛盾した2つのプロンプト(例えばblue skyとsunsetなど)を、上手く1枚のイラストに表現できるようになる拡張機能「Neutral Prompt」の紹介でした。

例えばflameとice、cyberpunkとfantasy、universeとdeep seaのように、普段混ぜて使うことがないようなプロンプトを試してみると面白いような気がします。

 

ぜひ皆さんもいろいろ試して遊んでみて下さいね!

では、ここまで読んでいただきありがとうございました。

コメント