見出し画像

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

前回の記事

シリーズ一覧

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

今回の分析の方針

今回は、前回の分析の宿題になった、レベルを途中で変更する効果について深掘りします。

スクリプト

# スクリプト(7-1)
final_strength = strg(0.5, until=0.75)
level, until = 0.0, 0.9
images = pipe(
    initialize=ByImage(
        image="schoolgirl.png",
        strength=[strg(level, until=until), final_strength],
    ),
    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),
)

final_strengthは、前回の分析で選んだそれぞれのseedに対する最適なstrengthの値です。seedごとに変更されます。

今回からstrengthの記法が変更になっています。前回、strg(0.75, level=0.5)と書いていたものが、今回からはstrg(0.5, until=0.75)となります。

level, untilは、レベルを変更する途中までのstrengthの設定値です。levelは1.0, 0.5, 0.1, 0.0の中から、untilは1.0, 0.95, 0.9, 0.85の中から選ばれます。ただし、until=1.0の時は、levelに依らずに前回の画像が生成されます。

Generalized Strengthの概念図

Generalized Strength

生成画像

上段から各行ごとにlevel=1.0, 0.5, 0.1, 0.0と並んでいて、左列から各列ごとにuntil=1.0, 0.95, 0.9, 0.85と並んでいます。左上が最も下絵の影響が強く、左下が最も下絵の影響が弱くなります。

seed=1334630829

seed=1334630829

seed=620416796

seed=620416796

seed=1124067389

seed=1124067389

seed=4114275975

seed=4114275975

seed=1719334863

seed=1719334863

seed=129970857

seed=129970857

まとめ

今回の生成画像を詳細に見てみましたが、途中でレベルを変えても特別興味深いことは起きないことが再確認されたこと以上のことは発見されませんでした。

途中で変えたレベルの影響は質的な変化というよりも量的な変化というように感じられ、同様の変化を均一なstrengthのレベルの微調整で再現可能ではないかと思われます。

結論として、Generalized Strengthは、シンプルな1段階のステップ関数で十分であることが強く示唆されました。

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