見出し画像

そうだ!AI画像生成をちゃんと勉強しよう💡16章:プロンプトの順序について

※勉強するのはStable Diffusion、SeaArt系になります。


いつもお世話になっているガイドブックにプロンプトの順番は大事だと書いてあったような気がするけど、何となく適当で大丈夫だろうと思って今までフリーダムにプロンプトを記述していました。
でも思うような画像が出てこなかったり、プロンプトの指示が反映されていないことが多いような気がして困ってきたので、このあたりできちんとプロンプトの記述について勉強することにしました。

という訳で今日はプロンプトの順序について学んでいこうと思います。

本日も等身大の私でよろしくお願いします(⩌ . ⩌)



プロンプトの正しい記述の順序


SeaArtガイドブックによると、Stable Diffusion のプロンプトの記述はこのような順序にするのが良いそうです。

  1. ビュー/ショット

  2. 主題(詳細付き)

  3. メディア

  4. 解像度/詳細用語

  5. スタイル参照(アーティストの参照を含む)

  6. 追加の詳細(背景、環境など)

  7. メインのカラーテーマ

  8. 照明/影

  9. 品質用語(DeviantArtでのトレンド、例:best image:1.5など)


各項目の詳細


次に、それぞれの項目を具体的な例を用いて見ていきたいと思います。


1. ビュー/ショット

画像の構図やフレームの取り方を指示します。例えば、キャラクターの全身、バストアップ、クローズアップなど、どの範囲を描写するかを指定します。
・"Full-body shot of a girl" "Close-up portrait of a man" など。

2. 主題(詳細付き)

描く対象やテーマを詳しく説明します。人物、風景、オブジェクトなどの主体を指定し、それに関連する特徴や要素を詳細に追加します。
・"A futuristic anime-style girl with blue and purple hair" "A majestic dragon flying over a mountain range" など

カテゴリ分けも大切なようです。
おおまかには女の子の説明でも、間違いの方は顔の詳細、身体の詳細、服装の詳細が混ざってしまっています。

プロンプト内の各用語をカテゴリ分けしてください。たとえば、「主題、顔の詳細、身体の詳細、服装の詳細」など。
間違い: 1人の女の子、赤毛、青い目、笑顔、赤いドレス、ウェーブのかかった髪、細身
正解: 1人の女の子、笑顔、青い目、赤毛、ウェーブのかかった髪、細身、赤いドレス

3. メディア

作品の形式やスタイルを指定します。デジタルアート、写真、絵画、3Dレンダリングなど、どのメディアで表現するかを指示します。
・"Digital painting" "Photorealistic style" "3D render" など。

4. 解像度/詳細用語

画像の精度やディテールを強調します。高解像度や細部まで詳細に描くかどうかを指定します。
・"4K resolution" "Intricate details" "Sharp focus" など。

5. スタイル参照(アーティストの参照を含む)

どのようなアートスタイルやアーティストの作品に似せるかを指定します。特定のスタイルを参考にすると、特定のビジュアル効果を得られます。
・"In the style of Studio Ghibli" "Inspired by Van Gogh's painting style" など。

6. 追加の詳細(背景、環境など)

画像の背景や環境を具体的に説明します。背景の風景や装飾、周囲の環境など、主題を引き立てる要素を指示します。
・"In a futuristic city with neon lights" "In a forest with glowing mushrooms" など。

7. メインのカラーテーマ

画像の全体的なカラーパレットを指定します。特定の色調やカラースキームを与えることで、画像のトーンをコントロールします。
・"Mainly blue and purple tones" "Warm colors with gold highlights" など。

8. 照明/影

画像の照明や影の効果を指定します。光源や光の強さ、影の位置などを指示して、画像の雰囲気を強調します。
・"Soft ambient lighting" "Dramatic shadows with a strong backlight" など。

9. 品質用語(DeviantArtでのトレンド、例:best image:1.5など)

画像の品質を向上させるための追加条件です。細かいディテールの強調や、特定のプラットフォームで人気のあるスタイルを指定します。
・"Trending on ArtStation" "Best quality, ultra-detailed, 1.5" など。


過去画像検証


検証1

これは以前 X(旧:Twitter)に上げた画像です。
この画像を実験台に、プロンプトの順序でどのくらい結果が変わるのか検証してみたいと思います。

モデル:meinamix

上の画像のプロンプトはこちらです。

プロンプト:1girl,student,school_uniform,smile,watercolor (medium),pastel_color,dusk,city,full_shot,from_above,dynamic_angle,looking_at_viewer
ネガティブプロンプト:easynegative,worstquality,low quality,normal quality


ポジティブプロンプトに注目して、先頭から1単語ずつさきほどの9項目で分類してみます。

  • 1girl,(1人の女の子)2. 主題(詳細付き)

  • student,(学生)2. 主題(詳細付き)

  • school_uniform,(制服)2. 主題(詳細付き)

  • smile,(微笑)2. 主題(詳細付き)

  • watercolor (medium),(水彩画(中))3. メディア

  • pastel_color,(パルテルカラー)3. メディア

  • dusk,(夕暮れ)6. 追加の詳細(背景、環境など)

  • city,(街)6. 追加の詳細(背景、環境など)

  • full_shot,(全身像)1. ビュー/ショット

  • from_above,(上から)1. ビュー/ショット

  • dynamic_angle,(ダイナミックなアングル)1. ビュー/ショット

  • looking_at_viewer(視聴者の方を見る)2. 主題(詳細付き)

以上のような結果になりました。
推奨順序と比べるとかなりバラバラだったことがわかりました(汗

それでは、これを順序とカテゴリ分けに注意しながら並べ替えてみます。
該当しない項目は横線をいれてあります。

  1. ビュー/ショット:full_shot,from_above,dynamic_angle

  2. 主題(詳細付き):1girl,smile,student,school_uniform,looking_at_viewer

  3. メディア:watercolor (medium),pastel_color

  4. 解像度/詳細用語:

  5. スタイル参照(アーティストの参照を含む):

  6. 追加の詳細(背景、環境など):dusk,city

  7. メインのカラーテーマ:

  8. 照明/影:

  9. 品質用語(DeviantArtでのトレンド、例:best image:1.5など):


修正したプロンプトはこのようになりました。
full_shot,from_above,dynamic_angle,1girl,smile,student,school_uniform,looking_at_viewer,watercolor (medium),pastel_color,dusk,city

元画像のプロンプト:
1girl,student,school_uniform,smile,watercolor (medium),pastel_color,dusk,city,full_shot,from_above,dynamic_angle,looking_at_viewer

この修正したプロンプトで画像を生成してみたいと思います。シード値は固定します。

修正したプロンプトで生成した画像
元の画像

この頃の私は品質プロンプトというのをよくわかっていなかったようで、入っていませんが、

「上から、ダイナミックアングル、女の子1人、笑顔、学生、制服、水彩(中)、パステルカラー、夕暮れ、街」

というプロンプトが元画像よりも再現できた気がします✨

ちなみに、「フルショット」が上手く出ていないのはこのプロンプトの効きが元々良くないためです(最近になって気が付きました)


検証2

もう一つ他の画像も試してみたいと思います。
こちらは以前、クリップスキップの検証記事を書くときに生成したうちの1枚です。

モデル:pornmasterAnime


こちらの画像のプロンプトはこんな感じです。

プロンプト:girl,rainbow color hair,bunches,anime_style_blush,grin,posing,black_front_zipper_swimsuit,in summer,beach,full_shot,dynamic_angle,lens_flare,top quality,8K
ネガティブプロンプト: easynegative,worstquality,low quality,normal quality

これはどのような感じで並んでいるのでしょう。

  • girl,(女の子)2. 主題(詳細付き)

  • rainbow color hair,(虹色の髪)2. 主題(詳細付き)

  • bunches,(お団子)2. 主題(詳細付き)

  • anime_style_blush,(顔紅アニメスタイル)2. 主題(詳細付き)

  • grin,(ニヤリと笑う)2. 主題(詳細付き)

  • posing,(ポーズをとる)2. 主題(詳細付き)

  • black_front_zipper_swimsuit,(黒のフロントジップの水着)2. 主題(詳細付き)

  • in summer,(夏)6. 追加の詳細(背景、環境など)

  • beach,(砂浜)6. 追加の詳細(背景、環境など)

  • full_shot,(全身像)1. ビュー/ショット

  • dynamic_angle,(ダイナミックなアングル)1. ビュー/ショット

  • lens_flare,(レンズフレア)8. 照明/影

  • top quality,(最高品質)9. 品質用語

  • 8K(8k)4. 解像度/詳細用語


  1. ビュー/ショット:full_shot,dynamic_angle

  2. 主題(詳細付き):girl,rainbow color hair,bunches,anime_style_blush,grin,posing,black_front_zipper_swimsuit

  3. メディア:

  4. 解像度/詳細用語:8K

  5. スタイル参照(アーティストの参照を含む):

  6. 追加の詳細(背景、環境など):in summer,beach

  7. メインのカラーテーマ:

  8. 照明/影:lens_flare

  9. 品質用語:top quality


修正したプロンプトはこのようになりました。
full_shot,dynamic_angle,girl,rainbow color hair,bunches,anime_style_blush,grin,posing,black_front_zipper_swimsuit,8K,in summer,beach,lens_flare,top quality

元画像のプロンプト:
(girl,rainbow color hair,bunches,anime_style_blush,grin,posing,black_front_zipper_swimsuit,in summer,beach,full_shot,dynamic_angle,lens_flare,top quality,8K)

こちらも修正したプロンプトで画像を生成してみたいと思います。シード値は固定します。

修正したプロンプトで生成した画像
元画像

こちらはほとんど変わらない結果となりました。
使うモデルによっても、プロンプトの順序による影響に違いがあるようです。

検証3

最後に照明のプロンプトを色いろ試していた時になかなか効果が出なかったものがあるので、それも順序でどう変わるか試してみました。

そのプロンプトの1つが light leaks(ライトリーク)です。
light leaks(ライトリーク)というのは、映像や写真に光が意図せずに漏れ込んだような効果。だそうです。
赤や黄色の光が手前にモヤっと入っているアレだと思います。

はじめに生成された画像はこちらです。

モデル:animeUtopiaX

プロンプトは
nsw,full body,girl,kawaii,gravure_pose,fashionable clothes,light leaks
(nsw,全身,ガール,カワイイ,グラビアポーズ,おしゃれ着,光漏れ)

  1. ビュー/ショット:nsw,full_shot,

  2. 主題(詳細付き):girl,kawaii,gravure_pose,fashionable clothes

  3. メディア:

  4. 解像度/詳細用語:

  5. スタイル参照(アーティストの参照を含む):

  6. 追加の詳細(背景、環境など):

  7. メインのカラーテーマ:

  8. 照明/影:light leaks

  9. 品質用語:省略

生成のガチャ要素を強くするため、このようにシンプルな構成にしています。
これでlight leaksが上手く出なかったので、重みを付けてみました。

nsw,full body,girl,kawaii,gravure_pose,fashionable clothes,(light leaks:1.2)

生成画像がこちら。

後ろの〇がlight leaksなのでしょうか。
このまま重みを強くしても正確に出る気がしなかったので、もしかしたら
「8照明/影」ではないのかと疑い、次は「1ビュー/ショット」想定で前の方に移動させて生成してみました。

nsw,full body,light leaks,girl,kawaii,gravure_pose,fashionable clothes

結果はこちら。

やっぱりライトリークとは言えない結果でした。
もしかしたらこのシンプルなプロンプトではいつまでたってもライトリークが現れないのかと思い、「写真」を追加してみました。「3メディア」に該当すると思うので後ろへ、ライトリークも同じ項目かもしくは「8照明/影」でも良いように一番後ろに変更しました。

nsw,full body,girl,kawaii,gravure_pose,fashionable clothes,photo,light leaks

結果はこちら。

今までで一番惜しい結果になりました。
向きも関係あるのかと思い横向きでも生成してみました。

全然違う結果が出てびっくり😂
モデルにもよると思いますが、ライトリークは実用レベルではなさそうということがわかりました。

検証3はプロンプトの順序やカテゴリ分けの問題ではなかったようです。


【20240924追記】


この記事で検証したAnyloraモデルでは効果がよく出ましたが、使用するモデルでこの限りではないこともわかってきました。
「1. ビュー/ショット」は最後にした方が良い場合も確認しています。

このことや、変化があまり見られなかったモデルがあることからも、使用したいモデルではどのようなプロンプトの順序が最適か検証してみる必要がありそうです。



モデルによる違いはあるものの、プロンプトの順序やカテゴリ分けによって生成結果に差が出ることがあるとわかりました。

より良い生成結果を出すためにも、順序やカテゴリ分けに気をつけてプロンプトを書くほうが良い✨

とっても勉強になるSeaArtガイドブックのリンクです👇



サムネ生成過程(ChatGPT,DALL-E 3)

私「「そうだ!AI画像生成をちゃんと勉強しよう💡16章:プロンプトの順序について」というタイトルのnote記事を書きました。これはnote2ではなく、noteです。 このタイトルに合うような画像を作ってください。 要望は、夏服を着たロングヘアーの美少女、日本の少女漫画のような繊細なタッチで、水彩画のようなカラーリングで。16:9で描いてください。」


ChatGPTくん「こちらが「そうだ!AI画像生成をちゃんと勉強しよう💡16章:プロンプトの順序について」のタイトルに合うイラストです。ご確認ください。」

私「とっても可愛いですありがとう!」

以上。

いいなと思ったら応援しよう!