見出し画像

差分抽出法によるLoRA


flat LoRAをご存じでしょうか?2vXpSwA7さんのLoRAで結構な人気を博しています。

フラットなLoRAを作り、マイナスによって書き込みを増やすというLoRAです。
しかしながら、SD1系でしか使えないというデメリットが存在します。(2vXpSwA7さん、全部SD2.1 768系用にも作ってくれないかな・・・)
善意の第三者とか、悪魔の証明とか、赤信号みんなで渡れば怖くないので問題は起きないと思いますが、気にする人がいるのも事実でしょう。
一般人消費者なりに、めんどくない範囲でSD2.1 768(以下2系)用にも作ろうと試みました。

flatLoRAですが、文字通りフラットなイラストのアニメとか塗りつぶしとかの素材からのコピー機LoRAで作れそうですね。
でもそんなイラスト持ってないし作るのも面倒だし、自分の興味的に前々から思ってたボケた画像の学習で代用します。
書き込みが多い→ボケていない ⇔ ボケている→書き込みが少ない
みたいな適当理論です。 
中央値平均とかいろいろありますが、画像生成AIはガウスノイズ足していくみたいなのでなんとなくガウスフィルタを適用します。
nijijourneyで生成した画像にガウスフィルタを適用します。適当にsigmaは5くらいにしておきます。

元画像
ガウスフィルタを適用

よくボケてますね。適当に25枚くらいこれを繰り返します。めんどうなので一括でぼかします。chatgptに聞けばpythonとかで作ってくれるでしょう。今回はimagejを用いました。

このまま学習してもいいのですが、画風とか構図とかは同じのほうがよさげなのでそれぞれを学習して差分を取るやり方を思いついたので試そうと思います。「同じ条件にしてdreamboothでボケありとなしでモデル作って差分とかどうかな~」と思っていたら、偉大なるkohyaさんがちょうど似た手法のLoRA版のやり方を呟いていたので使わせてもらいます。

差分抽出法という名前がついているみたいですね。
それぞれ学習して差分を取って0にする感じみたいです。
それぞれ学習して、
kohyaさんのフォルダから以下のような感じで実行すればできます。
(デフォルトのGUIマージだと最小が0っぽい)

.\venv\Scripts\activate
python networks\merge_lora.py --save_to G:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora\BlurLoRA_R4.safetensors --models G:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora\Aik_Blur0LoRA.safetensors G:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora\Aik_Raw0LoRA.safetensors --ratios 1.0 -1.0

以下が結果になります

BlurLoRA_R4

ボケ画像も作れてるし、マイナスでそこそこ書き込みが増えてるんじゃないでしょうか?

モチベーションの増加につながるのでよろしければサポートお願いします。