特殊なPrompt指定

Last-modified: 2022-11-27 (日) 17:21:08

AUTOMATIC1111でのpromptTIPSです。

呪文の強弱

(強調したい語句) = (強調したい語句:1.1)
[弱めたい語句] ≒ (弱めたい語句:0.91)
(school uniform:1.2)の様に空白を挟んでいても括弧で括ってる範囲全部効きます。

変換表

(…:1.10) (…)
(…:1.21) ((…))
(…:1.33) (((…)))
(…:1.46) ((((…))))
(…:1.61) (((((…)))))

(…:0.91) […]
(…:0.83) [[…]]
(…:0.75) [[[…]]]
(…:0.68) [[[[…]]]]
(…:0.62) [[[[[…]]]]]
 

アプデにより、文章を選択して「Ctrl」+上下キーで強弱変更できるようになりました。

また、NAIからSD呪文に変換する際には匿名としあきの作成した素晴らしいブックマークレットがあるのでそちらを活用しましょう。
リンク⇒スレ閲覧時に便利なブックマークレット2

或いは Extensions からインストールできる novelai-2-local-prompt を使うのも良いかもしれません。

 

NAI手動変換

NAI手動変換

(…:1.0500) {…}
(…:1.1025) {{…}}
(…:1.1576) {{{…}}}
(…:1.2155) {{{{…}}}}
(…:1.2763) {{{{{…}}}}}

(…:0.9524) […]
(…:0.9070) [[…]]
(…:0.8638) [[[…]]]
(…:0.8227) [[[[…]]]]
(…:0.7835) [[[[[…]]]]]

呪文の途中変更(prompt editing)

→ https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#prompt-editing の内容です。

★0~1なら全ステップ数に対する割合で指定
・[この語句から:この語句へ:このステップで切り替え]
・[A:B:0.5]
 この場合0→A→50%→B→100%です。
・[A:0.5]
 この場合50%を過ぎた段階からAが有効になります。(それまでは何も無いです。)
 ※ちなみにこの呪文は[:A:0.5]と同じ意味を持ちます。 [::数値]が完全な形なのでそこを覚えておくとわかりやすいかもしれません。
・[A::0.5]
 この場合50%を過ぎる段階までAが有効です。

★1以上の整数なら変化するステップ数を直接指定できる
Sampling Stepsが20なら
[A:0.1]=[A:2]
[A:0.5]=[A:10]
Sampling Stepsが100なら
[A:0.1]=[A:10]
[A:0.5]=[A:50]

呪文の入れ子構造(メッシュやインナーカラー 他には瞳の色などに使えるらしい)

[(partially [[blue:green:0.2]:red:0.35] hair:1.2):0.1]
↑の呪文を見ていきましょう
10%を過ぎた段階でこの呪文の読み込みが始まります。(それまでは無)
20%くらいまでpartially blue hairの1.2倍に
20%過ぎたらpartially green hairの1.2倍に
35%以降でpartially red hair の1.2倍に
となっています。
スタート→無→10%→partially blue hair 1.2倍→20%→partially green hair 1.2倍→35%→partially red hair 1.2倍→100%終了

例として
[[red::0.2]:green:0.8] の場合を見ていきましょう
[red::0.2]の部分
20%を過ぎるまでredが有効

20%を過ぎたらAが消え
そこから次のgreenが80%くらいで入ってくるまで何もなし
0→red→20%→無し→80%→green→100%の流れです

AND機能について

2022/10/06より追加された機能
まだ検証途中のため公式リンクのみ
https://energy-based-model.github.io/Compositional-Visual-Generation-with-Composable-Diffusion-Models/
お手軽合成(融合)呪文として一応使えているみたいです。

AND文を使用すると生成に通常より時間がかかります。
本来呪文は75token(AIの認識できる75個の言葉まで)ですが、AND以降はまた文字カウントがリセットになります。

複雑なpromptが正常に機能しているかわからなくなったとき

★コピーを取ってから実行してね
これするともしかしたらgit pull時にerror: Your local changes to the following files would be overwritten by merge:みたいなエラー出るかも↑みて解消
\modules\prompt_parser.pyを開き
60~80行目付近にある

    def get_schedule(prompt):
        tree = parser.parse(prompt)
        return [[t, at_step(t, tree)] for t in collect_steps(steps, tree)]

    promptdict = {prompt: get_schedule(prompt) for prompt in set(prompts)}
    return [promptdict[prompt] for prompt in prompts]


ScheduledPromptConditioning = namedtuple("ScheduledPromptConditioning", ["end_at_step", "cond"])
ScheduledPromptBatch = namedtuple("ScheduledPromptBatch", ["shape", "schedules"]
   def get_schedule(prompt):
        tree = parser.parse(prompt)
        return [[t, at_step(t, tree)] for t in collect_steps(steps, tree)]

    res = [get_schedule(prompt) for prompt in prompts]
    for t in res:
        print(t)
    return res


ScheduledPromptConditioning = namedtuple("ScheduledPromptConditioning", ["end_at_step", "cond"])
ScheduledPromptBatch = namedtuple("ScheduledPromptBatch", ["shape", "schedules"]

に書き換えると

例えば下記のpromptをSampling Steps100で入れた場合
[(partially [[blue:green:0.2]:red:0.35] hair:1.2):0.1]
コマンドプロンプト上に

[[100, '']]
[[10, ''], [20, '(partially blue hair:1.2)'], [35, '(partially green hair:1.2)'], [100, '(partially red hair:1.2)']]

と表示されます。
ここでは
[Sampling step,'プロンプト']の形式で書かれていますので、
つまり
スタート→無→step10→partially blue hair 1.2倍→step20→partially green hair 1.2倍→step35→partially red hair 1.2倍→step100終了

Sampling Stepsが50の場合には

[[50, '']]
[[5, ''], [10, '(partially blue hair:1.2)'], [17, '(partially green hair:1.2)'], [50, '(partially red hair:1.2)']]

と表示されます。
この場合も上記と同じですが、今回は50が最大なので1%=0.5stepとなります。
よって10%=step5,20%=step10,35%=step17,100%=step50となり
そのため
スタート→無→step5→partially blue hair 1.2倍→step10→partially green hair 1.2倍→step17→partially red hair 1.2倍→step50終了
という意味になります。

Sampling Stepsが20の場合には

[[20, '']]
[[2, ''], [4, '(partially blue hair:1.2)'], [7, '(partially green hair:1.2)'], [20, '(partially red hair:1.2)']]

と表示委されます。
この場合最大stepが20で1%=0.2stepのため
10%=step2,20%=step4,35%=step7,100%=step20となります。
スタート→無→step2→partially blue hair 1.2倍→step10→partially green hair 1.2倍→step17→partially red hair 1.2倍→step20終了
という意味になります。