B3S
menu close

雑記

【Stable Diffusion】SuperMergerでオリジナルの生成AIモデルを作ってみた


ざわ

公開日:2024/02/07


はじめに

生成系AIが流行していますね。

画像生成系のAIツールとしてはStable Diffusionが有名であり、様々な特徴を別途学習させたStable Diffusion用AIモデルについてもいろんな方が開発されています。

今回はその流行に乗っかりまして、SuperMergerを使ったモデルのマージ(合成)によってオリジナルモデルの作成を試したいと思います。

手順概要

  1. プロンプトの用意
  2. リアル系モデルの用意
  3. アニメ系モデルの用意
  4. SuperMergerによるモデルのマージ
  5. 画像の出力

マージモデルの作成

それではマージモデルを作成していきたいと思います。マージ結果が分かりやすいようにリアル系モデルとアニメ系モデルをマージさせてみたいと思います。

プロンプトの用意

出力結果を比較したいため、プロンプトとSeed値は共通のものを使用します。

プロンプト

ネガティブプロンプト

Seed値

リアル系モデルの用意

リアル系モデルとして「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)」からマージモデルを出力できます。

完成したモデルは他のモデルと同じように使用できます。

参考

とーふのかけら氏「階層マージのやり方ととーふ流のモデル階層マージを徹底解説(階層マージ基礎編)」

https://note.com/konapieces/n/nba04ad7b6b02