## 學習筆記(一)Diffusion Model ### Introduction Diffusion Model 的核心概念 - 透過給予原圖像 - 進行逐步加入雜訊的過程(Encoder) - 然後再透過(Decoder)來學習如何 Denoise 解析還原成原圖像 ### Proposed Method ![DiffusionModelWorkflow](https://hackmd.io/_uploads/HJA9o0qIn.png) - **Diffusion Model** 整體的 framework/workflow 主要可以概括分為兩個階段 - **Encoder: 加雜訊** - **Decoder: 去雜訊** ![EncoderPseudoCode](https://hackmd.io/_uploads/Bk-pb3tI3.png) - 從樣本集中抽樣一張未被加入雜訊的原圖像 $x_0 \in R^{M \times N \times C}$。 - 給定 $T \in R^{+}$ 組權重 $\{\overline{a}_1, ..., \overline{a}_T\}, a_t \in [0,1]$,一般而言 $t$ 越大的權重值越小。 - 抽樣一組權重 $\overline{a}_t$ - 從聯合分佈 $Uniform(\{1,...,T\})$ 分佈抽樣 $t$,來索引對應的權重 $\overline{a}_t$。 - 抽樣一個雜訊矩陣 $\epsilon$ - 從高斯分佈 $N(0, 1)$,抽樣一個與 $x_0$ 尺寸一致的雜訊矩陣 $\epsilon \in R^{M \times N \times C}$。 - 計算損失 Loss - $\epsilon$: Target Noise - $\epsilon_\theta$: Noise Predictor - ![Noise Predictor](https://hackmd.io/_uploads/H1D1k6Y8n.png) - $\sqrt{\overline{a}_t}x_0 + \sqrt{1-\overline{a}_t}\epsilon$: Noisy Image - ![Noisy Image](https://hackmd.io/_uploads/r1IMJ6tUh.png) #### Implementation ![Implementation](https://hackmd.io/_uploads/HJ1oWTY8h.png) - 概念上 - Diffusion Model 的 Encoder 在概念上是逐步針對原圖像加入雜訊,逐漸趨近成一張雜訊圖。 - 實際上 - Diffusion Model 的 Encoder 在實現上,則是一步到位只會針對原圖像加入一次雜訊。