雑記
【Stable Diffusion】SuperMergerでオリジナルの生成AIモデルを作ってみた
ざわ
公開日:2024/02/07
はじめに
生成系AIが流行していますね。
画像生成系のAIツールとしてはStable Diffusionが有名であり、様々な特徴を別途学習させたStable Diffusion用AIモデルについてもいろんな方が開発されています。
今回はその流行に乗っかりまして、SuperMergerを使ったモデルのマージ(合成)によってオリジナルモデルの作成を試したいと思います。
手順概要
- プロンプトの用意
- リアル系モデルの用意
- アニメ系モデルの用意
- SuperMergerによるモデルのマージ
- 画像の出力
マージモデルの作成
それではマージモデルを作成していきたいと思います。マージ結果が分かりやすいようにリアル系モデルとアニメ系モデルをマージさせてみたいと思います。
プロンプトの用意
出力結果を比較したいため、プロンプトとSeed値は共通のものを使用します。
プロンプト
1 |
master piece , best quality, 1girl, standing, looking at viewer, in tokyo |
ネガティブプロンプト
1 |
nipple,(manicure:1.2),(worst quality:2),(low quality:2),(long neck:2),(undressing:1.5), |
Seed値
1 |
3622325687 |
リアル系モデルの用意
リアル系モデルとして「chilled_remix_v2」を使用することにしました。
chilled_remix
https://huggingface.co/sazyou-roukaku/chilled_remix
出力
(別シード値)
アニメ系モデルの用意
アニメ系モデルとして「AnzuMix」を使用することにしました。
AnzuMix
https://civitai.com/models/130553/anzumix
出力
(別シード値)
SuperMergerによるモデルの単純マージ
まずは単純に1つのアルファ値のみでマージしてみたいと思います。
マージパラメータ
パラメータ設定後、下記のボタンを押すとマージと画像生成が行われます。
画像の出力
背景や服装はリアル系っぽい感じになりましたが、顔と手先はややアニメ系になっていますね。
SuperMergerによるモデルの階層マージ
階層マージについて
Stable Diffusion用のモデルにはいくつかの層で構成されていますが、特定の層をどの程度強めにマージするかといった調整も可能です。
「どの層がどの部位に影響が出るか」については下記のサイトが参考になります。
とーふのかけら氏「階層マージのやり方ととーふ流のモデル階層マージを徹底解説(階層マージ基礎編)」
https://note.com/konapieces/n/nba04ad7b6b02#45b9fe19-9b4a-4ce9-a30a-53a0610c8e44
階層マージモデルの作成
階層マージを行う際は下記の「use MBW」にチェックをいれます。
各層のウェイトは「Merging Block Weights」にて設定します。
今回は顔だけをもう少しアニメ系にしたいと思いますので、IN02, IN04,IN05のパラメータを変更していきます。(アニメ系モデル側に寄せてます。)
マージ実行と画像の出力
顔だけをもう少しアニメ系にしたかったのですが、背景や足のほうが変化量が大きいですね。
上記解説サイトの解説にもありますが、「U-Net各レイヤ影響 概略」は目安であり、学習方法などによって左右されるため、今回のモデルではこの通りとは行かないようです。
出力結果の比較
今回の例だと、IN02, IN04,IN05のパラメータは顔よりも背景や足に与える影響が大きそうです。
モデルの出力
パラメータの調整が終わったらモデルを出力してみましょう。
「Save current merge(fp16 only)」からマージモデルを出力できます。
完成したモデルは他のモデルと同じように使用できます。
参考
とーふのかけら氏「階層マージのやり方ととーふ流のモデル階層マージを徹底解説(階層マージ基礎編)」