Stable Diffusionの呪文(プロンプト)の強調構文について解説!効果も検証 | romptn Magazine

Stable Diffusionの呪文(プロンプト)の強調構文について解説!効果も検証

Stable Diffusion

『Stable Diffusionで画像を生成してもらったら、プロンプトの要素が混ざって変な画像ができてしまった』という経験はありませんか?

プロンプトの要素が混ざっている場合、強調構文の一種である『AND構文』を使って分けるのが有効です。

しかし『AND構文って、どうやって使うの?』と思った方も多いはずでしょう。

そこで本記事では、強調構文の基本的な使い方から、『AND構文とは何なのか?』『どうやってAND構文を使うのか?』を解説します。

※Stable Diffusionの立ち上げ方・使い方については、以下の記事で詳しく解説しています。

スポンサーリンク

トークンとは

まずは、Stable Diffusionで呪文(プロンプト)や強調構文を入力するにあたって重要な『トークン』について解説します。

「トークン」とは、簡単に言うと、呪文(プロンプト)の中に存在する“意味を持つ文字・単語”のことをいいます。

例えば、<white long dress>という呪文(プロンプト)を入力すると、white/long/dressの3トークンに分かれます。このトークン数は、入力欄の右側で確認できます。

このトークン数には、いくつかの決まりが設けられています。

そのルールについては、以下の記事で詳しく解説していますので是非参考にしてください!

Stable Diffusionの画像生成を最速で学びたいあなたへ!
  • Stable Diffusionの基礎を2時間でマスター!
  • 高スペックPCがない方向けに徹底解説。
  • ControlNetなど、必須級の拡張機能も網羅。
  • 今話題のSDXL、AI動画生成も。
  • 特典として、大人気「おすすめ拡張機能・モデル解説」「プロンプト大全」つき!
\このボタン限定!70%オフキャンペーン実施中!/
70%オフキャンペーン実施中!/

呪文(プロンプト)の強調構文とは

プロンプトの強調構文とは、特定のトークン(文字列)を強くするためにプロンプトに挿入する文字列です。

主には『Break』や括弧を、プロンプト内に書き込みます。

強調構文のメリット

強調構文を使えば、生成された画像を簡単に修正できます。例えば下の画像です。

プロンプトでは、『青い瞳』と指示しました。しかし左側の瞳が、若干紫になっています。

1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,

ちょっとした修正のためにプロンプトを変更したり、ネガティブプロンプトを追加するのは、少し面倒ですよね。

しかもプロンプトは英語で書き込むため、わざわざ翻訳する手間もかかってしまいます。

そこで利用して欲しいのが、強調構文です。強調構文なら、簡単な文字列をプロンプトに追加するだけで、生成した画像を修正できます。

強調構文を使って、修正した結果が下の画像です。

微妙な違いはあるものの、人物はそのままで瞳の色は青くなっていますね。

どのように強調構文を使って修正したかは、後述します。

プロンプトジェネレーターで画像生成プロンプトの参考に!
  • Stable Diffusionのプロンプトの見本が知りたい
  • 画像生成が思ったようにできない
  • 色々なプロンプトを探したい
など、画像生成AIのプロンプトに関する疑問が解決するかもしれません。

強調構文を入力する方法

まず強調構文には、『Break構文』と『括弧で囲む』の2つがあります。

①Break構文

Break構文は、強調したいプロンプトの1つ前に挿入します。括弧で囲む場合は、強調したいプロンプトを括弧で囲むだけです。

※詳しくは、以下の記事を参考にしてください。

②括弧でくくる

括弧で強調する方法には、以下の3パターンがあります。

  • (プロンプト):括弧内のプロンプトが1.1倍強くなる
  • ((プロンプト)):括弧内のプロンプトが1.1倍×1.1倍の、合計1.21倍になる
  • (プロンプト:数値):書き込んだ数値分だけ強くなる(1.4と書いた場合、プロンプトが1.4倍強くなる)

括弧を使う場合、修正しながらそれぞれ試してみてください。

強調構文で修正する前に、必ずSeed値を固定してください。固定していないと、全然違う画像が生成されてしまい、二度と同じ画像が生成できなくなります。

どのように強調構文を使って修正したかは、次に解説していきます。

ここからは、強調構文にどれぐらいの効果があるか、検証結果をもとに紹介していきます。

Break構文の効果

まずはBreak構文です。先ほどの『紫がかった瞳を青くした』画像修正では、Break構文を使用しています。

青い瞳を強調したかったので、プロンプト内の『Blue eyes(青い瞳)』の1つ前に『Break』を挿入しました。

1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, school uniform, blue ribbon,gentle smiling expression of a woman,black hair,break,Blue eyes, acing front,

Break構文は、強調したい指示の1つ前に『Break』と書き込むだけでOKです。

Break構文は小さい修正には有効ですが、大掛かりな修正では効果を発揮しない場合があります。例えば下の画像です。

プロンプトでは『夜の道』と指示していますが、生成された画像は夕方です。

1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, break,school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,night walk

そこでBreak構文で修正してみた結果が、下の画像です。まだ夕方ですね。

1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, break,school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,break,night walk

今回のように、Break構文では修正仕切れない場合があります。

もしBreak構文で修正しきれない場合、次に紹介する括弧を使った方法を試してみてください。

括弧で囲む効果

次にプロンプトを括弧で囲った時の効果を紹介します。今回は下画像の背景を、夕方から夜に変更しました。

先ほど紹介した括弧を使う3つの方法を、それぞれ試したので、サクッとみていきましょう。

1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, break,school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,(night walk),
1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, break,school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,((night walk)),
1 girl,standing pose,cute,cute eyes,detailed hair,anime,highlight hair,front sun light,beautiful hair,illustration,face up,smile,white teeth, break,school uniform, blue ribbon,gentle smiling expression of a woman,black hair,Blue eyes, acing front,(night walk:1.4),

『括弧で囲っただけでは効果がなかったが、二重括弧や数値を入力したらしっかり夜道になった』という結果になりました。

ちょっとした修正にはBreak構文、大きな修正には括弧で囲むといった感じで、強調構文を禹使い分けてみてください。

特に括弧で囲む方法は、強度を調整できるので、使いやすくオススメです。

呪文(プロンプト)のAND構文とは

最後に、AND構文について解説します!

AND構文とは、プロンプトに書き込んだ複数のトークンを、1つに統合させる文字列です。

AND構文のメリット

AND構文には、統合したトークンの関係性を明確にする効果があります。

例えば猫と女の子を描いてもらうと、猫の格好をした女の子が生成されてしまいます。

AND構文を使えば、猫と女の子を分けて描いてくれるわけです。

AND構文を使った結果は、後に紹介しますね。

AND構文を入力する方法

AND構文の入力方法は、関係性を計画にしたいトークンの間に『 AND 』と入力するだけです。

ANDの前後には、トークンを区切るカンマは必要ありません。

ANDの前後には、半角スペースが必要です。半角スペースがないと、トークンが統合されません。

また、半角スペースがあるプロンプトと無いプロンプトでは、生成結果が異なります。

先ほどの画像を、AND構文を使って修正してみました。まずは修正前の画像とプロンプトです。

cat,girl,masterpiece, best quality, highly detailed, ultra detailed, high resolution, absurdres, 4K, 8K,school uniform, full body,

上記のプロンプトに、AND構文を追加した結果が下の画像です。

cat AND girl,masterpiece, best quality, highly detailed, ultra detailed, high resolution, absurdres, 4K, 8K,school uniform, full body,

『cat,girl』から『cat AND girl』に書き換えた結果、女の子から猫の要素が外れて猫と女の子の画像が生成されました。

今回何度も試してみましたが、正直精度は低いです。そのためAND構文より、しっかりプロンプトとネガティブプロンプトを書き込んだ方が有効かもしれません。

またLoraで追加学習してもらって、精度を高める方法もあります。

※Loraについては、下記の記事で詳しく解説しています。

まとめ

いかがでしたでしょうか?

今回は『AND構文』について解説してきました。

今回のポイントをまとめると、以下のようになります。

  • 『AND構文』とは、2つのトークンを統合して1つにまとめる文字列
  • まとめたトークンの関係性を詳しくできる
  • 複数の要素が混ざってしまったときに有効

もし今回のような『猫と女の子を描いてもらったら、猫の格好をした女の子が生成された』のようなな、プロンプトが混ざったときにAND構文を試してみてください。

プロンプトジェネレーターで画像生成プロンプトの参考に!
  • Stable Diffusionのプロンプトの見本が知りたい
  • 画像生成が思ったようにできない
  • 色々なプロンプトを探したい
など、画像生成AIのプロンプトに関する疑問が解決するかもしれません。