階層マージ記事第二弾!マージモードと算出モードを上手く使いこなそう!(階層マージ中級編)
はじめに
今回は階層マージ中級編ということで、階層マージのマージモード(Merge Mode)と算出モード(Calcutation Mode)について深堀りして行こうと思います。
前回、基礎編の記事はこちら。
こちらの記事の内容が、難なく出来ている前提で解説を進めていきますので、まだの方は基礎編からご覧ください。
では、やっていきます。
前準備
今回使用するマージレシピとプロンプト、モデルを定義します。
この場を借りて、各モデル製作者様に御礼申し上げます。
Model
Model A : lastpieceMix_v1
[Concept : イラスト調]
Model B : BracingEvoMix_v1(佐城郎画 様 [@sazyou_roukaku])
[Concept : リアル調]
Model C : blue_pencil-v8(ぶるぺん 様 [@blue_pen5805])
[Concept : イラスト調]
Merge Weight
0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
Prompt
best quality,absurdres,highres,ultra detailed,detailed background,(1girl,solo:1.5),bobcut,brown hair,[proud],suit,close view,
BREAK
daytime in the city
Negative Prompt
EasyNegativeV2,[:(negative_hand-neg:1.5):19],(worst quality:1.5),(low quality:1.5),(normal quality:1.5),(monochrome),(grayscale),(watermark),(white letters),signature,username,text,error,(nsfw)
Settings
Seed
Merge Mode
マージモードには、以下4種類があります。
Weight Sum(加重補間)
Add Difference(差分補間)
Triple Sum(3モデル加重補間)
Sum Twice(2重加重補間)
一部、Super Merger独自のマージモードもありますので、1つずつ説明していきます。
Calcutation Modeについては後述する為、本項ではCalcutation ModeをNormalで実施します。
Weight Sum(加重補間)
マージ手法としては、最も一般的な方法です。
マージ計算は以下。
$$
A\cdot(1-alpha)+B\cdot alpha
$$
これは、Model AとModel B、2つのモデルに重み付けを与え、加算的にマージする方法です。
model to modelなので、Weightはalphaのみ使用します。
alpha=0.0でModel A、alpha=1.0でModel Bと同一になります。
では、早速X/Y Plotで生成してみましょう。
2.9Dぐらいになりましたね!
かなりリアル系モデルの色が濃く出ました。
加重補間なので、Model Bの比率を多く取ると、結構正直に変化を与えてくれます。
[ メリット ]
Model Aに対して、Model Bが比率的にマージしてくれる為、段階的な変化に長けている
[ デメリット ]
モデル構造の差分を取らないため、冗長的(余剰的)になりやすい
他のマージモードと比べて、大きな変化がしづらい
Add Difference(差分補間)
Add DifferenceもWeight Sumと同様、一般的な手法になりますが、こちらは3モデル必要とします。
Weightはalphaのみ使用します。
$$
A+(B-C)\cdot alpha
$$
Model BとModel Cの差分に対してWeightを積算した上で、結果をModel Aへ加算する手法です。
Weight Sumよりもリアル調が強くなりましたね。
これは、モデル構造の差分にWeightを掛け加算したことによる影響で、差分が顕著に表れてます。
[ メリット ]
Model Aに対して、Model B,Cの差分比率を加算する為、大きな変化を加えやすい
Model Aに対する損失が少ない
[ デメリット ]
モデルの要素をピックアップしづらい
Add Differenceのみで過剰マージをする=過学習様を呈するようになる
これは、差分のみの加算という性質が影響している
Triple Sum(3モデル加重補間)
Triple SumはSuper Merge独自のマージ方法です。
こちらも3モデル使用し、かつbeta weightも使用します。
$$
A\cdot(1-alpha-beta)+B\cdot alpha+C\cdot beta
$$
この手法は、Model Aにalpha及びbetaの差分Weightを積算し、Model B,Cを加算する手法です。
要するに、Weight Sumを3モデルで実現している感じです。そのままですね。
モデルコンセプトが、Model A:イラスト調、Model B:リアル調、Model C:イラスト調なので、Add Differenceと比較すると、比較的リアル感が薄れました。
どちらかというと、Weight Sumに近い雰囲気になりましたね。
[ メリット ]
Model Aに対して、Model B,Cを個別に比率マージしてくれる為、段階的で細かな調整がしやすい
[ デメリット ]
モデル構造の差分を取らないため、冗長的(余剰的)になりやすい
3モデル同時のマージになる為、ある程度慣れを要する
Sum Twice(2重加重補間)
Sum TwiceもTriple Sum同様、Super Merge独自のマージ方法です。
こちらも3モデル使用します。
$$
(A \cdot (1-alpha)+B \cdot alpha) \cdot (1-beta)+C\cdot beta
$$
この手法は、Weight Sumを3モデルで計2回行います。
先に、Model AとModel Bをalpha weightで比率的に加算し、その結果に対して、Model Cをbeta weightで比率的に加算しマージする方法になります。
これは納得の結果ですね。
Model AとModel Bの加算結果に対して、Model Cが最後に影響するので、他のマージモードとは違い、一気にイラスト調に転じました。
[ メリット ]
Model Aに対して、一度にModel B,Cの2モデル分マージしてくれる為、マージの時間効率が上がる
[ デメリット ]
モデル構造の差分を取らないため、冗長的(余剰的)になりやすい
3モデル分のWeight Sumを一度に行う為、変化が取りづらく、扱うには相応の慣れが必要になる
Calcutation Mode
算出モードには、以下5種類があります。
normal(通常)
cosineA(コサイン類似度 ModelAベクトル正規化)
cosineB(コサイン類似度 ModelBベクトル正規化)
smoothAdd(平滑化フィルタ加算)
tensor(テンソル法)
各算出モードでは、使えるマージモードが決まっているものもある為、1つずつ説明していきます。
normal(通常)
[ 使用可能なモード ] 全てのマージモード
通常通りの計算方式で算出されます。
これに関しては、通常のモデルマージの算出方法なので、特筆すべき点はありません。
cosineA(コサイン類似度 ModelAベクトル正規化)
[ 使用可能なモード ] Weight Sum
コサイン類似度を使用した算出方法です。
これは、2モデル間の構造的類似性を考慮しマージされます。
それにより、構造をマージする際に類似性の考慮(=制限)がかけられ、過学習を抑止し、モデル構造の一般化を図ることができます。
cosineAは、Model Aのベクトルを正規化し、Model Bのベクトルの方向性を合わせつつ、Model Aの構造を優先します。
結果的に、出力物はModel Aに近似します。
cosineB(コサイン類似度 ModelBベクトル正規化)
[ 使用可能なモード ] Weight Sum
cosineA同様、コサイン類似度を使用した算出方法です。
cosineBは、Model Bのベクトルを正規化し、Model Aのベクトルの方向性を合わせつつ、Model Bの構造を優先します。
結果的に、出力物はModel Bの要素が多くなります。
smoothAdd(平滑化フィルタ加算)
[ 使用可能なモード ] Add Difference
Median FilterとGaussian Filterの利点を採用した算出方法です。
Median Filterとは、画像ノイズ除去手法の1つです。
対象の画素に対して、周囲の画素の濃度から中央値を算出し、変換するフィルタのことを指します。
Gaussian Filterとは、画像平滑化処理の1つでガウス分布を利用した、ぼかしフィルタのことです。
ガウス分布関数は以下。
$$
h_g (x) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{x^2}{2\sigma^2})
$$
とても簡単に言うと、画像をぼかす処理のことです。
この2つの画像処理技術の利点を生かして、モデルの構造的特徴を算出して、要素を平滑化してマージする方法になります。
また、この算出方法を利用すれば、過学習をある程度抑制できます。
ちなみに、モデル構造の平滑化計算が行われるので、処理自体は重く、処理時間が他の算出方法と比較ならないくらい掛かります。
その点だけは留意する必要があります。
このPlot出力するのに、約30分掛かってます。
それくらい時間が掛かります。
tensor(テンソル法)
[ 使用可能なモード ] Weight Sum
テンソル法では、要素毎に比率分割(α:0.6、β:0.2)してマージを行います。
通常(normal)は比率分割を行わず、加重補間にて加算します。
要素マージ(Elemental Merge)をブロック毎に分割し、マージするイメージの算出方法になります。
おわりに
今回は階層マージ中級編、マージモードと算出モードについてをお伝えしました!
いうて中級編な内容だったかは怪しいですね。
ちょっと内容が濃かったかもしれません…。
マージモードや算出モードは、ぱっと見よく分からなくてなかなか手が出しづらいですが、そこには叡智が詰まった技術が備わっています。
ちなみに私はcosineA/Bをよく使います。
次回、上級編では今回触りしかやっていないtensorの深堀りと、Elemental Mergeについてご紹介する予定です。
是非皆さんも一度、活用してみてはいかがですか?
この記事が参加している募集
よろしければサポートお願いします!✨ 頂いたサポート費用は活動費(電気代や設備費用)に使わさせて頂きます!✨