【Stable Diffusion】トークンとは何か?AND構文とBREAK構文の使い方も合わせて紹介!

こんにちは!悠です!

 

今回は「Stable Diffusion WebUI」でプロンプトを作成する際に活用することができる、AND構文とBREAK構文の使い方について紹介していきます。

使う際には少し癖がありますが、適切にプロンプト内に混ぜることで、より上質なAIイラストを生成できるのでぜひ試してみてください!

 

アイキャッチ画像は「Chilled Remix」で生成しています!
スポンサーリンク
スポンサーリンク

トークン(Token)とは?

AND構文とBREAK構文を使う上で理解しておかなければならないのが、トークン(token)という言葉です。

トークンとは簡単にいうと、プロンプト内に存在する「意味のある文字列」のようなものです。

 

例えばポジティブプロンプトでよく使う「best quality」は、「best」と「quality」の2つのトークンから成り立っています。

「pink school uniform」なら、「pink」と「school」と「uniform」の3つのトークンからできています。

 

このように1つのプロンプトの中に複数のトークンが含まれているんですね。

 

プロンプト内に使われているトークンの数は、WebUIならプロンプト入力欄の右端で簡単に確認することができます。

 

75トークンまでしか使えないルールの撤廃

「Stable Diffusion」では、75個のトークンを超えたプロンプトは処理されることなく切り捨てられるというルールが存在します。

ですが、現在のAUTOMATIC1111製「Stable Diffusion WebUI」においては、この75トークン制限は撤廃されており、76個目以降のトークンもきちんと出力画像に反映されるようになっています。(下記は参考資料)

Unlimited Token Works by hentailord85ez · Pull Request #2138 · AUTOMATIC1111/stable-diffusion-webui
Unlimited tokens now work. Replaces the old implementation. Green eyes prompt at 91st index: masterpiece, 1girl, cute, , , , , , , , , , , , , , , , , , , , , ,...

 

AND構文とは?

AND構文とは、上で紹介した75トークンルールを守りやすくするために開発された構文です。

例えば猫と犬のAIイラストを生成したい時に、

cat, dog

 

と入力すると「cat」、「,」、「dog」で3トークンになってしまいます。

 

しかしAND構文を用いて、

cat AND dog

 

とすると3つのトークンを「cat AND dog」の1トークンにまとめることができるんですね。

 

こうやってトークン制限にかかりづらくするのがAND構文(参考記事)です。ただ、現在は75トークン制限が撤廃されているのでほとんど使うことはありません。

 

私が今まで試した限りでは、下記の記事で紹介している拡張機能「Latent Couple extension」くらいでしか使う機会はありませんでした。

複数キャラを生成できるプロンプトと、キャラ毎に属性を設定できる拡張機能「Latent Couple extension」の使い方を紹介!【Stable Diffusion】
「Stable Diffusion WebUI」を使って、簡単に複数キャラを作成できるプロンプトと、キャラ毎に髪型や服装といった属性を指定できる拡張機能「Latent Couple extension (two shot diffusion port)」の使い方を紹介した記事です。

 

BREAK構文とは?

WebUIにおいては75トークン制限は撤廃されたといいましたが、75トークン目と76トークン目ではプロンプトの効力に差があることが知られています。

76トークン目で使う方が効き目が強くなるんですね。

 

このことを利用して、絶対に反映したい要素が複数ある場合は、1トークン付近と76トークン付近に配置することで成功率を上げることができます。

ただ、トークンの数を調節するためだけに使わないプロンプトをたくさん採用するのは骨が折れますよね。

 

そこで活躍するのがBREAK構文です。BREAK構文を使うとその地点から75トークン区切りに達するまでの間を自動的に意味のない文字列で埋めてくれます。

 

例えば下記の27トークンのプロンプトを使って作成した画像をご覧ください。モデルにはAbyssHellVer3を使用しています。

best quality, 1girl, portrait, t-shirt, miniskirt, pink hair, blue eyes, green shirt, yellow skirt

 

スカートの色の部分が上手く反映されていませんよね。

ここでBREAK構文を使って下記のように区切って、green shirtの部分を76トークン目から、yellow skirtの部分を151トークン目から始めることで、

best quality, 1girl, portrait, t-shirt, miniskirt, pink hair, blue eyes BREAK green shirt BREAK yellow skirt

 

上記のように指定部位の色を反映させやすくすることができるんですね。

なおBREAK構文はある程度WebUIのバージョンが新しくないと使えないようです。



まとめ

以上が「Stable Diffusion WebUI」で、プロンプトを作成する際に活用することができる、AND構文とBREAK構文の使い方についての紹介でした。

BREAK構文による色移りの防止は絶対ではありませんが、多少なりとも打率を上げることができたりするので、ぜひ皆さんも試してみてくださいね!

 

では、ここまで読んでいただきありがとうございました。

コメント