prompt(呪文)解説

Last-modified: 2024-02-17 (土) 22:35:40

Prompt(プロンプト、呪文)とは

直訳では「促すもの」。
生成する画像が「どちらの方向」にあるかを決定するパラメータ。
Seed値から適当に作られた全面ノイズ画像からプロンプトに基づいてノイズ除去が行われる(化石発掘みたいなイメージ)。
除去実行の方向性がプロンプト、1回のノイズ除去のブースト倍率がCFG Scale、ノイズ除去を何回で済ますかがSampling steps。

文法・作法

英語の単語・単語の組み合わせで書き、半角カンマで区切る。

  • 例:masterpiece, 1girl, full body, shiny skin, black hair, twintail hair,

実際には辞書英単語でも英文でもなく、データ登録時に意図的に使用された、俗語や自作語を含んだタグワード。

  • そのため、「登録」されているワード以外の単語や文章を書いても効果なし。
    • 実際には単語分解&ネット画像由来の連想機能部分が頑張るので動くが、ごく一般的な解釈以上は期待できない。
  • 複数単語のワードをくっつけて書くのか半角空白で繋ぐのか下線記号で繋ぐのかハイフンマイナスで繋ぐのかはモデル依存。
  • なので、英語として自作するより、元の画像を説明・分類するために使うタグそのものを探して書いたほうが無難。
    • あなたがそれをなんと表現したいかではなく、みんながそれをなんとタグ付けしているかが重要。正確性より一般性を。

登場キャラの全身説明ではなく、「キャラの、今回画面に描いて欲しい要素」を記述する。

  • 書かれた要素は一旦は全部反映しようとするため、構図固定やポーズ崩壊の引き金になることがある。
    • 「おっぱい描いて!」と「ベッドにうつ伏せで!」の両立はAIでも難しい。
    • 「描いて欲しいが毎回でなくていい」ワードはランダムor順番での適用ができる。Dynamic PromptsPrompt S/Rを参照。
  • 後述のネガティブプロンプトを併用しても「ユーザー指示を極力実現するために作った無茶構図」は防ぎにくい。
    • そのようにタグ付けされたヘタクソ画像や手腕位置がおかしい画像を参照してしまった結果のアクシデントではないからである。
  • なお、キャラLoRAを使用する場合、キャラの特徴の記載は不要なことが多い。他に影響が移るので取ってしまおう。
    • たとえば、キャラ名だけで生成してもいつもの猫耳が毎回くっついてくるLoRAではanimal earsとかは記述不要。

プロンプトの種類

プロンプトはその単語の意味ごとに分類できる。
説明上、便宜的に分類されることが多いというだけで
プログラム内部で定義されているわけではない。

例:

  • 絵のジャンル
    • realistic_photo,cartoon_picture,academic_art
  • 品質
    • masterpiece, best quality, 4k, 8k, high quality, very high resolution,
  • 被写体(身体特徴含む)
    • 1girl, shiny skin, big breasts,
  • 頭部特徴
    • straight hair, long hair, black hair, no hair accessory,
  • 服装
    • indigo school swimsuit
  • シチュエーション
  • カメラ視点
  • 背景
    • outdoor, beach, sea, summer

順番

ルールや制約はないが、「先に書かれたほうが優先されやすい」「隣り合っているワードは関連とみなされやすい」という性質はある。
ただ、一般的には、この細かいルールよりもプロンプト文の管理のしやすさを優先しがちなため、たとえば人物画を出力する場合には下記のような順番で書いたりする。
※順番については、別項でも解説する。

  • 品質系呪文、絵のジャンル、人数、カメラ視点、身体属性、頭部属性(髪、目、表情)、服装、行動、背景、その他
    • 同じ単語の集まりでも、先の順番の方が反映されやすいという性質があるため。
    • 「されやすい」なので厳密に従うは無い、優先したいものがあるなら先の方に入替えてしまえば良い。
      特に写真系・リアル系の良画像は順番を品質系呪文をprompt全体にちりばめる等、順番を意識しない物も多い。

Negative Prompt(ネガティブプロンプト)

Negative Promptには、「描いて欲しくないもの」を通常プロンプトと同様にタグワードとして指定する。
要はプロンプトなので、「そのようなタグがついている画像を参照しない」程度の効果しかない。
また、通常プロンプトの説明にもある通り、「変な画像」は通常プロンプト側の指定過多や矛盾指定が原因のことも。
ネガティブプロンプトに凝るほかにも、大量に再生成したり、いらない部分をinpaint系の機能で描き直したりするという手もある。

 

以下はネガティブプロンプト例:

  • 低品質テンプレ:画像の全体としての美しさが向上する
    • shit, bad, bad proportions, bad shadow, bad anatomy disfigured, bad shoes, bad gloves, bad animal ears, poorly drawn, anatomical nonsense, five fingers, ugly, simple background, lowers, polar lowres, standard quality, bad feet hand finger leg eye,
  • 異物排除テンプレ:元絵の画像の四隅に入っているロゴやテキストを出力してしまうので、これを防ぐ。
    • qr code, ui, artist name, text error, text font ui, bar code, bad digit, liquid digit, missing digit, multiple digit, fused digit, extra digt, extra digits, extra digit, gross, watermark, title,
  • 奇形テンプレ:背中から3本目の手が生えたり、頭が2つあったりなどの奇形を防ぐ。
    • bad feet hand finger leg eye, one hand with more than 5 fingers, abnormal fingers, too many fingers, lose finger, multiple finger, mutated hands and fingers, fused fingers, fusion finger, incorrect limb, arthropod limbs, malformed limbs, boken limb, missing limbs, multiple limbs, missing limb, extra limbs, extra penises, extra calf, extra shoes, extra feet, extra thighs, extra knee, extra mouth, extra ears, extra animal ears, extra eyes, extra breasts, extra digit, extra fingers, extra hands, extra limbs, extra legs, extra arms
  • お好みで指定
    • 例えば髪にリボンを付けたくない場合、Promptにno ribonを入れるより、NegativePromptにribonを入れるほうが消えやすい。
    • 背景にある2の窓の風景が違う(片方は山、もう片方は都会とかの)場合、片方の風景をNegativePromptに入れて統一する。
  • NegativePromptの設定はほとんど必須だが、入力内容が長大になりがちなのでまとめたプラグイン(embeddings,埋め込みモデル)が出回っている。
    ただし元絵の画風への影響もあるため、比較したほうが良い。
     誘導→配布物/Textual Inversion
 

注意点

  • Negative Promptは増やせば増やすほど絵の自由度と可能性を減らしていく。
    • あれもこれもダメと言われて参考にできる絵の絶対量が減っていく、みたいな感じ
  • なので、モデルにあまり収録されてないようなキャラやポーズ、シチュエーションの絵を希望する場合は悪影響になることも。
  • 望みの絵が出ない、出づらい、いつも同じ構図、という場合はNegative Promptを消して試してみるのもいいかもしれない。
    • 「よくない絵」がそのまま毎回持ち込まれるわけではないので、思い切って少なめで運用してみるのもありかと思う。

プロンプトの扱い方(基本)

プロンプトの限界と対策

プロンプト(呪文)は万能ではない。
「究極プロンプトで一発生成」は理屈上あり得ない(Webの宣伝にはダマされないようにしよう)。
「同じ条件orちょっと変えた条件で何十枚も試す」「部分AI筆で何十回も修正試してうまくいくか祈る」
「エロいから多少の粗は許す」あたりが日常茶飯事である。
次項以降の解説を読む前に、下記を理解しておこう。

タグで記載されない細かい要素は選べない

  • 選びやすい:人数、髪型、髪色、体型、服装、背景
  • おまかせ:目線の向き、指の向き、体位・絡み、背景の小物

「顔の右下から左上方向へぐいっと勢い良いVサイン」という細かいタグはない、みたいな話である。
人物の属性(金髪ツインテやツリ目等)や行為(食事やパンチ)をpromptで指定し、
詳細な構図はimg2imgで落書きを読ませたり、openposeで指定するのが基本。

対策

書いたすべてのタグが反映されるわけではない

  • 基本的には全部乗せしようと頑張るが、ダメなものはダメ。
  • また、promptが長くなると後ろのほうのワードが無視されやすい。

対策

  • promptを削り、削った要素を上記「タグで記載されない細かい要素は選べない」を参照して手動追加する。
  • CFG Scaleを上げ下げして、プロンプト全体の反映度を変えてみる。
  • ワードのWeight(重み)を変え、特定のワードを重要視/軽視させてみる。例:(1boy:1.2)
  • 画像の広さ(WidthとHeight)が狭いと「全てを描き切れない」ので、広めの画像を作ってみる。
  • 縦長画像に描かれやすいものと横長画像に描かれやすいものの違いがあるので、縦長にしたり横長にしたりしてみる。

画像レベルでの画質はプロンプトでは解決できない

  • 全体的にボケる、発色が悪い、などの問題はプロンプトの専門外。

対策

  • 画像の出力サイズを大きくする。
    画素数が増えるので本質的にくっきりするが、生成が遅くなる・余計なもの描かれがち なので下記の方がおすすめ。
  • Hires.fixを使用する。狭く作った画像をベースにするので大胆な追加がされない。
  • VAEの変更。全体的な暗さ・明るさがガラッと変わる。
  • 拡張機能Detection Detailerの使用
  • InpaintのInpaint area=Only maskedを利用して、任意の部分(顔や瞳など)を高精細に描き直させる

モデルが学習不足な要素についてはプロンプトは無力

  • モデルが知らない要素はどう頑張っても描けない。
    • プロンプトが直接ノイズ除去をするのではなく、モデル等にノイズ除去の方向性を指示するという構造上の問題。
  • 例えばAnythingシリーズなどはR-18系の呪文が反映されにくい。
  • 他にも「首ちんこ」「ペストマスク」等のマニアックな要素がモデルにデフォルトで入ってることはまず無い。

対策

  • Prompt matrixDAAMを用いて、本当に使用モデルに入ってないかまず確かめる。
    • モデルが特定のワードを認識していない場合、そのワードを指定しても絵の傾向に変化が見られないはず。何度か試そう。
  • 欲しい要素が入ったモデルを検索して導入する。
  • 欲しい要素が入ったLoRAを検索して導入する。
  • 欲しい要素を学習したデータを自作する。
    • 例:LoRAの作成、TIの作成・使用

何を入力すれば良いかわからない

  • とりあえず、知っている英単語を試してみる(英文はだいたいダメ)

反映させたい要素の呪文(英訳)を知らない、英訳が存在しない場合:

タグ検索サービスから拾ってくる

画像を解釈させてタグ・Promptを生成させる

  • CLIP・DeepBooruを用いたPromptの逆算
    体験談

    Train-Tools タブでDataSetを作れるが、このとき画像を1枚だけ用意して作成すると、Deepbooru(danbooru)という自動タグ作成の仕組みで、txtファイルができるので、それを覗くとどんなプロンプトを使えばいいのかの参考になる。完全一致とは行かないが、かなりいい線になる。例えば150個もワードを並べてプロンプトを作るのは大変だが、txtにあるものをコピペして整形すれば、相当な量のプロンプト文になる。
    また、知らないワードを発見できたりもするので奥深い。

    • (1111) img2imgタブ → 画像を読み込ませた後、Interrogate CLIPボタンを押す
    • (1111) img2imgタブ → 画像を読み込ませた後、Interrogate Deep Booruボタンを押す
    • Web上で利用できる、DeepDanbooruのデモ
      https://huggingface.co/spaces/hysts/DeepDanbooru
  • 人のプロンプトを参考にする。
    • Stable diffusion出力画像を見つけたら
      「メモ帳」で開くと生成に使用したプロンプトが残っている可能性がある。(画像編集されていると消える)

プロンプトの効き具合を変えたい

( )を使ってプロンプトを強調するなどの方法があります。

誘導→特殊なPrompt指定

プロンプトの順番

  • 構造
    絵の出力にpromptの順番が影響する。
    最初の方の単語が比較的強い影響を持つ。
    こだわるならば順番は気にすべきだが、普段気になるほど影響力があるわけではないので、
    おおまかな順番の自分ルールを決めて常用し、各属性毎に順番通りにプロンプトを書くようにしたほうが管理の点では楽。
     
    例えば、品質→被写体(身体特徴含む)→頭部特徴→服装→シチュエーション→背景で並び替える。
  • 書き換え用メモ
    • 出典 https://rentry.org/hdgpromptassist#tag-ideas-hdgpa-edition
      • nsfw指定、品質系呪文、角度・構図、対象キャラの属性、背景・場所、ポーズ・表情
    • こっちの方が良い?
      • nsfw指定、品質系呪文、(必要なら)画風、人数、カメラ視点、身体属性、頭部属性、表情、服装、行動(ポーズ等)、背景、その他

(参考) PART3 -プロンプトの工夫で指定色が混ざるのを防ぐ方法- - Defblog(デフブログ)

プロンプトの効き具合をチェックする

コメント

  • deepLも使えますけど、ChatGPTに英語圏のスラングや、簡単な英語に訳して貰うとめっちゃ捗るのでオススメです -- 2023-04-02 (日) 02:07:20
  • ChatGPTに頼むとき予め(すくみず,ねこみみ,)のような書式で英語で頼む!っていえばマジのコピペだけで済むので楽  -- 2023-04-10 (月) 14:06:19
  • 今更言うのもなんですが、1111でのプロンプト強調・緩和は(XXXX:1.3)のようにコロンと数値で倍率をかけてあげるやり方が界隈では主流というか推奨されているみたいですね。二重括弧だとプロンプトを正しく認識してくれない可能性がある場合があるそうです。緩和させたい場合はマイナスの値ではなく0.8などのように1以下です。(×0.8倍になる) 小数点第二位以下での入力も効くみたいですがどの位まで有効かはわかりません。 -- 2023-04-14 (金) 13:19:02
    • 上級編のほうに普通に書いてありましたね・・・!失礼しました。 -- 2023-04-14 (金) 13:25:22
  • 今週ComfyUIの創始者と有能拡張開発者がプロンプトの事で超絶喧嘩して喧嘩別れしそうで非常に悲しいのだが、その喧嘩内容が高度過ぎてめっちゃ勉強になった。A1111ではプロンプトの強調構文がちょっと微妙な数式で平均化される事で合計で1になるように計算されるらしい。その結果、一つのプロンプトの強調変更で全体に影響が波及してしまう……が、何か誰も良く解んないけど何故かそれで最終結果がいい感じで上手くいくのでそのまま放置されてるらしい。そんでComfyUIの創始者は良く解んないのは美しくないしそもそも構文が反映されてないっちゅー事やんけって事でそのまま協調数値がストレートに出る方式を採用している…ぽい。でもその結果凄いピーキーな調整を求められてるやんけA1111みたいにしろって喧嘩が始まって喧嘩別れに終わりそうなんだが、その結果まぁまぁ落ち着いて派から新しいプロンプト解釈方式が産まれそうになっている模様。多分来週には産まれている…… -- 2023-04-15 (土) 11:09:33
  • 私が書いた内容よりも整理されてわかりやすくなってる...、誰だか分からないが本当にありがとう。 -- 2023-07-22 (土) 19:43:43
  • 個々の単語をコンマではなく、セミコロンで区切っても大体認識できてるようだが……この件について一言。 -- ほんわか王子? 2023-10-07 (土) 17:29:42
  • 前方に書いたプロンプトが強く反映されることへの例と言うか経験談ですが、例えば真っ先に"fair skin"とかの肌の色を書いとくとAIが「肌が見たいんだな!?あい分かった!!」って考えて露出が多くなります。何と言いますか…前に書いたプロンプトから順に見えやすくなります。
    言葉が下手ですみません…;; -- 2023-11-04 (土) 01:08:34

短縮URL生成