複数のモデルをマージ(融合)させてオリジナルモデルを作ろう
前略AIの話です。
今日は学習モデルのマージをしましょう。これはもうものすげー簡単なので、AI絵環境をローカルで構築しているなら5分で出来ます。
マージとは
AI絵の界隈におけるマージとは、学習モデルを任意の配分で合体融合させて新しいモデルを作成する技術のことです。
一から絵を学習させて完全オリジナルのモデルを作ることはできなくても、既存のモデル同士を組み合わせて、それぞれのいいとこ取りをしたモデルを作ってやろうぜ!というのがマージ。
階層マージ
より詳細にモデルの複合を行う技術のこと。私もサッパリなので今回は触れません。
どうやら学習モデルには「細部の仕上げ」「構図」「塗り」など要素ごとに『階層』が設定されているらしく、細部はこのモデルで、塗りはこのモデルで、構図力が欲しいからこの階層はこのモデルを…みたいなことが出来る…らしい?
マージのやり方
やり方は超簡単。1111版ならExtensionすら不要で、デフォルトでマージ機能が実装されています。
上のタブから【Checkpoint Merger】を開き、複合させたいモデル1を【Primary model (A)】で、モデル2を【Secondary model (B)】で選択します。
複合の配分は【Multiplier (M)】で選択します。
計算式は上に書いてある通り「A * (1 – M) + B *M」。
このスライダーで0.3を選んだ場合、モデルAが70%、モデルBが30%の割合でマージされます。
他、【Checkpoint format】は軽量で動作の早いsagetensorsに、【Save as float16】にチェックを入れたら【Merge】を押します。
作業はこれだけ。
早ければ2、3分でマージが完了し、
stable-diffusion-webui/models/Stable-diffusion |
---|
に自動生成されます。
出来上がったらtxt2imgで試してみましょうね。
さっそく試してみる
というわけで、初のマージで試してみたのがこれ。
【AbyssOrangeMix:0.6】×【pastelmix:0.4】でマージしてみました。
AbyssOrangeはとてもレベルの高いモデルですが、線が荒いことがたまにあるので、そこをpastelmixの淡い雰囲気や塗りで軽減できないかと思ってやってみたものです。
透明感がありつつ、pastelmixでよくある雰囲気優先の人体崩れも起きておらず、かなり理想的な結果。
ちなみにAbyssOrangeMix単体だとこんな感じ。
モデル以外同じパラメータで生成したものです。
先日のcannyの画像作ったときも起きたけど、AbyssOrangeMixは塗りが重厚なのもあって、絵が重たい印象になってしまいますね。
pastelmix単体だとこう。
雰囲気こそ素晴らしいけど、下半身が2つに枝分かれしていたり、顔がきちんと描画されていなかったりと、単体で見ると惜しい点が多い。
更にマージしてみる
【最初にマージしたモデル:0.8】×【Basil mix:0.2】でマージしたもの。
実写系のモデルを組み合わせただけあって、デフォルメが多少軽減されて線が精細になり、塗りが安定した気がします。
背景がより現実的なものになったのも大きい。
前のモデルの背景絵は、窓の手前それ何がどうなってんの?という雰囲気背景でしたが、今回はきちんと窓枠が描かれています。
同じPrompt、別のSeed値で生成したもの。
頭身高めでリアル寄りの画風になりましたね。髪の塗りにまだかすかにAbyssOrangeMixの遺伝子を感じる。
更に更にマージしてみる
【2番目にマージしたモデル:0.7】×【Anything V3.0:0.3】でマージしたもの。
リアル寄り画風になったら今度はデフォルメさせたくもなるのが人のサガということで、Any3.0もマージしてみました。
髪のハイライトがすごく良くなった一方で、背景にあった色々なオブジェクトがさっぱり消えてしまいました。
同じPrompt、別のSeed値で生成したもの。
顔はすごい良いですが、指が怪しいのと背景も椅子と床が融合している感じ。
髪のハイライトはマジで良いですね…すごく綺麗に白飛びしてて綺麗だ。足ふっと。
更に更に更にマージしてみる
【3番目にマージしたモデル:0.5】×【Basil mix:0.5】でマージしたもの。
これは極端な結果になるだろうなと思ってやって、実際そうなったもの。
写実感とデフォルメのバランスが取れておらず、ちょっと不気味の谷系の違和感が先立ちますね。
実写系モデルだけあって、制服の塗り・質感は抜群なんですが。
やりすぎたか、と反省して7:3で再マージしたもの。
これくらいならアリかなあ。
ただこれも背景があらかた吹き飛んで、情報量が減ってしまっています。
Any3.0追加して以降こんな雰囲気ですね。全体の21%しかAny3.0の影響力は無いはずなんですけど。
更に更に更に更にマージしてゴールしたモデル
今回私がゴール地点としたのはこちら。
【2番目にマージした【最初にマージしたモデル:0.8】×【Basil mix:0.2】のやつ:0.75】×【7th_anime_v3_C:0.25】でマージしたもの。
配分で言うと
AbyssOrangeMix:36%
pastelmix:24%
Basil mix:15%
7th_anime_v3_C:25%
でいいのか?
今までのモデルはどれも良かったのですが、その中で唯一欠けていた「主線」を強調したモデルに仕上がりました。
髪の分かれ目やセーラー服の胸当てでさり気なく線が主張しているのがとても私好み。
背景は小物こそ減ったものの、窓枠・カーテンに矛盾はなく、両サイドに置かれた額縁入りの絵画は良家の子女って雰囲気を演出しています。
すごくいい雰囲気になったので、飽きるまではこのモデルを使って生成させてみようと思います。
髪の流れが房単位でしっかり描かれていますね。
こういうパーツ描画に強めの黒を使ってくれるのがすごい好みです。7th_anime_v3_Cに感謝。
あっけないくらい単純な操作・短い時間で好みのモデルが作成できてしまいます。
ちなみに今回最後のモデルに行き着くまでに私がかかった時間は25分でした。
土日はまたControlnetで遊ぶ記事が書けたら良いなあと思ってます。ではまた。