目次
SAKASA AIさんの記事「Kohya_ss×SDXLでLoRAをつくる人が最初に知っておくべきこと」が日本語圏で最も体系的だ。操作ステップの詳細さは圧倒的で、初めての人はまずあちらを読んでほしい。
本記事は、「設定値をなぜその値にするのか」の美術的・技術的根拠を、質感LoRAの視点から解説する。手順はあちら、思想はこちら——という棲み分けだ。
1. SDXL特有のアーキテクチャと質感学習の相性
SD1.5とSDXLの構造的な違い
SDXLでは大きく2つの変更が加わっている。
- Text Encoderが2本(OpenCLIP ViT-bigG + CLIP ViT-L)——テキストの意味を二重に解釈する構造
- UNetの大型化(2.6Bパラメータ)——SD1.5の約3倍。Transformer2DModelブロックが増強
質感学習にとってのSDXLの優位性
Transformer2DModelブロックの増強は、「画像のある領域と別の領域の関係性」を学ぶ能力の向上を意味する。質感は局所的な特徴であると同時に、画面全体にわたって一貫性を持つべきものだ。
どの層を学習させるべきか
Kohya_ssのデフォルト設定ではUNet全体を学習させるが、質感LoRAの場合はこれで問題ない。ただし、Text Encoderの学習は控えめにするか、あるいはオフにすることを推奨する。質感LoRAが学ばせたいのは「視覚的な表面の物性」であり、「言葉の意味の対応関係」ではない。
2. resolution(解像度)の判断基準
なぜ質感LoRAは高解像度が必要なのか
人間の顔を描くとき、目・鼻・口の配置関係は数センチ単位の情報だ。一方、金箔の表面のクラック(ひび)は0.1mm〜1mm程度の幅で走っている。
判断基準は「学習させたいものの物理的なスケール」で決まる
筆の太い一筆(5mm以上)→ 512pxで十分。パレットナイフの痕跡(1〜5mm)→ 768px推奨。箔のクラック、漆の塗り重ねの層(0.1〜1mm)→ 1024px推奨。
解像度とVRAMのトレードオフ
| 解像度 | VRAM消費目安 | 推奨GPU |
|---|---|---|
| 512px | 8〜12GB | RTX 3060以上 |
| 768px | 16〜21GB | RTX 4090 / A5000 |
| 1024px | 22〜30GB | A6000推奨 |
3. dim/alpha/学習率の三角関係
三者の関係を理解する
dim、alpha、学習率は独立したパラメータではなく、三角関係にある。
実効的な学習の強さ ≒ 学習率 × (alpha / dim)
つまり、dimを2倍にしてalphaをそのままにすると、実効的な学習強度は半分になる。
素材の物性から設定を逆算する
| 素材 | dim | alpha | 学習率 | 解像度 | エポック数 |
|---|---|---|---|---|---|
| 金箔 | 64 | 32 | 1e-4 | 768〜1024px | 15〜20 |
| 厚塗り | 128 | 64 | 5e-5 | 768px | 20〜25 |
| 草木染 | 48 | 24 | 1e-4 | 768px | 10〜15 |
| 漆 | 64 | 32 | 8e-5 | 1024px | 15〜20 |
| 和紙 | 48 | 24 | 1e-4 | 768px | 10〜15 |
この表は出発点であり、正解ではない。重要なのは、なぜその値にしたのかの根拠を持つことだ。
4. 学習データの質が設定値を決める
学習データの質は、完成LoRAの質の上限を決める
dim=128に設定しても、照明が不均一な写真で学習させれば、LoRAは「照明のムラ」を質感として学んでしまう。設定値を語る前に、まずデータの質を確保すること。
学習データの作り方については、シリーズ第3弾「質感LoRA学習用データセットの作り方」で詳しく解説している。
5. まとめ:設定値早見表
Kohya_ss×SDXL 質感LoRA推奨設定(コピペ用)
# 共通設定
pretrained_model_name_or_path: stabilityai/stable-diffusion-xl-base-1.0
network_module: networks.lora
network_dim: 64 # 素材に応じて32〜128
network_alpha: 32 # dim/2を基準
learning_rate: 1e-4 # dim=64時。dim=128なら5e-5
lr_scheduler: cosine_with_restarts
optimizer_type: AdamW8bit
resolution: 768 # 質感LoRAは768以上
train_batch_size: 1 # VRAM 24GBなら1〜2
max_train_epochs: 15 # 質感LoRAは15〜20で十分
mixed_precision: bf16 # VRAM不足時のみfp8
gradient_checkpointing: true
cache_latents: true
# Text Encoder設定
train_text_encoder: false # 質感LoRAではオフ推奨
設定値は「なぜ」から始めれば、迷わなくなる。