[実験レポ] モデル内の各項目の効果をざっくりと調べる

今回は、モデル内に存在するデータの種類ごとにマージを行い、その影響を観察する。
※本記事の内容については検討が不十分だが、一旦は公開しておく。

はじめに

Stable Diffusion のモデル内には色々なキーがあり、それぞれにデータが格納されている。
これらのデータの役割はキー名の末尾を見れば大体わかるのだが、モデルマージ時には特に区別せずに一括で係数をかけている。
しかし、各キーの役割が異なるため、個別に係数をかけて変更することで、役割に応じた変化を及ぼしたマージを行うことができると考えられる。

実験条件

実験の画像生成に使用するプロンプト・生成情報は、以下の通り。

masterpiece, best quality, beautiful anime girl, school uniform, strong rim light, intense shadows, highly detailed, cinematic lighting, taken by Canon EOS 5D Simga Art Lens 50mm f1.8 ISO 100 Shutter Speed 1000
Negative prompt: lowres, bad anatomy, bad hands, error, missing fingers, cropped, worst quality, low quality, normal quality, jpeg artifacts, blurry
Steps: 40, Sampler: Euler a, CFG scale: 7, Seed: 1, Face restoration: CodeFormer, Size: 512x512, Model hash: a9263745, Model: sd-v1-5-pruned

実験のために、MBW を改造して各項目を個別にマージできるようにした Extension を用いる。
マージ時にKeyの確認を行い、指示されたKeyのみをマージするようにした。
基本設定は、presets=ALL_B、base_alpha=0、RestoreFace  あり。
CLIP position_ids は明確化のため "Force Reset"。

画面概観
主要な構成ブロック
transformer 部に内蔵されているKey類
最終的には、Keyは weight と bias に分かれる
両方選ばないと、何もマージされないので注意。
特に記載がない場合は、両方選択している。

実験対象とするKeyは以下の通り

・transformer_blocks
 transformer_blocks は、Merge Only(transformer) のすべてのキーを含む
・attn1
・attn2
・ff
・skip_connection
・weight
・bias

結果

全体概観

まずは、全体の概観を確認する。

実験結果の概観

・大きな破綻は見られなかった
・transfer_blocks, seed=3 は、顔面が上手く描写されなかった
・seed=4 は、人物の描写が小さくなるなどの変化があった

では、一つづつ見ていく。

結果:transfer_blocks

SD1.5
WD1.3
Result of only merge "transfer_blocks"

・seed=1 では、顔立ちに変化が見られた。顔立ちがリアル寄りに描写された。体の向き・服装・髪型には WD の影響が見受けられる。
・seed=2 でも顔立ちがよりリアル寄りに描写された。体の向き・服装・髪型には、WD の影響が見受けられる。(首元のリボン?は SD 側に近いように見えるが)
・seed=3 では、大きく構図に変更があり、向きが左向きになっていたり、顔が正しく描写されないなどの影響があった。
・seed=4 では変化が大きすぎる。共通点として、背景の夕焼けは WD のものに近い。体の向きやサイズ感は SD に近い。

結果:attn1attn2 / attn1 / attn2

SD15
WD13
Result of only merge "attn1" as 100% WD13

seed=1 では、構図は SD に近い。髪色・服装は SD/WD のどちらとも異なる
seed=2 では全体にアニメ調に変化している。
seed=3 ではややリアル調のままで、肌感に変化がない。
seed=1,2,4 では髪色に変化が見られ、合わせて服装も変わっている。
全体に体の向き・角度・表示サイズ・ポーズなど、大きく変化が見られた。

Result of only merge "attn2" as 100% WD13

att2 は、さらに解釈が難しい。
seed=1 は明らかにリアル調へ振れた。ポーズは WD13 と同様にやや右向きの女性の胸元以上の画像となっており、WDの影響を受けている。髪の色や服装は、SD/WD のどちらとも異なる。
seed=2 も、ほぼ同様。リアル調に振れつつ、WD13 の影響を受けた構図へ変化している。

attn1attn2

結果: ff

ff

seed=1 では顔の造形の改善が見られる(?)リアル度合いが下がったのか、絵としては見られる方向に変化しているように思われる。
seed=2 でも同様
seed=3 でも同様
seed=4 では、顔が画面内に収まるようになった。また、服装はWDのものに寄っている。スカートに入っている白い帯部分はWDと異なるが、WDでシャツが白かったものを引きずった可能性がある。

結果: Skip Connection

skip_conn

結果: Weight

weight

結果: bias

bias

雑談

"Only Weight" マージの結果画像があまりに良かったので、生成例をいくつか。これまでの検証で SD15/WD13 の画像を出しながら(やはり最新のモデルたちとは出力能力に違いがありそうだな)と思っていたが、"Only Weight" マージの結果は思った以上に好みだった。
冷静に出力結果が良いと思った要因を考えてみると、画像がくっきり・はっきりしているから、のようにも思われる。
ただ、同じweightをWD13は持っているわけだから、となるとモデル内でこのweightの能力を抑える作用があり、それによりこの表現力が発揮できていない可能性がある。
(モデルの動作としては十分あり得るのではないかと思っている)

結果まとめ

attn2

全体にリアル調へ振れた。
確認になるが、attn2 に WD13 のデータを 100% マージしている。
すなわち、本来リアルではないWD13 のデータをマージしてリアルに振れているのだから、attn2 はややネガティブに作用している可能性がある。
この作用が「SD15の能力が(邪魔されずに)発揮された」のか「WD13のattn2により、リアル調が強化された」のかは不明。

ff

変化が、興味深い。
顔立ちがアニメ化(これはWDの影響か)したが、服装や顔立ちなどとの整合性が比較的取れていた。

weight

変化もまた、興味深い。
SDでの造形力と、WDの描写力がうまく噛み合った感があった。
依然としてチェリーピックは必要だが、中には非常に良い絵柄を出すことがあった(が、これはWDでも同様かもしれない)

この記事が気に入ったらサポートをしてみませんか?