TrainTrainでコピー機Loraで差分Loraを作った話

差分Loraってなに??

左がLoraを当てたイラスト

コピー機Lora、差分Loraと言うのをご存じの方も多いと思いますので、詳しいことは割愛しますが、上記画像のLoraは顔と首の境線を消す謎Loraです。
こういうのを作れます。

作り方

Kohya_ss GUIでも作れますが、TrainTrainというSD web uiの拡張を使った方が楽なので、TrainTrainで説明します。

※Web-UI 1.7.で動作します。最新の1.9でも動作しますが、私の環境では怪しい動作(主に起動時)が起こりますので、1.7を推奨


使い方

①でDifferenceを選択
③Difference_Use2ndPassを選択後、④でプリセットを適用
⑤作成するLoraの名前を入力
⑥チェックを入れるとVRAMの削減になるのでいれる。
⑦Loraを作るベースのモデルを選択。

下部に2nd passがありますので、展開後に【use gradient checkpointing】にチェックを入れる。 他はプリセットのままでOK

2024年6月16日 追記 
~ここから~

公式にあるように、2nd passはdim(network rank)を下げた方が良さそうです。(公式を見てたのに忘れてた)
dimを4にしてalpha(network alpha)を2にした方が良さそうですね。
(dimを下げると単体では効きが弱くなりそうな気がするので、上手くいかないときはdimとalphaを初期値16と8?戻してみてください。)

~ここまで~

最下部に画像を入れます。
左に変化前の画像を、右に変化後(Loraの適用時になって欲しい画像)を入れます。

これで、OK。

あとは、【Start Training】を押せば、学習が始まります。
出来上がったLoraはLoraのフォルダに入ります。


マージした方がよい話

この方法で作ったLoraは強度を4など強くしないと、良い結果にならない。
正面を向いた画像で作ったLoraは横顔に弱い。
そもそも思ったほどの効果が無い。
などの事がしばしば起こります。

そこで教師画像だけを変えた同じ効果のLoraを複数作り、Loraどうしをマージするとより良いものに仕上がります。

マージに使う拡張はみんな大好き、supermergerです。

おおざっぱな使い方

①supermergerのLoraタブに入る。
②適当なfilename(option)を付ける。(Loraの名前)
③LoRAs on diskからマージしたいLoraを全部選択
④【Merge LoRAs】でマージスタート、完成したLoraはLoraフォルダに。

その他

タグ付け

タグは必要ありません。

教師画像

変化前の画像と変化後の画像は、極端に表現した方が学習しやすいです。

例えば、線を太くするLoraを作る場合は、変化後の画像を欲しい線の太さに描き変えるのではなく、必要以上に太くしたほうが効果的です。

変化前画像と変化後画像の差異を学習しますので、線を太くしたいだけのLoraなのに、線の色まで変えるとそれまで学習してしまいます。

今回はfull bodyとcowboy shotと角度違いのportrait、合計5枚でしました。
背景は単色でもOKだけど、あった方が良い気がする。
単色背景は学習が収束するのが早いし、5枚とも単色背景だとなんだかな~って言う気持ちの問題。

色々な角度やアップ画像、全身画像を用意した方がより安定します。


Forge版 SD web uiについて

Forge版ではTrainTrainを入れると、立ち上がらなかったり、立ち上がっても動作がおかしかったりします。A1111を使いましょう。

必要に応じてBASEを学習しない

network blocks(BASE = TextEncoder)となってますので、TextEncoderを学習しない方が良い場合もあると思いますので、必要に応じてチェックをはずしましょう。

他力本願(プリセットの値について)

train learning rateをもう一桁上げてtrain lr schedulerをcosineじゃなく、constantで良いと思う。train iterationsを300ぐらいに下げて時短になったりしないかな?
だれか試してみて教えて。


データ配布

今回作ったLoraと学習に使った画像を入れたデータを配布します。
参考にしてみてください。ちなみにSDXLで作成してます

zipもrarも貼れなかったので、firestrageに貼り付けました。
7日間有効です。(2024/6/16現在 期限切れです。)
https://xfs.jp/eDHW08

いいなと思ったら応援しよう!