Stable Diffusionで画像生成を行う際に、思った通りの画像が出力されないことはないでしょうか。
Stable Diffusionでは、プロンプトを入力する際にAIに特に注目させたい点の目印として括弧を用いることがあります。
今回は括弧の使い方とその効果について解説していきます。
また、今回の記事内で掲載している画像は「Counterfeit-V2.5.vae.pt」を使用し、作成しています。
設定の詳細は以下の通りです。
Sampling method:Euler a
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Seed:-1
Script:None
Stable Diffusionでそもそも括弧を使う理由は?
まずは、そもそも括弧をどの様に使うのかについて説明します。
括弧なしの場合
人物を生成する際に下記のようなプロンプトを入力したとします。
プロンプト:
masterpiece,high quality,1 girl,black medium hair,blue eyes,t-shirt,skirt,choker,blush,from above,frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw
このプロンプトを用いて生成したい画像は「黒髪ミディアム、青い目でTシャツ、スカート、チョーカーを身につけた赤面した女性」です。
このプロンプトを実際に入力し、出力された画像がこちらです。
生成画像:
服装やアクセサリー、目の色はプロンプト通りですが、肝心の髪色が白髪になってしまっています。
括弧ありの場合
このような現象が起きる理由は、プロンプトとして入力する単語量が増えれば増えるほど、AI側がどの指示を優先すべきか、重点を置くべきか分かりづらくなってしまうためです。
そこで、括弧を使うことで、AIに対して何を優先すべきかの目印を残してあげることができます。
試しに先程のプロンプトの”black medium hair”に括弧をつけて再出力してみましょう。
プロンプト:
masterpiece,high quality,1 girl,(black medium hair),blue eyes,t-shirt,skirt,choker,blush,from above,frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw
生成画像:
括弧を付けた結果、全てのプロンプトの条件を抑えた画像が出力されました。
比較画像
このように理想の画像を出力するためには括弧を上手に活用する必要があります。
Stable Diffusionで括弧にはどんな種類と効果があるの?
任意の単語に特定の効果を付与する括弧ですが、いくつかの種類とそれに対応した効果が存在します。
ここでは、各括弧の使い方と、出力される画像の違いについて、実際の画像も交えて説明します。
また、詳細な設定は上記のままで、seed値のみ3000に変更しています。
プロンプト:
masterpiece,high quality,(1 giri),frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw,3d
見本画像:
今回はネガティブプロンプトの赤文字の部分に括弧を付けて、画像の変化を見ていきましょう。
該当部分に括弧を付けることで、次第に2Dの絵に変化していくことが予想されます。
種類①:(word)
上記でも登場したこの括弧の種類は、AIに括弧内の単語を優先させやすくする効果を持ちます。
括弧を付けない場合、AIの単語への注目率は1.0ですが、括弧を付けることによって注目率を1.1に上げることができます。
プロンプト:
masterpiece,high quality,(1 giri),frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw,(3d)
生成画像:
少し2Dぽくなったような気がします。
種類②:((word))
この括弧の使い方は、(word)の効果を2重に付与する際に使います。
注目率1.1が乗算されることで、1.1×1.1=1.21倍となります。
プロンプト:
masterpiece,high quality,(1 giri),frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw,((3d))
生成画像:
絵のタッチがより2Dに近くなり、背景からは立体感がなくなりました。
種類③:(word:○○)
この括弧の使い方は(word)や((word))の応用です。○○には任意の数字が入ります。(大体1.1~1.5)
1.2倍以上の倍率をかけたい時に、((((…((word))…))))と表記するのはかなり面倒くさいと思います。
その場合は(word:1.2)のように表記することで注目率を指定することができます。
これは(word:0.25)など、1.0以下の倍率を指定することもでき、この場合注目度は通常の約1/4になります。
プロンプト:
masterpiece,high quality,(1 giri),frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw,(3d:2.3)
生成画像:
先程の画像と比べてより2D絵に近くなりました。
種類④:[word]
この括弧の使い方は上記の使い方と異なり、逆にAIからの注目度を下げる効果を持っています。
括弧1つあたり、注目率を1.1減らします。
使い方自体は(word)と変わらないため、必要に応じて活用してみましょう。
プロンプト:
masterpiece,high quality,(1 giri),frontal face
ネガティブプロンプト:
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers), nsfw,[3d]
生成画像:
「3D絵にしないでください」という命令を少し無視させただけので、(word)とそこまでの変化はありませんでした。
[[word]]のようにしてより無視させると、次は見本画像に近い画像が出力されるようになります。種類⑤:\(word\)
この括弧の使い方は少し特殊です。
何らかの理由で括弧をただの単語として利用したい場合、バックスラッシュを付けた形式にすることで注目率に関係ないただの単語として括弧を使うことができます。
比較画像
上記の通り、使う括弧によって出力される画像はかなり変化します。
Stable Diffusionで括弧を上手に活用して理想の画像を出力しよう
今回紹介した括弧の使い方は、プロンプトだけでなく、ネガティブプロンプトにも使用することができます。
また、ネット上で見られる完成度の高いAI絵のプロンプトの多くは以下の形式をとっていることが多いです。
プロンプト例:
((masterpiece)),((best quality)).....(この後は自由に入力)
ただし、完成度に影響する単語を過度に強調することは、「マスピ絵」という画一的な画像しか出力できなることに繋がる可能性があるため注意してください。
強調しないことも、しすぎることも一長一短であるため、出力したい画像に合わせていい塩梅に調整できるようにするといいでしょう。
~Stable Diffusionで素早く画像生成するには~
Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。
このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。
推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。
2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。
コスパを重視する方は、RTX 3060を選ぶと良いでしょう。
このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。