AI影像論文(04):DDPMs (Denoising Diffusion Probabilistic Models)

更新於 發佈於 閱讀時間約 6 分鐘
raw-image

上一篇影像論文講到了U-Net在資料收集的過程中就時常聽聞在鼎鼎大名的diffussion模型中很重要的一部分為U-Net因此這次繼續往下深入探討diffusion模型中的DDPMs。

📌論文簡介

raw-image

DDPM是近期蠻流行的影像生成模型,來自加州大學柏克萊分校的團隊所發表,最終表現在無條件CIFAR10數據集上,獲得了9.46的Inception分數和3.17的最佳FID分數。在256x256的LSUN數據集上,也得到了與ProgressiveGAN相似的樣本品質。

📌模型架構介紹

🐌Forward process (擴散)

raw-image

Forward process是diffussion模型中非常重要的一個部分,他的概念就是由一張圖片逐漸添加噪音,而這些雜訊為高斯分布(常態),最後變為高斯分布的噪音圖片。

為什麼diffussion模型要使用高斯分布去做擴散呢?


高斯分布:又稱為常態分布(Normal Distribution),會使用的一大原因是因為常態分佈在數學上的簡潔性,像是常態分佈的平均值或是變異數的線性組合也會是常態分佈,另一個原因是因為常態噪音會是連續且平滑的,圖片可以平滑的過渡到常態分佈,不會突然跳躍。

那我們是怎麼去做添加噪音的呢?可以看下方這張圖。

raw-image




🐌Reverse process (降噪)

raw-image

降噪的過程就是將我們擴散完的高斯分布的噪音圖片,不斷的去去掉我們添加的雜訊,進而慢慢地讓圖片更加清晰,直到產生一章無雜訊之圖片。

在降噪的時候我們會透過Denoise的方式去做降噪,這邊具體怎麼做呢?


(1)輸入我們想要降噪的圖像+時間序(t)。(2)資料進入雜訊預測的模型(我們要訓練的模型)(U-Net)(3)輸出預測出來的雜訊(4)將想降噪的圖像減掉預測出來的圖像,則為上一時間序之圖像(t-1)


raw-image

📌訓練&採樣演算法

raw-image

上方是論文中所提供的訓練以及採樣的演算法。我自己看這張圖也是霧颯颯,接下來我們來詳細的解釋吧~

🐌訓練演算法

raw-image

每次的訓練中我們會重複以下的動作:


(1)隨機選擇一個time step並做encode(2)根據公式增加噪音(3)立用隨機的time step以及噪音圖片訓練U-Net


import numpy as np

#我們需要定義擴散過程中使用的常數和參數,例如時間步數 𝑇、擴散係數、𝛼及其平方根。

T = 1000 # 定義時間步數

alpha = np.linspace(0.0001, 0.02, T) # 定義擴散係數,線性地從0.00010.02

sqrt_alpha = np.sqrt(alpha) # 計算擴散係數的平方根

sqrt_one_minus_alpha = np.sqrt(1 - alpha) # 計算 (1 - α) 的平方根

# 訓練算法的目的是優化 𝜖𝜃,使其能夠有效地表示從高斯噪聲轉換回數據的過程。

def train(q_sample, T, alpha, sqrt_alpha, sqrt_one_minus_alpha):

epsilon_theta = np.random.randn() # 初始猜測

for _ in range(10000): # 迭代直到收斂

x0 = q_sample() # 從數據分佈 q(x0) 取樣

t = np.random.randint(1, T + 1) # 從 {1, ..., T} 中均勻取樣 t

epsilon = np.random.randn() # 從 N(0, I) 取樣 epsilon

# 計算梯度下降步驟

epsilon_theta -= 0.001 * (epsilon_theta * sqrt_alpha[t] + sqrt_one_minus_alpha[t] * epsilon - x0) ** 2

# 收斂檢查

if np.linalg.norm(epsilon_theta) < 1e-5:

break

return epsilon_theta

🐌採樣演算法

raw-image

(1)從高斯分布中隨機選擇一個隨機值(初始樣本):X


(2)逐步從T到1移除噪音(e.g. T = 1000 # 定義時間步數)(3)在每個時間步T,如果 T 大於1,我們從標準高斯分佈中采樣一個隨機噪聲Z。(如果T等於1,則設Z為0。這是因為在最後一步不再需要添加額外的噪聲。)(4)使用去噪步驟更新x


def sample(epsilon_theta, T, alpha, sqrt_alpha, sqrt_one_minus_alpha):

# 從N(0, I)中採樣 xT

x = np.random.randn() # 逐步從T1進行迴圈

for t in range(T, 0, -1):

# 如果 t > 1,則從N(0, I)中採樣z,否則z = 0

z = np.random.randn() if t > 1 else 0

# 使用去噪步驟更新x

x = (x - (1 - alpha[t]) / sqrt_alpha[t] * epsilon_theta) / sqrt_alpha[t] + sqrt_one_minus_alpha[t] * z

# 返回最終生成的x0

return x

📌參考資料

論文:https://arxiv.org/pdf/2006.11239

文章:https://adam-study-note.medium.com/diffusion-model-denoising-diffusion-probabilistic-models-ddpm-%E8%A9%B3%E7%B4%B0%E4%BB%8B%E7%B4%B9-5ce77b6b64d4





avatar-img
3會員
11內容數
Hello 我是黃仁和 就讀於國立台北科技大學 資財系 目前剛升上大四 我的專長為資料科學領域目前專攻於影像 並且於台灣大哥大擔任影像AI實習生
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
仁和的論文整理 的其他內容
本研究使用了盤中逐筆成交資料(Tick-by-tick Data)來進行股票價格的預測,並討論了馬可夫鏈模型和擴散核模型在這方面的應用。研究結果表明,大多數股票的未來三秒價格可以在少於22個狀態中找到,顯示了交易價格的低不確定性。此外,研究還發現波動性更大和價格更高的股票更難以準確預測。
U-Net演算法架構解析,首次介紹了U-Net的設計,架構,以及在Stable-diffusion中的應用。詳盡分析了U-Net的收縮路徑、擴展路徑、最終層,以及形變不變性的應用。同時提供了相關論文以及PyTorch實作的參考資料。
本文章介紹了ControlCom影像合成模型的技術與架構,以及其與其他方法的比較。模型具有可控的圖像合成能力,並提供了豐富的細節信息。文章詳細解釋了模型的優勢、方法與架構,以及數據準備和結果與結論。
本文介紹了影像合成任務及其歷史解決方案,包括物品置入、影像混合、圖像協調、陰影生成等多個子任務。文章列舉了傳統方法和深度學習方法,並介紹了一體化模型的流行趨勢。深入詳細的解析論文中提供的各種解決方案和方法。論文資料來源包括多篇相關研究論文與鏈接。
本研究使用了盤中逐筆成交資料(Tick-by-tick Data)來進行股票價格的預測,並討論了馬可夫鏈模型和擴散核模型在這方面的應用。研究結果表明,大多數股票的未來三秒價格可以在少於22個狀態中找到,顯示了交易價格的低不確定性。此外,研究還發現波動性更大和價格更高的股票更難以準確預測。
U-Net演算法架構解析,首次介紹了U-Net的設計,架構,以及在Stable-diffusion中的應用。詳盡分析了U-Net的收縮路徑、擴展路徑、最終層,以及形變不變性的應用。同時提供了相關論文以及PyTorch實作的參考資料。
本文章介紹了ControlCom影像合成模型的技術與架構,以及其與其他方法的比較。模型具有可控的圖像合成能力,並提供了豐富的細節信息。文章詳細解釋了模型的優勢、方法與架構,以及數據準備和結果與結論。
本文介紹了影像合成任務及其歷史解決方案,包括物品置入、影像混合、圖像協調、陰影生成等多個子任務。文章列舉了傳統方法和深度學習方法,並介紹了一體化模型的流行趨勢。深入詳細的解析論文中提供的各種解決方案和方法。論文資料來源包括多篇相關研究論文與鏈接。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在某些情況下,別人提供的 Pretrained Transformer Model 效果不盡人意,可能會想要自己做 Pretrained Model,但是這會耗費大量運
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
最近在嘗試使用不同的AI生圖方式混合出圖的方式,採用A平台的優點,並用B平台後製的手法截長補短,創造出自己更想要的小說場景,效果不錯,現在以這張圖為例,來講一下我的製作步驟。
Thumbnail
Enhance This HiDiffusion SDXL是一個AI模型,結合HiDiffusion和SDXL兩種圖像生成模型,可以根據既有影像和文字描述生成新的圖像,可用來提高圖像解析度、修復瑕疵、轉換風格和自由創造新的圖像。
Thumbnail
這篇要介紹AI生成影片的兩個方式:SVD 跟 AnimateDiff。
Thumbnail
這篇要來分享一下學習了一些攝影的知識後,用於改良AI生圖的經驗。 AI生圖可以藉由少少的幾個句子產生出非常美麗的圖片,事實上,很多時候AI生圖的極限是卡在人類使用者的想像力之下。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在某些情況下,別人提供的 Pretrained Transformer Model 效果不盡人意,可能會想要自己做 Pretrained Model,但是這會耗費大量運
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
最近在嘗試使用不同的AI生圖方式混合出圖的方式,採用A平台的優點,並用B平台後製的手法截長補短,創造出自己更想要的小說場景,效果不錯,現在以這張圖為例,來講一下我的製作步驟。
Thumbnail
Enhance This HiDiffusion SDXL是一個AI模型,結合HiDiffusion和SDXL兩種圖像生成模型,可以根據既有影像和文字描述生成新的圖像,可用來提高圖像解析度、修復瑕疵、轉換風格和自由創造新的圖像。
Thumbnail
這篇要介紹AI生成影片的兩個方式:SVD 跟 AnimateDiff。
Thumbnail
這篇要來分享一下學習了一些攝影的知識後,用於改良AI生圖的經驗。 AI生圖可以藉由少少的幾個句子產生出非常美麗的圖片,事實上,很多時候AI生圖的極限是卡在人類使用者的想像力之下。