【3月限定】たきなモデル配布とLoRA解説【雑記4】 (Pixiv Fanbox)
Content
支援頂きありがとうございます。雑記続きですいません。次の記事こそは支援者用R18イラスト作りますので少々お待ちください。
追加学習について知りたいというコメントを頂きましたのでざっくりと書かせてもらいます。少し有識者向けになります。記事の最後には昔作った、たきなの追加学習ファイルを配布しますので良かったら読んでみてください。自分は追加学習を安定させるのに1週間ほどかかりましたし、あまり同じスタイルのAI絵師が増えるのも正直嫌なので来月にはこの記事消します…しかしFANBOX始めたばかりですし今月支援してくれた方への感謝も込めてできるだけ詳しく書きます。
追加学習とは?
通常の画像生成モデル単体では版権キャラを出すことが出来ません。初音ミクや霧雨魔理沙、博麗霊夢等は名前を入力すると出てきますが恐らくそれしか出ないぐらい版権キャラに弱いです。画像生成モデルが知らないキャラ、物体、ポーズを覚えさせるのが追加学習です。追加学習には4種類の方法がありますが今回は「LoRA」についての素材選びや学習数値等の解説していきます。
LoRAとは
Dreamboothよりも学習速度が速く要求スペックも少なくて、Textual Inversionよりも精度が高い今人気な学習方法です。自分はLoRAしかやったことがありません😢
学習モデルに覚えさせたい画像や特徴を設定し学習させることで学習モデルの「差分」が生成されます。この差分は学習モデル以外にも使用できるので他者と共有したり色んなモデルに適用させられることもDreamboothより優れています。
LoRAの学習方法
1から話すとかなり長くなるので分かりやすいおすすめのリンク張ります。
https://economylife.net/kohya-lora-install-use/
この方の記事がおすすめです。LoRA導入から学習までが全てまとめられてます。今はイージーインストーラーってのがあるんですね…。
この記事を元にいくつか補足していきます。
学習素材について
ここかなり重要なのですがあっさり流されてるので補足
danbooruやPixivでも少ないキャラって居ますよね…
そのような場合はアニメのキャプチャ画像がまとめられているサイトや公式サイト等を利用するのも有りです。またGoogle検索、公式Twitter等も参考になる場合があります。試しに自分が昨日作ったルーシーの素材ファイルを少し公開します。
明確にはもう少し画像枚数ありますが計25枚で学習しました。キャラの全身が映る画像も混ぜつつ顔を中心にってのが僕の学習素材の選び方です。ルーシーは素材少なめで作りましたが僕は普段60枚~150枚程度を元に学習素材を選んでます。平均的には20枚程度が良いと言われているので色々試してみるといいです。(多い時は300枚とかで作ったけどあまり意味なかった…)また、素材のクオリティごとにファイル分けするのもかなり重要です。
素材を三つのファイルに分けて良い素材をたくさん学習させ悪い素材を少なく学習させます。悪い素材が数枚だったら悪い素材ファイルを削除して2つのファイルで学習させることもあります。ファイル名で繰り返し数を設定できる利点を活かしています。
衣装ごとにファイルを変えるのもオススメです。これは後々説明するタグ付けの際に便利になってきます。しかしプロンプトで大体は衣装交換できるので要らないかも。
タグ付けについて
WD1.4taggerのタグ付けを完了するところまでは一緒ですが実際はそこからタグの選別をします。キャラとして覚えさせたい特徴をキャラ名だけで完結させるために髪色や目の色のタグを消していきます。こちらの記事を一度読んでみるのがおすすめです。また、Dataset Tag Editorの拡張機能を入れることでタグを同時に消したり足したりできるのでWebUIにインストールしてください
例として公式サイトのルーシーのスクショのタグ付けを紹介します。
WD1.4 swinv2-v2でタグ付け
rusi, 1girl, solo, blue eyes, blonde hair, braid, blush, braided bangs, long hair, school uniform, open mouth, necktie, ribbon, hair ribbon
Dataset Tag Editorで消したタグ
blue eyes, blonde hair, braid, braided bangs, long hair, necktie, ribbon, hair ribbon(青い目、金髪、三つ編み、三つ編み前髪、ロングヘア、ネクタイ、リボン、ヘアリボン)
Dataset Tag Editorで残したタグ
rusi, 1girl, solo, blush, school uniform, open mouth(ルシ, 1girl, ソロ, 赤面, 学生服, 口を開ける)
dataset tag editor使う際にGoogleの日本語翻訳付けてるとバグるので切りましょう
消すタグの選び方ですがhairとeyesが付いたものは基本消していいです。まれに金髪が夕日に照らされた状況を茶髪と判別されタグ付けにbrown hairと記載される場合があるのでそれは残していいです。
ルーシーはヘアリボンがあるので覚えさせるために「ribbon, hair ribbon」を消します。自分の場合ヘアリボン無しの差分は作成する予定無かったので。バリエーション付けたい場合は残すのも有りです。
身体的特徴ではない「necktie(ネクタイ)」も消しましたがそれは「school uniform」として覚えさせるためですね。必ずしもこれが正解というわけでは無いですが自分は消してます。
open mouth(口を開ける)やblush(赤面)はよく出てくるので覚えておきましょう。これは顔のバリエーションを作る際にプロンプトで書きたいので消しません
正則化画像について
透明pngはいくつかのコミュニティで検証されてきましたが「正則化無と変わらない」のが結論です。正則化を使う時点で学習時間が2倍増えるのでそれなら正則化無で実行した方が良いです。
正則化とはそもそも何なのって話ですが「1girlの画像を提示して過学習を抑える」ことが目的だと思ってます。過学習とは素材と酷似してプロンプトの言うことを効かなくなる状態です。僕がLoRA覚えたての時に作った初めて宮永咲ですがこういうのが過学習ですね。ガビガビになります。(今思うとLoRAの強度下げれば良かったかも…)
素材画像のバリエーションが豊富でクオリティも高いなら正則化要らないですが僕は正則化有りで学習してます。追加学習が上手い方で正則化無しの方もいますし学習時間考えれば正則化無しで上手くいった方が効率良いので両方試してみるのをお勧めします。
正則化画像の用意方法
自分は1girlで生成した512x512を雑にぶち込んでます。バリエーション増えるかなって思って2800枚ほど…正則化も厳選した方が精度上がると思うので近々作り直そうかなと思ってますが現状はこれで上手くできてます。よかったら参考にしてください。
学習数値のおすすめ
ここからは学習率とか繰り返し数とかを雑にまとめていきます。
network_dim=32
128、256が流行りと書いてますが過学習になるのでやめましょう。キャラ再現なら32~8辺りで大丈夫です。追記:細部が難しいキャラなら多めの方が良いかも…
network_alpha=16
dimの半分にするのが良いと言われてます。
learning_rate=1e-4
1e-4とは0.0001のことです。5e-4なら1e-4の5倍の0.0005、1e-3なら1e-4の10倍の0.001になります。1e-3は時間短縮になりますが過学習になりやすいのでお勧めしません。自分は更に低い5e-5で最初やっていましたが1e-4の方が安定したのでこちらをおすすめします。
text_encoder_lr=5e-5
learning_rateの半分の数値にすることで精度が上昇すると言われてます。
max_train_epochs=5
よくわからんけど10個も作っても全部検証できないので5個に落ち着いた…
resolution=512
最強のパソコンがあるなら768で学習してみたいですね
train_batch_size=5
RTX3080のVRAM10GBだとバッチ5が限界です。バッチ増やした方が精度上がる噂があるし速度も上がるのでエラーが出ないギリギリまで増やしてください
素材ファイルの繰り返し数
これはコマンドラインじゃなくてファイル名で設定する項目ですね。上記の設定だと素材数x繰り返し数が1500~2000に収まるとepochs5でちょうどいい学習成果が得られます。素材数が50枚なら繰り返し数は30~40ですね。これは色々試すのが早いと思います。
個人差が出る学習数値はここら辺ですかね。caption_dropout_rateとかは最近のオプションなので試してません。有識者の方見てたら精度上がるオプションあったら教えてください。loconとか訳わからんのです…
LoRAファイルの試し方、配布
WebUIは動かせるけどLoRAはまだよくわからんって人向けに井ノ上たきなのモデルを今月だけ限定公開します。自作なのですいませんが二次配布、pixivの掲載はお控えください。あくまでお試し程度に使っていただけたらと。半月前に作成したので今ならもう少し精度上げれそうかな…
models/Lora/ に配置してください。
余談ですが直リンクがあるとウイルスなのでは?と疑う方もいるかもしれませんが拡張子が.safetensorsのモデルは安全性が確認されてます。ckptはトロイが検出されることもあるので一応知識として持っておきましょう。(Anythingv3.0はトロイが検出されるらしい)
生成モデル
AbyssOrangeMix3A1
プロンプト
(masterpiece, bestquality, ultra detailed:1.3), solo, 1girl, takina, , school uniform, blazer, looking at viewer, eye focus, portrait, blush
ネガティブプロンプト
(worst quality, low quality:1.4)
Euler a / Sampling steps 20/ Width 512/ Height 768 Seed値:3069489250
とりあえずこれをコピペして生成してみてください。上手くいけばアニメ調のたきなが生成されるはずです。が追加学習ファイルを使用することを指示しているプロンプトです。少しアニメ調が強すぎると思ったら0.6、0.4と下げていってください。アニメ調にならない場合は0.8、1(デフォルト)に上げていってください。
(masterpiece, bestquality, ultra detailed:1.3), solo, 1girl, eru,, school uniform, looking at viewer, dynamic pose, dynamic focus, Beam from your hand, Fighting pose, fire a beam, give off a ray of light, fight:1.1), aerial_fireworks, astronaut, aurora, city_lights, constellation, crescent_moon, earth, full_moon, galaxy, glowing, light_particles, milky_way, moon, moonlight, night, night_sky, planet, rocket, shooting_star, sky, skyline, snow, snowing, space, space_craft
デフォの1だと過学習に見えてしまいますがそれは正常です。短いプロンプトなら0.7~0.8で丁度いいはずです。それでも駄目なら過学習かと。このようにプロンプトを書きまくるときにLoRAの強度を1.2に引き上げます。
まとめ
学習素材は色んなところから拾え
タグ付けは大事
正則化透明PNGは意味ない
LoRAの強度は0.7~0.8が丁度いい
初めてLoRAの学習を実行すると大体過学習になると思います。ですがそれもみんな通る道なので諦めず挑戦しましょう👍
普段ブログ書かないので誤字脱字語彙力のなさ等至らないところがあってすいません。書いてたら3時間ぐらいたってしまった。質問あったら答えれる範囲で答えるのでコメントにどうぞ。僕の支援者の中からAI絵師が誕生してくれればFANBOX紹介キャンペーンの5000円お互いに貰えてWINWINなので良かったら下記のリンク踏んでください。
embed: www.fanbox.cc雑記が2回も続いてしまったので今度こそFANBOX支援者特典用イラスト充実させていきます。ほんとすいません。それでは。