擴散模型課程文件

單元 1:擴散模型簡介

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

單元 1:擴散模型簡介

歡迎來到 Hugging Face 擴散模型課程的單元 1!在本單元中,你將學習擴散模型工作的基本原理,以及如何使用 🤗 Diffusers 庫建立你自己的擴散模型。

開始本單元 :rocket:

以下是本單元的步驟:

  • 請確保你已註冊本課程,以便在新材料釋出時收到通知。
  • 請閱讀下方的介紹性材料,以及任何你感興趣的附加資源。
  • 檢視下方的 Diffusers 簡介 筆記本,將理論與 🤗 Diffusers 庫的實踐相結合。
  • 使用筆記本或連結的訓練指令碼,訓練並分享你自己的擴散模型。
  • (可選)如果你對從零開始的最小化實現感興趣,並想探索其中涉及的不同設計決策,可以深入學習 從零開始實現擴散模型 筆記本。
  • (可選)觀看此影片,以非正式的方式瞭解本單元的材料。

:loudspeaker: 別忘了加入 Discord,你可以在 #diffusion-models-class 頻道中討論材料並分享你的作品。

什麼是擴散模型?

擴散模型是“生成模型”這一演算法家族中一個相對較新的成員。生成模型的目標是學習在給定一些訓練樣本的情況下,**生成**資料,例如影像或音訊。一個好的生成模型會創造出**多樣化**的輸出,這些輸出與訓練資料相似但並非完全複製。擴散模型是如何實現這一點的呢?為了便於說明,我們以影像生成為例。


圖片來自 DDPM 論文 (https://arxiv.org/abs/2006.11239)。

擴散模型成功的秘訣在於擴散過程的迭代性。生成過程從隨機噪聲開始,但在多個步驟中逐漸最佳化,直到最終生成一張輸出影像。在每一步,模型都會估計如何從當前輸入得到一個完全去噪的版本。然而,由於我們每一步只做微小的改變,因此早期階段(預測最終輸出極其困難)的任何估計錯誤都可以在後續的更新中得到糾正。

與其他型別的生成模型相比,訓練擴散模型相對簡單。我們重複以下步驟:1) 從訓練資料中載入一些影像 2) 新增不同程度的噪聲。請記住,我們希望模型能夠很好地估計如何“修復”(去噪)無論是極其嘈雜的影像還是接近完美的影像。3) 將輸入的噪聲版本送入模型 4) 評估模型在去噪這些輸入方面的表現 5) 利用這些資訊更新模型權重

要用訓練好的模型生成新影像,我們從一個完全隨機的輸入開始,反覆將其送入模型,每次根據模型的預測進行少量更新。正如我們將看到的,有許多采樣方法試圖簡化這個過程,以便我們能用盡可能少的步驟生成高質量的影像。

我們將在單元 1 的動手實踐筆記本中詳細展示這些步驟。在單元 2 中,我們將探討如何修改這個過程,透過額外的條件(如類別標籤)或引導等技術來增加對模型輸出的控制。單元 3 和單元 4 將探索一個極其強大的擴散模型,名為 Stable Diffusion,它可以根據文字描述生成影像。

動手實踐筆記本

到這裡,你已經掌握了足夠的基礎知識,可以開始使用附帶的筆記本了!這裡的兩個筆記本從不同角度闡述了相同的概念。

章節 Colab Kaggle Gradient Studio Lab
Diffusers 簡介 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
從零開始實現擴散模型 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

Diffusers 簡介 中,我們使用 diffusers 庫的構建模組展示了上述的不同步驟。你將很快學會如何在你選擇的任何資料上建立、訓練和取樣你自己的擴散模型。在完成該筆記本後,你將能夠閱讀和修改示例訓練指令碼,以訓練擴散模型並與世界分享!該筆記本還介紹了與本單元相關的主要練習,我們將共同嘗試找出不同規模擴散模型的良好“訓練方案”——更多資訊請參見下一節。

從零開始實現擴散模型 中,我們展示了相同的步驟(向資料新增噪聲、建立模型、訓練和取樣),但儘可能簡單地用 PyTorch 從頭開始實現。然後,我們將這個“玩具示例”與 diffusers 版本進行比較,指出兩者的不同之處以及改進的地方。這裡的目標是讓你熟悉不同的元件以及它們背後的設計決策,這樣當你看一個新的實現時,你就能快速識別出關鍵思想。

專案時間

既然你已經掌握了基礎知識,就來試試訓練一個或多個擴散模型吧!Diffusers 簡介 筆記本的末尾提供了一些建議。請務必與社群分享你的結果、訓練方案和發現,以便我們共同找出訓練這些模型的最佳方法。

一些附加資源

帶註釋的擴散模型非常深入地講解了 DDPM 背後的程式碼和理論,用數學和程式碼展示了所有不同的元件。它還連結了一些論文以供進一步閱讀。

Hugging Face 關於無條件影像生成的文件,提供了一些如何使用官方訓練示例指令碼訓練擴散模型的示例,包括展示如何建立你自己的資料集的程式碼。

AI Coffee Break 關於擴散模型的影片:https://www.youtube.com/watch?v=344w5h24-h8

Yannic Kilcher 關於 DDPMs 的影片:https://www.youtube.com/watch?v=W-O7AZNzbzQ

發現了更多優質資源?告訴我們,我們會將它們新增到此列表中。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.