PR

【Stable Diffusion】BREAK構文とは?

【Stable Diffusion】BREAK構文を解説
この記事は約6分で読めます。
らん
らん

長いプロンプトだと後半の呪文の効きが悪いような…

るん
るん

そんなときはBREAKを使ってみましょう✨

Stable Diffusionでイメージ通りの画像を生成したいときには、自然とプロンプト(呪文)が長くなりますよね。

そのとき、後ろほうの呪文の効きが悪いと感じたことはありませんか?

たとえば、こんなプロンプトで画像を生成してみると、後ろのほうの「white t-shirt」があまり反映されません。

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, white t-shirt, upper body

white t-shirtがあまり効いていない生成画像
らん
らん

なんかTシャツがピンクっぽくなってる…

本記事では、このようなときに役立つBREAKの使い方について解説します。

この記事はこんな人におすすめ
  • Stable Diffusionでプロンプトの効きが悪いと感じる
  • Stable Diffusionのプロンプトで役立つ構文を知りたい

BREAK構文とは

BREAK構文とは、Stable Diffusionでプロンプトの中の特定の言葉を強調する方法です。

プロンプトの途中にBREAKというテキストを入れることで、その後ろの言葉を強調できます。

らん
らん

…なんかよくわからん

るん
るん

順を追って説明しますね♪

「トークン」と「グループ」

Stable Diffusionでは、プロンプトで使う1つ1つの言葉のことを「トークン」といいます。
この「トークン」の数え方には注意が必要です。たとえば「short hair」は1つのトークンではなく「short」と「hair」でトークンは2つと数えます。
また、区切りに使う「カンマ」も1トークンとなります。

よって、「girl, short hair」というプロンプトなら、トークンの数は「4」となります。

[Stable Diffusion] プロンプトを構成する「トークン」

このトークンの数はWeb UIのプロンプト入力欄の右上の方に表示されています。
4/75となっていますね。この分子の「4」がプロンプトのトークン数です。

[Stable Diffusion] Web UIにはプロンプトの「トークン」の数が表示されている
らん
らん

分母の「75」ってのは何?

るん
るん

よく気づきましたね😊そこがポイントです💡

Stable Diffusionは「75個のトークン」で「1つのグループ」を形成します。
なので、たとえばプロンプトが100個のトークンの場合は、先頭から75個のトークンが1つめのグループとなり、残りの25個のトークンが2つめのグループになるというわけです。

「トークン」の順序で効き具合が変わる

らん
らん

グループで分かれるのはわかったけど…それがなんなの?

るん
るん

それぞれのトークンの効き具合に関連してきます

グループ内の前にあるトークンほど画像生成に与える影響が強くなります。
つまり、グループ内の1番目のトークンが最も影響が強く、75番目のトークンが最も影響が弱くなるということです。

たとえば、100個のトークンで構成されたプロンプトの場合、76番目のトークンは2つめのグループの1番目なので、75番目のトークンよりも効きは強いということです。

[Stable Diffusion] グループ内の前の方のトークンほど効きが強い

単純にプロンプトの後ろにあるほど影響が弱くなるのではなく、グループの区切りが影響するということがポイントです。

本記事冒頭のプロンプト例を考えると、「white t-shirt」は1つめのグループの後ろの方にあるので生成画像への影響力が弱く、効きが悪かったということになるでしょう。

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, white t-shirt, upper body

「BREAK」でグループを区切ることができる

逆に言うと、「white t-shirt」をグループの先頭に持ってくれば影響力は強くなるはずですよね。

プロンプトの途中にBREAKというテキストをはさむと、そこでグループを強制的に区切ることができます。
つまり、「white t-shirt」の前にBREAKを入れれば、「white t-shirt」は2つめのグループの先頭のトークンとなるので、効きを強めることができるのです。

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, BREAK white t-shirt, upper body

[Stable Diffusion] BREAKを使うとグループを強制的に区切ることができる

BREAK構文を使う

では、実際に「BREAK」を書いてみて、その効果を検証してみましょう!

「BREAK」の書き方

プロンプトの区切りたい箇所に「BREAK 」を入れます。BREAKの後の半角スペースを忘れないでください。

…, BREAK white t-shirt, …

BREAKを入れると、グループの数が増えるので、プロンプト右上に表示されているトークン数の分母が変わります。BREAKがきちんと効いているかの確認になります。

[Stable Diffusion] BREAKでグループが1つ増えた
らん
らん

分母が75から150になってる。グループが1つ増えたってことだね

るん
るん

BREAKでちゃんとグループを区切れたということが確認できました💡

「BREAK」の効果

以下のように、white t-shirtの直前でBREAKを入れるケースと入れないケースで生成画像を比べてみましょう。Tシャツに注目です!

BREAKなし

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, white t-shirt, upper body

BREAKあり

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, BREAK white t-shirt, upper body

[Stable Diffusion] BREAKによってwhite t-shirtの効果を強めた例

BREAK以外の強調方法

Stable Diffusionでは特定のトークンを強調する記法が他にもありますので、ここで紹介しておきます。

()で囲む

プロンプト内で強調したい言葉を()で囲むことで効果を強めることができます。

girl, swept bungs, medium hair, pink hair, ponytail, purple eyes, smile, (white t-shirt), upper body

()が1つだけだと、効果は1.1倍となります。

()はいくつも重ねることができ、重ねるたびに効果は1.1倍されていきます。
たとえば、()を3つ重ねて(((white t-shirt)))などとすることもできます。このとき、強調効果は1.1×1.1×1.1=1.331倍です。

より効果を強めたいときに()をいくつも重ねるのは面倒ですよね。その場合は、(white t-shirt:1.4)のように効果の倍率を数値で直接指定することもできます。この書き方の場合は効果は1.4倍です。

るん
るん

()による強調はとてもよく使われる記法です💡

まとめ

Stable Diffusionのプロンプトは「トークン」から成り立っていて、75個のトークンで1つのグループを形成しています。
このグループ内で後ろにいくほどトークンの影響が弱まってしまいますが、BREAKを使うことでグループを強制的に分割して、任意のトークンの影響を強めることができます。

かっこ()を使うことでプロンプト内の言葉を強調することもできますが、本記事で紹介した「BREAK構文」もテクニックの一つとして覚えておくとよいでしょう。

プロフィール
この記事を書いた人
千鳥 るん | Chidori Run

画像生成AIで思い通りのイラストを描くためのノウハウを試行錯誤で模索しています。IT企業でAI戦略に関わっていたこともあるAIエンジニアです。大学生の頃から趣味でイラストを描いていましたが、仕事が忙しくなり一旦筆を置きました。最近、NovelAIと出会ってまたお絵描きへの情熱を取り戻しています。

千鳥るんをフォローする
Stable Diffusion
スポンサーリンク
シェアする
千鳥るんをフォローする

コメント