こんばんは、スタジオ真榊です。今回は「自分画風LoRA」や「CoppyLoRA」の作り方を踏まえて、普段使いのモデル(Checkpoint)に手持ちのLoRAをマージし、自分好みの画風で生成できるオリジナルSDXLモデルを作る方法について解説していきます。
具体的には「Supermerger」という拡張機能を使って、自分画風LoRAのほか、描き込みの量や線の太さ、タッチなどを指定する各種LoRAを普段使いのモデルに融合(マージ)させ、生成のたびにLoRAを組み合わせなくても、いつでも狙い通りのタッチや「マスピ顔」で生成できるモデルを作ることを目指します。対応するLoRAがあれば、線の太さや描き込み量、目の大きさなども調整できますので、理想の絵作りを探す沼に入ってみましょう。
1.Supermergerとは
「SuperMerger」はStableDiffusionWebUIの拡張機能の1つで、CheckpointやLoRAといったAIモデル同士の「掛け合わせ(マージ)」を効率的に行うためのツールです。マージしたcheckpointをローカル保存する前に、このマージ比率だとどんな画像が生成できるかXYZ plotを使ってテストできるため、ストレージ容量を節約できるのが特徴です。
よく知られたcheckpoint同士のマージだけでなく、checkpointにLoRAをマージすることも可能。例えばAnimagineXL3.1に自分画風LoRAと水彩画風LoRAとオリジナルキャラクターLoRAをの3つをマージすれば、「1girl,zaraki_mina」と入れるだけで自分の好みの画風で水彩タッチのミナちゃんを描いてもらうことができるわけです。
他にもさまざまな便利機能があり、例えば手元のLoRA同士をマージしたり、二つのLoRAの差分を抽出して新たなLoRAを作ったりすることができます。
2.Supermergerの使い方
まずはSDwebUIの「拡張機能」の一覧からSupermergerを探すか、「URLからインストール」欄に「https://github.com/hako-mikan/sd-webui-supermerger」を入力してインストールしましょう。UIを再起動して、画面上部にタブができていれば成功です。
【Forgeユーザー注意】SDwebUI Forgeの一部のバージョン(例えばf0.0.17v1.8.0rc-previousなど)ではSupermergerがうまく動作しない問題が生じています。私の環境では、CheckpointにLoRAをマージしようとしてもエラーが起こってしまう不具合が生じます。2024年8月以降の最新版(Forge v2)、もしくはフォーク版のReForgeでは問題なく動作するようですので、古いForgeを温存している方はご注意ください。
さて、SuperMergerの画面上部から「LoRA」画面を開くと、次の4つのボタン=機能があります。(ボタンなどの色は設定したテーマで変わります、悪しからず)

①Merge to Checkpoint:checkpointAに手持ちのLoRAをマージします。複数のLoRAを一つのモデルに一気にマージすることもできます。
②Make LoRA (alpha*A - beta*B):二つのCheckpointの「差分」を抽出して、その差分の効果を及ぼすLoRAを作ることができます。
③Merge LoRAs:LoRA同士を単純にマージします。一つのLoRAを適用するだけでよくなるので便利ですが、生成のたびにそれぞれの重みを自由に変えて適用できなくなるので、きちんとした製作意図がない場合は無闇に混ぜないほうが良いでしょう。(例:水彩画風LoRA+FlatLoRAで"フラット水彩LoRA"にできますが、塗りの水彩度合い・フラット度合いを個別に調整できなくなります)
④Extract from two LoRAs:同じベースモデルで追加学習された2つのLoRAから共通する特徴(もしくは差分)を抽出して、両方のLoRAの良い部分を兼ね備えたモデルを作るための機能とのこと。【注意】記事執筆時点では、現行バージョンではSDXL用LoRAで使用してもエラーが出るようで、自環境で検証できていません。
3.各パラメータの意味
4つのボタンの他にも、さまざまなパラメータがあります。基本的にデフォルト値のままでも構いませんが、簡単に各パラメータの意味をまとめておきます。

1.same to Strength
LoRAをマージする際に、マージ時の比率が生成時に指定した強度(Strength)と一致するように調整する機能です。ごく簡単に言えば、モデルAに対してあるLoRAを「-0.5」で適用して1girlを生成したとき(PP:1girl <lora:XXXX:-0.5>)と、そのモデルにLoRAを「-0.5」でマージしてPP:1girlのみで生成したときに、同じ画像が生成されるようにするためのものです。
スクリプトの計算式上、通常生成でLoRAを適用した時とマージした時で同じ生成結果にならない仕様だったのを是正するために作られたとのことですが、自環境での検証上ではそうした不具合に遭遇しませんでした(same to Strengthをオンにして作ったモデルでもオフのモデルでも問題なく同じ画像が生成できた)ので、そうした現象が起きたときに使用すればよいかと考えています。
2.overwrite
マージしたモデルを既存のモデルファイルに上書き保存するかどうかを指定する機能。この機能をオンにすると、既にあるモデルと同じファイル名を持つモデルを出力したときに、新しいマージ結果で上書きします。従来のAnimagineにマージ後の新Animagineが上書きされてしまっては困る場合、チェックを外しましょう。(モデル名を別にしていれば上書きされません)
チェックが外れていれば、同じファイル名で出力しようとしても「Output file (G:\Data\Packages\Stable Diffusion WebUI\models\Stable-diffusion\XXXX.fp16.safetensors) existed and was not saved」と表示され、上書きされません。(モデルも保存されません)
3.metadata
LoRAを出力する際、メタデータ(モデルに関連する情報)をどのように扱うかを指定するオプションです。作ったLoRAを配布しない場合はあまり気にしなくてOK。checkpointにLoRAをマージしたときのメタデータは保存されない模様?
・create new:新しいメタデータを作成します。LoRAやモデルに必要最低限の情報を持つ新しいメタデータが作成されます。dim、アルファ値、ベースモデルのバージョン、ファイル名、ネットワークタイプといった基本情報が記載されます。
・create new without output_name:「create new」と似ていますが、出力ファイル名に関する情報を含まない新しいメタデータを作成します。
・merge:既存の複数のLoRAのマージする際に、メタデータも統合します。複数のLoRAを統合する際、それぞれのメタデータがまとめられ、一つのメタデータとして保存されます。
・save all:LoRAやモデルに関連するすべての情報が保存されます。
・use first lora:最初に選択したLoRAのメタデータをそのままコピーします。複数のLoRAを扱う場合でも、メタデータは最初のLoRAに基づいて作成されます。








