引言
Diffusion?model大獲成功,但是它的短板也很明顯,需要大量的計(jì)算資源,并且推理速度比較慢。如何才能提升Diffusion?model的計(jì)算效率。業(yè)界有各種各樣的改進(jìn),無疑Latent?Diffusion?Models(潛在擴(kuò)散模型,LDMs)是比較成功的一篇,那就來學(xué)習(xí)一下LDMS是怎么做的吧
論文貢獻(xiàn)
1,與基于變換的方法相比,論文的方法在處理更高維度數(shù)據(jù),可以高效地應(yīng)用于高分辨率圖像的合成,具體措施如下
- )使用潛在空間進(jìn)行訓(xùn)練:作者在隱空間而不是像素空間上訓(xùn)練擴(kuò)散模型。這使得模型可以在更高分辨率的圖像上實(shí)現(xiàn)高效的圖像合成,同時降低計(jì)算復(fù)雜性。
- )訓(xùn)練自動編碼器:首先,作者訓(xùn)練了一個自動編碼器,它提供了一個低維(因此高效)的表示空間,該空間在感知上等價于數(shù)據(jù)空間。這種表示空間使得模型可以更好地處理高維數(shù)據(jù),同時保留了圖像的細(xì)節(jié)。
- )在潛在空間中訓(xùn)練擴(kuò)散模型:在自動編碼器的潛在空間上訓(xùn)練擴(kuò)散模型,使得模型可以在更高分辨率的圖像上實(shí)現(xiàn)高效的圖像合成和條件生成。這種方法在降低計(jì)算復(fù)雜性的同時,保留了擴(kuò)散模型的高質(zhì)量和靈活性。
2,論文在多個任務(wù)(無條件圖像合成、修復(fù)、隨機(jī)超分辨率)和數(shù)據(jù)集上實(shí)現(xiàn)了競爭性的性能,同時顯著降低了計(jì)算成本。與基于像素的擴(kuò)散方法相比,論文還顯著降低了推斷成本。
3,論文發(fā)現(xiàn),與先前同時學(xué)習(xí)編碼器/解碼器架構(gòu)的方法相比,論文的方法不需要精細(xì)權(quán)衡重建和生成能力。這確保了極其準(zhǔn)確的重建,并且對潛在空間的正則化要求非常低。
4,此外,論文設(shè)計(jì)了一種基于交叉注意力的通用條件機(jī)制,實(shí)現(xiàn)了多模態(tài)訓(xùn)練。
- )引入交叉注意力層:作者在模型架構(gòu)中引入了交叉注意力層,使得潛在擴(kuò)散模型(LDMs)能夠處理各種條件輸入,例如文本或邊界框。
- )條件潛在擴(kuò)散模型:作者將交叉注意力層與?UNet?結(jié)合,以實(shí)現(xiàn)條件圖像生成。這使得模型可以在各種條件圖像合成任務(wù)中實(shí)現(xiàn)高效的圖像生成。
- )文本到圖像合成:作者在?LAION-400M?數(shù)據(jù)集上訓(xùn)練了一個基于文本提示的條件?LDM。他們使用?BERT-tokenizer?對文本進(jìn)行編碼,并實(shí)現(xiàn)?τθ?作為?Transformer,以從文本中推斷出潛在編碼,然后通過(多頭)交叉注意力將其映射到?UNet。
- )多模態(tài)訓(xùn)練:作者在多個數(shù)據(jù)集上訓(xùn)練了模型,以實(shí)現(xiàn)類別條件、文本到圖像和布局到圖像的生成。這種方法可以在不同的任務(wù)上獲得高度競爭性的性能,而無需針對特定任務(wù)的架構(gòu)。
5,最后,論文在https://github.com/CompVis/latent-diffusion上發(fā)布了預(yù)訓(xùn)練的潛在擴(kuò)散和自編碼模型。
具體方法
1,結(jié)構(gòu)整體理解
Latent?Diffusion?Models整體框架如圖,分為左中右三個部分,左邊是一個訓(xùn)練好的自編碼模型(AutoEncoder,包括一個編碼器?E?和一個解碼器?D?),中間是個Diffusion?Models,右邊是個condition模塊。
首先為什么要加入左邊紅色這個模塊,我們可以這么想,Diffusion?Models的問題在于耗時和耗費(fèi)資源,那么最耗資源的部分是哪里,肯定是從清晰圖像到相對模糊的這部分,因?yàn)檫@時候要從圖像的每個像素點(diǎn)開始計(jì)算,占用了大量的資源和時間,
解決的方法也很直觀,我們先把像素點(diǎn)壓縮合并一下,大圖像變小圖像,然后從小圖像開始做diffusion,因?yàn)閴嚎s和解壓縮的這個過程遠(yuǎn)比diffusion過程來的快和節(jié)省資源,所以整個過程也就一下子壓縮節(jié)省了大量資源和時間。
同理我們把像素點(diǎn)壓縮的方法替換成編碼器和解碼器,小圖片理解成隱空間,對這就是Latent?Diffusion?Models的做法了。
其實(shí)到上一步Latent?Diffusion?Models主體工作已經(jīng)可以完成,不過作者覺得可以無條件擴(kuò)散生成,也可以有條件引導(dǎo)模型進(jìn)行更好的擴(kuò)散。如圖1右邊部分。通過使用交叉注意力機(jī)制將DM的底層UNet骨干增強(qiáng)為更靈活的條件圖像生成器,整體是不是很自然的一個思路。
好那讓我們再具體看看Latent?Diffusion?Models是怎么做的。對應(yīng)圖左中右三部分,分別為圖片感知壓縮(Perceptual?Image?Compression),潛在擴(kuò)散模型(Latent?Diffusion?Models),條件機(jī)制(Conditioning Mechanisms)
2,圖片感知壓縮(Perceptual?Image?Compression)對應(yīng)圖最左邊AutoEncoder部分
感知壓縮的擴(kuò)散模型的訓(xùn)練本質(zhì)上是一個兩階段訓(xùn)練的過程的第一階段,第一階段訓(xùn)練一個自編碼器
在第一階段訓(xùn)練自編碼器時,為了避免潛在表示空間出現(xiàn)高度的異化,作者使用了兩種正則化方法,一種是KL-reg,另一種是VQ-reg。
具體地說,給定一個在RGB空間中的圖像x∈R?H×W×3,編碼器E將x編碼為一個潛在表示z?=?E(x)?編碼圖像,解碼器?D?從潛在空間重構(gòu)圖像,得到?x??=?D(z)?=?D(E(x)),其中?z?∈?R^(h×w×c)
3,潛在擴(kuò)散模型(Latent?Diffusion?Models)對應(yīng)圖1中間部分
潛在擴(kuò)散模型對應(yīng)的是兩階段訓(xùn)練的過程的第二階段,針對第一階段得到的隱空間進(jìn)行diffusion操作
回憶一下Diffusion?Models的公式
LDM?=?Ex,ε~N(0,1),th?[?(ε?-?εθ(xt,?t))^2?/?2?]
我們把編碼器?E?和一個解碼器?D代入公式得到
LDM?=?E[x,?ε?~?N(0,1),?t]((ε?-?ε_θ(z_t,?t))^2?/?2)
好我們就得到了LDM的訓(xùn)練公式了
4,條件機(jī)制(Conditioning?Mechanisms)對應(yīng)圖1右邊部分
具體來說,引入一個特定領(lǐng)域的編碼器τθ,該編碼器將y投影到中間表示τθ(y)∈RM×dτ,然后通過交叉注意力層將其映射到UNet的中間層,該層算法實(shí)現(xiàn)如下
Attention(Q,?K,?V)?=?softmax??QKT?√?d??·?V,
其中
Q?=?W?(i)?Q?·??i(zt),
K?=?W?(i)?K?·?τθ(y),
V?=?W?(i)?V?·?τθ(y)文章來源:http://www.zghlxwxcb.cn/news/detail-801786.html
好,到這里L(fēng)DM的算法部分就結(jié)束了,是不是還挺直觀的。文章來源地址http://www.zghlxwxcb.cn/news/detail-801786.html
到了這里,關(guān)于大模型 Dalle2 學(xué)習(xí)三部曲(一)Latent Diffusion Models學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!