画像生成において、プロンプトの使い方は重要です。
Stable Diffusionを利用する際には、正確なプロンプトのテクニックを把握することが求められます。
本記事では、イメージ通りの美しい画像を作り出すための4つのテクニックについて解説します。
これらのテクニックをマスターすれば、AIモデルに的確な指示を与え、理想的な画像を生成することが可能です。
単語と単語の間は半角カンマ「,」で区切る
イメージ通りの画像を出力するために、プロンプトに複数の単語を入力します。
一般的に、単語の間を半角カンマで区切ることが推奨されています。
これにより、StableDiffusionはプロンプトをより正確に理解することができます。
プロンプトの優先順位
Stable Diffusionでは、入力されたプロンプトの順番によって優先度が変わり、絵柄が変化することがあります。
プロンプトの左から順番に書かれた要素ほど優先度が高くなります。
例えば、先頭にbanana、後ろにappleと記述して生成してみます。
プロンプト
banana,apple
するとバナナメインの画像が生成されました。
次に、先頭にapple、後ろにbananaと記述して生成してみます。
プロンプト
apple,banana
すると、アップルがメインの画像が作成されましたね。
単語トークンの上限は原則75個
Stable Diffusionでは、プロンプトの上限が75個となっています。
ネガティブプロンプトも同様に上限が75個です。
プロンプトのトークン数が75を超える場合は、扱いが複雑になるため注意が必要です。
トークンとは、ざっくり「文字の単語」とイメージしましょう。
「apple」も1トークンですし、「,」も1トークンとしてカウントします。
そして、Stable Diffusionでは、75個のトークンを1単位として扱います。
もしプロンプトが75トークンを超える場合、複数の送信が必要となります。
例えば、76トークン以降は新たなまとまりが始まると認識して、分割して送信することになります。
この時、トークンの数が75を超えると送信タイミングがずれてしまい、意図した結果が得られなくなる可能性があります。そのため、できる限り75個以内のトークン数でプロンプトを入力することをおすすめします。
下記例では、「banana」「,」「apple」で3トークンとしてカウントされています。
次の例では、「banana」「,」「apple」「,」「tomato」で5トークンとしてカウントされました。
プロンプトの強弱
重み付けは、特定の単語を強調する手法であり、プロンプト操作では非常に有効です。
重み付け手法は2つあるので解説します。
先に使用例をお伝えすると、下記のような使い方ができます。
stable-diffusion-webui/wiki/
a (word)
– increase attention toword
by a factor of 1.1a ((word))
– increase attention toword
by a factor of 1.21 (= 1.1 * 1.1)a [word]
– decrease attention toword
by a factor of 1.1a (word:1.5)
– increase attention toword
by a factor of 1.5a (word:0.25)
– decrease attention toword
by a factor of 4 (= 1 / 0.25)a \(word\)
– use literal()
characters in prompt
括弧を使用した重み付け 「 () 」
1つ目は、括弧を使用した重み付けです。
()を重ねることで強調させることができます。
()で単語を囲うことで、1.1倍強調することができます。
二重で囲うと、1.21倍強調できます。
逆に弱める場合には、[]で囲うことで、1.1倍弱めることも可能です。
(word) : 単語への注目度を1.1倍高める
((word)) : 単語への注目度を1.21倍(1.1 * 1.1)高める
[word] : 単語への注目度を1.1倍下げる
コロンを使用した重み付け 「 : 」
2つ目は、コロンを使用した重み付けです。
コロンの後ろに数値を指定することで、注目度を調整します。
例えば、(word:1.5)は単語への注目度を1.5倍という意味になります。
(word:1.5) : 単語への注目度を1.5倍高める
(word:0.25) : 単語への注目度を4分の1に弱める
重み付けを活用することで、プロンプト内の単語に対して注目度の差をつけることができます。
これにより、色のバランス調整や要素の大きさの調整などが可能となります。
ただし、重みの値は適切に調整する必要があり、極端に高い値は予期せぬ結果をもたらす場合があるため注意が必要です。
重み付けによって注目度を調整する際には、括弧やコロンを使った表記方法や数値の適切な設定に留意しましょう。
試しに、appleを1.5、bananaを0.7の重み付けで生成してみましょう。
ちなみに、単語をカーソルで選択した状態で、「ctrl」+「↑↓」を押せばカンタンにコロン表記にできます。
すると、リンゴが強すぎてバナナが無くなってしまいましたね。笑
まとめ
- プロンプト内の単語は半角カンマ「,」で区切ります。
- プロンプトの順番によって優先度が変わり、絵柄が変化することがあります。
- 単語トークンの上限は原則75個です。
- トークンの数が75を超えると送信タイミングがずれ、結果が予期しないものになる可能性があります。
- 重み付けは、特定の単語を強調する手法であり、括弧とコロンを使用して行います。
- 括弧を使用した重み付けでは、単語を囲んで注目度を調整します。
- コロンを使用した重み付けでは、コロンの後ろに数値を指定して注目度を調整します。
- 重み付けを活用することで、プロンプト内の単語に注目度の差をつけることができます。
- 重みの値は適切に調整し、極端に高い値は予期しない結果になる可能性があるので注意です。
プロンプト操作にはこれらの要素を適切に組み合わせることで、意図した結果の画像生成が可能となります。
適切なプロンプトの作成には練習と試行錯誤が必要ですが、様々な手法を活用して自分のイメージに近い結果を得られるようにしましょう。