Dreambooth Stable Diffusion ファインチューニングガイド(Diffusers)
TL;DR
Hugging Face の Dreambooth ガイドによると、Stable Diffusion のファインチューニングは、低い学習率、十分なトレーニングステップ(顔は 800‑1200、オブジェクトは 400‑600)、人間対象に対する prior‑preservation、そしてオプションのテキストエンコーダのファインチューニングが最適であることが示されています。これらの設定により過学習が防止され、画像の忠実度が向上します。
推奨ハイパーパラメータ
- Learning rate: 低い LR を使用する(例: 1e‑6 から 2e‑6)。高い LR は急速な過学習を引き起こす。
- Training steps: 品質が安定するまでステップ数を増やす。オブジェクトは約 400‑600 ステップで収束し、顔は 800‑1200 ステップが必要。
- Batch size: GPU あたり 2(40 GB A100 2 台で batch‑size 4)でオブジェクトに適している。顔の場合は batch‑size 2 を使用。
- Prior preservation: 顔に必須。クラスレベルの画像を生成または提供して、モデルが少数のトレーニング画像に収束するのを防ぐ。
- Scheduler choice: 推論時は DDIM スケジューラが PNDM と LMSDiscrete より優れており、特にモデルが過学習の兆候を示す場合に効果的。約 100 ステップの推論を実行するとノイズパッチがさらに除去される。
- Text encoder: CLIP テキストエンコーダを UNet と同時にファインチューニングすると、リアリズムとプロンプトの解釈性が大幅に向上するが、GPU メモリが 24 GB 以上必要。8‑bit Adam、
fp16、または勾配蓄積を使用すればメモリを 16 GB に削減できる。 - EMA: 指数移動平均(EMA)は結果に目立った影響を与えなかった。
- Token selection: 特殊トークン
sksは不要で、対象を表す自然なトークンであれば何でも構わない。
学習率の影響
4 つのデータセット(cat toy、pighead、Mr. Potato Head、人間の顔)で、低い学習率は常に高品質な生成をもたらした。高い学習率(5e‑6)はノイズの多いアーティファクトと急速な過学習を引き起こし、低い学習率(2e‑6)はディテールを保持し、モデルがトレーニング画像を超えて汎化できるようにした。
実験詳細
すべての実験は Diffusers リポジトリの train_dreambooth.py スクリプト、AdamW オプティマイザ、そして 40 GB A100 GPU 2 台を使用した。シードとすべてのハイパーパラメータは学習率、ステップ数、prior preservation 以外は一定に保たれた。
オブジェクトのファインチューニング(Cat Toy、Pighead、Mr. Potato Head)
- Batch size: 4(GPU あたり 2)
- Steps: 400
- Learning rates: 5e‑6(高) vs. 2e‑6(低)
- Prior preservation: 使用しない
人間の顔のファインチューニング(Kramer キャラクター)
- Batch size: 2(GPU あたり 1)
- Steps: 800 – 1200
- Learning rates: 5e‑6(高) vs. 2e‑6(低)
- Prior preservation: 有無両方でテスト
8‑bit Adam、fp16 トレーニング、勾配蓄積などのメモリ節約テクニックにより、これらの実行は 16 GB GPU(例: Google Colab、Kaggle)でも可能になる。
顔に対する Prior Preservation
Prior preservation はトレーニング中に対象の画像とクラスレベルの画像(例: 他の人物)を混合する。スクリプトは Stable Diffusion を使用してクラス画像を自動生成できる。
- Prior preservation を使用(1200 ステップ、LR = 2e‑6): 画像は対象のアイデンティティを保持しつつ、背景の多様性も保つ。
- Prior preservation を使用しない(同じステップと LR): 結果にノイズが多く、過学習が強く現れる。
推論時のスケジューラ効果
| Scheduler | Observation |
|---|---|
| PNDM | トレーニングがバランス良く行われた場合は許容できる画像を生成するが、過学習したモデルではうまく機能しない。 |
| LMSDiscrete | 過学習したケースでは深刻なアーティファクトと低品質を生む。 |
| DDIM | 一貫してクリーンな出力を得られる。追加の推論ステップ(約 100)で残存ノイズが解消される。 |
テキストエンコーダのファインチューニング
オリジナルの Dreambooth 論文では CLIP テキストエンコーダを凍結しているが、Hugging Face の実験ではそれを解凍することで結果が大幅に改善され、特に顔の対象で顕著であることが示された。
- Frozen encoder: 妥当な画像を生成するが、しばしば過学習のアーティファクトが残る。
- Fine‑tuned encoder: よりリアルな顔を生成し、プロンプトへの適合性が向上し、過学習が減少する。 エンコーダのファインチューニングはメモリ負荷を増加させるため、最低でも 24 GB VRAM の GPU が推奨されるが、混合精度やオプティマイザの工夫により 16 GB でも対応可能である。
Textual Inversion と Dreambooth の組み合わせ
ハイブリッド実験では Textual Inversion を 2000 ステップ実行し、その後 Dreambooth を 500 ステップ(LR = 1e‑6)実行した。得られた画像は単独の Dreambooth よりは良好だったが、テキストエンコーダ全体のファインチューニングほどの品質には至らなかった。この手法はスタイルのディテールに過学習しやすいが、16 GB GPU でも実行可能である。
実践的なポイント
- 低い学習率(1e‑6 – 2e‑6)で開始し、ステップ数を徐々に増やす。 これにより過小適合と過学習のバランスが取れる。
- 人間の対象には必ず prior preservation を使用する。 過学習を緩和し、リアリズムが向上する。
- 最終サンプリングでは DDIM スケジューラと約 100 ステップの推論を推奨する。 追加トレーニングなしでノイズが除去できる。
- 可能であればテキストエンコーダをファインチューニングする。 品質向上が追加メモリコストに見合う。
- **メモリ節約テクニック(8‑bit Adam、
fp16、勾配蓄積)を活用して、一般的な GPU でも実行できるようにする。
倫理的な注意喚起
Dreambooth を悪意ある目的で使用したり、有害なコンテンツを生成したり、本人の同意なしに個人を偽装したりしてはならない。すべてのファインチューニング済みモデルは、Stable Diffusion の配布を規定する CreativeML Open RAIL‑M ライセンスの対象となる。