超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

OpenAI最新提出的可逆生成模型Glow,可以使用相對少的數據,快速生成高清的逼真圖像,具有GAN和VAE所不具備的精確操作潛在變量、需要內存少等優勢。

OpenAI剛剛在博客介紹了他們的最新成果——Glow,一種使用可逆1x1卷積的可逆生成模型。

Glow 可以生成逼真的高分辨率圖像,支持高效採樣,並且可以自動學習圖像中屬性特徵,比如人的五官。

先來看效果,加了鬍子的Hinton,笑容調到最高,眼神也看起來更亮:

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

下圖是使用Glow操縱兩名研究人員面部圖像的屬性。模型在訓練的時候並沒有給出眼睛、年齡等屬性標籤,但自己學習了一個潛在空間,其中某些方向對應鬍鬚密度,年齡,髮色等屬性的變化。

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

人臉混合過度的效果也十分自然:

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

這是使用30,000個高分辨率面部數據集進行訓練後,Glow模型中的樣本,可以說很逼真了。如果不說明,應該有不少人會覺得是真人照片。

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

再放大來看,這個效果至少是不輸給GAN的:

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

Glow模型生成一個256 x 256的樣本,在NVIDIA 1080 Ti GPU上只需要大約130ms。使用 reduced-temperature模型採樣結果更好,上面展示的例子是溫度0.7的結果。

數據利用率高,可泛化,優於GAN和VAE

Glow是一種可逆生成模型(reversible generative model),也被稱為基於流的生成模型(flow-based generative model)。目前,學界還很少關注基於流的生成模型,因為GAN和VAE這些顯而易見的原因。

OpenAI的研究人員在沒有標籤的情況下訓練基於流的模型,然後將學習到的潛在表示用於下游任務,例如操縱輸入圖像的屬性。這些屬性可以是面部圖像中的頭髮顏色,也可以是音樂的音調或者文本句子的情感。

上述過程只需要相對少量的標記數據,並且可以在模型訓練完成後完成(訓練時不需要標籤)。使用GAN的工作需要單獨訓練編碼器。而使用VAE的方法僅能確保解碼器和編碼器數據兼容。Cycle-GAN雖然可以直接學習表示變換的函數,但每次變換都需要進行重新訓練。

訓練基於流的生成模型操縱屬性的簡單代碼:

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

Glow的具體操作過程

OpenAI研究人員表示,這項工作是建立在非線性成分估計(Dinh L. et, NICE: Non-linear Independent Components Estimation)和RealNVP(Dinh L. et, Density estimation using Real NVP)的基礎上。

他們的主要貢獻是增加了可逆的1x1卷積,並且刪除了RealNVP的其他組件,從而簡化了整體架構。

RealNVP架構包含兩種類型的層:一種是有棋盤格masking的層,一種是有channel-wise masking的層。OpenAI去掉了前一種棋盤格masking,簡化了整體結構。

在Glow模型的工作中,具有channel-wise masking的層不斷重複下列步驟:

  • 通過在channel維度上反轉輸入的順序來置換輸入。
  • 將輸入在特徵和維度的中間分為A和B兩部分。
  • 將A輸入一個淺層的卷積神經網絡,根據神經網絡的輸出線性變換B
  • 連接A和B

將這些層鏈接起來,讓A更新B,B更新A,然後A再更新B,以此往復。這種雙向信息流非常rigid。研究人員發現,通過將步驟(1)的反向排列改變為(固定的)shuffle 排列還能改善模型性能。

超越GAN!OpenAI提出可逆生成模型,AI合成超逼真人像

使用1x1卷積的效果要顯著好於逆轉和Shuffle

此外,他們還將批歸一化(BN)換成了一個激活歸一化層(activation normalization layer)。這個層能夠轉變和放大激活。因此,能將大圖像最小的批量大小縮小到1,並擴大模型的大小。

這個架構結合了多種優化,例如梯度檢查點(gradient checkpointing),使研究人員能夠比平常更大規模地訓練基於流的生成模型。他們還使用Horovod在多臺機器的集群上訓練模型,上面演示中使用的模型在5臺機器上訓練,每臺有8個GPU。使用這種設置,他們訓練了具有超過一億個參數的模型。

基於流的生成模型,大有可為!

OpenAI研究人員表示,他們在這項工作中表明,可以訓練基於流的模型(flow-based)來生成逼真的高分辨率圖像,並且學習可以輕鬆用於下游任務(如數據操作)的潛在表示

基於流的生成模型有以下優點:

  • 精確的潛變量推斷和對數似然估計。
    在VAE中,只能近似推斷出與某個數據點相對應的潛在變量的值。GAN則根本沒有編碼器來推斷潛伏變量。但是,在可逆生成模型中,不僅可以實現準確的潛在變量推理,還可以優化數據的對數似然,而不是隻是其下限。
  • 高效的推理和有效的合成。自迴歸模型,例如PixelCNN,也是可逆的,但是這些模型的合成難以並行化,往往在並行硬件上效率很低。基於流的生成模型,比如Glow和RealNVP,可以有效地進行推理與合成的並行化。
  • 下游任務的有用潛在空間。自迴歸模型的隱藏層邊際分佈式未知的,因此很難進行有效的數據操作。在GAN中,數據點通常不能直接在潛在空間中表示,因為它們沒有編碼器,可能不完全支持數據分佈。但可逆生成模型和VAE,就能進行數據點之間的插值,對現有數據點進行有意義的修改等操作。
  • 節省內存的巨大潛力。如RevNet論文所述,在可逆神經網絡中計算梯度需要的內存是固定的,不會隨著深度的增加而增加。

他們建議未來可以繼續探索這兩個方向:

自迴歸模型和VAE在對數似然性方面比基於流的模型表現更好,但它們分別具有采樣低效和推理不精確的缺點。未來,可以將基於流的模型、VAE和自迴歸模型結合起來,權衡彼此優勢,這將是一個有趣的方向。

改進架構來提高計算效率和參數效率。為了生成逼真的高分辨率圖像,面部生成模型使用200M規模參數和大約600個卷積層,這需要花費很高的訓練成本。深度較小的模型在學習長時間依賴(long-range dependencies)方面表現較差。使用self attention結構,或者用漸進式訓練擴展到高分辨率,可以讓訓練流模型的計算成本更低。

  • 編譯來源:https://blog.openai.com/glow/
  • 相關論文:https://d4mucfpksywv.cloudfront.net/research-covers/glow/paper/glow.pdf


分享到:


相關文章: