Dreambooth Stable Diffusion 微調指南(使用 Diffusers)

Dreambooth Stable Diffusion 微調指南(使用 Diffusers)

Hugging Face 發布了使用 Diffusers 套件訓練 Dreambooth 的 Stable Diffusion 的詳細建議,指出低學習率、足夠的訓練步數、針對人臉的先驗保存以及文字編碼器微調可產生最高品質的結果。

Dreambooth Stable Diffusion 微調指南(使用 Diffusers)

TL;DR

Hugging Face 的 Dreambooth 指南顯示,Stable Diffusion 微調在低學習率、足夠的訓練步數(人臉 800‑1200 步,物件 400‑600 步)、對人類主體使用先驗保存,以及可選的文字編碼器微調下效果最佳;這些設定可防止過度擬合並提升影像真實度。


推薦的超參數

  • Learning rate:使用低學習率(例如 1e‑6 到 2e‑6)。較高的學習率會導致快速過度擬合。
  • Training steps:增加步數直到品質穩定。物件大約在 400‑600 步收斂;人臉需要 800‑1200 步。
  • Batch size:每個 GPU 2(在兩張 40 GB A100 上 batch‑size 4)對物件效果良好;人臉使用 batch‑size 2。
  • Prior preservation:對人臉而言是必須的;生成或提供類別層級的圖像,以防模型僅依賴少量訓練照片而崩潰。
  • Scheduler choice:在推論時,DDIM scheduler 優於 PNDM 與 LMSDiscrete,特別是模型出現過度擬合跡象時。執行約 100 步的推論可進一步清除噪點。
  • Text encoder:將 CLIP 文字編碼器與 UNet 同時微調可顯著提升真實感與提示詞的可解釋性,但需要 ≥24 GB GPU 記憶體。8‑bit Adam、fp16 或梯度累積可將記憶體需求降至 16 GB。
  • EMA:指數移動平均(EMA)對結果沒有明顯影響。
  • Token selection:特殊 token sks 並非必要;任何描述目標的自然詞彙皆可使用。

學習率影響

在四個資料集(貓玩具、豬頭、Mr. Potato Head 與人臉)中,低學習率始終產生較高品質的生成結果。高學習率(5e‑6)會產生噪點雜訊與快速過度擬合,而低學習率(2e‑6)則保留細節,讓模型能夠超越訓練圖像進行泛化。


實驗細節

所有實驗皆使用 Diffusers 套件中的 train_dreambooth.py 腳本、AdamW 優化器,以及兩張 40 GB A100 GPU。除學習率、步數與先驗保存外,種子與所有超參數皆保持不變。

物件微調(貓玩具、豬頭、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)上完成。


人臉的先驗保存

先驗保存於訓練時將目標主體的圖像與類別層級的圖像(例如其他人)混合。此腳本可使用 Stable Diffusion 自動生成類別圖像。

  • 使用先驗保存(1200 步,LR = 2e‑6):圖像保留目標的身份,同時保持背景多樣性。
  • 未使用先驗保存(相同步數與 LR):結果出現更多噪點斑塊,且過度擬合更明顯。

推論時的 Scheduler 效果

Scheduler Observation
PNDM 當訓練平衡良好時可產生可接受的圖像,但在過度擬合的模型上表現不佳。
LMSDiscrete 在過度擬合的情況下產生嚴重的雜訊與低品質。
DDIM 始終產生較乾淨的輸出;額外的推論步數(約 100)可解決剩餘噪聲。

相同的模式在各類主體(人臉、物件)中皆可觀察到,儘管在人臉上差距最為明顯。


文字編碼器微調

原始 Dreambooth 論文將 CLIP 文字編碼器凍結,但 Hugging Face 的實驗顯示,解凍該編碼器可顯著提升結果,尤其是對於人臉主體。

  • 凍結的編碼器:產生合理的圖像,但常保留過度擬合的雜訊。
  • 微調的編碼器:產生更真實的人臉、更佳的提示詞遵循度,且減少過度擬合。

微調編碼器會增加記憶體負擔;建議使用至少 24 GB VRAM 的 GPU,雖然在混合精度與優化器技巧下 16 GB 亦可應付。


結合 Textual Inversion 與 Dreambooth

一項混合實驗先執行 Textual Inversion 2000 步,接著 Dreambooth 500 步(LR = 1e‑6)。產生的圖像較單純 Dreambooth 有所提升,但仍未達到完整文字編碼器微調的品質。此方法似乎會過度擬合風格細節,但在 16 GB GPU 上仍可執行。


實務要點

  1. 從低學習率(1e‑6 – 2e‑6)開始,並逐步增加步數。 這可在欠擬合與過度擬合之間取得平衡。
  2. 對任何人類主體使用先驗保存。 可減輕過度擬合並提升真實感。
  3. 在最終抽樣時偏好使用 DDIM scheduler 並執行約 100 步的推論。 可在不額外訓練的情況下清除噪聲。
  4. 盡可能微調文字編碼器。 品質提升足以彌補額外的記憶體成本。
  5. 利用記憶體節省技巧(8‑bit Adam、fp16、梯度累積)在消費級 GPU 上執行。

道德提醒

Dreambooth 絕不可用於惡意目的、產生有害內容,或在未取得同意的情況下冒充個人。所有微調模型仍受 CreativeML Open RAIL‑M 授權條款約束,該條款規範 Stable Diffusion 的分發。

Sources