メインコンテンツへスキップ

かんたん☆コピー機学習法(きっと初級編)

    月須和・那々 (2vXpSwA7)

    はじめに

    はいどうも私だよ、「flat」とかのLoRA作った2vXpSwA7だよ!
    今回はまぁ……私がどうやってLoRA作っているのかとか、その辺さらっと書いてまとめていこうとかそんな感じの試みなんだよ。
    ま、今回の内容はコピー機学習法を知らない人向けの、基本的な流れを書いた記事だから、大体は既にいろんな人が解説してる内容になるとは思うよ。
    あ、最低限LoRAの学習自体は分かる前提で進めるからね!

    LoRAを作る

    1.で、今日は何作るの?

    はーいというわけで、今回作るLoRAのご紹介ですよー。

    画像

    これは適用すると、出力がモノクロに近づくLoRAだね。
    最初だから、作るのが簡単なモノにしてみたんだよ。
    コレ効果弱くて完全にモノクロ化はしないんだけど、出力の調整用としては十分じゃないかな。マイナス適用で色味が濃くなる効果もあるね!
    このモノクロ化LoRAを作りながら、コピー機学習法の基本の流れを説明するよ!

    2.まずは素材の準備からだね!

    じゃあこれからLoRAを作っていくよ!
    まず必要なのは素材の画像だね、これは適当に出力した画像を使うよ。
    てことで今回はコレを使います。(大きさは512px×512pxね)

    画像
    元画像

    そしてこれをモノクロにした画像を用意します。
    画像を編集できるソフトとかでぱぱっとモノクロ化しちゃいましょう。

    画像
    モノクロ化した画像

    今後は元画像を「素材A」、モノクロ化した方は「素材B」と呼ぶよ。
    今回使う素材画像はこの2枚だけ、超シンプルだね!

    さーて次は学習元にするモデルを決めようね。
    まー、といっても基本的にコピー機学習法は何のモデル使っても結果はたいして変わらないんだ。なので素材を出力したモデルとか、普段使ってるモデルでもOKだよ。

    3.コピー機LoRAとコピー機モデルを作るよ!

    ここからは学習回していくよー!
    まずは用意した素材Aをモデルに過学習させていくよ。

    学習時の設定は大体こんな感じ、
    ・dimサイズは16、alphaも16
    ・ステップ数は500
    ・U-Netのみ学習する
    ・オプティマイザーは AdamW8bit でOK
    ・スケジューラーはcosine、Warmup設定不要
    ・学習率は1e-3
    512pxの画像1枚ならコレで学習回せば、ほぼほぼ同じ画像しか出ないコピー機LoRAが作れるよ。まぁもっと設定詰めれるかもしれないけど、別にそこまでギリギリ狙う必要は特に無いしね。

    (7/10 追記)
    ちなみに画像1枚でのコピー機学習法にキャプションは要りません!
    そして素材配置するフォルダ名も素材の繰り返し数だけでOKよ!
    もちろん、この後のモノクロ化LoRA学習もノーキャプションですよ!

    画像
    キャプション要らないしフォルダ名は数字だけでOKよ

    完成したらちゃんと学習出来ているか確認してみようか。
    学習元モデルに出来上がったLoRAを適用して……あ、余計なプロンプトは入れないでね!

    画像
    まさにコピー機

    うん、まごうことなきコピー機LoRAだね!シード値違っても同じ絵しか出ないや。
    じゃあこのLoRAを元モデルにマージしてコピー機モデルを作ろうか。
    コマンドでもSuperMergerでもお好きな方法でマージしてね。

    4.さぁ本命のLoRAを作るよ!

    さてさて~、ようやく本命のモノクロ化LoRAを学習するよ。
    さっき作ったコピー機モデルを元にして、素材Bを過学習させていくよ。
    学習時の設定はさっきと同じ、素材フォルダ指定とLoRAの名前だけ変えればOKだよ!

    学習が終わったら出来上がったLoRAを試してみようか。
    適当なモデルに適用なプロンプトで、LoRA適用してGenerate!

    画像
    モノクロ化LoRAおためし

    おー、ちゃんと色がモノクロに近づいているね!
    ただやっぱり、強度1じゃ完全にモノクロ化はしないかな。
    元素材が1枚だからね、しょうがないしょうがない。

    5.おわりだよおわりっ!はい解散!

    はい、以上がコピー機学習法によるLoRAの基本的な作り方でしたー!
    実際に私がLoRA作る時はもうちょっとこう……色々やってるんだけど、基本的な流れとしては大体コレなんだよ、簡単でしょ?
    ……さーてと、次回は中級編だね!だね!!
    まー中級編の内容はまだ考え中なんだけど、いつも通りLoRA作りながらチマチマ書いてくつもりなんで、しばらく待っててね!






    …あれで終わりだと思ったか?まだあるぞくらえ!

    今回ちょーーーーーーーーーっと今更過ぎる内容な気がしたので、追加でなんか書こうと思う。

    ・つーかそもそもコピー機学習法ってどーいう理屈よ?

    コレはそもLoRAの学習ってどういうコトなんだって話からよ。
    まー超ざっくり言うと、モデルの特徴と素材画像の特徴を比較して、その差を数値化・圧縮して、モデルとは別ファイルにまとめたのがLoRAファイルですね。
    LoRA使用時にはこの差分データを使ってモデル内部の数値を書き換えてるわけです。
    LoRAがそういう原理なら、色々な要素がごちゃ混ぜな素のモデルじゃなくて、「素材A」しか出力しかしないように調整したモデルを土台に、学習したい部分だけがAとは違う「素材B」を学習すれば、余分な要素は学習せず汎用性のあるLoRAが作れるのでは?……という発想で編み出されたのがコピー機学習法。

    ・dimサイズやalphaサイズとか学習率とかその辺について

    今回dimサイズを16にしたのは、素材が512px四方1枚ならそれで十分だから。高dimサイズにしたところで、学習時間とファイルサイズが無駄に増えるだけだからね。
    無論、素材が複数枚あるならdimサイズとかステップ数も増やすぞ、場合に応じて調整するのだ。
    dimとalphaを=にしたのがなんでかってーと、dimよりalphaが小さいと学習率遅いからだよ、その上で学習率をよく使われる1e-4じゃなくて1e-3にして学習にかかる時間を減らす、コレで500ステップも回せば十分学習しきれるからね……それにこれくらいの設定ならオーバーフロー起こしてLoRAぶっ壊れることも多分ないからね。まぁもっと設定詰めれるんだけど余裕をもってこのくらいにしておいた。
    私の使ってるRTX3070なら、学習時間は大体3分ってところ、ラーメンタイマー。バッチ上げればもっと早い、バリカタ。
    この辺の設定詰めてる記事、意外と少ないというか多分解ってないのかな……


    あなたへのおすすめ