Skip to content

Instantly share code, notes, and snippets.

@hnmr293
Last active January 28, 2023 16:52
commit: 2b63a22 にて区切り文字を `;` に変更したので注意。

ブロック別プロンプトで特定の1ブロックにプロンプトを追加してみるテスト

ブロック別プロンプトについては以下を参照。

Stable DiffusionのU-Netでブロックごとに異なるプロンプトを与えて画像生成する(ブロック別プロンプト)

モデルとして Waifu Diffusion v1.3 を使用した。

全体として、IN07, IN08, M00 で変化が大きい。次いで IN04, IN05 だろうか。

画像はチェリーピックせず、ランダムシードでn=5で生成したものを観察した。ただし bad hands のみ保存し損ねたのでn=4になっている。

目次

生成方法

Dump U-NetDynamic Prompts を用いて、特定の層のみ追加のプロンプトを導入したときの生成画像の変化を観察した。

プロンプトは以下の形式のものを用いた。

{% for layer in [ "", "IN00", "IN01", "IN02", "IN03", "IN04", "IN05", "IN06", "IN07", "IN08", "IN09", "IN10", "IN11", "M00", "OUT00", "OUT01", "OUT02", "OUT03", "OUT04", "OUT05", "OUT06", "OUT07", "OUT08", "OUT09", "OUT10", "OUT11" ] %}
  {% if layer == "" %}
    {% prompt %}a cute school girl, pink hair, wide shot, {% endprompt %}
  {% else %}
    {% prompt %}a cute school girl, pink hair, wide shot, (~:{{layer}}:bad anatomy:~){% endprompt %}
  {% endif %}
{% endfor %}

a cute school girl, pink hair, wide shot, の部分をここでは「基準プロンプト」と呼ぶことにする。基準プロンプトは、追加するプロンプトごとに少し調整している。bad hands なら手が画面内に入っていて欲しいので palms facing viewer を入れるなど。

その他詳細は最後に記載する。

bad anatomy

基準プロンプト: a cute school girl, pink hair, wide shot, 

dumpunet-bad_anatomy-1

IN01, IN05, IN07, IN08, M00, OUT03, OUT08 で顕著な変化が見られる。

IN04, IN11, OUT04, OUT05, OUT10, OUT11 では目の描写に変化が見られる。

あとはスカーフが消えているものがある。

dumpunet-bad_anatomy-2

ぱっと見で分かる変化は IN07M00

口の形状が細かく変わっている。IN00 を基準に考えると、IN01, IN04, IN07, OUT03 が違う。また IN08 は目のハイライトが無い。

dumpunet-bad_anatomy-3

M00 は顕著に変化している。

IN04 のみ口が開いている。

IN07, IN08 は紫のリボンが赤のリボンタイになっている。

OUT08 は背景が微妙に異なる。

dumpunet-bad_anatomy-4

M00 は顕著に変化している。

IN01, IN04, IN07, IN08, OUT03, OUT04, OUT08 はフロント布の形状や模様が大きく変わっている。

IN05, OUT11 はポーズが異なる。

OUT03 は服の形状が M00 と類似したものになっている。

dumpunet-bad_anatomy-5

IN07, IN08, M00 で顕著に変化している。

bad hands

基準プロンプト: a cute school girl, pink hair, palms facing viewer, 

dumpunet-bad_hands-2

IN02 は目が変化している。

IN04, IN07, M00, OUT03, OUT08 は目、顔の輪郭、襟の形状と模様、リボンが変化している。

IN08 はそれに加えてポーズが変化している。

dumpunet-bad_hands-3

手に変化が見られるのは IN01, IN04, IN05, IN07, IN08, M00, OUT03, OUT05, OUT07, OUT08, OUT09

IN07, IN08, M00, OUT08 は顔も変化している。

dumpunet-bad_hands-4

IN02, IN04, IN07, IN08, M00, OUT03-OUT06, OUT08, OUT09 で手が目に見えて変化している。

IN04, IN05, IN07, IN08, M00 は顔も変化している。

IN02, IN04, IN07, IN08, M00, OUT03, OUT08 では背景が変化している。

dumpunet-bad_hands-5

IN04, IN05, IN07, IN08, M00 で変化が顕著。

monochrome

基準プロンプト: a cute school girl, pink hair,

どうせ M00 で変わるんでしょ……と思ったら全然違った。IN07 が強く影響している。

学習データの影響か、comic の要素が入ってきているように見える。ちなみに grayscale でもほぼ同じ結果だった。

dumpunet-monochrome-1

IN07 の変化が目を惹く。他に変化が大きいのは IN01, IN08, M00, OUT03, OUT05, OUT08

IN08, OUT03, OUT05, OUT08 はいずれも同じような画像を生成している。

dumpunet-monochrome-2

1枚目と似たような感じ。M00の変化はあまり大きくない。

dumpunet-monochrome-4

これもそう。

dumpunet-monochrome-5a

微妙にリボン等が異なるが、IN07 を除くと構図上の違いはほとんど無い。

dumpunet-monochrome-6

同じく。

monochrome 強調

適用するプロンプトを (((((((monochrome))))))) としたときの変化を見た。ちなみに (monochrome:1.95) とほぼ同じ。パーサ未対応のため一旦これで。

追記。(xxx:1.5) のような記法に対応した。区切り文字が ; に変わっているので注意。詳細は github 参照。

dumpunet-monochrome-1x

もともと変化のあったブロックで、より変化が顕著になっている。

変化していなかったブロックについてはほぼ変化が見られない。

monochrome 2ブロック指定

基準プロンプト: a cute school girl, pink hair,

2か所で指定を行った結果。シードは monochrome の1枚目、2枚目と同じ。

dumpunet-monochrome-two-1a

IN07 でのみモノクロっぽくなっている。

dumpunet-monochrome-two-2a

IN07 でのみモノクロっぽくなっている。

monochrome 2ブロック除外

基準プロンプト: a cute school girl, pink hair,

逆に、2か所を除くブロックに monochrome を指定した場合の結果。シードは monochrome の1枚目、2枚目と同じ。

dumpunet-monochrome-two2-1a

IN07 でのみカラーっぽくなっている。

dumpunet-monochrome-two2-2a

IN07 でのみカラーっぽくなっている。

IN01, IN08, M00, OUT05 でもわずかに色がついている。

画像生成条件詳細

Model: wd-v1-3-float16.ckpt (84692140)
SD VAE: None
Hypernetwork: None
Clip skip: 1
Eta noise seed delta: 31337
Sampling method: Euler a
Sampling steps: 20
Width: 512
Height: 512
Restore faces: False
Tiling: False
Highres. fix: False,
Batch count: 1
Batch size: 1
CFG scale: 7
Seed: -1

[Dynamic Prompts]
enabled: True
Enable Jinja template: True
Fixed Seed: True
他は全てオフ

[Dump U-Net]
Enable Layer Prompt: True
他は全てオフ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment