見出し画像

Stable Diffusionを使ったイラスト作成の記録(5) ~ 下絵のブレンド方法の詳細分析 ~

前回の記事

シリーズ一覧

Layered Diffusion Pipelineを使うためのリンク集

Strengthの詳細分析

第3回の記事でGeneralized Strengthを導入しましたが、そのパラメータを変えた時の画像生成の影響について詳細な分析は行っていませんでした。そこで、今回、一部のパラメータについて突っ込んだ分析を行ってみました。

下絵

下絵は前回と同じ透過PNGを使っています。

# スクリプト(5-1)
X, Y = 1.0, 0.4
images = pipe(
    initialize=ByImage(
        image="schoolgirl.png",
        strength=[strg(0.9, level=X), strg(0.7, level=Y)],
    ),
    iterate=[
        Layer(
            prompt=("high school, school ground, school building, cherry tree, "
                    "blue sky"),
            negative_prompt="1girl",
        ),
        Layer(
            prompt="1girl, solo, high school, school uniform",
            negative_prompt="",
            mask_by="schoolgirl_mask.png",
        ),
    ],
    num_steps=30,
    size=(512, 512),
)

スクリプトは、前回のスクリプト(4-2)のレベルをXとYというパラメータに置き換えたものを使っています。Strength=0.9に対応するレベルをX、0.7に対応するレベルをYと置きました。

その上で、X=[1.0, 0.8, 0.6]、Y=[0.4, 0.3, 0.2, 0.1]の範囲で変化させて、すべての組み合わせで画像生成を行って比較をしてみました。

生成した画像は、上段の行にX=1.0、中段にX=0.8、下段にX=0.6を並べ、左の列から順にY=0.4, 0.3, 0.2, 0.1の順に並べています。こうすることで、左上に行くほど下絵の影響が強くなり、右下に行くほど下絵の影響が弱くなります。

画像生成の結果

seed=2895285493

seed=2895285493

パラメータの変化とともに、人物、背景ともに大きく変化しています。しかし、最も下絵の影響の弱い右下の画像でも、下絵の構図は維持されています。

パラメータの変化に伴う画像の変化として、特に分かりやすいものとして、下絵が強くなるほど次のようなことが観察できます。

  • 地面の色合いが茶系になっていく

  • 制服の色の青みが強くなっていく

  • 頭の大きさが大きくなっていく

また、スカートが白くなる変化と、中央上部の突起物については、下絵の何が影響したのか不明です。

seed=3545805225

seed=3545805225

パラメータの変化とともに、人物、背景ともに大きく変化しています。最も下絵の影響の弱い右下の画像では、人物の位置は下絵に従っているものの、背景はかなり変化しています。逆に下絵の影響の強い左上では、人物の造形がかなり潰れています。

背景に出現している不思議な手すりのようなものは、下絵の影響が強いほどむしろ強く出ていることから、下絵の塗りのストロークが解釈されて現れたものではないかと考えられます。

人物の造形は、このseedが最もパラメータの変化を強く受けた画像を生成しています。右下はかなり細かく人物が描かれているのに対し、左上は単色でべったりと塗ったような造形となっています。

興味深い点は、背景は主にパラメータYの値(縦の列)で構図が決まっているのに対し、人物の造形はパラメータXとYの両方(斜めの並び)の影響を受けているという点です。つまり、画像生成の最初期のブレンドのレベルよりも、その後のレベルの方が、背景の構図に強い影響を与えているということです。同様の関係は、先のseedの時にも観察されていました。

seed=2507384059

seed=2507384059

パラメータの変化とともに、人物、背景ともに大きく変化しています。特に背景の変化が顕著です。人物は腕となりうる部分が複数あり、どれが採用されるかがパラメータで変化しているようです。

傾向としては、これまでと同様に縦の列(パラメータY)が背景を中心とした全体的な構図に強く影響を与えるのに対し、斜め(パラメータXとYの組み合わせ)が人物の表情や制服の形状などの細部に影響を与えている様子が見られます。

seed=3125289594

seed=3125289594

人物は造形が崩れてしまったため影響の判断が難しいですが、背景については影響を観察することができます。ここでも、これまでの観察と同様の傾向が見られ、縦の列での類似性が確認できます。

seed=1968230464

seed=1968230464

画像全体が大きく乱れているため、パラメータの影響についての傾向を見出すことが難しくなっています。

左下に近づくほどにベンチに座る黒髪の女子学生を描こうとして、右上に近づくほどに草むらに横たわる茶髪の女子学生を描こうとし、右下には背景に校舎をなんとか見出そうとしており、左上にはなぜか2人目の人物を描こうとしています。

seed=1578222291

seed=1578222291

パラメータの変化とともに背景が大きく変化しています。しかし、人物は右下を除いて大きな変化は見られず、色合いなどの小さな変化に留まっています。

背景の構図が縦の列で類似していることは、これまでの観察と一致しています。

seed=3545805225の時と同様に斜め方向に手すりが出現しているのは興味深い現象です。おそらく、下絵の塗りのストロークの向きが手すりとして解釈されやすいのではないかと思います。

ただ、どちらの場合も、斜め方向の手すりが下絵の影響を強めることで、逆に存在を薄めていくというのは不思議な現象と言えます。この点は、もう少し丁寧に分析すると面白いかもしれません。

まとめ

構図への影響はレベルよりステップ数

構図への影響はパラメータY(縦の列)の単独の影響が強いという観察結果が得られました。これは、画像生成の各ステップにおける下絵のブレンドの強さ(レベル)よりも、下絵のブレンドを行ったステップ数(継続期間)の方が大きな意味を持っているということを示しています。

さらに言えば、画像生成初期のステップでの下絵のブレンドは大きな意味はなく、中盤における下絵のブレンドにのみ意味がある可能性すらあるのではないか、という疑問も生まれます。この点は、今後の分析の課題となります。

細部への影響は加算的?

背景を中心とした大きな絵の構造(構図)と比較して、特に人物に関する細部の書き込みは、パラメータXとYの両方(斜めの並び)の影響があるように見られました。これは、ステップ数が支配的になる構図への影響とは異なり、レベルとステップ数の加算的(積分的)な影響が想起されます。

下絵が雑に描かれたラフなスケッチであることから、生成画像の細部については下絵の影響が少ないほど生成画像のクォリティが向上すると考えられます。そのため、加算的(積分的)な影響を小さく留めることが、画質向上のヒントになる可能性があると考えられます。

下絵のストロークの影響

さらに追加の検討課題として、下絵の塗りのストロークが最終生成画像に意図しない影響を与えている可能性があるということが発見されました。

これは特に校庭のような広い面を塗る時に起きる問題で、斜めのストロークが意味のある模様として解釈されてしまうことがあるという現象です。単に下絵をぼかすといった対応をすると、本当に維持したい下絵の書き込みが同時に消えてしまうので、今後の調査が必要と考えられます。

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