Stable Diffusionで画像を生成するのに欠かせない「モデル」ですが、画像の生成をする際に、こんな疑問はありませんか?
「自分の好みのモデルが作れたらなあ」
「Stable diffusionでマージモデルを作ってみたい」
「そもそもマージって何?」
今回は、『モデルをマージ(融合)して新たなモデルを作る方法』をご紹介します。
この記事を最後まで読んでいただくと、自分好みのモデルで一段階レベルアップした画像が生成できるようになります。
Stable Diffusionのマージとは?
Stable Diffusionのマージとは、異なるモデルを組み合わせて新しいモデルを作ることです。
Stable Diffusionのマージモデルを作成する方法
モデルを自分で作るのは、ハードルが高そうに感じますよね?
実は、誰でも簡単にモデルをマージ(融合)することが出来るのでこれから紹介する方法を使って、ぜひ試してみてください。
ここからはモデルをマージするための、以下の9つの項目を順番に解説していきます。
①マージ(融合)するモデルを選ぶ
②マージモデルの名前を設定する
③マージの比率を選択する
④補完の方法を選択する
⑤拡張子を設定する
⑥半精度形式にする
⑦元モデルの設定を引き継ぐか決める
⑧マージモデルにVAEを含ませるか決める
⑨特定の要素を削除する
※モデルの導入方法については、以下の記事を参考にしてください。
マージ(融合)するモデルを選択
Stable diffusionを起動して、「Checkpoint Merger 」を開きます。
次に、マージさせたいモデルを選びます。
メインのモデルを「Primary model (A)」、2つ目のモデルを「Secondary model (B)」に入れてください。
3つ目のモデルがある場合は、「Tertiary model(C) 」に入れてください。
今回は、「yayoiMix_v20」と「kidsMix_v10」をマージしていきます。
「Custom Name」:マージモデルの名前を設定
モデルをマージした後に、新しく作成するモデルに名前を付けます。
「Custom Name」と書いてあるところに、好きな名前を入れてください。
できるだけ、どのモデルがマージされたかわかる名前を付けることをおすすめします。
「Multiplier(M)」:マージの比率を選択
Multiplier(M)は、モデル(A)とモデル(B)の比率を決める重要なところになります。
この数値が小さいほどモデル(A)の要素が大きく、数値が大きいほどモデル(B)の要素が大きくなります。
2種類のモデルをマージするときの計算式は以下のようになります。
マージモデル=モデルA×(1-Multiplier(M))+モデルB×Multiplier(M)
計算式では分かりにくいという方は、以下を参考にしてください。
- M =0 → モデルAが10割
- M=0.3 → モデル(A)7 :モデル(B)3
- M=0.5 モデル(A)5 :モデル(B)5
- M=0.9 モデル(A)1 :モデル(B)9
3種類のマージの計算方法は、モデルA+(モデルB-モデルC)×Multiplier(M)です。
「Interpolation Method」:補完の方法を選択
- No interpolation:1つのモデルの名前やVAEを変更するのに使用します。マージは行いません。
- Weighted sum :2種類のモデルをマージする場合に使用します。
- Add difference :3種類のモデルをマージする場合に使用します。
以上3つの中から自分の作成したいマージモデルに合ったものを選択してください。
「Checkpoint format」:拡張子を設定する
新しく出来るモデルのファイル形式を選びます。
「Safetensors」を選択してください。
ckptは古い形式のファイルになる為、特に理由がなければSafetensorsがいいと思います。
「Save as float16」:半精度形式にする
ここにチェックを入れるとモデルのファイルを小さくしてくれます。軽量化したい方は、こちらにチェックを入れてください。
「Copy config from」:元モデルの設定を引き継ぐか決める
元のモデルの設定を引き継ぐかどうかの項目になります。引き継ぎたい場合はどのモデルから引き継ぐかを選びます。
Stable Diffusion v2.0系以降のモデルをマージするときの項目になります。Stable Diffusion v1.0系のモデルがよくわからなければ、『Don’t』で大丈夫です。
「Bake in VAE」:マージモデルにVAEを含ませるか決める
マージしたモデルに、VAEを含ませるかどうかの項目です。
個人的に使用するものであれば、「None」で大丈夫です。
VAEとは、画質を鮮明にしてくれ、よりクリアな仕上がりにしてくれる機能のことです。
「Discard weights with matching name」:特定の要素を削除する
モデルから特定の名前を持つ要素を削除する項目になります。
基本的には、空欄のままで大丈夫です。
以上ですべての項目が終了したので、最後にオレンジ色の「Merge 」をクリックしてください。
下記のように画面の右側に表示がされれば、マージが完了しています。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
作成したマージモデルで画像を生成してみよう!
マージモデルを使って実際に画像を生成してみます。今回は、違いが分かりやすいように、アニメ系のモデルと実写のモデルをマージしてみました。
モデル(A): yayoiMix_v20
モデル(B): kidsMix_v10
「yayoiMix_v20」を使用して、このような画像が再生できました。
同じ呪文(プロンプト)とネガティブプロンプトを使用して、「kidsMix_v10」で画像を生成しました。
アニメ系のモデルを使用しているため、先ほどの画像とは雰囲気が違う仕上がりになりました。
上記の2つのモデルをマージしてできた画像がこちらになります。
人物の顔に少しアニメの要素が加わりました。
使用した呪文(プロンプト)とネガティブプロンプトは以下になります。
呪文(プロンプト)
((Best quality 1.4, 8K , masterpiece:1.3)), girl 1 , (realistic :1.3) , RAW photo , forest , wearing big hat , long hair , brown hair ,smile
ネガティブプロンプト
((worst quality :1.3 , low quality )) , normal quality , NSFW , missing hand , missing limbs , missing fingers , extra hand , extra limbs , disconnected limbs
【応用編】もっと細かく調整できる「階層マージ」とは
マージの方法には、大きく分けて2つの方法があります。上記で行った「単純マージ」と、「階層マージ」というものになります。
「階層マージ」は、モデルが持つ特徴を層で表し、それぞれの層を掛け合わせ調整することで、より自分ならではのオリジナルのモデルを作ることができるマージ方法です。
「このモデルの○○の要素だけマージしたい」といったように、単純マージに比べより細かくマージする要素を設定できます。
単純マージだけでは物足りない。もっと自分好みのモデルを作りたい。という方は、是非試してみてください。
まとめ
いかがでしたでしょうか?
モデルをマージし簡単に新しいモデルを作る方法について解説してきました!
今回のポイントをまとめると、以下のようになります。
- モデルのマージとは複数のモデルを組み合わせ、新たなモデルを作ること。
- 初心者でも簡単にモデルのマージができる!
- もっと自分好みにしたい人は、階層マージに挑戦!
既存のモデルでは納得いく仕上がりにならないと感じている方は、自分の好きなモデルで是非マージしてみてください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい