使用 InstructPix2Pix 進行 Stable Diffusion 的指令微調

Hugging Face 已展示,透過調整 InstructPix2Pix 訓練策略,Stable Diffusion 可以進行指令微調,以執行特定的圖像翻譯與低階處理任務,例如卡通化與除雨。此方法使模型能夠遵循精確的自然語言指令,比一般的預訓練模型更忠實地修改輸入圖像。

圖像編輯的指令微調

指令微調是一種監督式方法,用於教導模型根據自然語言提示解決任務。雖然最初是為語言模型(例如 FLAN)開發的,Hugging Face 將此理念應用於 Stable Diffusion,並使用 InstructPix2Pix 框架。

雖然預訓練的 InstructPix2Pix 模型能夠遵循一般的編輯指令,但在特定的轉換上常常表現不佳。為了解決此問題,研究人員利用配對資料集進行專門任務,建立指令驅動的資料集,使模型學習指令與視覺轉換之間的具體映射。

資料集準備與方法論

為了訓練模型,Hugging Face 透過將輸入圖像與目標輸出以及相應的自然語言指令配對,建立了專門的資料集。

卡通化資料集

為了教導模型「卡通化」圖像,團隊實作了三步驟的流程:

  1. 指令生成:使用 ChatGPT 為指令「Cartoonize the image」產生 50 個同義句。
  2. 標籤生成:使用預訓練的 Whitebox CartoonGAN 模型處理來自 Imagenette 資料集的 5,000 個樣本,以產生目標卡通化圖像。
  3. 範例建立:將上述元件結合成範例,包含原始圖像、指令與卡通化輸出。

低階圖像處理資料集

遵循 FLAN 多任務方法,團隊構建了一個包含多個低階任務的單一資料集。這與傳統圖像處理不同,後者通常在各自的資料集上獨立訓練模型。

任務 提示 資料集 樣本數
去模糊 "去除模糊的圖像" REDS 1,200
除雨 "除去圖像中的雨水" Rain13k 686
去噪 "去除噪聲圖像" SIDD 8
低光增強 "增強低光圖像" LOL 23

訓練實驗與結果

訓練使用兩個主要的起始點:從現有的 InstructPix2Pix 檢查點微調,以及使用 InstructPix2Pix 方法從 Stable Diffusion v1-5 檢查點微調。研究人員發現,從 InstructPix2Pix 檢查點開始能夠更快適應並產生更高品質的結果。

效能分析

  • 卡通化:相較於預訓練的 InstructPix2Pix 模型,指令微調的模型更忠實地匹配 CartoonGAN 模型的輸出。
  • 除雨:模型產生了引人注目的結果,與真實圖像高度一致。
  • 失敗案例:模型在低光圖像增強與去模糊方面表現不佳,研究人員將此歸因於這些特定任務的訓練範例數量不足。
  • 泛化能力:對於在訓練期間未充分見過的 ImageNette 類別,模型未能產生預期的輸出,顯示需要更大規模的資料集。

限制與未來方向

儘管取得了進展,研究人員仍指出實際圖像編輯應用面臨的多項關鍵挑戰:

  • 解析度:系統必須擴展以處理大型、高解析度的原始圖像。
  • 幻覺:擴散模型有時會「自行創造」或重新詮釋指令,導致圖像空間的修改在專業編輯中不可接受。

開放給社群的問題

  • 資料集規模的擴大(例如接近原始 InstructPix2Pix 使用的 30,000+ 樣本)會如何影響品質?
  • 增加任務混合或延長訓練時間是否能提升對未見任務或組合指令(例如「去模糊並去噪」)的泛化能力?
  • 在訓練過程中使用同義指令,而非僅在資料集建立時使用,是否能提升效能?
  • 使用 ControlNet 訓練設定是否能為這些特定的圖像對圖像任務帶來更好的結果?

Sources