見出し画像

WaifuDiffusionにおける私的メモ1

2023/09/25
さすがに古すぎる記事。とはいえ、根幹は変わっていない気がしますね。
正解になるようなマジックワードがある訳ではなく、影響を把握したうえでの調整力が大事です。

私事により、AIの流行に置いてかれて1月ほど。
気になった情報やプロンプトをメモしつつも、悶々と早すぎる展開をどうにか眺めていたのですが、そうやって収集した知識をちょっと検証したもの。
記事の概要としては、同一条件で特定の単語を追加、置き換えで効果を探っていく主旨となります。おそらく、Danbooruを学習元にしたモデルなら
ある程度は共通するかと思われます。
(画像はCraiyonに描いてもらった『情報の洪水に溺れる愚かな人類』)


●基本

あれこれ試した結果、各単語には情報量(複雑さ)情報の方向性
情報の強度といったパラメーターが存在しているみたいです。
もちろん他のパラメーターも色々あるのでしょうが、今回の試行で顕著に現れたのがこの三つでした。

情報量(複雑さ)
書き込み量。服ならしわが増え、デザインの複雑化
教室なら壁と窓が詳細になり、机が並んだりする。
問題なのが手先の描画で、情報が少なければ指が3~4本となり、多すぎれば指がイソギンチャク化する。手が崩壊すると一括りにされがちだが、情報の過多と過少と考えると対処がし易い。
こういった問題が起きるのは人体ぐらいで、背景などは過多まで情報が増える事は滅多にない。

●情報の方向性
CFGスケールやステップ数の増減で、どのような影響が出るか。
特定の構図に近づく/遠ざかる情報量が増える/減る、といった要素。
増減は一様ではなく、よくあるパターンとしてスケールが増えれば増える程、被写体の情報が増え、背景の情報は減るといった組み合わせが存在している。
もしかしたら、特定の結果に収束しているのかも知れないが、
だいたいは普通に出力したい画像の範疇から外れているので、情報の増減と解釈していいはず。

●情報の強度
よく言われる生成画像全体への影響力汚染の度合いとも。
()で強調※、[]で弱化できるほか、CFGスケールやステップ数と似た性質を持つ。これが高ければ高いほど、方向性に従って変化が進行する。

22/12/29 修正、{}の影響は微小か皆無。
(aaa:1.5)といった表記も可能で数値が高い程、強調される。
99など極端な数値にすると、画像全体がノイズになるので分かりやすい。
webui上の話で環境によって分かれている可能性?

基本といいつつ大概、応用編じみた内容になってしまいました。
始めたばかりなら、最初はDanbooruタグを並べる所から始めて、次は元素同典を紐解いた方が良いのかも知れません。
(リンク先はどちらもgoogle検索です)

●ネガティブプロンプト

通常ではなく、こちらを先に。
最終的な調整はともかく、とりあえず使うレベルではクオリティの上昇や
画風の安定効果
を意図して使用されており、汎用性が高いと認識したため
です。
ネガティブプロンプトは順序や文章が考察されている例はほとんどありませんが、通常プロンプトとだいたいは同じだと推定できます。

下記のチェック対象は比較的、少ないネガティブプロンプトで高品質を実現している例を参考にしました。
元素法典の形式では、単純に膨大である事と、結果良ければ……といった具合に単語単位で効果を吟味している例は少ないと考えたためです。(実際はネガはともかく、プロンプトはかなり吟味された作品が多そうですが)

・単語リスト

単語:日本語化:Danbooruタグの有無
特定プロンプト、固定シードで生成画像への影響を確認した効果。
情報量などの概念は後で気付いたので、手が安定/不安定などの記述あり。

blurry:ぼやけ:〇
画風変換、コントラストの上昇。アニメ塗りに近づく。

poorly drawn:下手な絵:×
画像が鮮明になり、手も安定傾向。

ugly:醜い:△
良好な結果。△はタグの一部として用いられていため。
ugly_man、和訳すると汚いオッサンか。

lowres:低解像度:〇
良好な結果。手を隠す傾向あり。

cropped:切り取った:〇
微妙。手の情報量が若干、増える。lowresとの組み合わせは良好。
おそらく単独での使用は想定していない。
Danbooruでは写真フレームのような画像に使われる。

law quality:低品質:×
良好な結果。表情変化がある。

ここで一旦、中断。というのも純粋な品質を意図する単語はこの辺りが主流で後はbad_handsのように部分言及や構図なども増えるため。
つまり、単品で使い得るのは上記のもので、後は複数で使用するケースがほとんどになるのでテスト環境も変更

{ugly}, 『テスト対象』

blurryは画風変化が主、poorly drawnは単語被りあり、そのためuglyをメインに据えて、追記する形でテストを行います。

bad_anatomy:悪い解剖学:〇
手を隠しつつも、画像が一部崩壊。

bad_hands:悪い手:〇
手を隠す以外、特筆点なし。安定か。

bad eyes:悪い目:×
ハイライトが消え、手が微妙に。

bad_feet:悪い足:〇
大幅な構図変更。そういう意図なしに使うのは問題あり。

bad_proportions:悪い体型:〇
表情が微笑みに変化し、手が崩壊。

extra_limbs:余計な手足:〇
手を隠す。結果はマシな方。

extra_arms:余計な腕:〇
四本指、親指隠れがあり得る構図なので良好か。

extra_mouth:余計な口:〇
袖から指が飛び出している。背景が消失。
口が複数ある独特なキャラクターに使われるタグ。

fused fingers:融合した指:×
手を隠す以外の特筆点なし。

text:テキスト:△
大きな変化なし。元から消したい要素がなかったので当然か。
複数のタグの一部として利用されている。

title:タイトル:〇
大きな変化なし。主に漫画の単行本などの表紙を避ける為のもの。
近いタグに、cover_pageが存在する。

poorly drawn hands:下手な手:×
手を隠す。品質は良好か。

poorly drawn face:下手な顔:×
手が崩壊気味。

disembodied:肉体のない:△
手を表示しつつ、品質は良好?
個人的に提案したもの。主にエロ画像のDanbooruタグの一部として存在。
肉体の無い手、頭部、×××など。

これ以外もテストしたが数が多いので、bad_feet以外はだいたい良好な結果だと判断した単語に限って記載しています。
また、手が隠れる≒手の情報量減少手が崩壊≒情報過多か足りてない、そう読み替えると的確になると思います。

逆に良好でない、意図からかけ離れた結果が出た単語はこちら。

bad_feet(派手な画風変化)
extra_mouth(背景消失)
watermark(手がやや悪化、影響小)
speech_bubble(派手な画風変化)
2girls(手がやや悪化、影響小)
extra_eyes(背景消失)

結局、使いようなのですが思考停止で入れていい程の利便性はなく、今回はそういう基準なのでリストに入ってもらいました。

●実践的な作業と結論

ここまでテストして、実用に落とし込む作業に入ったのですが大変でした。
メモから抜粋すると最初はこんな感じです。

CFGスケール 9.5
ugly, extra_arms, text, disembodied
CFGスケール 8
{ugly}, extra_arms, text, disembodied, bad_hands

要するに、手の品質が良いか悪いかで判断していたのですが、ここで情報量が多いか少ないか、という基準に気が付いた訳です。
しかし、ちょっと単語を強調したり、CFGスケールを弄っただけでバランスが崩壊してしまい、汎用性のあるプロンプトなんて無理じゃないかと。

コツは書いておくから、各設定とプロンプトに合わせて個別調整してくれ、が結論になりそうだったのですが、しつこく弄った結果・・・

{ugly}, law quality, extra_arms, text, disembodied, fused fingers, lowres, cropped, bad_hands, poorly drawn hands

品質を落とさない範囲で、個人的に評価した単語をなるべく追加したもの。
手の情報が過度に落ちないように、その手の単語は後方に引っ込めて、間に色々と挿入しています。

これは意図せず成功して、CFGスケール7.5~11の範囲でそこそこ有効となり、ひとまず叩き台としては有効なプロンプトとなりました。
プロンプトを物量で薄める事で、調整が効きやすくなるというのは、元素法典の方針が優れている事を証明する結果となりましたね。

before(よそ様からパクったもの)


after(今回の研究結果)

シード値をはじめ、ネガティブプロンプト以外は同一条件の画像です。
ちょっと手の情報が足りないですが、調整は容易。
変化が大きくて、どちらが上とも言い難いのですが、
個人的には満足な結果が得られました。

22/12/29 知識をアップデートしたので修正。
不安定な要素を変更して、手の情報量が同じくらいに・・・
ugly, [law quality], extra_arms, text, disembodied, fused fingers, lowres, cropped, bad_hands, poorly drawn hands

仮にもし次回があれば、クオリティ系のプロンプトに触れていきたいと考えています。


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