Stable Diffusionを使ったイラスト作成の記録(7) ~ 下絵のブレンド方法の詳細分析 その3 ~
前回の記事
シリーズ一覧
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
今回の分析の方針
今回は、前回の分析の宿題になった、レベルを途中で変更する効果について深掘りします。
スクリプト
# スクリプト(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の概念図
生成画像
上段から各行ごとにlevel=1.0, 0.5, 0.1, 0.0と並んでいて、左列から各列ごとにuntil=1.0, 0.95, 0.9, 0.85と並んでいます。左上が最も下絵の影響が強く、左下が最も下絵の影響が弱くなります。
seed=1334630829
seed=620416796
seed=1124067389
seed=4114275975
seed=1719334863
seed=129970857
まとめ
今回の生成画像を詳細に見てみましたが、途中でレベルを変えても特別興味深いことは起きないことが再確認されたこと以上のことは発見されませんでした。
途中で変えたレベルの影響は質的な変化というよりも量的な変化というように感じられ、同様の変化を均一なstrengthのレベルの微調整で再現可能ではないかと思われます。
結論として、Generalized Strengthは、シンプルな1段階のステップ関数で十分であることが強く示唆されました。