OpenAI最近發(fā)布了DALL-E 2.可看作是CLIP+GLIDE.
GLIDE是一個擴散模型捍掺,想弄清楚DALL-E 2,需要先了解擴散模型及GLIDE的原理乔宿。
1.DDPM
擴散模型(Diffusion Model)是一種圖像生成模型容燕,其余GAN,VAE等方法機制不同桥狡。
擴散模型包含兩個階段,從原圖逐步到噪聲的正向過程/擴散過程(forward/diffusion process)和從噪聲逐步到原圖的逆向過程(reverse process)颅围。
逆向過程
逆向過程從一張隨機高斯噪聲圖片xt開始伟葫,通過逐步去噪生成最終的結(jié)果x0 。這個過程是一個Markov Chain院促,
正向/擴散過程
采用的是一個固定的Markov chain形式筏养,即逐步地向圖片添加高斯噪聲:
可以直接獲得任意程度的加噪圖片,方便后續(xù)的訓練常拓。
模型訓練
原圖x0是本身有的渐溶,每一步添加的高斯噪聲也是有的。所以訓練過程是你想過程中弄抬,由xt去求得上一步xt-1,直到x0.
高斯均值如下,方差采用的是一個常數(shù)眉睹。
2 Guided Diffusion - 基于類別引導的擴散模型
加入類別條件能夠比無類別條件生成獲得更好的效果荔茬,這是因為加入類別條件的時候,實際上是大大減小了生成時的多樣性竹海。OpenAI的Guided Diffusion [4]就提出了一種簡單有效的類別引導的擴散模型生成方式慕蔚。Guided Diffusion的核心思路是在逆向過程的每一步,用一個分類網(wǎng)絡對生成的圖片進行分類斋配,再基于分類分數(shù)和目標類別之間的交叉熵損失計算梯度孔飒,用梯度引導下一步的生成采樣。這個方法一個很大的優(yōu)點是艰争,不需要重新訓練擴散模型坏瞄,只需要在前饋時加入引導既能實現(xiàn)相應的生成效果。
即在每一步過程中甩卓,在計算高斯分布的均值時加上方差和分類梯度項的乘積鸠匀。基于這樣的改進逾柿,不需要重新訓練擴散模型缀棍,只需要額外訓練一個分類器宅此,就能夠有效地在添加類別引導。擴散模型由于每一次逆向過程都要過至少一遍網(wǎng)絡爬范,所以總體生成速度通常還是比較慢的父腕。
3.Semantic Guidence Diffusion
除了分類引導,還可以有文本青瀑,圖像等多種引導方式璧亮。
基于文本條件的圖像生成,即希望生成的圖像符合文本的描述斥难。
在逆向過程中枝嘶,每個迭代步要對有噪聲的圖像和文本計算embedding相似度,作為引導哑诊。
基于圖像條件的圖像生成躬络,希望生成的圖像與參考的圖像盡可能相似。
4搭儒。Classifier-Free Diffusion Guidence
帶分類器的引導擴散模型缺點是,引導函數(shù)和擴散模型分別進行訓練提茁,不利于進一步擴增模型規(guī)模淹禾,不能夠通過聯(lián)合訓練獲得更好的效果。
感覺4是針對2的茴扁,與3無關铃岔。
無分類器的做法是
根據(jù)有條件和無條件兩次的結(jié)果得到噪聲高斯估計。
5. GLIDE
no-classifer guidence 可以更好的將條件信息加入到擴散模型的訓練中去以得到更好的訓練效果峭火,但同時也會增加訓練成本毁习,因為要過兩次模型。
其中算法的核心即將前面的類別條件更新為了文本條件: