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

今回の記事はSDXLの1つPony Diffusion V6 XL(PDXL)を使ってキャラクターLoRAを学習します。PDXLは、Stable Diffusion XL(SDXL)をベースにした高品質なT2Iの一種で、とくにアニマルや人間、などのキャラクターを得意としたモデルになります。Pony派生モデルも多く公開されているので、Ponyベースで学習したLoRAをさまざまなスタイルで生成する事ができます。Kohya ss GUIのインストールや、データセットの作り方が分からない方は、まずは下記の記事を読んでみましょう。
また、LoRA学習がはじめての方は学習が早く終わるSD1.5モデルから為すことをおススメします。
Kohya ss GUIのデフォルト値を使った学習
まずは、キャラクター学習編でいつも最初に紹介しているKohya ss GUIのデフォルト値を使った学習をしてみましょう。ベースモデルは下記のモデルを使います。
データセット
データセットは「オリジナルキャラクターLoRAの作り方【データセット編】学習画像の制作とキャプション」で作成したデータを元に学習します。同じデータセットで学習させたい場合は、Patreonで公開していますが、有料サポーター様のみダウンロードが可能となっています。

デフォルトパラメーター
データセットの準備ができたら、下記のパラメーターを使って学習します。Ponyモデルの学習用に、少しだけ値を変更しています。入力または変更が必要な部分は赤文字で記載しています。
- Pretrained model name or path:ponyDiffusionV6XL_v6StartWithThisOne.safetensors
- Trained Model output name:DCAI_Girl_Pony_Def ※モデルの出力名
- 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
- Max resolution:1024, 1024 [デフォルト:512, 512] ※SDXLの解像度
- Network Rank (Dimension):8
- Network Alpha:1
- clip_skip:0 [デフォルト:1] ※SDXLではClip skipが無効化される為
学習したLoRAを使ったテスト生成
学習されたLoRAを、A1111 WebUIを使って生成した結果、下図の様になりました。生成には学習のベースモデルと同じ「ponyDiffusionV6XL_v6StartWithThisOne.safetensors」を使用しています。下はLoRA適用前の画像になります。


一見習熟度が高く見えますが、紹介した画像はseedが当たりだったのでよく見えてます。実際は衣装が不安定な生成をしていました。
Ponyモデル特有のスコアタグについて
Ponyモデルの特徴としてスコアタグがあります。下記に一覧をまとめたので見ていきましょう。
- score_9:極めて高品質(最高ランク)
- score_8_up:高品質(上位20%程度)
- score_7_up:良好(中〜上クラス)
- score_6_up:普通(中品質)
- score_5_up:やや低め(やや荒い、構図が甘いなど)
- score_4_up:低品質(破綻やぼやけあり)
たとえばscore_8_up
を指定すれば「スコア8以上」を言う意味ですが、score_9, score_8_up
と同時指定して使われることが多いです。
この品質タグを画像のキャプションに含めることによって学習品質をある程度調節する事ができます。
注意点としては、学習画像が明らかに低い場合にscore_9
を使うとLoRAモデルが不安定になる場合があります。また、学習画像に品質のバラつきがある場合はスコアタグを低めscore_6_up
にしたり、使わないようにしましょう。
比較モデルは下記の設定で学習して、それぞれにスコアタグを適用しています。
学習画像数:100
Repeats:5
Train batch size:1
Epoch:4
Max train steps:0
Seed:123
LR Scheduler:cosine_with_restarts
Optimizer:AdamW
Optimizer extra arguments:betas=0.9,0.99 weight_decay=0.05
Learning rate:0.0004 (4e-4)
Unet learning rate:0.0004 (4e-4)
Text Encoder learning rate:0.00005 (5e-5)
LR warmup (% of total steps):10
LR # cycles:2
Max resolution: 1024, 1024
Network Rank (Dimension):32
Network Alpha:16
clip_skip:0 ※SDXLではClip skipが無効化される為
各モデルをA1111 WebUIで生成しています。プロンプトはスコア無し、score_9や、すべてのスコア入りまで色々なスコア設定で生成しています。
生成設定は以下の様になっています。
基本ポジティブ-プロンプトdcai-girl, 1girl, solo, looking at viewer, solo, short hair, orange hair, brown eyes, animal ears, dress, meadow, sky, day, masterpiece, best quality
worst quality, low quality, bad anatomy, realistic, lips, inaccurate limb, extra digit, fewer digits, six fingers, monochrome, nsfw
checkpoint: ponyDiffusionV6XL_v6StartWithThisOne.safetensors
Steps: 20
Sampler: DPM++ SDE
Schedule type: Karras
CFG scale: 6
Seed: 3740385248
Size: 1024x1024
VAE: sdxl.vae.safetensors







今回のデータセットではスコア無しかscore_8_up辺りで学習して、score_8_upの生成もしくはscore全部入り+ネガティブプロンプトの生成が最適ではないでしょうか?score_4_upも品質が良いのは意外でした。
データセットのキャプション編集はA1111 WebUIの拡張機能「WebUI Dataset Tag Editor」の「Batch Edit Captions」にある「Search and Replace」を使います。

「Search Text」に1girl,
と入力して「Replace Text」に1girl, score_8_up,
と入力すれば書き足す事ができます。書き換える前に、Search and Replace inをEntire Caption
に選択して全体を書き換えしましょう。詳しい方法を知りたい方は下記の記事を参照してください。
Prodigyオプティマイザーを使った学習
今回はProdigyオプティマイザーを使って学習してみようと思います。
Prodigyオプティマイザーとは、基本的にはAdamWなのですが、最近のLoRAやDreamBoothの学習で注目されている適応学習率(Adaptive Learning Rate)最適化アルゴリズムを使ったオプティマイザーです。とくに低い学習率でも高速収束しやすいことから、LoRAの微調整や高品質学習に向いているオプティマイザーです。
Prodigyオプティマイザーの使い方
Prodigyオプティマイザーを使ったKohyaSS_GUIの設定
それではProdigyオプティマイザーの使ってKohya_ss GUIを設定していきましょう。使用するデータセットは先ほどのデフォルトパラメーターの学習で使用したのと同じデータセットをつかいます。今回のデータセットでは、Ponyのスコアタグを使うと、学習元画像のイメージスタイルが強く出てしまうので使いませんでした。
Optimizer extra argumentsについて
前回のSDXLの設定でも説明しましたが、Optimizer extra argumentsを使ってGUIで設定できないパラメーターを触っていきます。
スケジューラーについて
学習パラメーター
学習結果
学習結果としては、それなりに高品質なLoRAができたと思います。顔面の品質は寄りの画角は問題ないのですが、引きの場合はADetailerの使用をおススメします。また、スカートの前部に布が生成される場合があったのでネガティブプロンプトにapron
を追加しています。全体の生成設定は以下の様になっています。
dcai-girl, 1girl, solo, looking at viewer, solo, short hair, orange hair, brown eyes, animal ears, dress, blue dress, black skirt, upper body, white thighhighs, thigh strap, meadow, sky, day, masterpiece, best quality, score_9, score_8_up, score_7_up, score_6_up, score_5_up, score_4_up <lora:DCAI_Girl_Pony:1>
score_6, score_5, score_4, apron, worst quality, low quality, bad anatomy, realistic, lips, inaccurate limb, extra digit, fewer digits, six fingers, monochrome, nsfw
checkpoint: ponyDiffusionV6XL_v6StartWithThisOne.safetensors
Steps: 20
Sampler: DPM++ SDE
Schedule type: Karras
CFG scale: 6
Seed: 3740385248
Size: 1344x768
VAE: sdxl.vae.safetensors
ADetailer: on
Hires upscaler: 4x-UltraSharp
以上のパラメーターで生成したのがコチラです。

同系統のチェックポイントモデルに適用する
Pony系統のチェックポイントであれば今回学習したLoRAを適用する事ができます。以下にLoRAを適用したサンプルを載せておきます。生成パラメーターは先ほどと同じパラメーターで生成しています。





最終結果のLoRAはCivitaiにて公開していますので興味のある方はダウンロードしてみましょう。
まとめ
今回はPony Diffusion V6 XL(PDXL)を使ってキャラクターLoRAを学習してみました。Ponyと言えばNSFWコンテンツが多く見られますが、SFWコンテンツとしても非常に優秀なモデルでした。執筆時はIllustrious-XL等の影響で前ほどの活気は無くなってきましたが、かなりの種類の派生モデルもあるのでLoRAモデルを作れば多くの事ができるでしょう。
さて、これまでSD1.5・SDXL・Ponyと学習方法を解説してきました。この流れで次回はIllustrious-XLでLoRAを学習させようを思っています。
最後までお読みいただきありがとうございます。
もし少しでも参考になったら、ぜひ「いいね」で応援してください!