はじめに:AI画像生成における「キャラクター固定」の壁
画像生成AI(Stable Diffusion XL / Flux.1)において、最も多くのクリエイターが挫折するのが「同一キャラクターの顔・体型を維持しながら、自由なポーズや衣装で連作する」ことです。
単なるプロンプト指定(例: a 20yo Japanese woman with short black hair)では、1枚ごとに全くの別人が生成されてしまいます。
本記事では、オリジナルの顔LoRA(Low-Rank Adaptation)を自前で学習させ、ControlNetと組み合わせて商用レベルの再現性を実現するパイプラインを解説します。
1. LoRA学習用データセット(25枚)の黄金比率
学習データの質がLoRAの精度の90%を決定づけます。
| ショット種別 | 枚数 | 構図・注意点 |
|---|---|---|
| 顔クローズアップ | 10枚 | 正面、左右斜め45度、見上げ、見下ろし、笑顔、真顔を均等に収録。 |
| バストアップ | 8枚 | 異なる衣装、異なる背景、室内光・自然光のバリエーション。 |
| ウエストアップ | 4枚 | 手のポーズが自然なもの。 |
| 全身ショット | 3枚 | 頭身バランスと体型の特徴を学習させる用。 |
除外すべきNG画像
- 手や髪で顔の一部が大きく隠れている画像
- 極端に暗い、または露出オーバーでディテールが潰れている画像
- 解像度が低く(1024x1024未満)、拡大時にノイズが目立つ画像
2. Kohya_ss 学習パラメータ推奨設定(SDXL / Flux.1)
[model_arguments]
pretrained_model_name_or_path = "black-forest-labs/FLUX.1-dev"
v2 = false
[dataset_arguments]
resolution = "1024,1024"
batch_size = 1
enable_bucket = true
[training_arguments]
learning_rate = 5e-4
unet_lr = 5e-4
text_encoder_lr = 1e-4
network_dim = 32
network_alpha = 16
optimizer_type = "AdamW8bit"
lr_scheduler = "cosine_with_restarts"
max_train_epochs = 15
save_every_n_epochs = 3
mixed_precision = "bf16"
3. ControlNetによる構図・ポーズの完全制御
LoRAで顔の特徴を固定した上で、以下のControlNetプリプロセッサを併用します。
- OpenPose (dw_openpose): 棒人間モデルにより、複雑なダンスやスポーツのポーズを手足の破綻なく固定。
- Depth (depth_anything): 背景の奥行きと被写体の前後関係を正確に指定。
- Canny (輪郭線): 特定の衣装デザインや小物の形状をそのままトレース。
まとめ
高品質なLoRA学習の鍵は「多すぎる枚数より、厳選された25枚の高解像度データ」です。
適切なキャプション付け(wd14-taggerによる自動タグ+固有トリガーワードの付与)を行い、ControlNetと組み合わせることで、意図通りのシーンを破綻なく量産することが可能になります。