OpenAI最新提出的可逆生成模型Glow,可以使用相對(duì)少的數(shù)據(jù),快速生成高清的逼真圖像,具有GAN和VAE所不具備的精確操作潛在變量、需要內(nèi)存少等優(yōu)勢(shì)。
OpenAI剛剛在博客介紹了他們的最新成果——Glow,一種使用可逆1x1卷積的可逆生成模型。
Glow 可以生成逼真的高分辨率圖像,支持高效采樣,并且可以自動(dòng)學(xué)習(xí)圖像中屬性特征,比如人的五官。
先來(lái)看效果,加了胡子的Hinton,笑容調(diào)到最高,眼神也看起來(lái)更亮:
下圖是使用Glow操縱兩名研究人員面部圖像的屬性。模型在訓(xùn)練的時(shí)候并沒(méi)有給出眼睛、年齡等屬性標(biāo)簽,但自己學(xué)習(xí)了一個(gè)潛在空間,其中某些方向?qū)?yīng)胡須密度,年齡,發(fā)色等屬性的變化。
人臉混合過(guò)度的效果也十分自然:
這是使用30,000個(gè)高分辨率面部數(shù)據(jù)集進(jìn)行訓(xùn)練后,Glow模型中的樣本,可以說(shuō)很逼真了。如果不說(shuō)明,應(yīng)該有不少人會(huì)覺(jué)得是真人照片。
再放大來(lái)看,這個(gè)效果至少是不輸給GAN的:
Glow模型生成一個(gè)256x 256的樣本,在NVIDIA 1080 Ti GPU上只需要大約130ms。使用 reduced-temperature模型采樣結(jié)果更好,上面展示的例子是溫度0.7的結(jié)果。
數(shù)據(jù)利用率高,可泛化,優(yōu)于GAN和VAE
Glow是一種可逆生成模型(reversible generative model),也被稱為基于流的生成模型(flow-based generative model)。目前,學(xué)界還很少關(guān)注基于流的生成模型,因?yàn)镚AN和VAE這些顯而易見(jiàn)的原因。
OpenAI的研究人員在沒(méi)有標(biāo)簽的情況下訓(xùn)練基于流的模型,然后將學(xué)習(xí)到的潛在表示用于下游任務(wù),例如操縱輸入圖像的屬性。這些屬性可以是面部圖像中的頭發(fā)顏色,也可以是音樂(lè)的音調(diào)或者文本句子的情感。
上述過(guò)程只需要相對(duì)少量的標(biāo)記數(shù)據(jù),并且可以在模型訓(xùn)練完成后完成(訓(xùn)練時(shí)不需要標(biāo)簽)。使用GAN的工作需要單獨(dú)訓(xùn)練編碼器。而使用VAE的方法僅能確保解碼器和編碼器數(shù)據(jù)兼容。Cycle-GAN雖然可以直接學(xué)習(xí)表示變換的函數(shù),但每次變換都需要進(jìn)行重新訓(xùn)練。
訓(xùn)練基于流的生成模型操縱屬性的簡(jiǎn)單代碼:
Glow的具體操作過(guò)程
OpenAI研究人員表示,這項(xiàng)工作是建立在非線性成分估計(jì)(Dinh L. et, NICE: Non-linear Independent Components Estimation)和RealNVP(Dinh L. et, Density estimation using Real NVP)的基礎(chǔ)上。
他們的主要貢獻(xiàn)是增加了可逆的1x1卷積,并且刪除了RealNVP的其他組件,從而簡(jiǎn)化了整體架構(gòu)。
RealNVP架構(gòu)包含兩種類(lèi)型的層:一種是有棋盤(pán)格masking的層,一種是有channel-wise masking的層。OpenAI去掉了前一種棋盤(pán)格masking,簡(jiǎn)化了整體結(jié)構(gòu)。
在Glow模型的工作中,具有channel-wise masking的層不斷重復(fù)下列步驟:
通過(guò)在channel維度上反轉(zhuǎn)輸入的順序來(lái)置換輸入。
將輸入在特征和維度的中間分為A和B兩部分。
將A輸入一個(gè)淺層的卷積神經(jīng)網(wǎng)絡(luò),根據(jù)神經(jīng)網(wǎng)絡(luò)的輸出線性變換B
連接A和B
將這些層鏈接起來(lái),讓A更新B,B更新A,然后A再更新B,以此往復(fù)。這種雙向信息流非常rigid。研究人員發(fā)現(xiàn),通過(guò)將步驟(1)的反向排列改變?yōu)椋ü潭ǖ模﹕huffle 排列還能改善模型性能。
使用1x1卷積的效果要顯著好于逆轉(zhuǎn)和Shuffle
此外,他們還將批歸一化(BN)換成了一個(gè)激活歸一化層(activation normalization layer)。這個(gè)層能夠轉(zhuǎn)變和放大激活。因此,能將大圖像最小的批量大小縮小到1,并擴(kuò)大模型的大小。
這個(gè)架構(gòu)結(jié)合了多種優(yōu)化,例如梯度檢查點(diǎn)(gradient checkpointing),使研究人員能夠比平常更大規(guī)模地訓(xùn)練基于流的生成模型。他們還使用Horovod在多臺(tái)機(jī)器的集群上訓(xùn)練模型,上面演示中使用的模型在5臺(tái)機(jī)器上訓(xùn)練,每臺(tái)有8個(gè)GPU。使用這種設(shè)置,他們訓(xùn)練了具有超過(guò)一億個(gè)參數(shù)的模型。
基于流的生成模型,大有可為!
OpenAI研究人員表示,他們?cè)谶@項(xiàng)工作中表明,可以訓(xùn)練基于流的模型(flow-based)來(lái)生成逼真的高分辨率圖像,并且學(xué)習(xí)可以輕松用于下游任務(wù)(如數(shù)據(jù)操作)的潛在表示。
基于流的生成模型有以下優(yōu)點(diǎn):
精確的潛變量推斷和對(duì)數(shù)似然估計(jì)。在VAE中,只能近似推斷出與某個(gè)數(shù)據(jù)點(diǎn)相對(duì)應(yīng)的潛在變量的值。GAN則根本沒(méi)有編碼器來(lái)推斷潛伏變量。但是,在可逆生成模型中,不僅可以實(shí)現(xiàn)準(zhǔn)確的潛在變量推理,還可以優(yōu)化數(shù)據(jù)的對(duì)數(shù)似然,而不是只是其下限。
高效的推理和有效的合成。自回歸模型,例如PixelCNN,也是可逆的,但是這些模型的合成難以并行化,往往在并行硬件上效率很低?;诹鞯纳赡P?,比如Glow和RealNVP,可以有效地進(jìn)行推理與合成的并行化。
下游任務(wù)的有用潛在空間。自回歸模型的隱藏層邊際分布式未知的,因此很難進(jìn)行有效的數(shù)據(jù)操作。在GAN中,數(shù)據(jù)點(diǎn)通常不能直接在潛在空間中表示,因?yàn)樗鼈儧](méi)有編碼器,可能不完全支持?jǐn)?shù)據(jù)分布。但可逆生成模型和VAE,就能進(jìn)行數(shù)據(jù)點(diǎn)之間的插值,對(duì)現(xiàn)有數(shù)據(jù)點(diǎn)進(jìn)行有意義的修改等操作。
節(jié)省內(nèi)存的巨大潛力。如RevNet論文所述,在可逆神經(jīng)網(wǎng)絡(luò)中計(jì)算梯度需要的內(nèi)存是固定的,不會(huì)隨著深度的增加而增加。
他們建議未來(lái)可以繼續(xù)探索這兩個(gè)方向:
自回歸模型和VAE在對(duì)數(shù)似然性方面比基于流的模型表現(xiàn)更好,但它們分別具有采樣低效和推理不精確的缺點(diǎn)。未來(lái),可以將基于流的模型、VAE和自回歸模型結(jié)合起來(lái),權(quán)衡彼此優(yōu)勢(shì),這將是一個(gè)有趣的方向。
改進(jìn)架構(gòu)來(lái)提高計(jì)算效率和參數(shù)效率。為了生成逼真的高分辨率圖像,面部生成模型使用200M規(guī)模參數(shù)和大約600個(gè)卷積層,這需要花費(fèi)很高的訓(xùn)練成本。深度較小的模型在學(xué)習(xí)長(zhǎng)時(shí)間依賴(long-range dependencies)方面表現(xiàn)較差。使用self attention結(jié)構(gòu),或者用漸進(jìn)式訓(xùn)練擴(kuò)展到高分辨率,可以讓訓(xùn)練流模型的計(jì)算成本更低。
-
圖像
+關(guān)注
關(guān)注
2文章
1084瀏覽量
40468 -
GaN
+關(guān)注
關(guān)注
19文章
1935瀏覽量
73445 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24703
原文標(biāo)題:超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論