見出し画像

【Stable Diffusion webuiの教科書】プロンプトの基本とコツ


はじめに

今回は実際にStable Diffusionで画像生成するにあたり、
どのようにプロンプトにすれば思い通りの画像を生成できるか、
その基本となる考え方やコツについてお伝えします。
一番は自分で触りまくって傾向などを掴んでいくことですが、
まずはその初歩となる考え方についてです。

語順による制御

とりあえず美女作っとけば良いと思ってる

まずは、プロンプトは先頭に近いワードほど大きく影響する傾向があります。
下にこの画像を生成した際のプロンプトを載せています。
この場合「best quality」が最も影響力がある傾向にあります。
詳しくは後述しますが、あまり長くないこれくらいのプロンプトであれば、
さほど語順で大きくは変わりませんが、基本的に重要視するワードは前の方で指定するようにしましょう。
また、個人的には下記のブロックの順番をおすすめします。
「1.全体的な雰囲気を指定するワード(下のプロンプトで言う一行目)」
「2.対象に対するざっくりした指定(下のプロンプトで言う二行目)」
「3.対象に対する詳細な指定(下のプロンプトで言う三行目)」

best quality, realistic, photo-realistic, masterpiece, ultra detailed, CG, unity , 8k,  soft light,  full body shot,
beautiful detailed 1 girl, detailed fingers, detailed eyes and face, beautiful detailed nose, beautiful detailed skin, realistic face, realistic body,
black hair, long hair, white shirt, in the beautiful forest


ワードの重み付け

森の中の女性:引きの構図(実際なら心霊を疑う場面)

次にワードの影響力を高める方法として、重み付けがあります。
実は先程の一枚目の画像はプロンプトで「full body shot:全身のショット」を指定していましたが、結果的に上半身だけの構図になっていました。
今回は「(full body shot:1.6)」と指定しています。
このように括弧で括り、ワードの後ろに「:重み」を指定することで、
そのワードの影響力を高めたり、弱めたりできます。
今回は重みを「1.6倍」にしています。デフォルトは「1.0」です。

best quality, realistic, photo-realistic, masterpiece, ultra detailed, CG, unity , 8k,  soft light,  (full body:1.6),
beautiful detailed 1 girl, detailed fingers, detailed eyes and face, beautiful detailed nose, beautiful detailed skin, realistic face, realistic body,
black hair, long hair, white shirt, in the beautiful forest


ネガティブプロンプトの指定

脚の露出を防止(ボトムスとシューズを黒にすれば脚長効果がある)

次にネガティブプロンプトの指定についてです。
ネガティブプロンプトとは、こういう要素は結果に反映しないでね〜ていう指定です。
先程の2枚目の画像に対して下記のネガティブプロンプトを指定しました。
「white shoes(白い靴)」「Exposed legs(脚の露出)」を指定したことで、先程と比べて脚の肌は見えず、靴も黒色になっています。
他にも「worst quality」など仕上がりに対する指定なども入れると良いです。

paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), extra fingers, fewer fingers, bad hands, 
white shoes, Exposed legs


BREAK構文

次にBREAK構文というものを紹介しますが、
その前に前提知識の説明をします。
まずStable Diffusionには「CLIP」というテキストエンコーダが採用されています。簡単に言えば、プロンプトの文章から画像生成するためのデータを変換する技術です。

この「CLIP」では、77トークン毎に1クリップという単位でデータを扱います。
トークンとは意味のある言葉のことです。
「beautiful girl」だと「beautiful」と「girl」で2トークンです。
そして「CLIP」は1クリップ毎に変換処理を行います。
なので、各クリップの先頭のトークンが強く作用する傾向にあります。

ちなみに最初と最後には内部的に特別なトークンが指定されるため、
我々がプロンプトを入力する際は75トークンで1クリップという感覚でOK です。

自作のダサい図(こういうところにAIを使いたい笑)

WebUIのプロンプト入力欄とネガティブプロンプト入力欄の右に現在のトークン数が表示されています。

それではBREAK構文について説明します。
プロンプトの途中に「BREAK」と記述することで、
クリップを切り替えることができます。
なので下のプロンプトで言うと「beautiful detailed」の「beautiful」から2クリップ目になり、「beautiful」は78トークン目という扱いになります。
同様に「black hair」は3クリップ目になり、「black」は155トークン目になります。
この場合、1クリップ目の先頭の「best quality」と、2クリップ目の先頭の「beautiful detailed」と、3クリップ目の先頭の「black hair」は同じくらいの影響力になります。

best quality, realistic, photo-realistic, masterpiece, ultra detailed, CG, unity , 8k,  soft light,  (full body:1.6),
BREAK beautiful detailed 1 girl, detailed fingers, detailed eyes and face, beautiful detailed nose, beautiful detailed skin, realistic face, realistic body,
BREAK black hair, long hair, white shirt, in the beautiful forest


最後に

ここまで読んでいただきありがとうございました。
今回はここまで!
次回はLoRAの使い方についての記事を投稿予定です。
他にも画像生成AIについての記事を投稿していますので、
ご興味のある方は是非ご覧ください!


この記事が気に入ったらサポートをしてみませんか?