自己流/ SDXL:Pony モデル作成でのコツ
初投稿します
Novaシリーズを作っているモデル作成グループTeam-C所属Crodyです
この記事では自分がモデルを作るときに何をしているかを書き込みます
前書き
ところで誰という方も多いと思うので今まで作ったモデルの中から厳選して画像を張ります
最近だとFluxやSD3などが出てきており精度が高まっていますが、モデルサイズ問題が解決しておらず現状ではSD1.5/SDXL/Ponyが一番良いとされています
自分はFluxへの参入はtorchがfloat8(torch.float8)に完全対応したらと決めています
それまではしばらくPonyに専念していきます
記事を読むにあたっての環境構築
今回の記事ではkaggle上でのGPU環境下でマージを行なっております
あらかじめアカウントを作っておきましょう
Kaggle
今回マージするために使用するツールはオリジナルマージキットのChattiori-Model-Merger(以降マージャー)です
こちらからインストール
この記事では簡易PythonソフトUniversal-Model-Merge-Scripter(以降スクリプター)を使う時の構文を記していきます
こちらからインストール
スクリプターを使えばtxtファイルからJupiter Notebookを直接作れるのでおすすめです
モデルインストール系のスクリプター構文
スクリプター上でモデルをダウンロードする時は
(チェックポイントモデル):+モデル名, リンク
(LoRA/LyCORISモデル):+モデル名, リンク, %LR
スクリプター上でモデルを消去する時は
-モデル名
モデルの枝切り(Prune,PR)をする時は
PR モデル名 枝切り後名
と書きます
Ponyの特徴と懸念点
Pony系の特徴として次のことが挙げられる
プロンプトに対する柔軟性が高い
スコアや絵の特徴で幅広い画風ができる
背景が苦手
リアル系になると顔パターンが少ない
今自分がやっているのは後半二つの克服、そのために使う方法がDAREマージと階層マージです
今回はそれ以外にもよく使っているマージ法も紹介します
マージ方法
Weighted Sum / Sum Twice / Triple Sum
Weighted Sum(WS)はおそらく一番シンプルなマージ方法で、二つのモデルを合わせて1になるように混ぜます
例えばモデルAをモデルBと7:3で混ぜ、モデルAB
を作る時は
(スクリプター構文): CM A + B 0.3 AB
と書きます
Sum Twice(ST), Triple Sum(TRS)は三つのモデルを混ぜる方法で、前者はWSを二回分後者は全てを足して1に考えます
モデルA,B,Cをアルファ0.4,ベータ0.3で混ぜてモデルXを作る時
ST(スクリプター構文): CM A + B +S C 0.4 0.3 X
>> X | A:B:C = 0.42:0.28:0.3
TRS(スクリプター構文): CM A + B +T C 0.4 0.3 X
>> X | A:B:C = 0.3:0.4:0.3
となります
Add Difference
Add Difference(AD)はベースに他のモデル二つの差をマージする方法で、ベースは濃度が変化しないという特徴があります
ベースをA, BからCを引いた差を0.3でマージする場合
(スクリプター構文): CM A + B - C 0.3 X
となります
DAREマージ
DAREマージはエンコーダの違う2つのモデルをU-netを用いてマージする方法で、SDXLとPonyのように構造が一緒だが互換性の無いモデルをマージするのに有効的です
(スクリプター構文): CM A +D B 0.3 0.1 AB
(前の数字は濃度、後は近似度合を表す)
※階層マージで組み合わせる場合はどの階層も1に設定しないようにする(インプットができなくなるため)
またベースを0にしないとエンコーダが狂うので注意
例えばPonyモデルを作る場合はベースにPony,組み合わせるモデルをSDXLにするとできます
階層マージ
背景や顔パターンのみを変えたい時は階層マージを用います
(スクリプター構文では数字の箇所を以下の20個の値を"0,0.1,0.2,…0.3,0.1"のように"で囲んだものと入れ替える)
各階層は次のようになっています
BASE: エンコーダ、基本0
構造ディテール系
IN0:輪郭、コントラスト、指
IN1:背景、距離感、衣装
IN2:ボディ構造
IN3:ボディ構造
IN4:人物構図、設計、衣装
IN5:人物構図、設計、顔
トーン、構図系
IN6:衣装
IN7:人物・身体構造描写
IN8:質感、立体感
中間総括
MID:中間濃度(見た目をどちらに近づけるか)
構造系
OUT0:腹、腰、顔の特徴、目、年齢
OUT1:上半身、顔の形
OUT2:ボディ、顔基礎、鼻、耳
OUT3:体色、口、顎
テクスチャ系
OUT4:全体、照明
OUT5:全体、照明
OUT6:輪郭
OUT7:全体の色感、輪郭の混合状態
OUT8:出力、全体輪郭、色感
LoRAマージ
LoRAをモデル内に混ぜる方法(LB)です
複数のLoRAを混ぜることができますが混ぜた後は必ず枝切り(PR)をしましょう
モデルAにLoRA Pを0.2, Qを0.3混ぜる時
(スクリプター構文): LB A P:0.2,Q:0.3 X
実践例
アジア系
+YB, https://civitai.com/models/409856/yaminabepony?modelVersionId=735173
+AB, https://civitai.com/models/681726/or-pony-asian-beauty?modelVersionId=763034
+X9, https://civitai.com/api/download/models/163192?type=Model&format=SafeTensor&size=full&fp=bf16
CM YB + AB 0.3 PonyAsian
-YB
-AB
CM PonyAsian +D X9 "0,0,0,0,0,0,0,0,0,0,0,0.1,0.4,0.5,0.3,0,0,0,0,0" AsianTest
-X9
結果
(初公開)Nova Animal V2
+HY, https://civitai.com/models/125492/haydens-yiffmix?modelVersionId=855162
+NF, https://huggingface.co/Chattiori/ChattioriMixesXL/blob/main/NovaFurryV4.safetensors
+DR, https://civitai.com/models/644327/disgustinglyreal
+AN, https://civitai.com/models/145820/anthromerge-xl
+NA, https://huggingface.co/Chattiori/ChattioriMixesXL/blob/main/NovaAsianV34.safetensors
+NR, https://civitai.com/models/453428/nova-reality?modelVersionId=839396
+FR, https://civitai.com/models/484952/furryfication-slider-pony, %LR
+FF, https://civitai.com/models/488546/fluffy-fur, %LR
+SC, https://civitai.com/models/488321?modelVersionId=543249, %LR
CM NA + NR 0.3 _A
-NA
-NR
LB _A FR:1.3 _B
-_A
PR _B _C
-_B
CM HY + NF 0.25 _D
-HY
-NF
CM DR + AN 0.35 _E
-DR
-AN
CM _D +D _E 0.35 _F
-_D
-_E
CM _F + _C 0.3 _G
-_F
-_C
LB _G FF:0.3,SC:0.3 _H
-_G
-FF
-SC
PR _H _I
-_H
+RP, https://civitai.com/models/139565?modelVersionId=294470
CM _I +D RP "0,0.45,0,0.3,0.3,0,0,0,0,0.2,0.4,0,0,0,0,0,0,0,0,0,0.4,0.8,0.8,0.8,1,1" _J
-_I
-RP
LB _J FR:0.6 _K
-_J
-FR
PR _K NovaAnimalV2
-_K
※NovaAnimalV2作成時に留意したポイント
NovaFurryとの区別化>>アニメ系にしない
鮮明な毛質とコントラスト・色感
写真で撮ったかのような見た目>>2.8D~リアル系