「Checkpoint Merger」をわかりやすく解説ー複数のモデルから新たなモデルを作る【Stable Diffusion】
Stable diffusionの「ControlNET&拡張機能講座」第22回目。複数のモデルをマージ(融合)して、新たなモデルを作り出す「Checkpoint Merger」をわかりやすく解説していきます。
そんなわけでさくっとやり方を説明していきましょう。前回の「「Dynamic prompts」をわかりやすく解説ーワイルドカードでランダムキャラ作成」は以下のリンクから。
「Checkpoint Merger」の使い方
「Checkpoint Merger」は最初から入っているので、導入の必要はありません。
2種類のモデルのマージ
「Checkpoint Merger」タブに移動すると、「Primary model (A)」「Secondary model (B)」「Tertiary model (C)」が一番上にあります。ここでモデル(最大3種類)を設定します。それぞれクリックすると、現在導入しているモデルの一覧が出てくるので、最初は2種類をマージしますので、適当にAとBにモデルを設定しておいてください。
その下の「Custom Name」は出力されるマージモデルの名前です。わかりやすい名前を適当につけてください。考えるのが面倒だったら「test」でもいいです。
つぎに「Multiplier (M) 」ですが、これは重みですね。
たとえば0.3にした場合、Aの重みは0.7、Bの重みは0.3になります(合計して1)。Aの重みが0.3ではないので注意してください。
重みをおなじにしたければ、0.5にすればいいですね。
その下の「Interpolation Method」は、2種類のマージをするので「Weighted sum」を選択。ちなみに「No interpolation」は1つのモデルにVAEをマージするだけのもの、「Add difference」は3つのモデル用です。
「Checkpoint format」は、ほとんどの有名モデルが「safetensors」なのでそれを選択。
「Copy config from」はモデルのコンフィグをコピーする項目なので、「A, B or C」のままで。
「Bake in VAE」はVAEもマージするかどうかなので「NONE」で。
あとは一番下の「Merge」ボタンをクリックするだけです。
終わったら、モデルを選ぶ欄にマージモデルが追加されているので、いつものように利用すればいいだけです。
出来上がったのがタイトルの画像ですね。アニメ調のモデル(左)と、実写寄りのモデル(中央)を0.5のウェイト(重み)で組み合わせた結果、その中間ぐらいのモデル(右)ができあがっているのがわかるかと思います(すべておなじシード値とプロンプト)。
性質の違うものどうしを組み合わせたほうが結果が顕著ですね。
3種類のモデルのマージ
次は3種類に挑戦してみましょう。
といってもやることはほぼ同じで、「Checkpoint Merger」で3つのモデルを設定します。A,B,Cに適当に設定してください。
「Interpolation Method」は、「Add difference」を選択。
「Multiplier (M) 」は「A+(B-C)×M」のMの重みになります。
わかりやすくいうと、「BとCの差分に重みをつけて、Aとマージする」という意味ですね。
あとは一番下の「Merge」ボタンをクリックするだけです。
正直2つだけでやったほうが結果もわかりやすいと思います。
3つやるばあいは、まずAとBをマージして、その結果にCをマージみたいに2回に分けてやったほうがいいでしょう。
作ったモデルを消す
つくったモデルは、いつもモデルを入れているフォルダに自動的に入ります。Stable Diffusionをインストールしたフォルダの
\stable-diffusion-webui\models\Stable-diffusion
の中ですね。ふつうに削除すればOKです。起動中はモデルのリロードを忘れずに。
まとめ
そんなわけでモデルをマージする「Checkpoint Merger」でした。
使ってみると案外簡単なので、「このモデルとこのモデルを合わせたらいいものできそう」と思ったときにマージしてやるとよいでしょう。
処理も速いので、気軽にできるのがいいですね。
それではまた次回の講座でお会いしましょう。【追記】次回「「mediapipe_face」をわかりやすく解説ー表情を利用して画像生成」できました。以下のリンクから。