LoRA自作入門 — 学習データ準備からトレーニングまでの全工程
市販のLoRAでは表現できないキャラ・画風を自作するためのガイド。kohya_ss を使った学習データ準備、タグ付け、ハイパーパラメータ設定、評価までを実践ベースで解説します。
LoRA(Low-Rank Adaptation)は、Stable Diffusion / SDXL モデルに特定のキャラ・画風・概念を追加学習させる軽量手法です。市販の LoRA で表現できない要素を出したい場合は自作するしかありません。本記事では、kohya_ss を使った LoRA 自作の実践ワークフローを、データ準備から評価までを通して整理します。
LoRA 自作の前提
- GPU:VRAM 12GB以上推奨(8GBでも動くが時間が長い)
- 学習画像:最低15枚、推奨30〜50枚、上限100枚程度
- 学習時間:30枚で2〜4時間(RTX 4070 Ti級)
- ベースモデル:必要に応じて SDXL 1.0 / Pony / Animagine / Illustrious から選択
ベースモデルは「LoRA を最終的にどのモデルで使うか」と一致させるのが鉄則。Pony 用 LoRA を作るなら Pony をベースに、Animagine 用なら Animagine をベースに学習する。
全体ワークフロー
1. 学習画像の収集(30〜50枚)
2. 画像のクロップ・リサイズ(1024×1024 or 矩形)
3. タグ付け(WD14 Tagger 等で自動 + 手動修正)
4. 学習データセットの構成(フォルダ命名)
5. kohya_ss の設定とトレーニング実行
6. 学習結果の評価(X/Y/Z plot)
7. 必要に応じて再学習・パラメータ調整
順を追って解説します。
1. 学習画像の収集
何を学習させるかで集め方が変わります。
特定キャラを学習させる場合
- 公式素材・公式絵から30〜50枚
- 解像度はできるだけ高く(最低512px、推奨1024px以上)
- ポーズ・表情・服装に多様性を持たせる
- 画風がバラバラな画像は混ぜない(学習が分散する)
特定画風を学習させる場合
- 同じ作家・同じ画風の作品を50〜100枚
- 被写体は逆に多様化(人・風景・物)
- 画風の特徴が強く出ている画像を優先
著作権への配慮
学習画像は基本的に「自分が権利を持つもの」または「学習が許諾されているもの」を使用する。商用 LoRA を作る場合は特に注意。
2. 画像のクロップ・リサイズ
SDXL ベースの学習なら 1024×1024 が基本ですが、kohya_ss の bucketing を使えば矩形画像も混在可能。
推奨アスペクト比:
- 1024×1024(正方形)
- 1024×768(横)
- 768×1024(縦)
- 1280×768 / 768×1280(広めの矩形)
被写体が画面の中央〜やや上に来るようにクロップすると、AI が被写体を学習しやすくなります。背景が情報過多な場合は、無地背景に置き換える前処理も有効。
3. タグ付け
各画像に「何が描かれているか」のタグを付けます。これが LoRA の品質を左右する最重要工程です。
自動タグ付け(WD14 Tagger)
ComfyUI / sd-webui の拡張機能で、Danbooru タグを自動付与してくれます。
入力:image001.png
出力:image001.txt
内容:1girl, solo, long hair, blue eyes, school uniform, ...
手動修正
自動タグには必ず誤りや余計な要素が含まれます。次のルールで手動修正:
- 学習させたい特徴のタグは削除:「red hair」を学習させたいなら、タグから
red hairを削除する(残すと LoRA が「red hair はオプション」と判断する) - トリガーワードを追加:
mycharのような独自トリガーをタグの先頭に追加 - 誤認識タグを修正:自動タガーは誤判定もあるので目視確認
- 背景・構図・ポーズのタグは残す:これは「変化させたい」要素なので
トリガーワード設計
トリガーワードは「LoRA を呼び出す呪文」です。一般的な単語と被らないユニークな文字列を選ぶ。
良い例:myanime_v1, char_yuki, style_aoki
悪い例:girl, anime, cute(既存タグと衝突する)
4. データセット構成
kohya_ss は「フォルダ名で繰り返し回数を指定する」流儀です。
training_data/
├── 10_mychar/
│ ├── img001.png
│ ├── img001.txt
│ ├── img002.png
│ └── img002.txt
├── reg/
│ ├── reg001.png
│ ├── reg001.txt
│ ...
10_mychar の 10 は「各画像を1エポック中に10回学習する」の意味。30枚×10回 = 300ステップ/エポック。
reg/ は 正則化画像(regularization)。学習対象と似たカテゴリだが学習対象ではない画像を入れることで、過学習を防ぎます。例えば「特定キャラ」を学習する場合、正則化には「他の女の子」を100枚程度入れる。省略可能だが、品質改善効果は大きい。
5. kohya_ss の設定
主要なハイパーパラメータを整理します。
ベースモデル:sd_xl_base_1.0.safetensors(SDXL の場合)
ネットワーク種別:LoRA
network_dim:32〜128(大きいほど表現力↑、サイズ↑)
network_alpha:network_dim と同じ値が無難
学習率(Unet):1e-4
学習率(TextEncoder):5e-5
オプティマイザー:AdamW8bit
スケジューラ:cosine_with_restarts
バッチサイズ:1〜2(VRAM 次第)
エポック数:10〜20
保存頻度:1エポックごと
特に効くのは network_dim と 学習率。
- キャラ学習:dim 32、lr 1e-4 から
- 画風学習:dim 64〜128、lr 1e-4 から
- 概念学習(ポーズなど):dim 16〜32、lr 5e-5 から
6. 学習結果の評価
学習が終わると、エポックごとに .safetensors ファイルが保存されます。これらを models/lora/ に配置し、X/Y/Z plot で品質を評価。
X軸:LoRA 強度(0.4 / 0.6 / 0.8 / 1.0)
Y軸:エポック数(5 / 10 / 15 / 20)
Z軸:プロンプト(正面顔 / 横顔 / 全身)
最適な「強度 × エポック数」の組み合わせを目視で探します。
過学習の兆候
- 強度0.6でも被写体が明らかに崩れる
- ポーズや構図が固定化される(学習画像と同じ構図しか出ない)
- 学習画像の背景が再現される(背景まで覚えてしまった)
→ エポック数を減らすか、正則化画像を増やす。
学習不足の兆候
- 強度1.0でも特徴が反映されない
- トリガーワードを書いても効果が薄い
→ エポック数を増やすか、学習率を上げる、または学習画像を増やす。
7. 再学習とイテレーション
最初から完璧な LoRA は作れません。1回目の結果を見て、次のいずれかで改善:
- データセット改善:誤タグの修正、画像の追加・削除
- ハイパーパラメータ調整:dim、学習率、エポック数の見直し
- トリガーワード変更:他のタグと衝突していたら変える
3〜5回のイテレーションで実用品質に達するのが普通です。
失敗しやすいパターン
1. 学習画像の品質ばらつき
低解像度・ノイジーな画像を混ぜると、LoRA がそのノイズも学習してしまいます。最低解像度を 512px に統一、ノイズの強い画像は除外。
2. タグから「学習させたい特徴」を消し忘れる
タグに red hair を残したまま「red hair」のキャラを学習すると、LoRA は「red hair」を「オプション要素」と誤認識します。学習させたい特徴は必ずタグから削除。
3. ベースモデルとの不一致
Pony 用 LoRA を Animagine で使うと正常に効きません。LoRA は学習時のベースモデルと使用時のベースモデルが一致する必要があります。
4. 過剰な正則化
正則化画像を学習画像と同数以上入れると、学習対象の特徴が薄れます。学習画像数の3倍程度が上限の目安。
学習環境の選択
- ローカル(RTX 4070 Ti以上):自由度が高く長期コスパが良い
- RunPod / Vast.ai のクラウド GPU:1時間500円程度、スポット利用に最適
- Google Colab Pro+:手軽だが SDXL 学習はやや厳しい
- Civitai Trainer:プラットフォーム統合、初心者向け
本気でやるならローカル一択。試しなら RunPod が現実的。
まとめ
LoRA 自作は「データ準備が9割」です。30〜50枚の質の良い画像、丁寧なタグ付け、適切なベースモデルを選べば、kohya_ss のデフォルト設定でも実用品質に達します。逆に、データが粗いとどんなにパラメータを弄っても良い LoRA にはなりません。
PromptForge JP では、自作 LoRA を組み合わせたプロンプト設計を支援する「LoRA レシピモード」を構想中です。複数の自作 LoRA を選んだ際に、強度・トリガーワード・推奨プロンプト構造を自動で組み立てる、というのが目標機能です。