DALL·E 從文本到圖像,超現(xiàn)實(shí)主義的圖像生成器
先感受一下DALL·E生成圖像,輸入文本"牛油果形狀的扶手椅。仿梨型的扶手椅。"DALL·E果然生成了類似超現(xiàn)實(shí)主義的圖片,像真實(shí)存在的一樣。

01
DALL·E

DALL·E的目標(biāo)是把文本token和圖像token當(dāng)成一個(gè)數(shù)據(jù)序列,通過Transformer進(jìn)行自回歸。由于圖片的分辨率很大,如果把單個(gè)pixel當(dāng)成一個(gè)token處理,會(huì)導(dǎo)致計(jì)算量過于龐大,于是DALL·E引入了一個(gè)dVAE模型來降低圖片的分辨率。
DALL·E的整體流程如下:
1.第一個(gè)階段,先訓(xùn)練一個(gè)dVAE把每張256x256的RGB圖片壓縮成32x32的圖片token,每個(gè)位置有8192種可能的取值(也就是說dVAE的encoder輸出是維度為32x32x8192的logits,然后通過logits索引codebook的特征進(jìn)行組合,codebook的embedding是可學(xué)習(xí)的)。
2.第二階段,用BPE Encoder對(duì)文本進(jìn)行編碼,得到最多256個(gè)文本token,token數(shù)不滿256的話padding到256,然后將256個(gè)文本token與1024個(gè)圖像token進(jìn)行拼接,得到長度為1280的數(shù)據(jù),最后將拼接的數(shù)據(jù)輸入Transformer中進(jìn)行自回歸訓(xùn)練。
3.推理階段,給定一張候選圖片和一條文本,可以通過預(yù)訓(xùn)練好的CLIP計(jì)算出文本和圖片的匹配分?jǐn)?shù),采樣越多數(shù)量的圖片,就可以通過CLIP得到不同采樣圖片的分?jǐn)?shù)排序。
從以上流程可知,dVAE、Transformer和CLIP三個(gè)模型都是不同階段獨(dú)立訓(xùn)練的。下面講一下dVAE、Transformer和CLIP三個(gè)部分。
dVAE


先簡(jiǎn)單講一下VAE的原理,VAE就是在AntoEncoder的基礎(chǔ)上給lantent vector添加限制條件,讓其服從高斯分布,這樣我們通過訓(xùn)練得到的decoder就可以直接使用,將隨機(jī)生成的一個(gè)高斯分布喂給decoder就能生成圖片,如上面第一張圖所示(關(guān)于VAE可以看我之前的文章漫談VAE和VQVAE,從連續(xù)分布到離散分布)。
相比于普通的VAE,dVAE有兩點(diǎn)區(qū)別:
1.和VQVAE方法相似,dVAE的encoder是將圖像的patch映射到8192的詞表中,論文中將其分布設(shè)為在詞表向量上的均勻分類分布,這是一個(gè)離散分布,由于不可導(dǎo)的問題,此時(shí)不能采用重參數(shù)技巧,DALL·E使用Gumbel Softmax trick來解決這個(gè)問題(簡(jiǎn)單來說就是arg max不可導(dǎo),可以用softmax來近似代替max,而arg softmax是可導(dǎo)的,后面補(bǔ)一篇Gumbel Softmax的文章)。
2、在重建圖像時(shí),真實(shí)的像素值是在一個(gè)有界區(qū)間內(nèi),而VAE中使用的Gaussian
分布和Laplace分布都是在整個(gè)實(shí)數(shù)集上,這造成了不匹配的問題。為了解決這個(gè)問題,論文中提出了logit-Laplace分布,如下式所示:
Transformer

DALL·E中的Transformer結(jié)構(gòu)由64層attention層組成,每層的注意力頭數(shù)為62,每個(gè)注意力頭的維度為64,因此,每個(gè)token的向量表示維度為3968。如圖所示,attention層使用了行注意力mask、列注意力mask和卷積注意力mask三種稀疏注意力。

Transformer的輸入如圖所示,文本不滿256個(gè)token時(shí),使用pad embed填充,文本token需要加上pos embed,圖片token需要加上行列的embed,這些embed都是可學(xué)習(xí)的。
CLIP

先講一下CLIP的推理過程:
1.先將預(yù)訓(xùn)練好的CLIP遷移到下游任務(wù),如圖(2)所示,先將下游任務(wù)的標(biāo)簽構(gòu)建為一批帶標(biāo)簽的文本(例如 A photo of a {plane}),然后經(jīng)過Text Encoder編碼成一批相應(yīng)的word embedding。
2.然后將沒有見過的圖片進(jìn)行zero-shot預(yù)測(cè),如圖(3)所示,通過Image Encoder將一張小狗的圖片編碼成一個(gè)feature embedding,然后跟(2)編碼的一批word embedding先歸一化然后進(jìn)行點(diǎn)積,最后得到的logits中數(shù)值最大的位置對(duì)應(yīng)的標(biāo)簽即為最終預(yù)測(cè)結(jié)果。
在DALL·E中,CLIP的用法跟上述過程相反,提供輸入文本和一系列候選圖片,先通過Stage One和Stage Two生成文本和候選圖片的embedding,然后通過文本和候選圖片的匹配分?jǐn)?shù)進(jìn)行排序,最后找到跟文本最匹配的圖片。
CLIP部分可以看我之前寫的文章ViLD:超越Supervised的Zero-Shot檢測(cè)器
02
生成結(jié)果
下面看幾個(gè)DALL·E圖像生成效果
輸入文本:一個(gè)穿著芭蕾舞裙的小白蘿卜遛狗的插圖

輸入文本:一個(gè)專業(yè)高質(zhì)量的頸鹿烏龜嵌合體插畫。模仿烏龜?shù)拈L頸鹿。烏龜做的長頸鹿。

超現(xiàn)實(shí)主義,DALL·E對(duì)于文本的理解,非常的邏輯自洽,太夸張了
03
總結(jié)
如今,AI在一些細(xì)分領(lǐng)域逐漸向人類發(fā)起挑戰(zhàn),如圍棋(AlphaZero)、蛋白質(zhì)結(jié)構(gòu)預(yù)測(cè)(AlphaFold)等等,DALL·E則是對(duì)繪畫、設(shè)計(jì)領(lǐng)域向人類發(fā)起挑戰(zhàn)。
未來中低端畫師、設(shè)計(jì)師可能會(huì)源源不斷的被AI替代,只有高端畫師、設(shè)計(jì)師能夠繼續(xù)保持自身的競(jìng)爭(zhēng)力,越來越卷了!
Reference
[1] Zero-Shot Text-to-Image Generation
[2] https://www.zhihu.com/question/447757686/answer/1764970196
一網(wǎng)打盡Pandas中的各種索引 iloc,loc,ix,iat,at,直接索引
