Stable Diffusionでマージモデルを作成する方法

「Stable Diffusionでこのモデルとこのモデルを組み合わせる方法はある?」

このような疑問をお持ちの方は多いのではないでしょうか?

Stable Diffusionでは、「Checkpoint Merger」から複数のモデルをマージ(融合)することができます。

今回PROMPTYでは、Stable Diffusionでモデルをマージ(融合)するとは何か、Stable Diffusionでマージモデルを作成する方法、Stable Diffusionで作成したマージモデルで画像を生成してみた結果、Stable Diffusionでさらに細かく調整できる階層マージについて解説します。

Stable Diffusionでモデルをマージ(融合)するとは?

Stable Diffusionでモデルをマージ(融合)するとは、複数のモデルを組み合わせて、新たなモデルを作成することをいいます。

後述しますが、Stable Diffusionでモデルをマージする際には、どのモデルをどのくらい重視するのか比率を変更することもできます。

Stable Diffusionのモデルをマージすることによって、自分の好みの画風のモデルを作成して、オリジナリティを出すことができます。

Stable Diffusionのマージモデルを作成する方法

(1)Stable Diffusionを起動し、「Checkpoint Merger」タブを開きます。

(2)マージするモデルを選択します。マージできるモデルは最大3つです。

Primary model(メインのモデル)、Secondary model(2つ目のモデル)、Tertiary model(3つ目のモデル)

今回は、「Brav5」と「MeinaMix」をマージします。(まずは2つのマージからしてみることをおすすめします。)

Stable Diffusionのおすすめのモデルについてはこちらの記事で詳しく解説しています。

関連記事

「Stable Diffusionのモデルは何を使えばいい?」「リアルな画像やアニメ風の画像を生成できるモデルを知りたい!」 このような疑問をお持ちの方は多いのではないでしょうか? Stable Diffusionのモデルとは[…]

(3)「Custom Name (Optional)」にマージモデルの名前を入力します。

今回は、そのまま2つのモデルの名前を組み合わせた「brav5meinamix」にします。

(どのモデルをマージしたのかわかる名前にすることをおすすめします。)

(4)「Multiplierでマージモデルの比率を指定します。

モデルAとモデルBをマージするとき、

「マージモデル=モデルA×(1 – Multiplierの値) + モデルB×Multiplierの値」

となります。

筆者のように数学な苦手な方にわかりやすく説明すると、Multiplierの値を大きくすればするほど、マージモデルのモデルAの要素が小さくなり、モデルBの要素が大きくなります。

M=0の場合  モデルA:モデルB=10:0
M=0.2の場合 モデルA:モデルB=8:2
M=0.4の場合 モデルA:モデルB=6:4
M=0.6の場合 モデルA:モデルB=4:6
M=0.8の場合 モデルA:モデルB=2:8
M=1の場合  モデルA:モデルB=0:10

ちなみに、3つのモデルとをマージするときの計算式は、「モデルA+(モデルB−モデルC)×Multiplierの値」で、モデルBとモデルCの違いをモデルAに追加します。

(5)「Interpolation Method」で補間方法を指定します。

「Interpolation Method」の方式は下記の3つです。

「No interpolation」・・・「補間なし」を表し、モデルの名前やVAEを追加するために使います。モデルのマージは行わないので、Primary modelのみ設定します。

「Weighted sum」・・・2つのモデルをマージします。計算式は「モデルA×(1 – Multiplierの値) + モデルB×Multiplierの値」です。

「Add difference」・・・3つのモデルをマージします。計算式は「モデルA+(モデルB−モデルC)×Multiplierの値」です。

(6)「Checkpoint format」でモデルのファイル形式を指定します。

「safetensors」の方が、読み込みが速いかつ安全性が高いため、「safetensors」を選択しましょう。

ckpt形式は古くて、セキュリティ上のリスクが高いため推奨されません。

(7)「Save as float16」にチェックを入れるとモデルのファイルサイズが小さくなります。

チェックを入れない場合と僅かに生成結果が変わる可能性はありますが、ほとんどデメリットなくモデルの容量を軽くできるためチェックを入れるようにしましょう。

(8)「Copy config from」で、マージしたモデルに元モデルの設定を引き継ぐのか、引き継ぐ場合はどのモデルから引き継ぐのかを指定します。

Stable Diffusion v2系以降のモデルをマージする時に必要な設定のため、v1系のモデルをマージするときはデフォルトのままで問題ないです。

今回は、設定を引き継がない「Don’t」を選択します。

(9)「Bake in VAE」でマージしたモデルにVAEを焼きこむ(含ませる)かどうかを指定します。

個人的に利用するだけなら、「None」(焼きこまない)を選択しましょう。

(10)「Discard weights with matching name」に入力をすることで、モデルから特定の名前を持つ要素を取り除くことができます。

公式には、入力することによる違いはほとんど生じないと書いているので、基本的に無視して大丈夫です。

参考:AUTOMATIC1111/stable-diffusion-webui

(11)これですべての設定が完了しました。

オレンジ色の「Merge」ボタンをクリックし、マージを実行しましょう。

画面右に「Checkpoint saved to C:\Developments\stable-diffusion-webui\models\Stable-diffusion\brav5meinamix.safetensors」(設定したマージモデルの名前.safetensors)と表示されたらマージ完了です。

Stable Diffusionで作成したマージモデルで画像を生成してみた!

ここでは、Stable Diffusionで作成したマージモデルで生成した画像をご紹介します。

設定は下記の通りです。(モデルはそれぞれマージしたモデルを使用)

Sampling method:DPM++ 2M Karras
Sampling steps:30
Batch count:1
Batch size:1
CFG Scale:7
Script:None

①ChilloutmixとMeinaMixのマージモデル

ChilloutmixとMeinaMixのマージモデルを使って、ビールジョッキを持つ女性の画像を生成していきます。※Multiplier=0.5(Chilloutmix:MeinaMix=5:5)でマージしています。

プロンプト:

(masterpiece,best quality:1.4),(shiny skin),detailed skin,detailed face,detailed eyes,1girl,upper body,Japanese idol,extremely beautiful face,smile,looking at viewer,brown hair,wearing a purple cardigan,a girl holding beer mug,at the tavern

ネガティブプロンプト:

(worst quality,low quality:2),(painting,sketch,flat color),monochrome,grayscale,ugly face,bad face,bad anatomy,deformed eyes,missing fingers,acnes,skin blemishes,nsfw,nude,nipples

Chilloutmixで生成した画像 ↓

Chilloutmixは、アジア系の人物のリアルな画像が得意なモデルなので、リアルなビールジョッキを持つ女性の画像が生成されました。

MeinaMixで生成した画像 ↓

MeinaMixはアニメ風イラストが得意なモデルなので、アニメ風のビールジョッキを持つ女性の画像が生成されました。

ChilloutmixとMeinaMixのマージモデルで生成した画像 ↓

今回は、Multiplier=0.5(Chilloutmix:MeinaMix=5:5)と比率が半々なのでアニメとリアルの中間の画風の画像が生成されました。

②Brav5とMeinaMixのマージモデル

Brav5とMeinaMixのマージモデルを使って、パンケーキを食べる女性の画像を生成していきます。※Multiplier=0.3(Brav5:MeinaMix=7:3)でマージしています。

プロンプト:

(masterpiece,best quality:1.4),(shiny skin),detailed skin,detailed face,detailed eyes,1girl,looking at viewer,Japanese idol,extremely beautiful face,girl eating pancakes,smile,at the cafe

ネガティブプロンプト:

(worst quality,low quality:2),(painting,sketch,flat color),monochrome,grayscale,ugly face,bad face,bad anatomy,deformed eyes,missing fingers,acnes,skin blemishes,nsfw,nude,nipples

Brav5で作成した画像 ↓

Brav5はアジア系のリアルな美女の画像が得意なモデルなので、かなりリアルなパンケーキを食べる女性の画像が生成されました。

MeinaMixで作成した画像 ↓

MeinaMixはアニメ風イラストが得意なモデルなので、アニメ風のパンケーキを食べる女性の画像が生成されました。

Brav5とMeinaMixのマージしたモデルで作成した画像↓

Multiplier=0.3(Brav5:MeinaMix=7:3)なので基本的にリアルな感じですが、少しアニメっぽさも加わって、CG感のある画像が生成されました。

③MeinaMixとBrav5とKawaii Realistic European Mixのマージモデル

Kawaii Realistic European MixとBrav5とMeinaMixのマージモデルを使って、スキー場にいる女性の画像を生成していきます。※Multiplier=0.5 MeinaMix+(Brav5−Kawaii Realistic European Mix)×0.5

プロンプト:

(masterpiece,best quality:1.4),(shiny skin),detailed skin,detailed face,detailed eyes,1girl,upper body,extremely beautiful face,a girl skiing,wearing a pink snow helmet and goggles,at the ski slopes with snow,smile

ネガティブプロンプト:

(worst quality,low quality:2),(painting,sketch,flat color),monochrome,grayscale,ugly face,bad face,bad anatomy,deformed eyes,missing fingers,acnes,skin blemishes,nsfw,nude,nipples

MeinaMixで生成した画像 ↓

MeinaMixはアニメ風イラストが得意なモデルなので、アニメ風のスキー場にいる女性の画像が生成されました。

Brav5で生成した画像 ↓

Brav5はアジア系のリアルな美女の画像が得意なモデルなので、リアルなスキー場にいるアジア系の女性の画像が生成されました。

Kawaii Realistic European Mixで生成した画像 ↓

Kawaii Realistic European Mixはヨーロッパ系のリアルな美女の画像が得意なモデルなので、リアルなヨーロッパ系のスキー場にいる女性の画像が生成されました。

MeinaMixとBrav5とKawaii Realistic European Mixのマージモデルで生成した画像 ↓

アニメ風の特徴も残しつつ、アジア系とヨーロッパ系のハーフのような画像が生成されました。

ここまでやってきたように、さまざまなモデル、特に特徴の違うモデルをマージすることによって、自分の好みの画風にすることができます。

ぜひ、いろんなモデルをマージしてみてください!

Stable Diffusionでさらに細かく調整できる階層マージとは

ここまで紹介してきたのは「単純マージ」という、全体的な特徴を一律に混ぜ合わせるマージ方法でした。

この方式では、モデルの全ての特性、例えば背景、顔、構図などが全て混ざり合ってしまいます。

それに対して、「階層マージ」とは、モデルの各特徴を独立した層として認識し、それらを異なる混合度で結合することができる方法です。

これは、モデルの一部だけを重視し、それを他のモデルと融合したい場合に極めて効果的です。

階層マージを用いると、特定のモデルから背景に関する層を強調し、別の人物描画に特化したモデルからはその特性を引き出すといった具体的な調整が可能となります。

この結果、背景と人物描画の両方に優れた新たなモデルを効率的に作り出すことができます。

そのため、階層マージの技法を学ぶことで、自分の好みをより強く反映した、まさにオリジナルのモデルを作り上げることが可能になるのです。

かなり難しい手法になるので今回の記事では解説しませんが、興味のある方はチャレンジしてみてください。

「階層マージ」を行うためには、supermergerという拡張機能を導入する必要があります。

ダウンロードはこちら

まとめ

今回PROMPTYでは、Stable Diffusionのモデルをマージ(融合)とは何か、Stable Diffusionのモデルをマージする方法、Stable Diffusionでマージしたモデルで画像を生成してみた結果、Stable Diffusionでさらに細かく調整できる階層マージについて解説しました。

マージを行うことで自分の好みの画風のモデルを作成することができます。

今回の記事を参考にぜひモデルのマージにチャレンジしてみてください!

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。