【Stable Diffusion】自作「LoRA」、反映度と学習回数について【Kohya’s GUI】
■記事の対象ユーザ
1.Stable Diffusion WebUIをローカルに構築して、イラスト生成しはじめた
2.自作LoRAを作ってみたが、どうも上手いこと反映されていない気がする
■ようするに?
作ってはみたけど
1.自作の3DモデルからStableDiifusionを使い好みの画像を作成
オリジナルキャラを学習させるべく、ベースとなる3Dモデルを作成し、プロンプトとControlNetを使って色んな角度や表情で素材を30枚ほど作ってみたよ。(どんな画像が最適か理解らないから適当だよ!)
特徴として
「黒髪」「ショートヘアー」「インナーカラー青」
「褐色肌」「ケモ耳」「狐しっぽ」「青い瞳」「黄色い髪飾り」
あたりを覚えてもらったよ。
2.前回の手順でLoRAを作成
過去記事でやってみたから読んでみてね
3.よっしゃ試したろ!
デフォルトの設定で使ってみて効果を見てみるよ。
サンプリング方法:LCM
サンプリングステップ:8
CFGスケール:2
(LCM_LoRA_Weight_SD15は高速描画のために設定しているよ)
### キーワードタグ、1girl、LCM-LoRA名、自作LoRA名
hokushin_ai_kaula,1girl,<lora:LCM_LoRA_Weights_SD15:1>,<lora:hokushin_ai_khaula:1>
結果 → はぁー!特徴がねぇ!
検証してみた
1.理屈
学習が十分かどうかの指標として「学習率」というものがあるようで
「LoRA」「学習率」で検索すると有志の情報が出てくるよ。
あと、LoRAを作るのに使ったツール「Kohya’s GUI」のGitリポジトリの中にもちゃんとドキュメントがあったよ。
「バッチサイズ」「学習率」「エポック」あたりが参考になると思うよ。
https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_README-ja.md
学習率に関連する要素としては
・素材画像の枚数
・エポック数
・バッチ数
・繰り返し回数
があるようで、十分な数を学習させないと効果が得られないみたいね
2.調整する設定について
### Kohya’s GUI で学習開始時に出てくる内容 (学習画像30枚×繰り返し回数1)
running training / 学習開始
num train images * repeats / 学習画像の数×繰り返し回数: 30
num reg images / 正則化画像の数: 0
num batches per epoch / 1epochのバッチ数: 15
num epochs / epoch数: 10
batch size per device / バッチサイズ: 2
gradient accumulation steps / 勾配を合計するステップ数 = 1
total optimization steps / 学習ステップ数: 150
・「繰り返し回数」を1回→30回まで変更してみる
・「エポック数」を10、20と試してみる
繰り返し回数は、画像を格納したフォルダの頭に付けた数字となるよ
エポック数は、Kohya's GUIのパラメーターに設定があるよ
ちなみに、Gitのドキュメントに書いてあるけど
エポックが10→20になるとSTEP数が2倍になるよ。
さらに、学習に使うオプティマイザーでも効果が違うという情報があったので、STEP数を増やした時の過剰な学習を抑止できる?というAdafactorを指定してみるよ。
Adafactorを使うときは学習率を自動判断するらしいので
学習率のパラメーターを消しておかないとエラー吐くから気を付けてね。
3.検証結果
最初に書いた様に「1girl」とターゲットタグ「hokushin_ai_khaula」を設定して後はLoRAに任せるよ。
hokushin_ai_khaula,1girl,<lora:LCM_LoRA_Weights_SD15:1>,
サンプリング方法:LCM
STEP数:8
CFGスケール:2
4.特徴は反映されるようになったけど・・・
・最初の150STEPのものは、特徴が全く出ていないため論外だったね
・750STEPは黒髪、ケモ耳あたりは強く出る様になったけど
インナーカラーの青や、瞳の色、ケモミミが複数でてくるとか
まだ誤差が多いように感じるね。
・1,500STEPは目の色はもう間違えなさそうだけど、髪飾りがなかったり
やたらワンコが召喚されるね。野良犬ゥ!
・3,000STEPになると間違えなくはなったけど、たまに崩れてたり
画風なのか、色がやたら黄緑になるね。
・6,000STEPは色の黄緑は消えてきた気がするけど、横顔が多くなった気が
するし、また髪飾りがなくなることが多いね。あと抽象化され始めた?
・9,000STEPは教師画像に合わせて背景がより白くなった気がするけど
それ以外は6,000STEPと変わらない気がするね。
服装を指定して教師画像が再現できる?
素材画像を作った時と、ほぼ同じプロンプトを与えてみてどうなるかを確認してみるよ。
### ポジティブプロンプト → これの末尾に自作LoRAを付け替えて検証
hokushin_ai_kaula,1girl,solo,skirt,boots,thighhighs,pleated skirt,white skirt,criss-cross halter,cleavage,smile,jacket,looking at viewer,black footwear,white background,open clothes,knee boots,shirt,open jacket,black jacket,simple background,black thighhighs,closed mouth,halterneck,long sleeves,miniskirt,zettai ryouiki,choker,<lora:LCM_LoRA_Weights_SD15:1>,
### ネガティブプロンプト
(worst quality:1.4),(low quality:1.4),(monochrome:1.3),bad anatomy,bad hands,missing fingers,
再現できるね
エポック数20、繰り返し20以上=STEP数6,000以上だと
教師画像にかなり近いような絵しか出てきてないね。
逆にエポック数10、繰り返し5=STEP数750も、雰囲気は出ているけど
髪飾りがエラーになっていることが多そうね。
1,500STEP~3,000STEPくらいが丁度良いような気がするね。
多少強くてもLoRAの比重を0.8とかにして弱めてやればいいわけですし。
おわりに
今回は上手くいかなかったLoRAの調整と検証を行ったよ。
余談だけど学習素材が1024x1024だったからか、512x512で出力しようとするとガビガビになったよ。もしかしたら学習した解像度も大事なのかも。
ともかく、これでウチの子1号ことKhaula(ハウラ)ちゃんが再現しやすくなったね!やったぁ!
この記事が気に入ったらサポートをしてみませんか?