【Stable Diffusion】 モデルをマージするCheckpoint Merger

目次

Checkpoint Mergerとは

AUTOMATIC1111には「Checkpoint Merger」というタブがあります.

さて,Checkpoint Mergerとは何なのか?

新しい画像を与えて追加学習するのではなく,既存のモデル(チェックポイント)を合成する機能です

用途としては,追加学習させるほどではないけれども,
少しでもモデルの画風を変えるなどオリジナリティを出したい場合に使用するといった感じでしょうか.

使い方

ここでは,使い方の例として「Anything V3」と「DreamShaper4」をマージします.

手順は下記の通りです.それぞれの意味は後述します.

  1. Primary model (A)にAnything V3を選択します.
  2. Secondary model (B)にDreamShaperを選択します.
  3. Custom Nameに新しいモデル名を入力します.ここではanythigv3-dreamshaperという名前にしました.
  4. Multiplier (M)の数値を選択し,Interpolation Methodを選択.今回は0.3でWeighted sumを使っています.
  5. Checkpointの形式を選択します.基本的にはsafetensorsにしておくと良いです.
  6. Save as float16のチェックを外します.チェックするとデータ数が削減できます.
  7. Baked in VAEをNoneとします.
  8. Mergeを押すと新しくマージされたモデルが生成されます.

モデルのマージが完了するとCheckpointに作成したモデルを選択できるようになります.

Anything V3とDreamShaperと新たに作成したモデルで生成された画像を比較してみました.

いい感じにモデルが混ざったようなイラストになっていると思いませんか?

各項目の説明

Primary model, Secondary model, Tertiary model

マージ対象となるモデルを選択するものです.

Tertiary modelは任意です.選択すれば3種類のモデルをマージすることになります.

Custom Name

任意の出力先モデル名です.

Multiplier (M)

Multiplier (M)はマージする手法ごとに定義されているパラメータです.Interpolation methodでのMに相当します.

マージするにあたり,一番重要なパラメータです.

Interpolation Method

Interpolation Methodはマージする手法です.

2023/04/01時点で,「No interpolation」,「Weighted sum」,「Add difference」の三種類があります.

用途は下記の通りです.

Method説明・用途
No interpolationモデルの名前やVAEを追加するために使われます.
マージは行わないので,Primary modelのみを指定します.
Weighted sum2つのモデルをマージします.計算式は,A * (1 – M) + B * Mです.
Add difference3つのモデルをマージします.計算式は,A + (B – C) * M

Checkpoint format

保存するモデルのフォーマットを決定します.基本的には,safetensorにしておけば安心です.名前の通り安全なファイル形式です.

Save as float16

ファイルサイズを削減するための項目です.チェックを入れるとfloat16で保存され,ファイルサイズが小さくなりますが,結果に影響します.

Copy config from

Configファイルをコピーするための設定です.Configファイルはv1系では不要ですが,v2系の場合は必要になります.

Bake in VAE

Baked in VAEをチェックすることで,VAEをチェックポイントに同梱させることが可能です.

個人使用に限って言えばVAEを同梱させる必要はありませんが,他人に渡すときはVAEを同梱させるのが一般的でしょう.

DreamShaperは,VAEあり(BakedVae)とVAEなし(NoVae)の両方を作成しているので,そのような配布方法もありです.(2023/04/01現在)

Discard weights with matching name

これに関してはあまり情報が見当たりませんでした.いずれ情報が記載されるかもしれないのでGitHubのDisscussionあたりをチェックしておけば良いかもしれません.

まとめ

この記事では,Checkpoint Mergerを使用して,モデル(チェックポイント)をマージする方法を記載しました.

モデルをマージすることで,画風が変化することが確認できました.

マージによる効果が見られた一方で,プロンプトを調整することによりある程度画風も調整できるので,この機能を使いこなすのは難しそうな印象です.

よかったらシェアしてね!
目次