OpenAI剛剛推出了一個新的文字生成影象模型,名叫GLIDE。
相比今年年初誕生的大哥DALL·E,它只有35億引數(DALL·E有120億)。
規模雖然小了,質量卻不賴。
大家仔細看這效果,“使用計算器的刺蝟”、“星空下的狐狸”、“彩色玻璃窗風格的熊貓吃竹子”、“太空升降艙蠟筆畫”:
是不是很像樣兒?
一位碼農兼藝術家的網友則形容它“和真的難以區分”。
GLIDE在人類評估員的打分中,確實PK掉了使用CLIP給圖片排序的DALL·E。
最有趣的是,這個GLIDE似乎具有“智力”——會否決你畫出八條腿的貓的主意,也不認為老鼠可以捕食獅子。
OpenAI歲末新作GLIDE
GLIDE全稱Guided Language to Image Diffusion for Generation and Editing,是一種擴散模型 (diffusion model)。
擴散模型最早於2015提出,它定義了一個馬爾可夫鏈,用於在擴散步驟中緩慢地向資料新增隨機噪聲,然後透過學習逆轉擴散過程從噪聲中構建所需的資料樣本。
相比GAN、VAE和基於流的生成模型,擴散模型在效能上有不錯的權衡,最近已被證明在影象生成方面有很大的潛力,尤其是與引導結合來兼得保真度和多樣性。
△擴散模型與其他三種生成模型的對比
研究人員訓練了一個64×64解析度的文字條件擴散模型,引數35億;以及一個256×256解析度的文字條件上取樣擴散模型,引數15億。
模型有兩種引導形式來獲得更好的生成效果:無分類器引導(classifier-free guidance)和CLIP引導。
對於CLIP引導,他們還訓練了一個噪聲感知的64×64 ViT-L CLIP模型 (vit)。
模型採用了SOTA論文《Improved Denoising Diffusion Probabilistic Models》(改進的去噪擴散機率模型)的架構,使用文字條件資訊對其進行增強。
對於每個帶噪影象xt和相應的提示文字caption,該模型預測出p(xt-1|xt,caption)。
為了對文字進行條件處理,模型還將文字編碼為K個token的序列,並將這些token饋送到Transformer中,此Transformer的輸出有兩個用處:
1、在ADM模型中使用最終token embedding來代替class embedding;
2、token embedding的最後一層在整個ADM模型中分別對映每個注意層的維度,然後連線到每個層的注意上下文。
研究人員在與DALL·E相同的資料集上訓練GLIDE,batch size為2048,共經過250萬次迭代;對於上取樣模型,則進行了batch size為512的160萬次迭代。
這些模型訓練穩定,總訓練計算量大致等於DALL·E。
在初始訓練完成之後,研究人員還微調了基礎模型以支援無條件影象生成。
訓練過程與預訓練完全一樣,只是將20%的文字token序列替換為空序列。這樣模型就能既保留文字條件生成的能力,也可以無條件生成。
為了讓GLIDE在影象編輯任務中產生不必要的偽影,研究人員在微調時將GLIDE訓練樣本的隨機區域擦除,其餘部分與掩碼通道一起作為附加條件資訊輸入模型。
相比DALL·E,GLIDE的效果更逼真
- 定性實驗
研究人員首先比較了GLIDE兩種不同的引導策略:CLIP引導和無分類器引導。
分別用XMC-GAN、DALL·E(使用CLIP重排256個樣本,從中選擇最佳結果)和CLIDE模型(CLIP引導/無分類器引導)在相同的文字條件下生成了一些結果。
CLIDE模型的結果未經挑選。
可以發現,無分類器引導的樣本通常比CLIP引導的看起來更逼真,當然,兩者都勝過了DALL·E。
對於複雜的場景,CLIDE可以使用修復功能進行迭代生成:比如下圖就是先生成一個普通客廳,再加畫、加茶几、加花瓶……
此外,CLIDE還可以在SDedit模型上利用草圖與文字相結合的方式,對影象進行更多受控修改。
- 定量實驗
研究人員首先透過衡量質量和保真度的帕累託邊界(Pareto frontier)來評估無分類引導和CLIP引導之間的差異。
在前兩組曲線中,可以發現無分類器引導幾乎都是最優的——不管是在準確率/召回率上,還是在IS/FID距離上。
而在繪製CLIP分數與FID的關係時,出現了完全相反的趨勢。
研究人員假設這是CLIP引導正在為評估CLIP模型尋找對抗性示例,而並非真正優於無分類器引導。為了驗證這一假設,他們聘請了人工評估員來判斷生成影象的質量。
在這個過程中,人類評估者會看到兩個256×256的影象,選擇哪個樣本更好地匹配給定文字或看起來更逼真。如果實在分辨不出,每個模型各得一半分數。
結果如下:
無分類器引導產生了更符合相應提示的高質量樣本。
同時,研究人員也將CLIDE與其他生成模型的質量進行了評估:CLIDE獲得了最有競爭力的FID分數。
再將GLIDE與DALL-E進行人工評估。
包含三種比法:兩種模型都不使用CLIP重排序;僅對DALL·E使用CLIP重排序;對DALL-E使用CLIP重排序,並透過DALL-E使用的離散VAE對映GLIDE樣本。
結果是不管哪種配置,人類評估員都更傾向於GLIDE的結果(每項第一行代表GLIDE)。
當然,說這麼多,GLIDE也有它的不足,就如開頭的例子,它沒法畫出不合常理的“八條腿的貓”,也就是有智力但缺乏想象力。
此外,未最佳化的GLIDE需要15秒才能在單張A100 GPU上生成一張影象,這比GAN慢多了。
最後,po一張我們在官方釋出的Colab連結上親手試的一張效果,還湊合(an illustration of a rabbit,demo上的模型比較小):
論文地址:
https://arxiv.org/abs/2112.10741
GitHub地址(是一個在過濾後的資料集上訓練的小模型):
https://github.com/openai/glide-text2im
Colab試玩:
https://colab.research.google.com/github/openai/glide-text2im/blob/main/notebooks/text2im.ipynb#scrollTo=iuqVCDzbP1F0
— 完 —
量子位 QbitAI · 頭條號簽約
關注我們,第一時間獲知前沿科技動態