![見出し画像](https://assets.st-note.com/production/uploads/images/127252433/rectangle_large_type_2_12096da0d1343576b4ec501eb5b470e1.png?width=1200)
キミの手で blue_pencil-v11 を作ろう!(Stable Diffusion マージモデル作成の実例)
※ はじめにお読みください
この記事には以下が含まれています。話半分に聞いてください
・著者の妄想
・オカルト
・根拠のない発言
・祈り、願望
この記事では2023年7月を最後に更新が途絶えている Stable Diffusion v1系のモデル blue_pencil シリーズ。その最終版である blue_pencil-v10 に含まれているモデルの紹介、およびそれらを用いたマージの手順を解説します
これを公開することで自分以外も blue_pencil に類似したモデルを作ることが可能となり、新しいヤツを作れという要望を避けられるのではないかと考えました
マージを作業をするための準備
マージには AUTOMATIC1111/stable-diffusion-webui の拡張機能
hako-mikan/sd-webui-supermerger を使います
いつもお世話になっております
blue_pencil-v10 に含まれているモデルたち
まず以下のものをすべてダウンロードします
※ 画像は全てリンク先にあるものです
![](https://assets.st-note.com/img/1704801518808-dTc3uvjKgL.png)
![](https://assets.st-note.com/img/1704801650152-GXoB2vWLXW.png)
![](https://assets.st-note.com/img/1704801931616-Vu6Xir1ZBT.png?width=1200)
・newlifezfztty761 / ColorMagination v1.0
![](https://assets.st-note.com/img/1704802177778-yxnh89uPYg.png)
![](https://assets.st-note.com/img/1704802373981-MZJNnvujaF.png)
・NeatNess / NeatNess Fluffy Fur Mix nebula
![](https://assets.st-note.com/img/1704802507384-9EudeEjEkO.png)
・Lykon / NeverEnding Dream (NED) v1.22
![](https://assets.st-note.com/img/1704802713692-RukcFvQmC0.png)
![](https://assets.st-note.com/img/1704803064158-yoC0Hpoqwx.png)
・ashen-sensored / mzpikas_tmnd_enhanced
高解像度で学習させたモデル。一時期話題になりましたね
(画像なし)
![](https://assets.st-note.com/img/1704803355770-xGjrLRHZTg.png)
何が特徴なのかはわからない
・Luna / Aurora ONE
![](https://assets.st-note.com/img/1704803889827-DSDL6900rQ.png?width=1200)
![](https://assets.st-note.com/img/1704804136920-87Q7pdzd2f.png)
![](https://assets.st-note.com/img/1704804315966-zPo2YwkZsp.png)
さらに LoRA もいくつかマージさせています
・2vXpSwA7 / agomaru, hohoaka, faceage, brighter-eye, sanDka1
・GOOKLE / colored eyelashes v1.0
・chosen / Fantasy World 幻想世界 LORA v1.0
・fitCorder / FuturisticScape (Lora) 未来主义景观 v3
・ashen-sensored / Silicon-landscape-isolation
・ashen-sensored / pikas-lighting-isolation
・Terry9993 / Niji Default style v2.0
・Terry9993 / Niji Cute style v1.0
マージの手順
実際にマージをして blue_pencil-v10 を再現してみましょう
supermerger の使い方については説明いたしません!
(1) OpenNiji-V2 + Openjourney-v4
まず、ベースとなるモデルを作ります
OpenNiji-V2 に Openjourney-v4 と SD1.5 との差を足します
A: OpenNiji-V2
B: Openjourney-v4
C: v1-5-pruned
Merge Mode: Add difference (smoothAdd)
Alpha: 1
use old calc method, fp16, prune, Reset CLIP ids
Openjourney-v4 はSD1.5に対し学習を行ったモデルです(そう書いてある)
なので上記の設定にすることで OpenNiji-V2 に Openjourney-v4 の学習内容がそのまま放り込まれるようなイメージになります
このとき smoothAdd にするとなんかいい感じに足されるらしい
実際そうなのかは知りません
そうなってくれるように祈りましょう
![](https://assets.st-note.com/img/1704886078722-svvzcGM4sY.png?width=1200)
(2) SomethingV2_1 + [1]
SomethingV2_1 に (1) を足します
A: SomethingV2_1
B: (1)
C: v1-5-pruned
Merge Mode: Add difference (smoothAdd)
Alpha: 1
use old calc method, fp16, prune, Reset CLIP ids
OpenNiji-V2はSD1.5に対し学習を行ったモデル
…かどうかはわかりませんが、細かいことは気にしないことにします
こちらもイメージ的には SomethingV2_1 に OpenNiji-V2 と Openjourney-v4の学習内容が足される感じですね
なぜ Weight sum ではなく Add Difference にするのか
それは Weight sum にすると情報量が減る気がして、もったいないような気持ちになるからです
この先もお気持ちによる工程が続くので覚悟しておいてください
![](https://assets.st-note.com/img/1704886194227-s9bqNhR8mT.png?width=1200)
(3) [2] + ColorMagination v1.0
次に (2) と ColorMagination v1.0 を 60%:40% の比率で混ぜます
A: (2)
B: ColorMagination v1.0
Merge Mode: Weight sum (cosineA)
Alpha: 0.4
use old calc method, fp16, prune, Reset CLIP ids
ここまで足してきた (2) と ColorMagination v1.0 を混ぜて雰囲気をかわいい感じに寄せておこうと思ったのかもしれません
Weight sum にする場合に cosineA / cosineB というオプションがあります、それぞれA寄りにするか、B寄りにするかみたいなノリで考えてください
今回の場合はベースは (2) で雰囲気だけ ColorMagination v1.0 に寄せたかったので cosineA にしています
![](https://assets.st-note.com/img/1704886243085-ZHq8RvXQhF.png?width=1200)
(4) Yuzu v1.0 + NeatNess Fluffy Fur Mix nebula
ここで、ベースとは方向性が違うモデルも別に作ります
もう覚えてないけど多分ちょっとセンシティブな感じにしたかったのかもしれない
Yuzu v1.0 に NeatNess Fluffy Fur Mix nebula と SD1.5 の差を足します
A: Yuzu v1.0
B: NeatNess Fluffy Fur Mix nebula
C: v1-5-pruned
Merge Mode: Add difference (smoothAdd)
Alpha: 1
use old calc method, fp16, prune, Reset CLIP ids
NeatNess Fluffy Fur Mix nebula は SD1.5 とかけ離れてるモデルなのは間違いないので差を足したところで意味が分からなくなるだけだと思われます
が、細かいことは気にしないでください
![](https://assets.st-note.com/img/1704886301325-3L9gQ2mzXX.png?width=1200)
(5) [4] + NeverEnding Dream (NED) v1.22
さらに (4) にNeverEnding Dream (NED) v1.22 を 75%:25% の比率で混ぜます
A: (4)
B: NeverEnding Dream (NED) v1.22
Merge Mode: Weight sum (cosineA)
Alpha: 0.25
use old calc method, fp16, prune, Reset CLIP ids
古来からの言い伝えによると、センシティブとリアル寄りのものを混ぜるといい感じになるとされているためです
![](https://assets.st-note.com/img/1704886535701-omDkfFNA2w.png?width=1200)
(6) [3] + [5]
ベースとなるモデル (3) とセンシティブ気味のモデル (5) を 50%:50% の比率で混ぜます
A: (3)
B: (5)
Merge Mode: Weight sum (cosineA)
Alpha: 0.5
use old calc method, fp16, prune, Reset CLIP ids
比率的には 1:1 ですが cosineA にしてあるのでベースモデルの方にかなり寄ります
![](https://assets.st-note.com/img/1704886632738-4DKWspe9BL.png?width=1200)
(7) endlessMixRenatus v1.1 + mzpikas_tmnd_enhanced
そしてここでまた別のモデルを作ります
理由は忘れました。なんか背景とか強くしたかったのかも
endlessMixRenatus v1.1 に mzpikas_tmnd_enhanced と SD1.5 の差を足します
A: endlessMixRenatus v1.1
B: mzpikas_tmnd_enhanced
C: v1-5-pruned
Merge Mode: Add difference (smoothAdd)
Alpha: 1
use old calc method, fp16, prune, Reset CLIP ids
これも例に漏れず謎のマージです
どうしても両モデルの特徴を余すことなく混ぜたかったんでしょうね
その代償として、いわゆる過学習気味な状態となってしまいました
が、まあどうせこの後で薄まるので気にしなくて大丈夫です
![](https://assets.st-note.com/img/1704886675917-iXnzls2jkN.png?width=1200)
(8) [6] + [7]
ベースのモデル (6) と直前に作ったモデル (7) を 75%:25% の比率で混ぜます
A: (6)
B: (7)
Merge Mode: Weight sum (cosineA)
Alpha: 0.25
use old calc method, fp16, prune, Reset CLIP ids
(7) が若干過学習気味なのもあって割合を気持ち低めにしてマージしています
まあなんかいい感じなんじゃない?知らんけど
![](https://assets.st-note.com/img/1704886752886-Yas9lB2MRv.png?width=1200)
(9) [8] + plagion v1.0
(8) と plagion v1.0 を 60%:40% の比率で混ぜます
A: (6)
B: (7)
Merge Mode: Weight sum (cosineA)
Alpha: 0.4
use old calc method, fp16, prune, Reset CLIP ids
plagion v1.0 は他のモデルと系統が違う気がするので、この遺伝子も取り込みたかったんだと思います
![](https://assets.st-note.com/img/1704886865035-ZWwC8eVH47.png?width=1200)
(10) Aurora ONE + Counterfeit-V3.0
マージも終盤に差し掛かってきましたが、ここでまた別のモデルを作ります
調整用のモデルみたいな感じですね
個人的に推している Aurora ONE とド定番 Counterfeit-V3.0 を混ぜます
A: (6)
B: (7)
Merge Mode: Weight sum (cosineA)
Alpha: 0.5
use old calc method, fp16, prune, Reset CLIP ids
両モデルともかなり安定したモデルですが、若干クセつよでもあった気がするので混ぜて薄めておく感じ
なのか?
![](https://assets.st-note.com/img/1704886891280-F1BkzXyo2E.png?width=1200)
(11) [9] + [10]
(9) と調整用モデル (10) を 70%:30% の比率で混ぜます
A: (9)
B: (10)
Merge Mode: Weight sum (cosineA)
Alpha: 0.3
use old calc method, fp16, prune, Reset CLIP ids
この時点でほぼ完成みたいなもんですね
ここだけは真面目にいろんな比率を試してちょうどいい感じの値を探した気がします
![](https://assets.st-note.com/img/1704886953819-vScOQBcIIf.png?width=1200)
ここまでの過程。いらなかった?
(12) [11] + LoRAたち
最終調整として適当にLoRAをマージして自分の好みに寄せます
モデルたちのところにも書いたように、以下の LoRA たちをマージします
agomaru, hohoaka, faceage, brighter-eye, sanDka1, colored eyelashes v1.0, Fantasy World 幻想世界 LORA v1.0, FuturisticScape (Lora) 未来主义景观 v3, Silicon-landscape-isolation, pikas-lighting-isolation, Niji Default style v2.0, Niji Cute style v1.0
ただし、直接 (11) にマージするのではなくちょっとひと手間を加えます
AnyLoRA に対して以下の LoRA たちを Merge to Checkpoint で足します
値は完全に自分の好みの絵になるように決めました
agomaru:1.0,faceage:0.5,brighter-eye:0.15,colored_eyelashes:0.3,fansty world_20230601105102:0.05,FuturisticScape-V3:0.3,Silicon-landscape-isolation:0.4,nijipretty_20230624235607:0.15,Nijicute:0.05,sanDka1:-0.15,pikas-lighting-isolation:0.35,hohoaka:-1.5
☝で作成されたモデルと (11) を trainDifference という方式でマージします
A: (11)
B: (LoRAマージされたAnyLoRA)
C: AnyLoRA
Merge Mode: Add difference (trainDifference)
Alpha: 1
use old calc method, fp16, prune, Reset CLIP ids
trainDifference とはなんかまるで学習を行ったかのような変化が得られるマージ方法らしいです(適当)
普通にLoRAを足すだけでもいい気がしますが、こっちのほうがひと手間加わっていてすごそうな気がしてきませんか?
![](https://assets.st-note.com/img/1704887012904-RtGcYrAdfc.png?width=1200)
完成!
以上が、blue_pencil-v10 の製造工程(の再現)でした
実際の blue_pencil-v10 と比較してみると微妙に差はあるけどほぼ同じ!
![](https://assets.st-note.com/img/1704887061091-tblO6JrE9U.png?width=1200)
blue_pencil シリーズは大体毎回こういう工程を踏まえて作成されています
v6 ~ v9 のレシピは Hugging Face に書いてあるのでそちらを見てね!
マージするときのコツ
ここまで読んできたなら、なんとなく大事なことがわかってきたのではないでしょうか?
そう。一番大事なのは気持ちなんです
途中のマージ比率を見てください。なんと全部キリがいいですね
それはなぜか、キリが良い方が気持ちがいいからです
比率とかは基本的に雰囲気で決めています
そうやって雰囲気で決めた値で適当にマージして、結果を見て 0.05 か 0.1 ずつぐらいずらしてマージして…を何回かぐらい繰り返して「これでよくね?」ぐらいのが見つかったら次に進みます
それはなぜか、こだわりだすとキリがないし時間がかかって大変だからです
そこそこ回数を重ねるマージするときは最後の方だけ真面目にやればだいたい丸く収まります
途中は適当でも不思議といい感じになります
階層マージは難しそう?しなくても別に大丈夫です
どうせ完璧だと思っても3日後にはなんか違くね?ってなります
有名マージモデルを出してる人たちを見てください。無限に作り直してます
まとめ
いかがだったでしょうか?
想像以上に適当な blue_pencil-v10 の製造工程でしたね
このレシピを改変してキミだけの blue_pencil-v11 を作ってくれよな!
自由に後継を名乗ってくれてもいいよ!
おまけ
blue_pencil-realistic-v1 のマージ手順
blue_pencil-v10 をそのままリアル系にできないかと思って作ったやつです
![](https://assets.st-note.com/img/1704891726218-yfOn2aEk6c.png?width=1200)
こちらには blue_pencil-v10 のほかに以下のモデルが含まれています
・sazyou-roukaku / BracingEvoMix v1
と LoRAたち
・jiojioawfa / Asian girls face v1.0
・LEOSAM / LEOSAM's FilmGirl VELVIA 2.0
・eznorb / Retouch - Majic v1.0
こちらは blue_pencil-v10 から階層マージして LoRA を適用しただけです
A: blue_pencil-v10
B: BracingEvoMix v1
Merge Mode: Weight sum (cosineA)
MBW Alpha: 0,1,0.1,0.15,0.25,0.25,0.5,0.75,0.6,0.5,0.5,0.75,0.7,0,0.94,0.85,0.84,0.625,0.315,0.41,0.51,0.45,0.325,0.15,0.2,0
fp16, prune, Reset CLIP ids
この階層マージでできたものにこちらはそのまま LoRA を Merge to Checkpoint します
asianGirlsFace_v1:0.25:A,FilmVelvia2:0.2,RetouchMajic:0.1:B
# ↓ LoRA階層マージのプリセット
# A:0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1
# B:1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0
これだけ!
たったの2工程ですが、構図変えずにリアル系に寄せるっていうのがムズすぎるのと中途半端にリアルにすると顔こわすぎる問題が難問で100倍大変でした