テーマを切り替える

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

Easton editorial illustration: central LoRA trainer module, stack of varied character dataset image cards, output safetensors file tile

"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枚から始め、正面、側面、細部のアップで主要特徴を明確にします。

データセット品質の判断表

枚数だけでは足りません。素材の品質が低いと、背景、照明、ノイズなども一緒に学習されます。

学習対象初期枚数解像度背景その他の条件
キャラクターLoRA15〜30枚(高品質なら10枚)512×512または1024×1024に統一整理するか多様化し、同一場面を繰り返さない異なる角度、表情、ポーズ
画風LoRA50〜100枚ベースモデルに合わせる(SD1.5→512、SDXL→1024)必ずしも無地でなくてよいが、画風は統一同じ作者または同じシリーズ
物体LoRA15〜30枚解像度を統一整理された背景が望ましいが、多様でもよい異なる視点と細部のアップ

優先順位は、解像度の統一、キャラクターでは背景、次に角度と細部の多様性です。元画像の解像度差が大きいと、resize後の細部が不均一になります。

解像度、背景、前処理

解像度の統一:学習時には全画像が目標サイズへresizeされます。512と2048の素材が混ざると細部の残り方が変わるため、前処理で目標解像度へcropします。

背景処理:キャラクターLoRAでは背景語の混入がよく起きます。20枚中15枚が同じ部屋なら、ツールが「wall」「floor」を繰り返し付け、LoRAが部屋まで覚える可能性があります。背景が単純な素材を選ぶか、次の節の方法でcaptionを確認します。

前処理の流れ:

  1. 鮮明で解像度が近く、特徴が明確な素材を選びます。
  2. Photoshop、GIMP、またはバッチスクリプトで同じ解像度へcropします。
  3. 同一背景が5枚を超えるなど、背景混入リスクの高い素材を外します。

タグ付けとトリガーワード:データセットのcaption作成

自動タグ付けを一度実行して終わりにはできません。ツールは背景や副次的特徴も追加し、それがLoRAの使いやすさに直接影響します。

タグ付けツールの選び方

よく使われるツールは次のとおりです。

ツール特徴適した用途ComfyUI対応
WD14 TaggerDanbooru形式のタグを使うStable Diffusion系の定番キャラクターLoRA、アニメ画風Image-Captioning-in-ComfyUIにノードあり
Florence2自然文で説明するMicrosoftの視覚モデル写実的なキャラクター、物体ComfyUIノードあり
BLIP自然文を出力する画像captionモデル写実画風、場面ComfyUIで利用可能

WD14 Taggerはキャラクターで使いやすい一方、「simple background」「white wall」なども自動追加します。Florence2は写実素材に向き、タグ列ではなく自然文を返します。

トリガーワードの形式と場所

既存タグと衝突しにくい希少な語や独自の組み合わせを使います。例:

  • sks charnamesksは初期のStable Diffusionで使われた希少語の接頭辞)
  • xyz_character_name(独自の接頭辞)
  • my_char_001

入れる場所:

  1. 各画像の.txtまたは.captionの先頭にトリガーを書き、その後に属性語を続けます。
  2. 学習ツールによっては専用欄がありますが、全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-41e-4初期値。症状を見て調整し、alphaのスケールも考慮
学習率(text encoder LR)5e-5または1e-55e-5以下通常はU-Netより低く設定
step1000〜20002000〜3000epochから見積もり、過学習なら早めに停止
epoch10〜2020〜3015〜30枚の小さなキャラクターデータでは少なくてよい場合がある

stepは最適化の更新回数、epochはデータセットを一巡する回数です。実際の関係はrepeat、batch size、gradient accumulation、分散設定にも左右されるため、簡易式だけでなくツールが表示するstepを確認します。

ベースモデルの選択

学習時のベースモデルが互換性を決めます。

ベースモデル学習解像度生成時に対応するモデルVRAMの出発点
SD1.5512×512SD1.5と互換派生モデルfp16とgradient checkpointingで約8GB
SDXL1024×1024SDXLと互換派生モデルfp16とgradient checkpointingで約12GB
FLUX.11024×1024以上対応するFLUX.1系列省メモリ設定なしでは大きくなりやすい

FLUX.1の対応と省メモリオプションは更新が続いています。固定VRAM値を保証と考えず、現行文書を確認します。

初期パラメータの比較表

学習対象dimalphaU-Net LRtext encoder LRstep/epochの出発点ベースモデル
キャラクターLoRA(SD1.5)32または12832または1。alphaが小さい場合は補正4e-45e-51000〜2000 step / 10〜20 epochSD1.5
キャラクターLoRA(SDXL)1281または1284e-45e-51500〜2500 step / 10〜20 epochSDXL
画風LoRA(SD1.5)128または256128または11e-45e-5以下2000〜3000 step / 20〜30 epochSD1.5

いずれも初期値です。次の節の過学習・学習不足の症状に合わせて調整します。


過学習と学習不足:見分け方と修正

設定が合わないと、細部が破綻するまで過学習したり、対象がほとんど出ないまま学習不足になったりします。

過学習の症状

外観:

  • 細部が混ざり、ぼやけたり変形したりします。
  • 学習データの場面やポーズに固定され、新しい背景や角度で崩れます。
  • ノイズや透かしなど、素材の欠点まで再現されます。

トリガー反応:

  • weightを0.3まで下げても学習画像に似るほど強く、制御できません。
  • トリガーを書かなくても特徴が出て、概念が過度に結び付いています。

学習不足の症状

外観:

  • 対象に似ず、重要な細部が弱いか欠けています。
  • トリガーの反応が弱い、またはありません。

背景変更テスト:

  • 背景に関係なく対象の特徴が弱く、主要概念を十分に学べていません。

過学習・学習不足の比較

症状過学習学習不足修正方向
外観の細部細部が破綻し、学習画像をコピーする似ておらず、細部が弱い過学習:LRまたはstepを下げる。学習不足:LRまたはデータを改善
背景テスト場面を変えると崩れるどの場面でも対象が弱い過学習:背景語を確認。学習不足:トリガーを確認
トリガー反応強すぎて制御できない弱い、または無反応過学習:LRや高すぎるdimを下げる。学習不足:LR、データ、dimを再検討
weight範囲0.3でもコピーに近い1.0でようやく少し似る過学習:早いepochを選ぶ。学習不足:慎重に継続するかデータを改善

修正の優先順位

過学習の場合:

  1. 比較できる幅として、まず学習率を50%程度下げて試します。
  2. 総stepを減らすか、早い時点の保存epochを選びます。
  3. caption内の背景語や副次的特徴を確認します。
  4. dimが必要以上に高ければ下げます。

学習不足の場合:

  1. 条件を固定して学習率を段階的に上げます。
  2. カバー範囲が足りなければデータを追加・改善します。
  3. 全captionにトリガーがあるか確認します。
  4. 容量が不足している場合は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現実的な対象取捨選択推奨経路
6GBSD1.5キャラクターLoRA低dim、checkpointing、長い学習時間SD1.5と小さいbatchから始める
8GBSD1.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

    ステップ 1: 学習対象とベースモデルを決める

    キャラクター、画風、物体のどれを学習するかを決め、SD1.5、SDXL、FLUX.1から選びます。学習時のベースが生成時の互換性を決めます。
  2. 2

    ステップ 2: データセットを選別してそろえる

    主体が明確で鮮明な画像を選び、角度と背景に変化を持たせ、ベースモデルに合う解像度へ統一します。
  3. 3

    ステップ 3: 自動タグ付け後に手で修正する

    目的に合うツールでcaptionを作り、頻出する背景語、重要属性、各ファイルのトリガーワードを確認します。
  4. 4

    ステップ 4: 初期パラメータを設定する

    対象に合わせてdim、alpha、学習率、stepまたはepochを設定し、表の値を万能な正解ではなく再現可能な出発点として使います。
  5. 5

    ステップ 5: 途中のepochを保存する

    一定間隔で重みを保存し、過学習せず汎化できる時点を後から比較できるようにします。
  6. 6

    ステップ 6: ComfyUIで条件を固定して検証する

    prompt、seed、sampler、サイズを固定し、0.3、0.5、1.0などのweightと異なる背景を比較します。
  7. 7

    ステップ 7: 症状に合わせて調整する

    過学習なら学習率やstepを下げて背景タグを確認し、学習不足ならトリガー、データ量、学習率、dimを見直します。

FAQ

LoRAの学習には画像が何枚必要ですか?
キャラクターは15〜30枚、質が高ければ10枚前後から試せます。画風は50〜100枚、物体は15〜30枚が出発点です。鮮明さと背景・角度の多様性を優先してください。
network dimとalphaはどう設定しますか?
dimはLoRAの容量、alphaは重みのスケールに関係します。alpha=dimまたはdimの半分が一般的な出発点です。alphaが小さい場合は、学習率、step、検証結果と合わせて調整します。
LoRAの学習率はどのくらいですか?
キャラクターのU-Netは4e-4付近、画風は1e-4付近から試せます。text encoderは通常それより低くします。保存したepochと過学習・学習不足の症状で調整してください。
VRAMが少ない場合はどうしますか?
SD1.5、低いdim、mixed precision、gradient checkpointingを優先します。SDXLやFLUX.1では対応するblock swapや量子化も使えますが、速度や結果とのトレードオフがあります。
ComfyUIだけでLoRAを学習できますか?
ComfyUI-FluxTrainerなどの学習ノードを使えます。ただし学習スクリプトのラッパーであり、実験的な実装もあるため、ノードとkohya-ss/sd-scriptsの最新説明を確認します。
SDXLとFLUX.1のLoRA学習は何が違いますか?
アーキテクチャ、text encoder、学習スクリプト、必要VRAM、パラメータが異なります。生成時は学習に使ったモデル系列と対応するLoRAを組み合わせます。

9分で読めます · 公開日: 2026年8月28日 · 更新日: 2026年8月28日

コメント

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

Easton BlogEaston Blog