擴散模型課程文件

第 4 單元:深入瞭解擴散模型

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

第 4 單元:深入瞭解擴散模型

歡迎來到 Hugging Face 擴散模型課程的第 4 單元!在本單元中,我們將探討最新研究中出現的對擴散模型的諸多改進和擴充套件。與之前的單元相比,本單元的程式碼量會少一些,旨在為您提供進一步研究的起點。

開始本單元 :rocket:

以下是本單元的步驟:

  • 請確保您已經註冊本課程,以便在課程增加新單元時收到通知。
  • 請通讀以下材料,瞭解本單元涵蓋的不同主題的概覽。
  • 透過連結的影片和資源,深入研究任何特定的主題。
  • 探索演示筆記本,然後閱讀“下一步”部分,瞭解一些專案建議。

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

目錄

透過蒸餾加速取樣

漸進式蒸餾是一種技術,它利用現有的擴散模型來訓練一個新版本的模型,這個新模型在推理時需要更少的步驟。“學生”模型的權重從“教師”模型的權重初始化。在訓練過程中,教師模型執行兩個取樣步驟,學生模型則嘗試在一個步驟內匹配最終的預測結果。這個過程可以重複多次,前一次迭代的學生模型成為下一階段的教師模型。最終得到的模型可以在比原始教師模型少得多的步驟(通常是 4 或 8 步)內生成質量不錯的樣本。其核心機制在提出該想法的論文中的這張圖中有所說明。

image

漸進式蒸餾圖解(來自論文

利用現有模型來“教導”新模型的想法可以擴充套件到建立引導模型,其中教師模型使用無分類器引導技術,而學生模型必須學會在一個步驟內,根據指定目標引導尺度的額外輸入,產生等效的輸出。這進一步減少了生成高質量樣本所需的模型評估次數。這段影片概述了這種方法。

注意:Stable Diffusion 的蒸餾版本可以在這裡使用。

關鍵參考文獻

訓練改進

為了改進擴散模型的訓練,已經開發了一些額外的技巧。在本節中,我們試圖捕捉近期論文中的核心思想。不斷有研究湧現出更多的改進,所以如果您看到一篇您認為應該加在這裡的論文,請告訴我們!

image 圖 2 來自 ERNIE-ViLG 2.0 論文

關鍵訓練改進

  • 調整噪聲排程、損失權重和取樣軌跡以實現更高效的訓練。Karras 等人撰寫的《闡明基於擴散的生成模型的設計空間》(Elucidating the Design Space of Diffusion-Based Generative Models)是一篇探討這些設計選擇的優秀論文。
  • 在多種寬高比上進行訓練,如課程釋出會上的這段影片所述。
  • 級聯擴散模型,即先訓練一個低解析度模型,然後再訓練一個或多個超解析度模型。這種方法被用於 DALLE-2、Imagen 等模型中以生成高解析度影像。
  • 更好的條件設定,整合豐富的文字嵌入(Imagen 使用了一個名為 T5 的大型語言模型)或多種型別的條件(eDiffi)。
  • “知識增強”——在訓練過程中整合預訓練的影像字幕和物體檢測模型,以建立資訊更豐富的字幕併產生更好的效能(ERNIE-ViLG 2.0)。
  • “去噪專家混合”(MoDE)——為不同的噪聲水平訓練模型的不同變體(“專家”),如上圖 ERNIE-ViLG 2.0 論文中的插圖所示。

關鍵參考文獻

對生成和編輯的更多控制

除了訓練方面的改進,取樣和推理階段也出現了幾項創新,其中許多方法可以為現有的擴散模型增加新功能。

image 由“詞語作畫”(paint-with-words)生成的樣本(eDiffi

影片“使用擴散模型編輯影像”概述了使用擴散模型編輯現有影像的不同方法。可用的技術可以分為四個主要類別:

1) 新增噪聲,然後用新的提示進行去噪。這是 img2img 工作流背後的思想,該思想在各種論文中得到了修改和擴充套件。

論文InstructPix2Pix: 學習遵循影像編輯指令值得注意,因為它使用了一些上述影像編輯技術來構建一個包含影像對和影像編輯指令(由 GPT3.5 生成)的合成數據集,以訓練一個能夠根據自然語言指令編輯影像的新模型。

影片

image 來自 Imagen Video 生成的示例影片的靜止幀

影片可以表示為影像序列,擴散模型的核心思想可以應用於這些序列。最近的研究集中在尋找合適的架構(例如作用於整個序列的“3D UNet”)以及高效處理影片資料。由於高幀率影片比靜態影像涉及更多的資料,目前的方法傾向於首先生成低解析度和低幀率的影片,然後應用空間和時間上的超解析度來產生最終的高質量影片輸出。

關鍵參考文獻

音訊

image

Riffusion 生成的頻譜圖(圖片來源

雖然已經有一些工作直接使用擴散模型生成音訊(例如 DiffWave),但迄今為止最成功的方法是將音訊訊號轉換成一種叫做頻譜圖的東西,它有效地將音訊“編碼”成一個二維“影像”,然後可以用來訓練我們習慣於用於影像生成的那種擴散模型。生成的頻譜圖隨後可以使用現有方法轉換回音訊。最近釋出的 Riffusion 就是基於這種方法,它對 Stable Diffusion 進行了微調,以根據文字生成頻譜圖 - 點選這裡試用

音訊生成領域發展極其迅速。在過去的一週裡(在撰寫本文時),至少有 5 項新進展被宣佈,這些進展在下面的列表中用星號標記。

關鍵參考文獻

新的架構和方法 - 邁向“迭代最佳化”

image

冷擴散(Cold Diffusion)論文中的圖 1

我們正在逐漸超越“擴散”模型最初的狹隘定義,邁向一類更通用的模型,這些模型執行迭代最佳化,即透過逐步逆轉某種形式的損壞(如前向擴散過程中的高斯噪聲新增)來生成樣本。“冷擴散”論文證明,許多其他型別的損壞也可以被迭代地“撤銷”以生成影像(如上圖所示),而最近基於 Transformer 的方法已經證明了令牌替換或掩碼作為加噪策略的有效性。

image

MaskGIT 的流程圖

作為許多現有擴散模型核心的 UNet 架構也正在被不同的替代方案所取代,其中最引人注目的是各種基於 Transformer 的架構。在使用 Transformer 的可擴充套件擴散模型(DiT)中,一個 Transformer 被用來替代 UNet,用於一個相當標準的擴散模型方法,並取得了優異的結果。迴圈介面網路(Recurrent Interface Networks)應用了一種新穎的基於 Transformer 的架構和訓練策略,以追求更高的效率。MaskGITMUSE 使用 Transformer 模型來處理影像的標記化表示,儘管 Paella 模型證明 UNet 也可以成功地應用於這些基於標記的正規化中。

隨著每一篇新論文的發表,更高效的方法正在被開發出來,可能還需要一段時間我們才能看到這類迭代最佳化任務的效能巔峰。還有很多東西有待探索!

關鍵參考文獻

動手實踐筆記本

章節 Colab Kaggle Gradient Studio Lab
DDIM 反演 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
音訊擴散 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

在本單元中,我們已經涵蓋了非常多的不同思想,其中許多都值得在未來開設更詳細的後續課程。目前,您可以透過我們準備的動手實踐筆記本選擇兩個主題進行學習。

  • DDIM 反演展示瞭如何使用一種稱為反演的技術來編輯使用現有擴散模型的影像。
  • 音訊擴散介紹了頻譜圖的概念,並展示了一個在特定音樂流派上微調音訊擴散模型的最小示例。

下一步?

這是本課程目前的最後一個單元,這意味著接下來要學什麼取決於您!請記住,您可以隨時在 Hugging Face 的 Discord 上提問和討論您的專案。我們期待看到您的創作 🤗。

< > 在 GitHub 上更新

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