Skip to main content

DreamBoothによるStable Diffusionトレーニング

DreamBoothでStable Diffusionをトレーニングするための実験解析。
Created on December 9|Last edited on February 14
このレポートは、Suraj Patil, Pedro Cuenca, Valentine Kozinによる「Training Stable Diffusion with Dreambooth」の翻訳です。


DreamBoothは、特殊な微調整を使用して、Stable Diffusionに新しい概念を教えるテクニックです。 いくつかの写真で見栄えをよくするために使用している人もいれば、新しいスタイルを取り入れるために使用している人もいます。 🧨DiffusersはDreamBoothトレーニングスクリプトを提供していますが、一部のユーザーは優良な結果を得るのが難しいと報告しています。
私たちは、スクリプトを検証し、DreamBoothのさまざまな設定の効果を分析するために、多くの実験を行いました。 このレポートでは、DreamBoothでStable Diffusionをトレーニングしながら結果を改善するための調査結果といくつかのヒントを紹介します。

目次



TL,DR;

  • DreamBoothでは、Stable Diffusionはすぐにオーバーフィットする。 データセットに適した学習率(LR)とトレーニングステップを見つけることが重要。 少ないステップで高い学習率をトレーニングし、より多くのステップで低い学習率をトレーニングすると、非常によく似た結果が得られる。 妥当な画像を取得するには、特定の学習率の「スイートスポット」トレーニングステップを見つける必要がある。
  • DreamBoothでは、顔のトレーニングステップを増やす必要がある。 バッチサイズが2、LRが1e-6,の実験では、約800〜1200ステップがうまく機能した。
  • 事前の保存は、顔のトレーニング時にオーバーフィットを避けるために重要だが、他のオブジェクトでは大きな違いがないように思える。
  • 生成された画像にノイズが多い場合、または品質が低下している場合は、オーバーフィットする可能性がある。 まず、オーバーフィットを回避するために上記のステップを試すこと。 生成された画像がまだノイズが多い場合は、DDIMスケジューラを使用するか、より多くの推論ステップを実行する(実験では~100がうまく機能した)。
  • EMAを実行しても違いは見られない。
  • 最良の結果は、テキストエンコーダーを微調整し、低LRと適切なステップ数を組み合わせることで得られた。 ただし、テキストエンコーダーを微調整するには、少なくとも24GBのRAMを搭載したGPUが必要。

学習率(LR)の影響

DreamBoothでは、Stable Diffusionモデルが非常に短時間でオーバーフィットします。 良い結果を得るには、データセットの学習率とトレーニングステップを調整することが重要です。 学習率の高いデータセットと低いデータセットの4つのデータセットでDreamBooth SDを微調整したところ、いずれの場合も、低学習率でトレーニングするとモデルの方が優れた結果が得られました。

テストの設定

すべての実験は、2x 40GB A100sでAdamWオプティマイザでtrain_dreambooth.pyスクリプトを使用して実施されました。 同じシードを使用し、LR、トレーニングステップ、事前保存の使用を除いて、実行間ですべてのハイパーパラメーターを同じに保ちました。
最初の3つの例では、400 ステップでバッチ サイズ 4 (GPUあたり2) でモデルを微調整しました。 私たちは、5-6の高い学習率と2e-6の低い学習率を使用しました。 なお、事前保存は使用していません。
顔の例は、バッチサイズ2(GPU あたり1)と、800 および 1200 ステップの事前保存を使用してトレーニングされます。 私たちは、5-6の高い学習率と2e-6の低い学習率を使用しました。
以下に、LRが高いデータセットと低い4つのデータセットの結果を示します。

猫のおもちゃの例

高いLR (5e-6)

低いLR (2e-6)


Pighead Example

高いLR (5e-6)

低いLR (2e-6)



ポテトヘッドの例

高いLR (5e-6)

低いLR (2e-6)


顔の例

調査結果の要約

ご覧のとおり、DreamBoothでStable Diffusionをトレーニングして良い結果を得るには、次のポイントが重要です:
  • データセットの学習率とトレーニングステップを調整する。
    • 学習率が高く、トレーニングステップが多すぎると、オーバーフィットにつながります (つまり、モデルはプロンプトに関係なく、トレーニング データからのみ画像を生成します)。
    • 学習率が低く、ステップが少なすぎると、モデルがトレーニングされた概念を生成できない場合、アンダーフィットにつながります。
  • • 私たちの実験では、400のトレーニングステップを持つオブジェクトの2e-6と、~1200ステップの顔の1e-6または2e-6がうまく機能した。

ノイズの多い画像や劣化した画像の影響

モデルがオーバーフィットすると画質が大幅に低下します。これは次の場合に発生します:
  1. 上記のセクションで説明したように、学習率が高すぎる。
  2. 上記のセクションで説明したように、実行するトレーニングのステップが多すぎる。
  3. 顔の場合、事前保存を使用しない場合

顔に対する事前保存の効果

事前、1200ステップ、低いLR(2e-6)

事前なし、1200ステップ、低LR(2e-6)



スケジューラ(サンプラー)の効果

上記の結果はすべて、PNDMスケジューラ(別名 PLMS)を使用して生成されています。スケジューラーが異なれば効果も異なるのも興味深いです。
オーバーフィッティングの場合、画質はPNDMおよびLMSDiscrete(klms)スケジューラで最も低下します。 推論にDDIMを使用するのが安定した手法のようです。 より多くのディフュージョンステップを実行することによっても品質を向上させることができます(~100はうまく動作するようです)。

PNDM

LMSDiscrete

DDIM



ポテトヘッドデータセット付き


PNDM

LMSDiscrete

DDIM


スケジューラの効果の概要

生成された画像にノイズが多い場合、または品質が低下している場合は、オーバーフィットする可能性があります。 これを回避するには:
  • 低い学習率、または少ないトレーニングステップを使用する
  • 事前保存を使用する
これらの変更後も画質が低下する場合:
  • 別のスケジューラを試す
  • より多くの推論ステップを使用する

テキストエンコーダーの微調整の効果

一部のユーザーの間では、ディフューザーを使用した結果が、特に顔で、他のDreamBoothユーザーの結果ほど良くありませんでした。 少し詳しく調べてみた結果、CompVisフォークではテキストエンコーダーも微調整されていることが判明しました。 また、テキストエンコーダーを微調整する効果は顕著です。
実際にご覧になってください:

固定テキストエンコーダー

微調整されたテキストエンコーダー



テキストエンコーダーの微調整の概要

テキストエンコーダーを微調整すると、特に顔で最良の結果が得られるようです。
  • よりリアルな画像を生成する
  • オーバーフィットが少ない
  • プロンプトの解釈可能性が向上し、例えばより複雑なプロンプトを処理できる
テキストエンコーダーを微調整することの唯一の欠点は、16GBのGPUでトレーニングができなくなり、少なくとも24GBのカードが必要になることです。 DeepSpeedを使用すると、16GBでサポートできるはずですが、トレーニング時間が長くなります。

Textual InversionとDreamBooth

また、最初に2000ステップのTextual Inversionを実行し、次にそのモデルを使用して、LRを1e-6500ステップ実行したもう1つの実験を行いました。


ご覧のとおり、結果はDreamBoothを実行するよりもはるかに改善されました。ただし、トレーニング画像のスタイルをコピーしているように見えるため、テキストエンコーダー全体を微調整する場合ほど良くはありません。 しかし、それはオーバーフィットしている可能性があるためでもあります。 これについてはあまり調べませんでしたが、Textual InversionとDreamBoothの両方が16GBのGPUに収まり、はるかに短い時間でトレーニングできます。そのため、これはテキストエンコーダーを微調整する良い代替手段になる可能性があるでしょう。 より詳しい調査については、コミュニティにお任せしようと思います。
この分析は完璧ではなく、DreamBoothを改善する方法は他にもたくさんあるかもしれません。 間違いや改善点を見つけた場合は、是非お知らせください。 最後までお読みいただきありがとうございました!

関連記事


Iterate on AI agents and models faster. Try Weights & Biases today.