LoRAトレーニングが解決する課題
Stable Diffusionなどの画像生成AIでは、一般的なスタイルやキャラクターは生成できますが、特定のキャラクター、自社ブランドのスタイル、個人の顔などを正確に再現するのは困難です。
従来、こうしたカスタマイズには「Fine-tuning(ファインチューニング)」が必要でしたが、数十GB以上のVRAMと長時間の学習が必要でした。
LoRA(Low-Rank Adaptation)は、モデル全体ではなく一部のパラメータだけを調整する技術で、わずか数MBのファイルサイズ、消費者向けGPU(RTX 3060など)で、独自のスタイル・キャラクターを学習できます。
LoRAの概要
LoRAとは
Low-Rank Adaptationの略で、大規模モデルを効率的に微調整する技術です。
仕組み:
– モデルの重み行列に「低ランク行列」を追加
– 元のモデルは変更せず、追加パラメータのみを学習
– 学習後はLoRAファイル(.safetensors形式、5-200MB程度)として保存
参考: ファインチューニングとは?で、機械学習モデルのカスタマイズ手法を詳しく解説しています。
LoRAの種類
| 種類 | 用途 | 必要画像数 | 学習時間 |
|---|---|---|---|
| キャラクターLoRA | 特定人物・キャラクター | 10-50枚 | 30分-2時間 |
| スタイルLoRA | 特定の画風・アートスタイル | 20-100枚 | 1-4時間 |
| コンセプトLoRA | 特定オブジェクト・服装 | 15-50枚 | 30分-2時間 |
| ポーズLoRA | 特定のポーズ・構図 | 30-100枚 | 1-3時間 |
Fine-tuningとの違い
| 項目 | LoRA | Fine-tuning |
|---|---|---|
| ファイルサイズ | 5-200MB | 2-7GB |
| 必要VRAM | 8-12GB | 24GB以上 |
| 学習時間 | 30分-4時間 | 数時間-数日 |
| 併用可能性 | 複数LoRA同時使用可 | モデルごとに1つ |
| 柔軟性 | 高(重みで調整) | 低 |
必要な環境
システム要件
推奨環境:
– GPU: NVIDIA RTX 3060(12GB VRAM)以上
– RAM: 16GB以上
– ストレージ: 50GB以上の空き容量
– OS: Windows 10/11、Linux
最低環境:
– GPU: GTX 1660 Ti(6GB VRAM)
– RAM: 12GB
– ストレージ: 30GB
必要なソフトウェア
- Python 3.10以上
- CUDA Toolkit 11.8以上(NVIDIAドライバー)
- Git
- kohya_ss(最も人気のあるLoRAトレーニングツール)
kohya_ssのセットアップ
インストール手順(Windows)
1. リポジトリのクローン
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
2. セットアップスクリプトの実行
# GUIインストーラーを実行
setup.bat
# インストール完了後、GUIを起動
gui.bat
ブラウザで http://127.0.0.1:7860 が開きます。
インストール手順(Linux)
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
# 依存関係をインストール
./setup.sh
# GUI起動
./gui.sh
Google Colabでの利用
ローカル環境がない場合、Google Colabで無料で試すことも可能です。
# Colab用ノートブック
!git clone https://github.com/Linaqruf/kohya-trainer.git
%cd kohya-trainer
!pip install -r requirements.txt
データセット準備
LoRAの品質は、データセットの質に大きく依存します。
画像の選定
キャラクターLoRAの場合:
✓ 多様な角度: 正面、横顔、斜め、後ろ姿
✓ 多様な表情: 笑顔、真面目、怒り、驚き
✓ 多様な服装: 複数の衣装(学習対象が服でない場合)
✓ 多様な背景: シンプル〜複雑な背景
✓ 高解像度: 512×512以上(1024×1024推奨)
避けるべき画像:
– ブレている、ピンボケ
– 過度に加工されている
– 顔や体が大きく隠れている
– 複数人物が写っている(学習対象以外を含む)
推奨枚数:
– 最低: 10枚
– 推奨: 20-30枚
– 最大: 50-100枚(多すぎると過学習のリスク)
画像の前処理
1. リサイズ
# 一括リサイズ(Python)
from PIL import Image
import os
input_dir = "raw_images"
output_dir = "processed_images"
size = (512, 512)
for filename in os.listdir(input_dir):
img = Image.open(os.path.join(input_dir, filename))
img = img.resize(size, Image.LANCZOS)
img.save(os.path.join(output_dir, filename))
2. トリミング
- 顔や体が画像の50-80%を占めるようにトリミング
- 余白が多すぎる場合は調整
3. タグ付け(キャプション)
各画像に説明テキストを付与します。
自動タグ付け:
kohya_ss GUIの「Captioning」タブで、BLIP/WD14 Taggerを使用。
手動タグ付け:
画像ファイル: character001.png
タグファイル: character001.txt
内容: "1girl, short black hair, blue eyes, school uniform, smiling"
タグのフォーマット:
– Danbooru形式: 1girl, black hair, blue eyes, smile
– 自然言語形式: A girl with black hair and blue eyes smiling
参考: Stable Diffusion完全ガイドで、効果的なプロンプトの書き方を解説しています。
ディレクトリ構造
kohya_ssでは、特定のディレクトリ構造が必要です。
/dataset/
/10_charactername/ # 10 = 繰り返し回数
character001.png
character001.txt
character002.png
character002.txt
...
繰り返し回数の意味:
– 少ない画像数の場合、繰り返しを増やして学習頻度を上げる
– 10枚の画像で10_なら、1エポックで100回学習
– 50枚の画像なら5_程度に減らす
LoRAトレーニング実践
kohya_ss GUIでのトレーニング
1. LoRAタブを開く
kohya_ss GUI → 「LoRA」タブ
2. 基本設定
Source Model:
– Pretrained model name or path:
– SD1.5: runwayml/stable-diffusion-v1-5
– SDXL: stabilityai/stable-diffusion-xl-base-1.0
– またはローカルの.safetensorsファイルパス
Folders:
– Image folder: /path/to/dataset(上記のディレクトリ構造)
– Output folder: /path/to/output
– Model output name: my_character_lora
3. パラメータ設定
Training parameters:
| パラメータ | 推奨値(キャラクター) | 推奨値(スタイル) | 説明 |
|---|---|---|---|
| Resolution | 512,512 | 512,512 | 学習解像度 |
| Train batch size | 2-4 | 2-4 | バッチサイズ(VRAMに応じて) |
| Epoch | 10-20 | 20-40 | 全データを何回学習するか |
| Save every N epochs | 5 | 10 | N回ごとに保存 |
| Learning rate | 1e-4 (0.0001) | 5e-5 (0.00005) | 学習率 |
| LR Scheduler | cosine | cosine | 学習率スケジューラー |
| Network Rank (Dim) | 32-64 | 64-128 | LoRAの次元数 |
| Network Alpha | 16-32 | 32-64 | 正則化パラメータ |
4. トレーニング開始
「Start training」をクリック。
進捗はターミナルとGUIで確認できます。
学習時間の目安:
– RTX 3060(12GB): 30分-2時間(20エポック、20枚画像)
– RTX 4090(24GB): 15分-1時間
コマンドラインでのトレーニング
より詳細な制御が必要な場合:
accelerate launch --num_cpu_threads_per_process=8 train_network.py \
--pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" \
--train_data_dir="/path/to/dataset" \
--output_dir="/path/to/output" \
--output_name="my_lora" \
--resolution="512,512" \
--train_batch_size=4 \
--learning_rate=1e-4 \
--max_train_epochs=20 \
--save_every_n_epochs=5 \
--network_module=networks.lora \
--network_dim=32 \
--network_alpha=16 \
--mixed_precision="fp16" \
--save_precision="fp16" \
--caption_extension=".txt" \
--enable_bucket
LoRAの使用方法
Automatic1111での使用
1. LoRAファイルを配置
stable-diffusion-webui/models/Lora/my_lora.safetensors
2. プロンプトで指定
beautiful portrait, <lora:my_lora:0.8>, detailed face, 8k
重みの調整:
– <lora:my_lora:1.0>: フル強度
– <lora:my_lora:0.5>: 半分の強度
– <lora:my_lora:1.5>: 過剰(試験的)
ComfyUIでの使用
ノード構成:
Load Checkpoint
→ Load LoRA(LoRAファイル選択、Weight: 0.8)
→ CLIP Text Encode
→ KSampler
詳細: ComfyUI完全ガイドで、LoRAワークフローを解説しています。
パラメータ調整とトラブルシューティング
過学習(Overfitting)の兆候
症状:
– 学習画像とほぼ同じ画像しか生成されない
– プロンプトの変更に反応しない
– 背景や服装まで固定化される
対処法:
– エポック数を減らす(20 → 10)
– 学習率を下げる(1e-4 → 5e-5)
– 画像のバリエーションを増やす
– Regularization Images(正則化画像)を使用
学習不足(Underfitting)
症状:
– キャラクターの特徴が再現されない
– LoRA適用前と変化が少ない
対処法:
– エポック数を増やす(10 → 20)
– 学習率を上げる(5e-5 → 1e-4)
– Network Dimを増やす(32 → 64)
VRAMメモリ不足
症状: “CUDA out of memory”エラー
対処法:
– Batch sizeを減らす(4 → 2 → 1)
– Resolutionを下げる(512 → 448)
– --gradient_checkpointingオプションを追加
– Mixed precisionを有効化(fp16またはbf16)
高度なテクニック
1. Multi-Concept LoRA
複数のキャラクターやスタイルを1つのLoRAに統合。
/dataset/
/10_character_alice/
/10_character_bob/
/10_style_watercolor/
2. Regularization Images
過学習を防ぐため、一般的な画像を混ぜる。
/dataset/
/10_charactername/ # メイン学習データ
/1_general/ # 正則化データ(繰り返し少なめ)
3. DreamBooth形式との併用
より強力な学習手法であるDreamBoothとLoRAを組み合わせ。
--prior_loss_weight=1.0
--class_tokens="girl"
4. SDXLでのLoRAトレーニング
SDXL(Stable Diffusion XL)用のLoRA。
推奨設定:
– Resolution: 1024,1024
– Network Dim: 64-128
– Learning rate: 5e-5
– Batch size: 1-2(VRAMに注意)
実用例
キャラクターLoRA
用途: オリジナルキャラクター、VTuber、ブランドマスコット
データセット:
– 20-30枚の多様な画像
– 様々な角度、表情、ポーズ
プロンプト例:
<lora:my_character:0.9>, 1girl, portrait, outdoor scene,
natural lighting, detailed eyes, smile
スタイルLoRA
用途: 特定アーティストの画風、ブランドのビジュアルスタイル
データセット:
– 50-100枚の同じスタイルの画像
– 多様な被写体(人物、風景、静物など)
プロンプト例:
<lora:watercolor_style:0.8>, landscape painting,
mountains and lake, sunset, masterpiece
服装・コスチュームLoRA
用途: 特定の衣装、制服、アクセサリー
データセット:
– 30-50枚の同じ衣装を着た画像
– 様々な人物・ポーズ
プロンプト例:
<lora:school_uniform:0.7>, 1girl, standing,
outdoor, detailed clothing
注意点
著作権と倫理
避けるべき用途:
– 実在人物の無断学習(プライバシー侵害)
– 著作権保護されたキャラクター(二次創作ガイドライン確認)
– ディープフェイクなど悪用
推奨用途:
– 自作キャラクター
– オリジナルスタイル
– 企業ブランド(自社のみ)
ライセンス
ベースモデルのライセンス確認:
– SD1.5: CreativeML OpenRAIL-M(商用利用可)
– SDXL: CreativeML OpenRAIL++-M(条件付き商用利用可)
– SD3.5: Stability AI Community License(年間売上制限あり)
LoRAも元モデルのライセンスに準拠します。
FAQ
Q1. LoRAとEmbedding(Textual Inversion)の違いは何ですか?
LoRAはモデルの重みを調整するのに対し、Embeddingはプロンプト空間に新しい概念を追加します。LoRAの方が表現力が高く、少ない画像で学習できますが、ファイルサイズは大きくなります。
Q2. 複数のLoRAを同時に使えますか?
可能です。通常2-4個のLoRAを同時使用できますが、多すぎると競合や品質低下のリスクがあります。重みの合計が2.0-3.0を超えないように調整してください。
Q3. LoRAはControlNetと併用できますか?
可能です。LoRAでスタイル・キャラクターを指定し、ControlNetでポーズ・構図を制御するワークフローが一般的です。ControlNet完全ガイドで詳細を解説しています。
Q4. kohya_ss以外のLoRAトレーニングツールはありますか?
あります。Stable Diffusion公式のDreamBoothスクリプト、Hugging FaceのPEFT、AutoTrainなどがあります。ただし、kohya_ssは最も機能が豊富でコミュニティサポートが充実しています。
関連記事
- Stable Diffusion完全ガイド – 基本的な使い方とプロンプトテクニック
- ファインチューニングとは? – モデルカスタマイズの基礎
- ControlNet完全ガイド – LoRAとの併用テクニック
出典
- kohya_ss公式リポジトリ: https://github.com/bmaltais/kohya_ss
- LoRA論文: https://arxiv.org/abs/2106.09685
- Hugging Face LoRAドキュメント: https://huggingface.co/docs/peft/conceptual_guides/lora


コメント