海德編碼器型號說明
2018年,一副由 AI 生成的藝術品《埃德蒙·貝拉米肖像》以大約300萬人名幣的高價成功拍賣,盡管質(zhì)疑聲不斷,從那時起,AI 藝術生成已經(jīng)開始走進大眾的視野中。在過去一年里,出現(xiàn)了大量的文本生成圖像模型,尤其是隨著 Stable Diffusion 以及 Midjourney 的出現(xiàn),帶起了一股 AI 藝術創(chuàng)作熱潮,甚至很多藝術家也開始嘗試用 AI 來輔助藝術創(chuàng)作。在本文中,將會系統(tǒng)梳理近幾年出現(xiàn)的文本生成圖像算法,幫助大家深入了解其背后的原理。
?本圖由本文作者使用 Midjourney 創(chuàng)作生成
目 錄
?
AE
VAE
VQ-VAE
DALL-E
VQGAN
VQGAN-CLIP
DALL-E Mini
Parti
NUWA-Infinity
Diffusion Model
GLIDE
DALL-E2
Imagen
Stable Diffusion
?
?
基于VQ-VAE
在了解 VQ-VAE 的原理之前,需要先理解 AE (AutoEncoder)以及 VAE (Variational Autoencoders),這些模型都屬于自監(jiān)督學習方法,接下來,本文將對其進行簡要的介紹。
“
AE
自編碼器由編碼器以及解碼器組成(如下圖所示) [1] ,其首先對圖像進行壓縮,之后,在對壓縮后的表征進行重建。在實際應用中,自編碼器往往會被用于降維,去噪,異常檢測或者神經(jīng)風格遷移中。
展開全文
由于自編碼器的目標是重建輸入,因此,其損失函數(shù)為: ,其中, 是輸入, 是對 的重建,只需要簡單的端對端訓練,即可得到一個自編碼器。
“
VAE
與 AE 不同的是,VAE 不再去學習一個連續(xù)的表征,而是 直接學習一個分布,然后通過這個分布采樣得到中間表征 ?去重建原圖 [2] 。
VAE 假設中間表征 是一個正態(tài)分布,因此,編碼器部分需要將原圖 映射為正態(tài)分布 ,通過重參數(shù)技巧,得到采樣后的中間表征 , 其中 ?? 采樣于標準整體分布 。緊接著,解碼器通過中間表征 z ?進行解碼操作,得到原圖的重建。VAE 的損失函數(shù)定義為:
其中,
在 VAE 的損失函數(shù)中,第一項的目的是讓模型能夠重建輸入,而第二項的目的是讓解碼器輸出的分布盡量接近標準整體分布,這樣的好處是,迫使 接近于標準整體分布,這樣在生成的時候,就可以直接從正態(tài)分布中采樣, 然后通過解碼器部分進行圖像生成了。
“
VQ-VAE
VAE 具有一個最大的問題就是使用了固定的先驗(正態(tài)分布),其次是使用了連續(xù)的中間表征,這樣會導致圖片生成的多樣性并不是很好以及可控性差。為了解決這個問題,VQ-VAE ( Vector Quantized Variational Autoencoder)選擇使用 離散的中間表征,同時,通常會使用一個自回歸模型來學習先驗(例如 PixelCNN 或者 Transformer)。在 VQ-VAE 中,其中間表征就足夠穩(wěn)定和多樣化,從而可以很好的影響 Decoder 部分的輸出 ,幫助生成豐富多樣的圖片。因此,后來很多的文本生成圖像模型都基于 VQ-VAE [3] 。
VQ-VAE 的算法流程為:
VQ-VAE 最核心的部分就是 Codebook 查詢操作,通過使用具有高度一致性的 Codebook 來代替混亂的中間表征,可以有效的提高圖像生成的可控性和豐富度。VQ-VAE 的損失函數(shù)定義為:
其中,sg 為梯度暫停操作,也就是 sg 所處的模塊不會進行梯度更新。
損失函數(shù)的第一項主要是針對編碼器和解碼器,在這個過程中,由于中間 codebook 查詢操作是離散的,因此,這里直接將 的梯度,復制給 ,從而形成梯度反向傳播。第二項被稱為 VQ loss,其目的是訓練 codebook 模塊 e,由于 這里是固定的,因此會迫使 codebook 模塊 e 朝 靠近。第三項被稱為 commitment loss,這里只有 的梯度在變化,其目的是反過來讓 去靠近 codebook 模塊 ,從而使得 encoder 模塊的輸出能夠更加穩(wěn)定。
在 VAE 中,由于中間表征 服從標準正態(tài)分布,因此在生成的時候,只需要在標準正態(tài)分布中隨機采樣即可。而在 VQ-VAE 中,隨機選擇 N 個 codebook 不能保證生成預期的圖像,因此,需要有一個模型來學習生成特定中間表征,這樣才能生成有效的圖像(也稱為學習先驗)。
因此,在原始的 VQ-VAE 論文中,作者通過使用 PixelCNN 來學習先驗,首先,使用訓練好的 VQ-VAE 來得到訓練數(shù)據(jù)的中間離散編碼,來作為自回歸模型 PixelCNN 的語料庫進行訓練。之后,在生成的時候,直接使用 PixelCNN 來生一個中間離散表征,然后通過匹配 Codebook,使用 Decoder 進行圖片生成。
“
DALL-E
DALL-E 由 OpenAI 開發(fā),其第一代版本使用的是 VQ-VAE,是當前非常流行的文本生成圖像模型之一。目前,DALL-E 第一代并沒有開放,因此,想要試玩可以直接去玩網(wǎng)友復現(xiàn)的 DALL-E-Mini 版本。
DALL-E 第一代最大的特色是 對語義的理解非常出色,以及可以生成各種非常規(guī)但是又符合語義信息的圖像 [4,5] 。
DALL-E 模型中的生成模塊使用的是 VQ-VAE,不同的是,其先驗的學習,使用的是 文本到中間離散表征的映射,具體步驟如下:
在生成過程中,直接輸入文本,通過 Transformer 預測中間表征 ,然后 dVAE 的 Decoder 模塊通過中間表征 來生成最終圖像。在 DALL-E 的文章中,作者還提出了很多技術上的細節(jié),例如,在最后挑選圖片的時候,可以使用 CLIP 模型來選擇與文本相似度最高的模型,以及分布式訓練,混合精度訓練等,具體細節(jié)可以查看原論文。
基于 GAN
生成對抗網(wǎng)絡( GAN,Generative Adversarial Networks) 由兩個主要的模塊構成:生成器和判別器。生成器負責生成一張圖片,而判別器則負責判斷這張圖片質(zhì)量,也就是判斷是真實樣本還是生成的虛假樣本,通過逐步的迭代,左右互博,最終生成器可以生成越來越逼真的圖像,而判別器則可以更加精準的判斷圖片的真假。GAN 的最大優(yōu)勢是其 不依賴于先驗假設,而是通過迭代的方式逐漸學到數(shù)據(jù)的分布[6] 。
最原始的GAN的定義為:
其中,
當海德編碼器我們固定 的時候,最大化 的含義是,數(shù)據(jù)如果來源于真實數(shù)據(jù) ,我們需要 要接近于 1,而當數(shù)據(jù)來源于生成器 的時候,我們需要它接近于 0,也就是說,判別器 需要將真實數(shù)據(jù)判斷為 1 而將生成數(shù)據(jù)判斷為 0,這個時候,可以對判別器 進行優(yōu)化。而當我們固定判別器 的時候,最小化 ,則需要生成器 生成的數(shù)據(jù)接近于真實數(shù)據(jù)。
簡單來說, 一個 GAN 的訓練流程如下:
上文中介紹的 GAN 模型僅僅是最原始的 GAN,在后來的發(fā)展中,GAN 已經(jīng)逐漸被用到各個領域,也產(chǎn)生了非常多的變種,接下來將會介紹一個非常知名的基于 GAN 的文本生成圖像模型 VQGAN-CLIP。
“
VQGAN
上文中已經(jīng)介紹了 GAN 的基本原理,而 VQGAN ( Vector Quantized Generative Adversarial Networks )則是一種 GAN 的變種(如下圖所示) [7] ,其受到 VQ-VAE 的啟發(fā), 使用了 codebook 來學習離散表征。
具體來說,會預先定義 個向量作為離散的特征查詢表,當一張圖片被送入到 CNN Encoder 中后,會得到 個圖像的中間表征 ,之后會在 Codebook 中去查詢與其最相似的表征向量,得到 個表征 ,其過程用公式可以描述為:
緊接著,CNN Decoder 會根據(jù)得到的表征 去重建圖像。
上述步驟跟 VQ-VAE 非常像,而 VQGAN 與之不同的是,上述步驟僅僅對應于 GAN 中的生成器,因此,這里還需要一個判別器 ,來對生成的圖像進行判斷,而與傳統(tǒng) GAN 不同的是, 這里的判別器不是對每張圖片進行判斷,而是對每一個圖片的 Patch 進行判斷。
對于 VQGAN 中生成器的訓練,其損失函數(shù)與 VQ-VAE 非常相似,其公式為:
VQGAN的訓練損失函數(shù)定義為:
結合上述生成器的訓練的損失函數(shù),其完整公式可以表示為:
實際上,和 GAN 的損失函數(shù)還是非常一致的,不同的是, 這里的對于生成器部分的優(yōu)化,需要使用與 VQ-VAE 一樣的方法去進行。
在訓練好 VQGAN 之后,在生成的時候,可以直接初始化一個 去生成,然而,為了能夠得到穩(wěn)定的 ,需要使用一個模型對先驗進行學習,這里使用了 Transformer 模型來學習 中離散表征的序列,可以簡單的將其建模為自回歸模型 ,這樣,我們只需要給定一個初始的隨機向量,就可以通過 Transfomer 模型生成完整的 ,從而可以通過 CNN Decoder 模塊生成最終的圖像。
“
VQGAN-CLIP
VQGAN-CLIP 也是一個非常流行的文本生成圖像模型,一些開放的文本生成圖像平臺使用的就是 VQGAN-CLIP [8] 。
VQGAN-CLIP 通過文本描述信息來對 VQGAN 模型進行引導,使其最終生成與文本描述非常相似的圖片,其具體過程如下圖所示:
具體來說,在最開始,需要初始化一張圖片,其像素為隨機生成,這個時候,模型是從 0 開始迭代,也可以初始化一張繪制好的原始圖片,這個時候,模型的迭代相當于對這張圖片進行重繪。通過 VQGAN 的 Encoder 模塊,可以得到中間表征離散 Z-vector,這個上文中 VQGAN 中的 是一樣的。
通過 CLIP 模型,來對比生成的圖像特征與指定文本的相似度,來調(diào)節(jié)中間表征向量 ?Z-vector,從而使得 VQGAN 模塊生成與文本描述一致的圖片,從上圖中看出,除了 VQGAN 和 CLIP 模塊,還有 Random Crops 以及 Augmented Images,這個操作是為了增加圖片的穩(wěn)定性,而且實驗證明,加了這兩個操作之后,更利于優(yōu)化。
基于 VQGAN-CLIP 生成的模型如下圖所示,通過設置復雜的描述,可以生成質(zhì)量非常高的圖片。
“
DALL-E Mini
DALL-E Mini 是網(wǎng)友對 DALL-E 的復現(xiàn)版本 [8] ,不同的是,DALL-E Mini 并沒有使用原始的 VQ-VAE,而是使用了 VQGAN, DALL-E-Mini 模型要遠遠小于原始 DALL-E 模型,使用的訓練樣本也相對較少 [9] 。
DALL-E-Mini 首先使用 BART 模型(一種Sequence-to-Sequence模型)來學習文本到圖像的映射,將文本轉(zhuǎn)換為離散圖像表征。
在圖像生成步驟中,可以直接將文本輸入到 BART 中,然后得到圖片離散表征,緊接著使用 VQ-GAN Decoder 模塊,將離散圖像表征解碼為完整圖像,之后在使用 CLIP 對圖像進行篩選,得到最終的生成結果。
“
Parti
在 Imagen 剛出來后沒多久(Imagen的介紹可以看擴散模型部分),Google 又繼續(xù)提出了新的文本生成圖像模型 Parti,其全稱為「Pathways Autoregressive Text-to-Image」,直觀來看,就是使用了 Google 最新提出的 Pathway 語言模型 [10] 。
與 Imagen 不同的是, Parti 又回歸了原始文本生成圖像的做法,不是直接使用文本表征作為條件擴散模型范式去生成圖像,而是使用 Pathway 語言模型,學習文本表征到圖像表征的映射,也就是像 DALL-E2 一樣,學習一個先驗模型,同時,Parti 使用的是基于 VQGAN 的方法,而不是擴散模型。
具體來說,Parti 首先訓練一個 ViT-VQGAN 模型,之后使用 Pathway 語言模型學習文本到圖像 token 的映射,由于 Pathway 語言模型強大的序列預測能力,其輸出的圖像表征非常出色,在預測過程中,只需將文本映射為圖片表征,然后使用 ViT-VQGAN 解碼器模塊進行解碼即可。
Parti 最大的特色就是 20B 的大模型,其參數(shù)量支持模型能夠進行復雜語義理解,下圖是不同參數(shù)量模型對于文本描述:「 一張身穿橙色連帽衫和藍色太陽鏡的袋鼠肖像照片站在悉尼歌劇院前的草地上,胸前舉著寫著“歡迎朋友”標語的牌子海德編碼器!」 的生成效果,可以看出 20B 的大模型能夠非常精準的理解 Prompt 的語義信息。
“
NUWA-Infinity
NUWA-Infinity 是微軟亞洲亞洲研究院 NUWA 團隊基于之前工作,研發(fā)出的無限視覺生成模型,其特點是, 可以對已有的畫進行續(xù)畫,尤其是對于風景畫效果非常驚艷,同時,該模型還支持文本生成圖像,動畫生成等任務,不過由于其主要創(chuàng)新點在于圖片續(xù)畫,因此在這里只對這一功能進行詳細介紹 [11] 。
為了實現(xiàn)這一功能,作者提出了全局自回歸嵌套局部自回歸的生成機制,其中,全局自回歸建模視覺塊之間的依賴 (patch-level),而局部自回歸建模視覺 token 之間的依賴 (token-level)。其公式表達為:
也就是一個全局自回歸模型中(n個patch),嵌入了一個局部自回歸模型(m個token)。
在 NUWA-Infinity 中,作者還提出了兩個機制,Nearby Context Pool(NCP)和 Arbitrary Direction Controller (ADC)。其中,ADC 負責將圖片分割成 patch 并決定 patch 的方向,如下圖所示,左圖為訓練的時候的順序定義,右圖是推理的時候的順序定義。
由于當圖片尺寸變大之后,patch 的數(shù)量會超過自回歸模型所能接收的最大長度,因此需要有一個增加新 patch 和移除舊 patch 的機制,這樣就保證了自回歸模型一直在需要生成的 patch 附近進行序列學習。
在模型的訓練過程中,首先將圖片分成 patch,然后,隨機選擇一種 patch 生成順序,這對應于全局自回歸操作。而對于每一個 patch,首先選擇其鄰近的 patch,加入位置編碼以及文本信息,一起送入到自回歸模型中,得到預測的中間離散表征 ,同時,對于之前的 patch, 使用訓練好的 VQ-GAN 生成中間離散表征 ,而模型的目標則是讓 與 足夠接近。直觀來說,模型本質(zhì)上是在訓練一個模型,其通過與當前 patch 的鄰近的 patch 的中間離散表征,和文本表征,來預測當前 patch 的中間離散表征。
在推理過程中,對于圖片續(xù)畫任務,只需要將圖片輸入進模型,選擇 K 個 patch 作為條件,對 NCP 進行初始化,然后就可以通過已有的選擇的 patch 結合文本信息,來對下個patch進行預測,最后使用 VQGAN Decoder 來將預測的 patch 的中間離散表征解碼成圖片即可,通過不斷的迭代,最終實現(xiàn)對圖片的續(xù)畫功能。
基于Diffusion Model
不同于 VQ-VAE,VQ-GAN, 擴散模型是當今文本生成圖像領域的核心方法,當前最知名也最受歡迎的文本生成圖像模型 Stable Diffusion,Disco-Diffusion,Mid-Journey,DALL-E2 等等,均基于擴散模型。在這部分,會對擴散模型的原理以及基于擴散模型的算法進行詳細的介紹。
“
Diffusion Model
回憶上文提到的 VQ-VAE 以及 VQ-GAN,都是先通過編碼器將圖像映射到中間潛變量,然后解碼器在通過中間潛變量進行還原。實際上,擴散模型做的事情本質(zhì)上是一樣的,不同的是,擴散模型完全使用了全新的思路來實現(xiàn)這個目標 [12,13.14] 。
在擴散模型中,主要有兩個過程組成, 前向擴散過程,反向去噪過程,前向擴散過程主要是將一張圖片變成隨機噪音,而逆向去噪過程則是將一張隨機噪音的圖片還原為一張完整的圖片。
為了幫助理解,這里選擇最經(jīng)典的擴散模型進行介紹,關于擴散模型的具體推導,可以參考 [13,14] 。
「前向擴散過程」
前向擴散過程的本質(zhì)就是 在原始圖像上,隨機添加噪音,通過 T 步迭代,最終將原始圖片的分布變成標準高斯分布 具體來說,給定初始數(shù)據(jù)分布 ,增加噪聲的過程可以定義為如下公式:
其中: ,在這個過程中,隨著 t 的不斷增大,最終數(shù)據(jù)分布 x 變成了一個各向獨立的高斯分布。
值得注意的是,這里正向擴散的過程,由于參數(shù) 是預先定義好的,前向過程沒有任何需要學習的參數(shù),因此每一時刻的結果都可以直接計算出來,這里首先定義 , ,則:
因此得到前向擴散過程的分布表達式為:
「逆向擴散過程」
逆向過程就是還原的過程,也就是 從高斯噪聲中恢復原始分布的過程,實際上,只要學習 分布即可,可以通過一個可學習的神經(jīng)網(wǎng)絡來對其進行擬合,其定義如下:
其中, 由于無法直接估計,因此一般會使用神經(jīng)網(wǎng)絡模型來進行逼近,需要注意的是,在原始論文中,方差是無需訓練的,被預選設置好了: ,而這里
由于隱馬爾可夫的性質(zhì), 是條件獨立的,因此 ,而這里,后一項則可以直接使用一個表達式來表達出來,從而使得的們可以進行后面的優(yōu)化計算,這里將表達式寫成:
通過推導可以得到:(詳細可以看 [13,14] )
擴散模型本質(zhì)上也是在學習數(shù)據(jù)分布,因此其對數(shù)似然可以表示為:
最終,其 loss 可以表示為 [13,14] :
經(jīng)過化簡,可以得到最后 loss 表達形式,從公式形態(tài)來看,其目標就是在預測每一步的噪音:
「訓練流程」
直觀上理解,擴散模型其實是通過一個神經(jīng)網(wǎng)絡 ,來預測每一步擴散模型中所添加的噪音,其算法流程如下:
在完成訓練之后,只需要通過重參數(shù)化技巧,進行采樣操作即可,具體流程如上邊右圖所示,通過不斷的「減去」模型預測的噪音,可以逐漸的生成一張完整的圖片。
「Classifier-Free Guidance Diffusion」
基于傳統(tǒng)的擴散模型,后續(xù)又有一些改進操作,這些改進操作使得擴散模型被廣泛的應用于文本生成圖像任務中。其中,最常用的改進版本為 Classifier-Free Guidance Diffusion [15] 。
上述擴散模型通過 來對噪音進行估計,而引導擴散模型,則需要將引導條件 ,加入到模型輸入中,因此到的 ,而 Classifier-Free Guidance Diffusion 則結和了條件和無條件噪聲估計模型,其定義為:
這樣做的優(yōu)點是 訓練過程非常穩(wěn)定,且擺脫了分類器的限制(實際上等價于學習了一個隱含的分類器),缺點是,成本比較高,相當于每次要生成兩個輸出,盡管如此,后面的大部份知名文本生成圖像模型,都是基于這個方法進行的。
“
GLIDE
GLIDE 使用了 文本作為條件,來實現(xiàn)文本引導的擴散模型,在文本引導上面,文中主要使用了兩種策略,Classifier-Free Diffusion Guidence 以及 CLIP 來作為條件監(jiān)督,同時使用了更大的模型,在數(shù)據(jù)量上,和DALL-E 相似 [16] 。
GLIDE 的核心就是 Classifier-Free Diffusion Guidence,其使用文本描述作為引導,來訓練一個擴散模型,其定義為:
其中,y是一段文本描述。
由于 GLIDE 方法提出較早,相對于現(xiàn)有很多方法,GLIDE 模型的效果并不是很好,下面是 GLIDE 生成的圖像示例。
GLIDE 還支持通過 選取區(qū)域+文本Prompt來對圖像進行編輯操作,可以看出效果也不錯。使用過程中,只需要將遮蔽區(qū)域進行 mask,以及剩下的圖片一起送入到網(wǎng)絡中,即可產(chǎn)生補全之后的圖片。
此外, GLIDE 的語義理解能力并不是很強,在一些少見的文本描述下,很難產(chǎn)生合乎邏輯的圖像,而 DALL-E2 在這方面的能力上,要遠超 GLIDE
“
DALL-E2
DALL-E2 是 OpenAI 最新 AI 生成圖像模型,其最大的特色是 模型具有驚人的理解力和創(chuàng)造力, 其參數(shù)大約 3.5B , 相對于上一代版本,DALL-E2 可以生成4倍分倍率的圖片,且非常貼合語義信息。作者使用了人工評測方法,讓志愿者看1000張圖,71.7% 的人認為其更加匹配文本描述 ,88.8% 認為畫的圖相對于上一代版本更加好看 [17,18] 。
DALL-E2 由三個模塊組成:
CLIP模型,對齊圖片文本表征
先驗模型,接收文本信息,將其轉(zhuǎn)換成 CLIP 圖像表征
擴散模型,接受圖像表征,來生成完整圖像
DALL-E2 的訓練過程為:
訓練一個 CLIP 模型,使其能夠?qū)R文本和圖片特征。
訓練一個先驗模型,由自回歸模型或者一個擴散先驗模型(實驗證明,擴散先驗模型表現(xiàn)更好),其功能是將文本表征映射為圖片表征。
訓練一個擴散解碼模型,其目標是根據(jù)圖片表征,還原原始圖片。
在訓練完成之后,推理過程就比較直接了,首先使用CLIP 文本編碼器,獲得文本編碼,之后使用先驗模型將文本編碼映射為圖片編碼,最后使用擴散解碼器用圖片編碼生成完整圖片。注意這里擴散解碼模型使用的是經(jīng)過修改的 GLIDE 擴散模型,其生成的圖像尺寸為 64x64,然后使用兩個上采樣擴散模型將其上采樣至 256x256,以及 1024x1024.
DALL-E2 原論文中也提到了其許多不足,例如容易將物體和屬性混淆,無法精確的將文本放置到圖像中,然而,這些都無法阻止大家對文本生成圖像的熱情,DALL-E2 也被廣泛應用到各種藝術創(chuàng)作過程中。
“
Imagen
在 DALL-E2 提出沒多久,Google 就提出了一個新的文本生成圖像模型 Imagen [19] ,論文中提到, 其生成的圖片相對于 DALL-E2 真實感和語言理解能力都更加強大(使用一種新的評測方法 DrawBench)。
Imagen 的圖像生成流程和 DALL-E2 非常像,首先將文本進行編碼表征,之后使用擴散模型將表征映射成為完整圖像,同時會通過兩個擴散模型來進一步提高分辨率。與 DALL-E2 不同的是, Imagen 使用了 T5-XXL 模型直接編碼文本信息,然后使用條件擴散模型,直接用文本編碼生成圖像。因此,在 Imagen 中,無需學習先驗模型。
由于直接使用 T5-XXL 模型,其語義知識相對于 CLIP 要豐富很多(圖文匹配數(shù)據(jù)集數(shù)量要遠遠少于純文本數(shù)據(jù)集數(shù)量),因此 Imagen 相對于 DALL-E2 在語義保真度上做的更好。同時,作者也發(fā)現(xiàn),增大語言模型,可以有效的提高樣本的語義保真度。
“
Stable Diffusion
Stable Diffusion 是由 Stability.ai 于近期開放的文本生成圖像模型,由于其 交互簡單,生成速度快,極大的降低了使用門檻,而且同時還保持了令人驚訝的生成效果,從而掀起了一股 AI 創(chuàng)作熱潮 [20] 。
?本文作者用Stable Diffusion 生成的圖片
Stable Diffusion 是基于之前 Latent Diffusion 模型進行改進的,上文中提到的擴散模型的特點是反向去噪過程速度較慢,其擴散過程是在像素空間進行,當圖片分辨率變大時,速度會變得非常慢。而 Latent Diffusion 模型則考慮在較低維度的潛在空間中,進行擴散過程,這樣就極大的減輕了訓練以及推理成本。
Stable Diffusion 由三個部分組成:
1. VAE
其作用是將圖像轉(zhuǎn)換為低維表示形式,從而使得擴散過程是在這個低維表征中進行的,擴散完成之后,在通過VAE 解碼器,將其解碼成圖片。
2. U-Net 網(wǎng)絡
U-Net 是擴散模型的主干網(wǎng)絡,其作用是對噪音進行預測,從而實現(xiàn)反向去噪過程
3. 文本編碼器CLIP
主要負責將文本轉(zhuǎn)換為U-Net可以理解的表征形式,從而引導U-Net進行擴散。
Stable Diffusion 的具體推理過程如下圖所示 [19] ,首先使用 CLIP 將文本轉(zhuǎn)換為表征形式,然后引導擴散模型 U-Net 在低維表征(64x64)上進行擴散過程,之后將擴散之后的低維表征送入到 VAE 中的解碼器部分,從而實現(xiàn)圖像生成。
模型試玩
了解了文本生成圖像背后的算法原理,也可以試玩一下開源模型,這里列舉了一些當前比較流行且易于使用的模型鏈接,其中,效果最好且交互最便捷的則是 Stable Diffusion 和 MidJourney。
VQGAN-CLIP
https://nightcafe.studio/
DALL-E-Mini
https://huggingface.co/spaces/dalle-mini/dalle-mini
DALL-E2
https://github.com/openai/dall-e ( 需要等 Waitlis t)
Stable Diffusion
https://beta.dreamstudio.ai/dream
Disco-Diffusion
https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb
MidJourney
https://www.midjourney.com/home/
NUWA
https://nuwa-infinity.microsoft.com/#/ (暫未開放,可以保持關注)
總 結
現(xiàn)有的文本生成圖像模型主要基于三類基礎算法:VQ-GAN,VQ-VAE 以及擴散模型,由于擴散模型能夠生成豐富多樣且質(zhì)量高的圖形,已經(jīng)成為文本生成圖像領域的核心方法。目前看來,擴散模型由于每次生成需要迭代,因此速度較慢,這是限制擴散模型廣泛使用的一個主要問題之一。但是隨著一些新的技術出現(xiàn),例如 Stable Diffusion 使用 Latent Diffusion, 擴散模型的生成時間已經(jīng)被逐漸縮短,相信在未來,擴散模型會給 AI 藝術生成領域帶來一場新的變革。
參考文獻
[1] An Introduction to Autoencoders
[3] Neural Discrete Representation Learning
[4] https://openai.com/blog/dall-e/
[5] Zero-Shot Text-to-Image Generation
[6] Generative adversarial nets
[7] Taming Transformers for High-Resolution Image Synthesis
[8] VQGAN-CLIP: Open Domain Image Generation and Editing with Natural Language Guidance
[9] https://wandb.ai/dalle-mini/dalle-mini/reports/DALL-E-mini--Vmlldzo4NjIxODA
[10] Scaling Autoregressive Models for Content-Rich Text-to-Image Generation
[11] NUWA-Infinity: Autoregressive over Autoregressive Generation for Infinite Visual Synthesis
[12] Denoising Diffusion Probabilistic Models
[13] https://lilianweng.github.io/posts/2021-07-11-diffusion-models/#nice
[14] https://huggingface.co/blog/annotated-diffusion
[15] Classifier-Free Diffusion Guidance
[16] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models
[17] Hierarchical Text-Conditional Image Generation with CLIP Latents
[18] https://openai.com/dall-e-2/
[19] Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding
[20] https://github.com/sd-webui/stable-diffusion-webui
[21] https://huggingface.co/blog/stable_diffusion
作者:胡鵬博
排版:朱思嘉
審校:十三維
更多閱讀
從Deepmind火烈鳥看多模態(tài)研究發(fā)展趨勢
基于大規(guī)模語言模型的進化計算:一種新范式
對Lecun新論文解讀:大模型之外的數(shù)字心識探索
在社群中積極參與討論、為知識建設做出貢獻的社群成員將不定期地獲得 「社群專屬福利」
Mindverse Research
心識研究院
心識浩渺連廣宇
心識浩渺連廣宇
心識宇宙研究院,致力于在即將到來的元宇宙數(shù)字時代,研究和創(chuàng)造真正等價于人類意識水平的數(shù)字生命,目前已經(jīng)綜合多種研究進路和方法規(guī)劃出一條通向AGI和人工意識的道路。在后續(xù)內(nèi)容運營上,我們也會介紹和創(chuàng)造更多有關人工智能、意識科學、元宇宙方面最新的研究成果和原創(chuàng)內(nèi)容。
歡迎有志者關注和加入我們的研究!