谷歌MaskGIT|雙向Transformer,圖像生成新范式!
圖像生成長(zhǎng)期以來一直被GAN所統(tǒng)治,雖然GAN的生成結(jié)果非常逼真,但在多樣性方面卻不如基于最大似然的方法(VAE、自回歸模型等)。在去年,我們也看到了DALL-E、VQGAN等生成模型,模仿NLP的成功,利用Transformer來做圖像生成,但這類方法有個(gè)很大的缺點(diǎn),就是生成速度太慢了。

Transformer-based的圖像生成基本完全參考NLP處理序列數(shù)據(jù)的做法,需要兩個(gè)步驟:
Tokenization:自然語(yǔ)言都是離散值,而圖像是連續(xù)值,想像NLP一樣處理必須先離散化,iGPT里直接把圖像變成一個(gè)個(gè)馬賽克色塊,ViT則是切成多塊后分別進(jìn)行線性映射,還有的方法專門學(xué)了一個(gè)自編碼器,用encoder把圖像映射成token,再用decoder還原 Autoregressive Prediction:用單向Transformer一個(gè)個(gè)token地預(yù)測(cè),最終生成圖像
雖然這類方法的生成結(jié)果還可以,但是從直覺上卻不那么順溜。仔細(xì)想人是怎么畫畫的,大多數(shù)人肯定是先畫個(gè)草稿,然后再逐步細(xì)化、填色,由整體到局部,而不是從上到下從左到右一個(gè)個(gè)像素去填充。
MaskGIT的核心思想,就是參考人的作畫邏輯,先生成一部分token,再逐漸去完善。

MaskGIT:?Masked?Generative?Image?Transformer
https://arxiv.org/abs/2202.04200
MaskGIT
MaskGIT的模型結(jié)構(gòu)如下:

對(duì)于Tokenization步驟,直接參考VQGAN的思路,學(xué)習(xí)一個(gè)encoder-decoder。
主要的改進(jìn)點(diǎn)在第二步上,在生成階段,重復(fù)以下步驟:
并行預(yù)測(cè)所有被mask的部分,這時(shí)會(huì)給出一個(gè)概率最高的token和概率值 計(jì)算本輪要保留的token數(shù)目 根據(jù)數(shù)目倒推概率值,不滿足條件的繼續(xù)mask掉,回到步驟1重新生成
在訓(xùn)練階段,不像BERT只mask掉15%,MaskGIT會(huì)隨機(jī)選取各種值,來模擬生成階段的情況。
生成階段的核心,就在于如何計(jì)算這一輪要mask多少token,這個(gè)schedule函數(shù)有兩個(gè)特性:
定義域在0到1之間、值域在0到1之間的連續(xù)函數(shù)
在對(duì)Linear、Concave、Convex三類函數(shù)實(shí)驗(yàn)后,發(fā)現(xiàn)Cosine是表現(xiàn)最好的:

從最終的效果可以看到,MaskGIT在圖像質(zhì)量上(FID、IS分?jǐn)?shù))接近當(dāng)前最好的BigGAN,在速度上遠(yuǎn)勝VAGAN,在多樣性(CAS分?jǐn)?shù))上超越了BigGAN:

同時(shí)作者發(fā)現(xiàn),MaskGIT在編輯圖像上有很大的潛力,尤其是class-conditioned image editing任務(wù),自回歸模型基本做不了,GAN來做也很難,對(duì)MaskGIT卻十分容易,推動(dòng)了一波鬼畜P圖的發(fā)展(下面的例子讓我深度懷疑作者是貓控):

總結(jié)
MaskGIT作者在文中說到,雙向Transformer的啟發(fā)源自于機(jī)器翻譯的一些工作,不過這卻是圖像領(lǐng)域的第一篇工作。MaskGIT的出發(fā)點(diǎn)相比單向自回歸,在圖像生成上更加make sense,相信之后也看到一些相關(guān)改進(jìn)。
其中我想到一點(diǎn),也是從直覺上出發(fā)的,我們?nèi)嗽诋嫯嫊r(shí),免不了對(duì)草圖的涂改,而MaskGIT是沒有涂改機(jī)會(huì)的,有沒有更好的soft mask方式,或者迭代策略,可以對(duì)已經(jīng)生成完的token進(jìn)行迭代,這樣說不定就能超過GAN的生成質(zhì)量了。
推薦閱讀
輔助模塊加速收斂,精度大幅提升!移動(dòng)端實(shí)時(shí)的NanoDet-Plus來了!
SSD的torchvision版本實(shí)現(xiàn)詳解
機(jī)器學(xué)習(xí)算法工程師
? ??? ? ? ? ? ? ? ? ? ? ????????? ??一個(gè)用心的公眾號(hào)

