ComfyUIで自作LoRAを学習する方法:データセット、タグ付け、検証

"kohya-ss/sd-scriptsはStable Diffusion、SDXL、SD3、FLUX.1などに対応するLoRA学習スクリプトと文書を提供しています。"
オリジナルキャラクターの画像が20枚あり、以後の生成でも同じキャラクターを出せるLoRAを作りたいとします。
データセットとタグ付けツールを用意し、ネット上のスクリーンショットどおりに設定しても、結果が崩れることがあります。背景を変えると顔が変わる、captionに「wall」「floor」が混ざって毎回同じ部屋が出る、LRを1e-3にして細部が破綻する、dim/alphaを32/1のまま使い、alpha=1・dim=32でスケールが約0.03、つまり3%程度になる、といった状態です。
一度で成功するという約束はできません。データ準備、タグ付け、初期パラメータ、過学習の判断、ComfyUIでの検証までを一つずつ進めます。
データセット準備:必要な枚数と画像の条件
LoRA学習の最初の作業はツールを起動することではなく、素材が十分で目的に合っているかを判断することです。
学習対象がデータ量を決める
何を学習するかで必要な画像数は変わります。
キャラクターLoRA:15〜30枚から始めます。鮮明で解像度がそろい、背景が整理された高品質画像なら10枚程度でも試せます。別の場面でも同一性を保つには、異なる背景と角度を含めます。
画風LoRA:筆致、色調、構図の癖など変数が多いため、一般に50〜100枚ほど必要です。データが少なすぎると「少し似ている」だけで、新しい画像では特徴が消えます。
物体・衣装LoRA:キャラクターと同様に15〜30枚から始め、正面、側面、細部のアップで主要特徴を明確にします。
データセット品質の判断表
枚数だけでは足りません。素材の品質が低いと、背景、照明、ノイズなども一緒に学習されます。
| 学習対象 | 初期枚数 | 解像度 | 背景 | その他の条件 |
|---|---|---|---|---|
| キャラクターLoRA | 15〜30枚(高品質なら10枚) | 512×512または1024×1024に統一 | 整理するか多様化し、同一場面を繰り返さない | 異なる角度、表情、ポーズ |
| 画風LoRA | 50〜100枚 | ベースモデルに合わせる(SD1.5→512、SDXL→1024) | 必ずしも無地でなくてよいが、画風は統一 | 同じ作者または同じシリーズ |
| 物体LoRA | 15〜30枚 | 解像度を統一 | 整理された背景が望ましいが、多様でもよい | 異なる視点と細部のアップ |
優先順位は、解像度の統一、キャラクターでは背景、次に角度と細部の多様性です。元画像の解像度差が大きいと、resize後の細部が不均一になります。
解像度、背景、前処理
解像度の統一:学習時には全画像が目標サイズへresizeされます。512と2048の素材が混ざると細部の残り方が変わるため、前処理で目標解像度へcropします。
背景処理:キャラクターLoRAでは背景語の混入がよく起きます。20枚中15枚が同じ部屋なら、ツールが「wall」「floor」を繰り返し付け、LoRAが部屋まで覚える可能性があります。背景が単純な素材を選ぶか、次の節の方法でcaptionを確認します。
前処理の流れ:
- 鮮明で解像度が近く、特徴が明確な素材を選びます。
- Photoshop、GIMP、またはバッチスクリプトで同じ解像度へcropします。
- 同一背景が5枚を超えるなど、背景混入リスクの高い素材を外します。
タグ付けとトリガーワード:データセットのcaption作成
自動タグ付けを一度実行して終わりにはできません。ツールは背景や副次的特徴も追加し、それがLoRAの使いやすさに直接影響します。
タグ付けツールの選び方
よく使われるツールは次のとおりです。
| ツール | 特徴 | 適した用途 | ComfyUI対応 |
|---|---|---|---|
| WD14 Tagger | Danbooru形式のタグを使うStable Diffusion系の定番 | キャラクターLoRA、アニメ画風 | Image-Captioning-in-ComfyUIにノードあり |
| Florence2 | 自然文で説明するMicrosoftの視覚モデル | 写実的なキャラクター、物体 | ComfyUIノードあり |
| BLIP | 自然文を出力する画像captionモデル | 写実画風、場面 | ComfyUIで利用可能 |
WD14 Taggerはキャラクターで使いやすい一方、「simple background」「white wall」なども自動追加します。Florence2は写実素材に向き、タグ列ではなく自然文を返します。
トリガーワードの形式と場所
既存タグと衝突しにくい希少な語や独自の組み合わせを使います。例:
sks charname(sksは初期のStable Diffusionで使われた希少語の接頭辞)xyz_character_name(独自の接頭辞)my_char_001
入れる場所:
- 各画像の
.txtまたは.captionの先頭にトリガーを書き、その後に属性語を続けます。 - 学習ツールによっては専用欄がありますが、全captionに入っていれば必須ではありません。
トリガーは必要です。共通の名前がなければ、モデルは画像群の概念を安定して結び付けにくくなります。全captionで繰り返し、生成時にも同じ語を使います。
主要属性を手作業で確認する
自動処理後は最低でも3点を確認します。
背景語の混入:「wall」「floor」「bedroom」が高頻度なら、新しい背景で崩れやすくなります。削除するか「simple background」のような広い表現へ置き換えます。
トリガーの欠落:全captionの先頭にトリガーがあるか確認します。
主要属性の欠落:特徴的な髪型、配色、衣装が抜けていれば手で追加します。
全ファイルを一語ずつ読む必要はありません。grepや表計算で頻出語を一覧にし、異常な語を重点的に修正します。
学習ツールの境界:ComfyUIで行われる処理
ComfyUIでLoRAを学習できますが、学習バックエンドそのものがComfyUIというわけではありません。
学習主体はkohya-ss/sd-scripts
実際の学習は、Stable Diffusion系LoRAで広く使われるkohya-ss/sd-scriptsが担います。Kohya GUIやComfyUIの学習ノードは、これらのスクリプトや近い実装を包む操作層です。
FluxTrainerやLora-Training-in-Comfyなどのノードはラッパーです。
- KijaiのFluxTrainerは修正したsd-scripts系コードを組み込み、FLUXなどの学習をComfyUIのworkflowから扱います。
- Lora-Training-in-Comfyもkohya系学習をComfyUIから実行する入口を提供します。
ノードの既定値が最適値とは限りません。作者が最後に試した設定や例である場合があるため、ノードのREADMEと上流の学習文書を確認します。
学習経路の比較
| 経路 | 長所 | 短所 | 向いている人 |
|---|---|---|---|
| kohya-ss GUI | パラメータ画面が充実し、解説が多い | 別途インストールが必要で画面が複雑 | パラメータを細かく管理したい人 |
| FluxTrainerなどのComfyUI学習ノード | ComfyUI内で実行でき、workflowを統一できる | 実験的な部分があり、既定値の最適性は保証されない | 生成もComfyUIで行い、学習も同じgraphに入れたい人 |
| kohya-ssのコマンドライン | 新しい機能と完全なパラメータ制御 | コマンドラインの難度が高い | 経験があり、特定条件を詰めたい人 |
現在のパラメータを調べる場所
古いスクリーンショットやノードの既定値だけに頼らず、kohya-ss/sd-scriptsの現行文書を出発点にします。
- SD1.5、SDXL、FLUX.1など、モデル系列ごとの学習ガイドで対応オプションを確認します。
- network alphaのような狭い論点はGitHubのIssueやDiscussionも参考になります。
学習率、dim/alpha、stepはベースモデルとデータ規模で変わります。すべてに通用する一組の設定はありません。
初期パラメータ表:目的別の出発点
ここで示す値は再現可能な出発点です。保存したepochと過学習の症状を見ながら調整します。
network dimとalphaの関係
network dim、つまりrankはLoRA重み行列の容量を決めます。大きいほど細部を表現できますが、VRAMと学習時間も増えます。
network alphaは学習されたLoRA重みをスケールします。alphaがdimより小さい場合、設定した学習率に対する更新の効き方が弱くなります。
単純化したスケール:alpha / dim
例:
- alpha=16、dim=32 → 16/32=0.5
- alpha=32、dim=32 → 1
- alpha=1、dim=32 → 1/32≈0.03
dim=32、alpha=1だけをコピーし、学習率やstepを考慮しないと、結果が弱くなる可能性があります。
初期設定の考え方:
- スケールしない出発点としてalpha=dim、軽く抑える場合はalpha=dim/2を試します。
- alphaがdimより小さい場合、学習率やstepを含めた比較を行い、一つの値だけを変更しません。
学習率、step、epochの初期値
| パラメータ | キャラクターLoRA | 画風LoRA | 説明 |
|---|---|---|---|
| 学習率(U-Net LR) | 4e-4 | 1e-4 | 初期値。症状を見て調整し、alphaのスケールも考慮 |
| 学習率(text encoder LR) | 5e-5または1e-5 | 5e-5以下 | 通常はU-Netより低く設定 |
| step | 1000〜2000 | 2000〜3000 | epochから見積もり、過学習なら早めに停止 |
| epoch | 10〜20 | 20〜30 | 15〜30枚の小さなキャラクターデータでは少なくてよい場合がある |
stepは最適化の更新回数、epochはデータセットを一巡する回数です。実際の関係はrepeat、batch size、gradient accumulation、分散設定にも左右されるため、簡易式だけでなくツールが表示するstepを確認します。
ベースモデルの選択
学習時のベースモデルが互換性を決めます。
| ベースモデル | 学習解像度 | 生成時に対応するモデル | VRAMの出発点 |
|---|---|---|---|
| SD1.5 | 512×512 | SD1.5と互換派生モデル | fp16とgradient checkpointingで約8GB |
| SDXL | 1024×1024 | SDXLと互換派生モデル | fp16とgradient checkpointingで約12GB |
| FLUX.1 | 1024×1024以上 | 対応するFLUX.1系列 | 省メモリ設定なしでは大きくなりやすい |
FLUX.1の対応と省メモリオプションは更新が続いています。固定VRAM値を保証と考えず、現行文書を確認します。
初期パラメータの比較表
| 学習対象 | dim | alpha | U-Net LR | text encoder LR | step/epochの出発点 | ベースモデル |
|---|---|---|---|---|---|---|
| キャラクターLoRA(SD1.5) | 32または128 | 32または1。alphaが小さい場合は補正 | 4e-4 | 5e-5 | 1000〜2000 step / 10〜20 epoch | SD1.5 |
| キャラクターLoRA(SDXL) | 128 | 1または128 | 4e-4 | 5e-5 | 1500〜2500 step / 10〜20 epoch | SDXL |
| 画風LoRA(SD1.5) | 128または256 | 128または1 | 1e-4 | 5e-5以下 | 2000〜3000 step / 20〜30 epoch | SD1.5 |
いずれも初期値です。次の節の過学習・学習不足の症状に合わせて調整します。
過学習と学習不足:見分け方と修正
設定が合わないと、細部が破綻するまで過学習したり、対象がほとんど出ないまま学習不足になったりします。
過学習の症状
外観:
- 細部が混ざり、ぼやけたり変形したりします。
- 学習データの場面やポーズに固定され、新しい背景や角度で崩れます。
- ノイズや透かしなど、素材の欠点まで再現されます。
トリガー反応:
- weightを0.3まで下げても学習画像に似るほど強く、制御できません。
- トリガーを書かなくても特徴が出て、概念が過度に結び付いています。
学習不足の症状
外観:
- 対象に似ず、重要な細部が弱いか欠けています。
- トリガーの反応が弱い、またはありません。
背景変更テスト:
- 背景に関係なく対象の特徴が弱く、主要概念を十分に学べていません。
過学習・学習不足の比較
| 症状 | 過学習 | 学習不足 | 修正方向 |
|---|---|---|---|
| 外観の細部 | 細部が破綻し、学習画像をコピーする | 似ておらず、細部が弱い | 過学習:LRまたはstepを下げる。学習不足:LRまたはデータを改善 |
| 背景テスト | 場面を変えると崩れる | どの場面でも対象が弱い | 過学習:背景語を確認。学習不足:トリガーを確認 |
| トリガー反応 | 強すぎて制御できない | 弱い、または無反応 | 過学習:LRや高すぎるdimを下げる。学習不足:LR、データ、dimを再検討 |
| weight範囲 | 0.3でもコピーに近い | 1.0でようやく少し似る | 過学習:早いepochを選ぶ。学習不足:慎重に継続するかデータを改善 |
修正の優先順位
過学習の場合:
- 比較できる幅として、まず学習率を50%程度下げて試します。
- 総stepを減らすか、早い時点の保存epochを選びます。
- caption内の背景語や副次的特徴を確認します。
- dimが必要以上に高ければ下げます。
学習不足の場合:
- 条件を固定して学習率を段階的に上げます。
- カバー範囲が足りなければデータを追加・改善します。
- 全captionにトリガーがあるか確認します。
- 容量が不足している場合はdimを上げます。
VRAM要件と省メモリ経路:RTX 3060で学習できるか
VRAMが少なくても不可能とは限りませんが、解像度、モデル系列、速度、最適化設定の取捨選択が必要です。
おおよその最小VRAM
| ベースモデル | fp16とcheckpointingの目安 | 追加対策を使った場合 | 主な対策 |
|---|---|---|---|
| SD1.5 | 約8GB | 制約の強い構成で約6GB | 低dim、gradient checkpointing、optimizerとprecisionの選択 |
| SDXL | 約12GB | 構成によって約10GB | 低dim、checkpointing、blockやoptimizerの省メモリ化 |
| FLUX.1 | 対策なしで約24GBになる例 | 強い最適化で約10GBに近づく例 | block swap、checkpointing、低dim、対応する量子化 |
約24GBから10GBという数値は2025年の第三者ガイドの例です。実使用量はツール、モデル、optimizer、cache、データ、GPUで変わります。
VRAMを節約する方法
fusedまたはmemory-efficient backward:対応する実装でピークVRAMを下げますが、効果はツールによって異なります。
gradient checkpointing:backward時にactivationを再計算し、速度と引き換えにVRAMを減らします。
低dim:rankを下げるとLoRAパラメータ数が減り、通常はVRAMも下がります。
mixed precisionと量子化:fp16やbf16が一般的です。ツールによってはFP8や量子化componentも使えますが、互換性と品質を確認します。
低VRAMの取捨選択
| VRAM | 現実的な対象 | 取捨選択 | 推奨経路 |
|---|---|---|---|
| 6GB | SD1.5キャラクターLoRA | 低dim、checkpointing、長い学習時間 | SD1.5と小さいbatchから始める |
| 8GB | SD1.5キャラクター・画風LoRA | 低dimとcheckpointing | 成熟したSD1.5の省メモリ設定を使う |
| 10GB | 一部のSDXLキャラクター構成 | 強い省メモリ化と速度低下 | 文書化された低VRAM設定だけを試す |
| 12GB以上 | より多くのSDXL構成、実験的なFLUX.1 | なお省メモリ化が必要な場合がある | まずSDXLを優先し、FLUX.1は設定依存と考える |
VRAMが厳しい場合、SDXLやFLUX.1が入ると決めつけず、SD1.5から始めます。必要量が低く、省メモリ運用も成熟しています。
ComfyUIでの検証:学習済みLoRAをテストする
1枚だけ生成して判断せず、トリガー反応、細部、背景への転用、制御できるweight範囲を同じ条件で確認します。
LoRAを読み込む
ComfyUIのLoad LoRAノードで学習済み.safetensorsを読み込みます。
- ノード:ComfyUI標準のLoad LoRA
- パラメータ:LoRAファイルとmodel・clipのstrength。0.5付近から始めて結果で調整
promptテンプレートを作る
検証promptにはトリガーと主要属性を入れます。
- トリガーワード:
sks charnameのような学習語を前方に置きます。 - 属性語:髪型、配色、衣装など、captionで重要な特徴を使います。
- 場面語:背景テストでは「in a forest」「at night」などへ置き換えます。
例:
sks charname, blonde hair, blue eyes, white dress, simple background
背景変更テスト:
sks charname, blonde hair, blue eyes, white dress, in a forest, at sunset
weight範囲を走査する
条件を変えずに複数のweightを試します。
- weight=0.3:効果が軽く、制御できるか確認します。
- weight=0.5:実用的な初期値で対象を認識できるか確認します。
- weight=1.0:強度を上げたときに破綻やprompt制御の低下がないか確認します。
0.3でも学習画像に固定されるなら過学習、1.0でも対象に似ないなら学習不足、トリガー、互換性を疑います。
検収チェックリスト
| 確認項目 | 合格の目安 | 不合格時の対応 |
|---|---|---|
| トリガー反応 | 0.5で特徴が明確、0.3で制御可能 | 無反応:captionとトリガーを確認。強すぎる:LRを下げるか早いepochを選ぶ |
| 細部の保持 | 髪型、配色、衣装などが明確 | 破綻:過学習。弱い:学習不足 |
| 背景への転用 | 場面だけを変えても対象を認識できる | 新しい背景で崩れる:背景captionとデータの多様性を確認 |
| weightの制御 | 0.3〜1.0で特徴が段階的に変化 | 有効範囲がない:学習強度と保存epochを見直す |
次の手順と関連記事
読み込み、weight、複数LoRA、トリガー制御は、ComfyUIでLoRAを使う実践手順:ウェイト、重ねがけ、キャラクター一貫性へ進んでください。
ベースモデルが互換性とshape mismatchを決める理由は、Stable Diffusionモデルの選び方:LoRAのベースモデル互換性で確認できます。
再現できる検証promptは、Stable Diffusion Promptテンプレート:LoRAの効果を検証するを使います。
再学習しない一貫性の選択肢:
- FLUX.1 Kontextは、データが少ない場合や学習コストをかけたくない場合に、LoRAなしでキャラクターを維持する選択肢です。
- InstantIDとIPAdapter FaceIDはLoRAを学習せず、参照画像から顔の一貫性を制御します。
自分のLoRAを学習して検証する手順
対象とベースモデルを決め、データ準備、タグ修正、学習を行い、ComfyUIでトリガー反応、細部、背景への汎化を確認します。
⏱️ 目安時間: 4 時間
- 1
ステップ 1: 学習対象とベースモデルを決める
キャラクター、画風、物体のどれを学習するかを決め、SD1.5、SDXL、FLUX.1から選びます。学習時のベースが生成時の互換性を決めます。 - 2
ステップ 2: データセットを選別してそろえる
主体が明確で鮮明な画像を選び、角度と背景に変化を持たせ、ベースモデルに合う解像度へ統一します。 - 3
ステップ 3: 自動タグ付け後に手で修正する
目的に合うツールでcaptionを作り、頻出する背景語、重要属性、各ファイルのトリガーワードを確認します。 - 4
ステップ 4: 初期パラメータを設定する
対象に合わせてdim、alpha、学習率、stepまたはepochを設定し、表の値を万能な正解ではなく再現可能な出発点として使います。 - 5
ステップ 5: 途中のepochを保存する
一定間隔で重みを保存し、過学習せず汎化できる時点を後から比較できるようにします。 - 6
ステップ 6: ComfyUIで条件を固定して検証する
prompt、seed、sampler、サイズを固定し、0.3、0.5、1.0などのweightと異なる背景を比較します。 - 7
ステップ 7: 症状に合わせて調整する
過学習なら学習率やstepを下げて背景タグを確認し、学習不足ならトリガー、データ量、学習率、dimを見直します。
FAQ
LoRAの学習には画像が何枚必要ですか?
network dimとalphaはどう設定しますか?
LoRAの学習率はどのくらいですか?
VRAMが少ない場合はどうしますか?
ComfyUIだけでLoRAを学習できますか?
SDXLとFLUX.1のLoRA学習は何が違いますか?
9分で読めます · 公開日: 2026年8月28日 · 更新日: 2026年8月28日
ComfyUI と Stable Diffusion シリーズ: 入門、workflow、モデル選び、prompt
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。
前の記事
ComfyUIの人物一貫性:InstantID・FaceID・ReActorの選び方
InstantID、IPAdapter FaceID、ReActorを処理段階とモデル構成で比較し、参照画像の条件、配置先、調整方法、エラー対処、肖像権とモデルライセンスの注意点を整理します。
第 9 / 16 記事
次の記事
ComfyUIのリージョナルプロンプト実践:複数人物をSet Area・RegionalPrompt・Cutoffで分ける
ComfyUIの複数人物をSet Area、RegionalPrompt、Cutoffで分離する方法を、座標、strength、maskサンプリング、ControlNet連携、2回目の色混ざり対策まで説明します。
第 11 / 16 記事



コメント
GitHubアカウントでログインしてコメントできます