Stable Diffusionを使ったイラスト作成の記録(20) ~ レイヤー構成を逆にしてみる ~
前回の記事
シリーズ一覧
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
今回試すこと
これまでのレイヤー構成では、描きたいものを初めのレイヤーにおいて、後から画質調整レイヤーを加えるという構成にしていましたが、その逆に、初めに画風レイヤーを置いて、その上に描きたいものを追加するというレイヤー構成を試してみようと思います。
レイヤー構成の変更の動機は、最初のレイヤーでは、プロンプトには描きたいものを指定しているものの、ネガティブプロンプトには画質(画風)をコントロールするためのキーワードが詰まっているため、描画対象と画質(画風)がきれいに分離できていないと感じたためです。
ただし、現状では、この構成は単純なレイヤー構成でなければ、想定外の挙動をしてしまうため、今回は、まずは単純なレイヤー構成で動作確認をしてみます。
スクリプト
今回使うスクリプトは、次のようになります。
# スクリプト(20-1)
negative_quality_tags = """
blurry,
lowres,
duplicate,
morbid,
deformed,
monochrome,
greyscale,
comic,
4koma,
2koma,
chibi,
sepia,
lineart,
sketch,
simple background,
rough,
unfinished,
"""
novel_tags = """
novel illustration,
official art,
"""
sketch_tags = """
colored pencil,
sketch,
"""
# パラメータ(デフォルト値)
until=0.8
strength=0.5
images = pipe(
num_steps=30,
size=image_size,
rand_seed=rand_seed,
initialize=Randomly(strength=using(0.99999, until=1.0)),
iterate=[
Layer(
prompt=novel_tags,
negative_prompt=negative_quality_tags + sketch_tags,
),
SPLayer(
prompt="1girl",
strength=using(1.0, until=until).then(strength),
)
],
)
第19回のものとよく似ていますが、レイヤーの順序が逆になっています。また、2つのレイヤーのネガティブプロンプトが + で文字列結合されています。
描画対象は"1girl"で、プロンプトしかないため、SPLayerで指定しています。strengthは混合割合で、1.0ならばSPLayerのみが使われ、0.0ならばSPLayerは全く使われません。
パラメータはuntilとstrengthが使われ、描画対象SPLayerの混合割合を変更します。untilまではプロンプトに"1girl"のみが使われ、以降はstrengthで指定した割合だけ"1girl"が使われ、残りは画風レイヤーのプロンプトが使われます。
実験結果
実験結果は、上段から下段に向かって、描画対象レイヤーの強さが弱まっていく方向に変化するように並べられています。最上段は全工程にわたってプロンプトに"1girl"のみが使われ、最下段は逆に全工程でプロンプトに"1girl"が使用されていません。
左列は"1girl"の使用割合を下げるタイミング(until)を変化させた画像で、右列は変化後の"1girl"の使用割合(strength)を変化させた画像が並べられています。
seed=1334630829
seed=1124067389
seed=129970857
seed=2895285493
seed=3545805225
seed=1578222291
まとめ
レイヤー構成を逆にしても使用可能
シンプルなレイヤー構成で試した範囲では、画像生成した結果、特に異状はありませんでした。
パラメータの種類によって変化の仕方が変わる
4段目の生成画像を見ると、untilとstrengthを変化させた画像では変化の方向性が異なります。これは、混合割合の値自体よりも、値が変化するタイミングの方が、構図に与える影響が大きいことが原因と考えられます。