DCAI
Loading Light/Dark Toggl

オリジナルキャラクターLoRAの作り方【SDXL学習編】SDXLのキャラクター学習

⏱️16min read
📅 2025年5月12日
カテゴリー:📂 AIイラスト上級
オリジナルキャラクターLoRAの作り方【SDXL学習編】SDXLのキャラクター学習のメイン画像
Supported by

前回の記事にてSD1.5モデルの学習を解説しました。今回はSDXLのLoRA学習方法を解説します。SDXLのLoRA学習はSD1.5と比べると、より多くのVRAMが必要となります。学習時間も多くなりますので、お使いのPCのスペックが低い方はColabやGPUクラウドのRunPod等を使って学習することをおススメします。Kohya ss GUIのインストールや、データセットの作り方が分からない方は、まずは下記の記事を読んでみましょう。

また、LoRA学習がはじめての方は学習が早く終わるSD1.5モデルから為すことをおススメします。

PR
Image of mouse 【3年保証】 クリエイター デスクトップPC DAIV FX(Core i9-14900KF RTX 4080 SUPER 64GBメモリ 2TB SSD Windows 11 4K動画編集 3DCG) FXI9G8SB6SKW1103AZ
mouse 【3年保証】 クリエイター デスクトップPC DAIV FX(Core i9-14900KF RTX 4080 SUPER 64GBメモリ 2TB SSD Windows 11 4K動画編集 3DCG) FXI9G8SB6SKW1103AZ
🔗Amazonリンク
Image of GALLERIA ガレリア ゲーミングPC ZA9C-R49 Core i9-14900KF/RTX4090/32GBメモリ/1TB SSD/Windows 11 Home デスクトップPC パソコン 13091-4341
GALLERIA ガレリア ゲーミングPC ZA9C-R49 Core i9-14900KF/RTX4090/32GBメモリ/1TB SSD/Windows 11 Home デスクトップPC パソコン 13091-4341
🔗Amazonリンク

SDXLの学習ベースモデルの互換性について

SDXLのLoRAは、SD1.5と比べて汎用性が低くなっています。学習ベースモデルの系統によってLoRAが対応できるチェックポイントモデルが限られます。生成時、同系統内のLoRA適用は問題なく使えますが、系統外のチェックポイントモデルに適用した場合は上手くLoRAを適用することができません。SDXLイラストベースモデルの系統で代表的なのが下記の様になっています。

  • SDXL-base-1.0系:SDXLの基本モデル。イラスト生成にはあまり向いていないモデルです。
  • animagineXL V3系:PDXL(PonyV6)の登場まで人気だったイラストAIモデル。※V3で学習したLoRAはV4では使えません。
  • ponyDiffusionV6XL系:登場してから瞬く間に一斉風靡した人気モデル。ただし、NSFW画像が良く生成されるのでネガティブプロンプトで調整する必要があります。
  • illustriousXL01系:kohaku-xl-beta5がベースモデルに使われているモデル。執筆時ではもっとも活気のあるモデルで高品質なイラストを生成します。コチラもanimagineXLと同じくバージョン違いの互換性はあまりよくありません。
  • NoobAI-XL系:Illustrious-xl-early-release-v0がベースモデルに使われているのでillustriousXL系に属するかもしれませんが、コチラもイラストAIモデルでは人気のモデルです。

SDXLのLoRA学習では、LoRAをどの系統のモデルで学習させるのかを決定することが大切です。

互換性のテスト生成

互換性の有無が分かりやすいように、各モデルで生成した比較画像を見ていきましょう。比較対象のLoRAは、(SDXL-base-1.0VAEFix / animagineXLV31_v31 / ponyDiffusionV6XL_v6StartWithThisOne / illustriousXL_v01 / noobaiXLNAIXL_epsilonPred 1.1-Version)を学習モデルに指定して、デフォルトのパラメーターで学習しています。

学習パラメーター
学習画像数:100
Repeats:5
Train batch size:1
Epoch:1
Max train steps:1600
Seed:123
LR Scheduler:cosine
Optimizer:AdamW8bit
Learning rate:0.0001 (1e-4)
Unet learning rate:0.0001 (1e-4)
Text Encoder learning rate:0.00005 (5e-5)
Network Rank (Dimension):8
Network Alpha:1
clip_skip:0 ※SDXLではClip skipが無効化される為
A1111 WebUI生成パラメーター Prompt:
dcai-girl, 1girl, looking at viewer, solo, short hair, orange hair, brown eyes, animal ears, dress, masterpiece, meadow, sky, day <lora:DCAI_Girl_SDXL_Def_sdxl-base:1>
Negative Prompt:
worst quality, low quality, bad anatomy, realistic, lips, inaccurate limb, extra digit, fewer digits, six fingers, monochrome, nsfw
パラメーター
Steps: 20
Sampler: DPM++ SDE
Schedule type: Karras
CFG scale: 6
Seed: 3156195032
Size: 1024x1024
VAE: sdxl.vae.safetensors
SDXL-base-1.0

最初の比較画像は「SDXL-base-1.0」を使って生成しています。一番右はLoRA適応前の生成結果になります。

SDXL-base-1.0モデルで生成したLoRA比較
右端:SDXL-baseのLoRAはそれなりに学習できています。また、その他のLoRAは少しだけ衣装に影響がでているのが確認できます。
animagineXLV31_v31

続いて「animagineXLV31_v31」を使った比較画像になります。

animagineXLV31_v31で生成したLoRA比較
右から2番目:animagineXLV3.1のLoRAは再現度が高くなりました。他のLoRAでも少しだけ衣装に影響がでているのが確認できます。
ponyDiffusionV6XL_v6StartWithThisOne

「ponyDiffusionV6XL_v6StartWithThisOne」を使った比較画像になります。※生成にはPonyDiffusionV6XL特有の品質修飾「score_9, score_8_up, score_7_up」とネガティブプロンプトに「score_6, score_5, score_4」を追加しています。

ponyDiffusionV6XL_v6StartWithThisOneで生成したLoRA比較
右から3番目:aponyDiffusionV6XLのLoRA以外ほとんど影響していないのが確認できます。
illustriousXL_v01

「illustriousXL_v01」を使った比較画像になります。

illustriousXL_v01で生成したLoRA比較
右から4番目:illustriousXLのLoRAは衣装の色以外はそれなりに学習できています。その他のLoRAはほとんど影響していないのが確認できます。
noobaiXLNAIXL_epsilonPred 1.1-Version

「noobaiXLNAIXL_epsilonPred 1.1-Version」を使った比較画像になります。※メインのモデルは「NOOBAI XL-VPred 1.0」ですが、V-predictionがA1111WebUIでは開発バージョンでしか使えません。今回はEpsilon-predictionバージョンを使っています。

noobaiXLNAIXL_epsilonPred 1.1-Versionで生成したLoRA比較
右から5番目:noobaiXLNAIXL_epsilonPred 1.1-VersionのLoRAは顔は再現できていますが、衣装はいまいちでした。また、illustriousXLに少し影響しているのが確認できます。

以上の比較画像からSDXLのLoRAは互換性がない事がわかりました。

Kohya ss GUIのデフォルト値を使った学習

SDXLの互換性について理解したところで、「animagineXLV31_v30Base」をつかって学習してみましょう。このモデルでLoRAを学習すればanimagineXL V3系のチェックポイントモデルに使う事ができます。注意点としてはanimagineXL V3系のLoRAはanimagineXL V4系に使う事が出来ないことです。先ほどの比較画像でAnimagine XL 4.0 Optで生成した画像を見比べてみましょう。

animagineXLV31_v31で生成したLoRA比較 
Animagine XL 4.0 Optで生成したLoRA比較
右から2番目:衣装は少し影響していますが、再現度が低い生成になりました。

データセット

まずは、パラメーターをデフォルトで学習してみましょう。データセットは「オリジナルキャラクターLoRAの作り方【データセット編】学習画像の制作とキャプション」で作成したデータを元に学習します。同じデータセットで学習させたい場合は、Patreonで公開していますが、有料サポーター様のみダウンロードが可能となっています。

データセット画像サンプル一覧 

デフォルトパラメーター

データセットの準備ができたら、まずはデフォルト値をつかって学習します。SDXLモデルのイラスト学習用に、少しだけ値を変更しました。入力または変更が必要な部分は赤文字で記載しています。

  • Pretrained model name or path:animagineXLV31_v30Base.safetensors
  • Trained Model output name:DCAI_Girl_SDXL_Def_anima3 ※モデルの出力名
  • Instance prompt:dcai-girl ※今回使うキャプション方式では値は無視されますが、入力しないとエラーになるため。
  • Class prompt:1girl ※上記と同じ理由で入力。
  • Repeats:5 [デフォルト:40] ※学習元画像が100枚で、トータル画像を500にしたいため。
  • Presets:none
  • LoRA type:Standard
  • Train batch size:1
  • Epoch:1
  • Max train epoch:0
  • Max train steps:1600
  • Save every N epochs:1
  • Seed:123 [デフォルト:0 = ランダム] ※パラメーターをコントロールする為に適当な数字を入れます。
  • LR Scheduler:cosine
  • Optimizer:AdamW8bit
  • Learning rate:0.0001 (1e-4)
  • Text Encoder learning rate:0.00005 (5e-5) [デフォルト:0.0001 (1e-4)] ※公式ドキュメントの推奨デフォルト値に変更しています。
  • Unet learning rate:0.0001 (1e-4)
  • LR warmup (% of total steps):10
  • Network Rank (Dimension):8
  • Network Alpha:1
  • clip_skip:0 [デフォルト:1] ※SDXLではClip skipが無効化される為

学習したLoRAを使ったテスト生成

学習されたLoRAを、A1111 WebUIを使って生成した結果、下図の様になりました。生成には「animagineXLV31_v31」を使用しています。下はLoRA適用前の画像になります。

デフォルトパラメーターの結果 
LoRA無しの結果
LoRA適用前

再現度が高いですが、Seedガチャの当たりの様なもので、他のSeedでは不安定な生成になっていました。生成パラメーターは、先ほどの比較画像とほとんど変わりませんが、AnimagineV3.1用に少しだけプロンプトを変更しています。

Prompt:
dcai-girl, 1girl, looking at viewer, solo, short hair, orange hair, brown eyes, animal ears, dress, meadow, sky, day, newest, masterpiece, best quality, very aesthetic, absurdres <lora:DCAI_Girl_SDXL_Def_anima3:1>
Negative Prompt:
worst quality, low quality, bad anatomy, realistic, lips, inaccurate limb, extra digit, fewer digits, six fingers, monochrome, nsfw
パラメーター
Steps: 30
Sampler: DPM++ SDE
Schedule type: Karras
CFG scale: 6
Seed: 3156195032
Size: 1344x768
VAE: sdxl.vae.safetensors
Hires.fix: True
ADetailer: True

今回の学習で使用するパラメーター

今回はSDXLの学習なので比較的に軽量に動くように設定していますが、VRAMが16~24GB以下の設定になります。

インストールしたKohya ssのバージョンや、依存しているTorchやCUDAのバージョン違いでも結果は変わってくるので、紹介した設定で必ずしも同じ結果になるとは限りません。あらゆるデータセットやキャプションで高品質なLoRAを学習できるベストな設定は今のところは存在しないので、トライ&エラーで品質を上げていきましょう。今回の学習は執筆時のKohya ss GUI最新バージョンv25.0.3とRunPodのubuntu22.04を使っています。

RunPodの環境は下記の様になっています。

  • PODテンプレート:RunPod Pytorch 2.2.0
  • GPU:1 x RTX 4090 ※RTX 5090はx-formarsが条件を満たしていない為今のところ使えません。どうしても使いたい場合はご自身でx-formarsをアンインストールしてクロスアテンションをTorchのsdpaを使う必要があります。🔗[参照] bmaltais/kohya_ss GitHub issue(英語)
  • OS:ubuntu22.04
  • Torch:2.5.0+cu124
  • Python:3.10.12
  • CUDA:12.4
  • cuDNN:90100
  • Kohya_ss GUI:25.0.3

LR Scheduler

cosine_with_restartsは、LR Schedulerの1つでcosineを指定した間隔でリセットしながら学習します。リセットの回数はLR # cyclesで指定します。

下記のデフォルトとの比較画像を見てみましょう。

cosine_with_restartsの比較
服の色は変わっていますが、再現度が少し上がっています。
cosine_with_restartsのTBサンプル
TensorBordの例;シアン:cosine_with_restarts-2LR#cycles ピンク:cosine ※X軸の0-200はLR warmupになります。

Optimizer

公式のドキュメントでは、Adafactorを推奨しています。また、先ほどのデフォルト設定で使用したAdamW8bitはおススメしていない様です。学習画像数が少なかったり、シンプルな場合はProdigyをおススメしますが、今回は「AdamW」でOptimizer extra argumentsを使い、設定を少し変更して学習してみましょう。

PyTorchのドキュメントではAdamWのデフォルトクラスが下記の様になっています。

torch.optim.AdamW(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0.01, amsgrad=False, *, maximize=False, foreach=None, capturable=False, differentiable=False, fused=None)
🔗ソース(GitHub)

今回変更するAdamWのパラメーターは下記の2つになります。

betas

学習の収束に向けた勾配の平均を計算するために使用される係数。(beta1, beta2)となっており、beta1は過去の勾配をどれだけ重視するかを調節します。beta2は勾配の大きさ(変動の度合い)をどれだけ重視するかを調節します。

今回はbeta2を0.999から0.99に下げて使用します。下げることで直近の勾配変動に反応しやすく、学習率の調整が敏感になります。

weight_decay

weight_decayは、モデルの重みが大きくなりすぎるのを防ぐための正則化手法です。モデルを効果的に単純化し、汎用性を高めることができます。

今回はデフォルトの0.01から0.05に上げて使用します。こうすることで安定性と汎用性が上がります。

その他のパラメーター

基本的には前回のSD1.5の時とほとんど変わりませんが、違う点としてはScale weight normsとMin SNR gammaを使っていないところです。理由としてはScale weight normsはAdamWのweight_decayを強くしているので必要ないのと、Min SNR gammaは今回の設定では、あまり効果が無かったので使っていません。

では、変更後の学習設定をみていきましょう。

  • Pretrained model name or path:animagineXLV31_v30Base.safetensors
  • Trained Model output name:DCAI_Girl_SDXL_Anima3
  • Instance prompt:dcai-girl
  • Class prompt:1girl
  • Repeats:5 [デフォルト:40]
  • Presets:none
  • LoRA type:Standard
  • Train batch size:1
  • Epoch:4 [デフォルト:1] ※総ステップをEpochで調節する為
  • Max train epoch:0
  • Max train steps:0 [デフォルト:1600] ※総ステップをEpochで調節する為
  • Save every N epochs:0 [デフォルト:1] ※途中経過を見る必要が無かった為
  • Seed:123 [デフォルト:0 = ランダム]
  • LR Scheduler:cosine_with_restarts [デフォルト:cosine]
  • Optimizer:AdamW [デフォルト:AdamW8bit]
  • Optimizer extra arguments:betas=0.9,0.99 weight_decay=0.05
  • Learning rate:0.0004 (4e-4) [デフォルト:0.0001]
  • Text Encoder learning rate:0.00005 (5e-5) [デフォルト:0.0001 (1e-4)]
  • Unet learning rate:0.0004 (4e-4) [デフォルト:0.0001]
  • LR warmup (% of total steps):10
  • LR # cycles:2 [デフォルト:1]
  • Network Rank (Dimension):32 [デフォルト:8]
  • Network Alpha:16 [デフォルト:1]
  • Keep n tokens:8 [デフォルト:0] ※インスタンスとクラスのトークン数
  • clip_skip:0 [デフォルト:1] ※SDXLではClip skipが無効化される為
  • Shuffle caption:true [デフォルト:false]
  • CrossAttention:sdpa [デフォルト:xformers]

VRAMが16GB以下の方はGradient checkpointingを使いましょう。学習時間は伸びますがVRAMの消費を抑える事ができます。これでもVRAMが足らない場合はOptimizerを「Adafactor」に変更して見ましょう。

学習結果

A1111 WebUIの設定は先ほどのテスト生成と同じ設定で生成しました。

学習の最終結果 

他のLoRAとの併用について

他のLoRAと併用する時にウェイトのスケールが違うと上手く適用できない時があります。生成の設定は同じで「xl_more_art-full / xl_real / Enhancer」を1.0で適応させたのが以下になります。

他のLoRAとの併用結果
背景は変化していますが、キャラクター自体は大きくかわらずに適応しています。

同系統のチェックポイントモデルに適用する

今回はAnimagineV3.1で学習したので、同じ系統のチェックポイントモデルでも使う事ができます。すべてテスト生成と同じ設定で生成しています。

animaPencilXL_v500の生成結果
animaPencilXL_v500
AnythingXL_xlの生成結果
AnythingXL_xl
chenkinAnimeImpastoBased_v10の生成結果
chenkinAnimeImpastoBased_v10
lizmix_versionXの生成結果
lizmix_versionX
ranimeXLBaseOnAnimagine_v10の生成結果
ranimeXLBaseOnAnimagine_v10
realAnimagineXL_v10の生成結果
realAnimagineXL_v10

この様に、マージモデルにAnimagineV3.1が含まれている場合は、LoRAを適用する事ができます。

最終結果のLoRAはCivitaiにて公開していますので興味のある方はダウンロードしてみましょう。

まとめ

今回はSDXLのLoRA学習について解説してきました。前回のSD1.5と比べると学習時間も長くなり、PCのスペックもある程度求められるのでトライ&エラーが結構大変になります。しかし、SD1.5と比べると解像度も上がった影響でディテールのあるキャラクターLoRAを学習できたと思います。近いうちにanimagineXL以外の系統(ponyDiffusionV6XL・illustriousXL01・NoobAI-XL)の解説もしていきたいと思っています。また、今回の編集ではGPUクラウドのRunPodを使って学習していたので、学習の為にPCが使えない状況にはならなかったのがとても有用でした。有料のサービスですがRunPodの導入方法もDCAIで解説したいとも思っています。

PR
🔍Graphics Cardsfrom Amazon
1
MSI GeForce RTX 3060 VENTUS 2X 12G OC グラフィックスボード VD7553の商品画像

MSI GeForce RTX 3060 VENTUS 2X 12G OC グラフィックスボード VD7553

ASIN:B08WPRMVWB

2
MSI GeForce RTX 3050 LP 6G OC PCIe4.0 ロープロファイルサイズ 補助電源不要 デュアルファン搭載 グラフィックスボード VD8790の商品画像

MSI GeForce RTX 3050 LP 6G OC PCIe4.0 ロープロファイルサイズ 補助電源不要 デュアルファン搭載 グラフィックスボード VD8790

ASIN:B0CTJZCJH1

3
玄人志向 NVIDIA GeForce RTX3060 搭載 グラフィックボード GDDR6 12GB GALAKURO GAMINGシリーズ 【国内正規代理店品】 GG-RTX3060-E12GB/OC/DFの商品画像

玄人志向 NVIDIA GeForce RTX3060 搭載 グラフィックボード GDDR6 12GB GALAKURO GAMINGシリーズ 【国内正規代理店品】 GG-RTX3060-E12GB/OC/DF

ASIN:B08XMC4QJ1

4
GIGABYTE NVIDIA RTX3050 搭載 グラフィックボード GDDR6 6GB【国内正規代理店品】 GV-N3050OC-6GLの商品画像

GIGABYTE NVIDIA RTX3050 搭載 グラフィックボード GDDR6 6GB【国内正規代理店品】 GV-N3050OC-6GL

ASIN:B0CVSGRV4G

5
玄人志向 NVIDIA Geforce RTX5060Ti 搭載 グラフィックボード GDDR7 16GB【国内正規品】 GG-RTX5060Ti-E16GB/OC/DFの商品画像

玄人志向 NVIDIA Geforce RTX5060Ti 搭載 グラフィックボード GDDR7 16GB【国内正規品】 GG-RTX5060Ti-E16GB/OC/DF

ASIN:B0F5394R5S

6
ASUS GeForce RTX 3050 LP BRK OC Edition 6GB GDDR6 ビデオカード / RTX3050-O6G-LP-BRK 国内正規流通品の商品画像

ASUS GeForce RTX 3050 LP BRK OC Edition 6GB GDDR6 ビデオカード / RTX3050-O6G-LP-BRK 国内正規流通品

ASIN:B0CXPBVJD3

7
玄人志向 NVIDIA GeForce RTX2060 搭載 グラフィックボード GDDR6 12GB GALAKURO GAMINGモデル GG-RTX2060-E12GB/DF ブラックの商品画像

玄人志向 NVIDIA GeForce RTX2060 搭載 グラフィックボード GDDR6 12GB GALAKURO GAMINGモデル GG-RTX2060-E12GB/DF ブラック

ASIN:B09Q66CLY2

8
玄人志向 NVIDIA GeForce GTX1650搭載 グラフィックボード GDDR6 4GB デュアルファン・補助電源なしモデル GF-GTX1650D6-E4GB/DF3の商品画像

玄人志向 NVIDIA GeForce GTX1650搭載 グラフィックボード GDDR6 4GB デュアルファン・補助電源なしモデル GF-GTX1650D6-E4GB/DF3

ASIN:B08PBP1F6Y

9
GIGABYTE NVIDIA GeForce RTX4060搭載 グラフィックボード GDDR6 8GB【国内正規代理店品】 GV-N4060OC-8GLの商品画像

GIGABYTE NVIDIA GeForce RTX4060搭載 グラフィックボード GDDR6 8GB【国内正規代理店品】 GV-N4060OC-8GL

ASIN:B0CG69PH11

10
【国内正規品】NVIDIA RTX A400 4GB GDDR6 Ampere アーキテクチャ グラフィックスボード ENQRA400-4GER ELSA エルザの商品画像

【国内正規品】NVIDIA RTX A400 4GB GDDR6 Ampere アーキテクチャ グラフィックスボード ENQRA400-4GER ELSA エルザ

ASIN:B0DFXNDR4S

Supported by