Stable Diffusionで呪文(プロンプト)を入力する際に『Break構文の使い方が分からない』そんな悩みを持っていませんか?
Break構文をうまく活用できれば、生成した画像のちょっとした修正が簡単にできます。
今回の記事ではBreak構文の使い方について解説します。break構文で修正されない場合の対処法も紹介しているので、参考にしてください!
Stable Diffusionの『Break』構文とは
『Break』とは、呪文(プロンプト)に書き込んだ特定のトークンを強調するための構文です。Breakの次に来るトークンが、強調されます。
また、”break keyword”とも呼ばれています。
Stable Diffusionの『トークン』について
Stable Diffusionにおける『トークン』とは、プロンプトに書き込んだ文字列(英単語)のことです。
1単語=1トークンのとしてカウントし、トークンの区切りに使われる『,(カンマ)』も1トークンとしてみなされます。
書き込んだトークンの数は、プロンプトを書き込むボックスの右上で確認可能です。
呪文(プロンプト)は75単語で1グループ
Stable Diffusionのプロンプトは、75トークンで1グループとなります。
グループ内に序列があり、1番目のトークンが一番強く75番目のトークンが一番弱い指示になります。
また1グループ目75番目のトークンより、2グループ目1番目のトークン(全体76番目のトークン)の方が強くなります。
『Break』でグループを区切る
呪文(プロンプト)内に『Break』を入れると、強制的にグループの区切りを作ります。
つまりBreakの次に来るトークンが擬似的な1番目のトークンとなり、優先順位を高くできるというわけです。
Stable DiffusionでBreak構文を使ってみた!
実際にBreak構文を使って、生成した画像を修正してみました。
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,
青い瞳(blue eyes)と指示しましたが、片方の目が若干紫になっています。Break構文を使って、紫の瞳を青くしてみましょう。
Break構文を使った場合
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,
『blue eyes』の前にBreak構文を入れた結果、きちんと青い瞳になりました。
生成した画像を修正したいなら、修正した箇所に関するトークンの前にBreak構文を入れてみましょう
※Seed値の固定方法については、以下の記事を参考にしてください。
Break構文が効かない場合もある
注意点として、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
夜道のトークン『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,break,night walk
いろいろと試してみましたが、Break構文ではちょっとした修正はできましたが、大掛かりな修正には向いていないようです。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
Stable Diffusionでの他の強調方法
Stable Diffusionのプロンプトの優先順位を変える方法は、『Break』を書き込む以外にも以下2つの方法があります。
- ()括弧を使う
- プロンプト(呪文)の最初に持ってくる
Stable Diffusionでの強調方法①()括弧を使う
1つ目は、『()括弧を使う』方法です。強調したいトークンを()で囲うと、1.1倍強くなります。
例えば下画像の場合、別のSeed値で『夜道の女子高生』を描いてもらいましたが、先ほど同様背景は夕方です。
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
『夜道』のプロンプト(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),
(night walk:1.4)と書いた結果、夜道になりました。(night walk:1.4)の場合、night walkのプロンプトが1.4倍強くなっています。
また、()を二重で囲む方法もあります。
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)),
上記プロンプトの場合、『(night walk)の1.1倍×()の1.1倍』となり、『night walk』に対して合計で1.21倍強くなっています。
逆に弱くする場合、『[ ]』を使う方法があります。[ ]で囲った場合、プロンプトの強さは0.9倍です。
Stable Diffusionでの強調方法②プロンプト(呪文)の最初に持ってくる
2つ目は、『プロンプト(呪文)の最初に持ってくる』方法です。呪文(プロンプト)は、グループの冒頭にあるトークンほど強調されます。
例えば先ほどの夜が夕方になった場合だと、『夜道』の呪文(プロンプト)(night walk)を最後に書いているので、冒頭に持ってきました。
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,
人物はそのままで、背景がしっかり夜道になりました。
このように、強調したいトークンを冒頭に持ってくることで強調できるわけです。
まとめ
いかがでしたでしょうか?
今回はBreak構文の使い方についてご紹介してきました。
今回のポイントをまとめると、以下のようになります。
- Break構文とは特定のトークンを強くするための文字列
- 強調したいトークンの1つ前に書き込む
- Break構文では修正仕切れない場合は、『()で囲む』『強調したいトークンを冒頭に持ってくる』といった方法が有効
Break構文や括弧、プロンプトの入れ替えで画像の修正ができるので、うまく活用してみてください!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい