見出し画像

階層マージ記事第二弾!マージモードと算出モードを上手く使いこなそう!(階層マージ中級編)

はじめに

今回は階層マージ中級編ということで、階層マージのマージモード(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

Steps: 35
Sampler: DPM++ 2M Karras
CFG scale: 11
Size: 512x768
Denoising strength: 0.55
Clip skip: 2
Hires upscale: 2
Hires steps: 15
Hires upscaler: Latent (nearest)

Seed

Seed : 1390001925
Seed : 1300037413
Seed : 1698067323

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で生成してみましょう。

Weight Sum+Normal

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へ加算する手法です。

Add Difference+Normal

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モデルで実現している感じです。そのままですね。

Triple Sum+Normal

モデルコンセプトが、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で比率的に加算しマージする方法になります。

sum Twice+Normal

これは納得の結果ですね。
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(通常)

[ 使用可能なモード ] 全てのマージモード

通常通りの計算方式で算出されます。
これに関しては、通常のモデルマージの算出方法なので、特筆すべき点はありません。

normal

cosineA(コサイン類似度 ModelAベクトル正規化)

[ 使用可能なモード ] Weight Sum

コサイン類似度を使用した算出方法です。
これは、2モデル間の構造的類似性を考慮しマージされます。
それにより、構造をマージする際に類似性の考慮(=制限)がかけられ、過学習を抑止し、モデル構造の一般化を図ることができます。

cosineAは、Model Aのベクトルを正規化し、Model Bのベクトルの方向性を合わせつつ、Model Aの構造を優先します。
結果的に、出力物はModel Aに近似します。

cosineA

cosineB(コサイン類似度 ModelBベクトル正規化)

[ 使用可能なモード ] Weight Sum

cosineA同様、コサイン類似度を使用した算出方法です。

cosineBは、Model Bのベクトルを正規化し、Model Aのベクトルの方向性を合わせつつ、Model Bの構造を優先します。
結果的に、出力物はModel Bの要素が多くなります。

cosineB

smoothAdd(平滑化フィルタ加算)

[ 使用可能なモード ] Add Difference

Median FilterGaussian Filterの利点を採用した算出方法です。

Median Filterとは、画像ノイズ除去手法の1つです。
対象の画素に対して、周囲の画素の濃度から中央値を算出し、変換するフィルタのことを指します。

The median filter is a non-linear digital filtering technique, often used to remove noise from an image or signal. Such noise reduction is a typical pre-processing step to improve the results of later processing (for example, edge detection on an image). Median filtering is very widely used in digital image processing because, under certain conditions, it preserves edges while removing noise (but see the discussion below), also having applications in signal processing.

出典元:Wikipedia (en) - Median filter

Gaussian Filterとは、画像平滑化処理の1つでガウス分布を利用した、ぼかしフィルタのことです。

ガウシアンぼかし (ガウスぼかし、ガウシアンブラー、ガウシアンフィルター、ガウスフィルター、Gaussian Blur)とは、画像処理においてガウス関数をもちいて画像をぼかす処理である。デジタルカメラの撮像画像などからノイズを除去したり、アンシャープマスク処理、エッジ抽出の前処理などに応用できる。

出典元:Wikipedia - ガウシアンぼかし

ガウス分布関数は以下。

$$
h_g (x) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{x^2}{2\sigma^2})
$$

とても簡単に言うと、画像をぼかす処理のことです。

この2つの画像処理技術の利点を生かして、モデルの構造的特徴を算出して、要素を平滑化してマージする方法になります。
また、この算出方法を利用すれば、過学習をある程度抑制できます。

ちなみに、モデル構造の平滑化計算が行われるので、処理自体は重く、処理時間が他の算出方法と比較ならないくらい掛かります。
その点だけは留意する必要があります。

smoothAdd

このPlot出力するのに、約30分掛かってます。
それくらい時間が掛かります。

tensor(テンソル法)

[ 使用可能なモード ] Weight Sum

テンソル法では、要素毎に比率分割(α:0.6、β:0.2)してマージを行います。

出典元:Super Merger Github - calcmode
https://github.com/hako-mikan/sd-webui-supermerger/blob/main/calcmode_en.md#tensor

通常(normal)は比率分割を行わず、加重補間にて加算します。
要素マージ(Elemental Merge)をブロック毎に分割し、マージするイメージの算出方法になります。

tensor

おわりに

今回は階層マージ中級編、マージモードと算出モードについてをお伝えしました!

いうて中級編な内容だったかは怪しいですね。
ちょっと内容が濃かったかもしれません…。

マージモードや算出モードは、ぱっと見よく分からなくてなかなか手が出しづらいですが、そこには叡智が詰まった技術が備わっています。

ちなみに私はcosineA/Bをよく使います。
次回、上級編では今回触りしかやっていないtensorの深堀りと、Elemental Mergeについてご紹介する予定です。

是非皆さんも一度、活用してみてはいかがですか?

この記事が参加している募集

よろしければサポートお願いします!✨ 頂いたサポート費用は活動費(電気代や設備費用)に使わさせて頂きます!✨