Stable Diffusion web UIを使ったAI画像生成のPromptの記法のまとめ
本記事は Synamon Advent Calendar 2022 の12日目の記事になります。
今年2022年の9月頃から話題になっていた、AI画像生成はみなさん触ってみましたでしょうか?
Stable DiffusionがOSSとして公開されたことを皮切りに、イラストに寄せたモデルのWaifu Diffusion、クオリティの高いイラストが生成できると話題になったNovelAI Diffusion、直近でもStable Diffusionのver2が公開され、ものすごいスピードで進歩しています。
https://github.com/Stability-AI/stablediffusion
個人的にも興味があり、触ってみて生成したイラストをTwitterに投げていたりしました。
今回の記事では、こういった画像生成を触っている中で自分がPromptの記法に関してしばらく勘違いをしていて正しく理解するまで時間がかかってしまったので、基本的なことではありますが整理したいと思います。
自身の備忘録も兼ねていますが、もしAI画像生成初心者の方の理解の手助けになれば幸いです。
Promptとは
Stable DiffusionではSampling MethodやCFG Scaleなど様々なパラメータを設定でき、それによって生成されるイラストのクオリティが変わります。
そのパラメータの中でも最も影響の大きいものは、なんと言ってもPromptでしょう。
画像生成AIでは、Promptと呼ばれるテキストを入力し、どのような画像を生成して欲しいか命令をすることができます。
具体例を見たい方は公式のガイドなどをご覧ください。
今回紹介するのは自分が普段使用しているStable Diffusion web UIでのPromptの記法となります。
ツールによって拡張機能の有無が異なる場合などもありますので、使用される際にはご確認ください。
また、Novel AIは標準のStable Diffusionとは大きく異なる部分があり勘違いしやすい部分なので補足で説明します。
Stable Diffusion web UIの簡単な紹介
Stable Diffusion web UIは、Stable Diffusionの拡張版の一つで、Web UI = ブラウザで操作をすることができるのが大きな特徴です。
またそれ以外にも様々な拡張機能や使いやすさのためのカスタマイズがされています。
https://github.com/AUTOMATIC1111/stable-diffusion-webui
こちらではPrompt内の特定のフレーズの影響度合いを調整するための記法が存在します。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#attentionemphasis
強調
強調したいフレーズ(以下phrase)を ( ) の記号で括ることで、1.1倍に強調することができます。
これは複数重ねることも可能で、その場合乗算されます。
弱調
逆に影響を弱めたい場合は、[ ] の記号で括ることで、1/1.1倍に弱調することができます
こちらも同様に複数重ねて使用することができます。
数値での影響度の指定
記号を重ねすぎると少し見づらくなってしまったりしますし、もっと細かい単位で指定したい場合もあると思います。
そのような場合には、自分で倍率を指定する次の記法が便利です。
例えば、illustrationというフレーズを1.2倍に強調したい場合には、
といった感じです。
ここで注意すべき点が2つあります。
一つめは、phraseとweightと:(ダブルコロン)の間にスペースなどを挟むと強調のコントロールが効かなくなる場合がある点です。
おそらく記法の正規表現の仕様だと思います。
強調をしているつもりが効いていなかったのでいくらweightを調整しても徒労だった、ということにならないよう注意しましょう。
二つめは、[ ] の方には同じような記法が使用できないことです。
これは後で説明するPrompt Editingの記法と判定されてしまうためです。
Novel AI Diffusionとの強調記法の違い
Stable Diffusion web UIの記法は上記で説明した通りですが、実はNovel AIでは記法と効果に少し異なる部分があります。
Novel AIにおける強調、弱調の記法は下記になります。
使用する記号が ( ) { } で異なることと、影響度が異なることに注意が必要です。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#attentionemphasis
元素法典などNovel AIでのPromptを紹介しているものと、Stable DiffusionでのPromptを紹介しているものとでそれぞれ異なりますので、ご自身の使用される環境の記法に読み替えて参考にしていただければと思います。
Prompt Editing
Prompt Editingは、画像生成のステップの途中でphraseを切り替えたり、有効無効を切り替えたりすることができる機能です。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#prompt-editing
ちょっと分かりづらいですが、例えば
のPromptで50ステップに設定している場合には、前半の25ステップでは red hair、後半の25ステップでは white hairを入力する、といった感じです。
また必ずしも2つのphraseを指定する必要はなく、次のような使い方もできます。
少し難易度高めの記法ですが、Stable Diffusionの画像生成のステップは前半で大雑把な描画を、後半で細部の描画をするみたいなので、タイミングを狙ってPromptを指定したい場合に活用できるかもしれません。
Alternating Words
Alternating Wordsはphraseをステップ毎に切り替える機能です。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#alternating-words
2つ以上でも使用できます。
Wildcards
拡張機能の一つにWildcardsというものがあります。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions#wildcards
特定のフォルダに例えば filename.txt というテキストファイルを置いておくと、Promptに
のように_(アンダースコア)2つで囲ってあげることで、このファイルに書かれているテキストのランダムな行をロードして入力することができます。
Alternating Wordsの複数phrase版としても使えますし、一行にPromptを詰め込んでテンプレートのように使用することもできます。
エスケープ
これまでに説明したように、強調などをするための記法で ( ) [ ] などの記号を使用します。
これらの記号を文字通りのテキストとしてPromptに入力したい場合には、\(バックスラッシュ)を手前につけます
一見あまり使い道がないように見えますが、NovelAI等でDanbooruタグとして()の付いたテキストをPromptに使用したい場合に有用です。
トークン数制限
Promptの記法の話ではありませんが、通常のStable Diffusionではトークン数が75までという制限がありました。(ver2で変わったのか追えていませんが)
トークンというのはPromptに含まれる単語の数というわけではないことに注意は必要ですが、大雑把に言えばせっかく長文のPromptを指定しても手前のPromptしか入力されないということが起こります。
Stable Diffusion web UIでは独自の拡張によってこのトークン数制限がなくなっていますので、気にせず長文のPromptを使用することができます。
Novel AIはサービス側で制限を設けていたと思いますので、使用される際はご確認ください。
おわりに
Promptの記法はよく使っている方にとっては既に当たり前の知識かもしれませんが、自分はStable Diffusionの記法とNovel AIの記法をごっちゃに使ってしまっていたり、(phrase:wight)の記法に余計なスペースを挟んで無駄な時間を使っていたりしました…笑
その辺りを説明している日本語の記事があまり見当たらないような気がしたため、改めて整理してみたという形になります。
これから始める方、これからPromptをもっと細かく調整してクオリティを上げたいと思っている方の参考になれば幸いです。
最後に余談ですが、機械学習で綺麗なイラストが生成できるようになってきているわけですが、それでも成果物のクオリティを左右するのはAIに自分の要望を丁寧に言語化して伝える能力だったり、構図やコンセプトを考えるデザインのセンスだったりするような気がしています。
その点イラストをちょっと齧ったことのある程度の自分のような素人よりは、イラストやデザインをされている方がツールとして使った方が効果的なのではとも思います。
日本ではAI画像生成はまだ技術面以外にも課題を抱えていると思いますが、将来的にはこういった先端技術が誤解や恐れなく適材適所にいい感じに使われるようになっていくといいなと思っています。
ちなみにアイキャッチのイラストの全体はこんなでした。