擴散模型課程文件
單元 1:擴散模型簡介
並獲得增強的文件體驗
開始使用
單元 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 簡介 | ||||
| 從零開始實現擴散模型 |
在 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 上更新