生成對抗網路(Generative adversarial network, GAN)[1]自2014年由Ian Goodfellow等人提出後,就越來越受到學術界和工業界的重視。而隨著GAN在理論與模型上的高速發展,它在計算機視覺、自然語言處理、人機互動等領域有著越來越深入的應用,並不斷向著其它領域繼續延伸。其中,GAN在影像生成上取得了巨大的成功,這取決於GAN在博弈下不斷提高建模能力,最終實現以假亂真的影像生成。
圍繞GAN的研究可以分為兩條主線,一是理論主線,從數學理論上研究如何解決GAN的不穩定性和模式崩塌問題,或者從資訊理論和基於能量的模型等不同角度重新闡述它。二是應用主線,致力於將GAN應用於計算機視覺領域、利用GAN進行影像生成(指定影像合成、文字到影像,影像到影像、影片)以及將GAN應用於NLP或其它領域。利用GAN進行影像生成和轉換是當前研究最多的,並且該領域的研究已經證明了GAN在影像合成中的巨大潛力。
本文從GAN的基本模型開始,簡要總結GAN的原理和改進,介紹其在影像生成與轉換中的研究和應用,並討論其理論和應用中尚存在的挑戰。
引言
在機器學習中,生成模型可以用來直接對資料建模,也可以用來建立變數間的條件機率分佈。它的應用十分廣泛,可以用來不同的資料進行建模,比如影像、文字、聲音等。以影像生成為例,我們將影像表示為一個隨機向量X,其中每一維都表示一個畫素值。假設自然場景的影像都服從一個未知的分佈p(x),我們希望透過一些觀測樣本來估計其分佈,高維隨機向量一般比較難以直接建模,需要透過一些條件獨立性來簡化模型。但是,自然影像中不同畫素之間存在的複雜的依賴關係,很難用一個明確的圖模型來描述其依賴關係,因此直接建模p(x)比較困難,對生成模型的要求很高。
在GAN之前,人們就已經研究了很多生成模型,隨著深度神經網路的發展,生成模型也得到了巨大的飛躍。目前有影響力的生成模型主要有Autoregressive model(自迴歸模型)[2][3]、VAE[4]、GLOW[5]和GAN[1]:
1.自迴歸模型(Autoregressive model)
4. 生成對抗網路(GAN)
GAN的思想就是利用博弈不斷的最佳化生成器和判別器從而使得生成的影像與真實影像在分佈上越來越相近。GAN生成的影像比較清晰,在很多GAN的擴充工作中也取得了很大的提高。但是GAN生成中的多樣性不足以及訓練過程不穩定是GAN一直以來的問題。
然而GAN存在的問題並沒有限制GAN的發展,在GAN改進和應用方面的文章層出不窮。其中GAN在影像生成上的應用最為突出,當然在計算機視覺中還有許多其他應用,如影像繪畫,影像標註,物體檢測和語義分割。在自然語言處理中應用GAN的研究也是一種增長趨勢,如文字建模,對話生成,問答和機器翻譯。在不同的任務中訓練GAN可能面臨不同的問題並且需要更多技術,這也使其成為具有挑戰性但有趣的研究領域。
GAN的基本原理與研究進展
GAN受博弈論中的零和博弈啟發,將生成問題視作判別器和生成器這兩個網路的對抗和博弈:生成器從給定噪聲中(一般是指均勻分佈或者正態分佈)產生合成資料,判別器分辨生成器的的輸出和真實資料。前者試圖產生更接近真實的資料,相應地,後者試圖更完美地分辨真實資料與生成資料。由此,兩個網路在對抗中進步,在進步後繼續對抗,由生成網路得到的資料也就越來越完美,逼近真實資料,從而可以生成想要得到的資料(圖片、序列、影片等)。
GAN的問題與研究進展
最早GAN的提出是為了透過生成模型和判別模型對抗來達到對生成圖片最大相似度的偽裝,比起VAE生成的圖片會比較清晰。但是原始GAN模型本身也存在一些問題,主要的問題有兩個:
(1)判別器越好,生成器的梯度消失越嚴重,這樣會導致在網路訓練上很多時候生成器的引數基本上不會發生改變。
(2)由於網路是對抗式的,常常會造成訓練時模型的崩潰(collapse mode),在訓練時往往需要權衡訓練的生成器與鑑別器的引數來防止崩潰的發生。這樣在實際的應用上也帶了很多不便。
WGAN[6]和WGAN-GP[7]首先分析了原始GAN的問題,前者透過對生成樣本和真實樣本加噪聲使得兩個分佈產生重疊,理論上可以解決訓練不穩定;後者引入梯度懲罰,使得GAN訓練更加穩定,收斂更快,同時能夠生成更高質量的樣本。LSGAN[8] 使用最小二乘損失函式代替了原始GAN的損失函式,讓模型在訓練的過程中更多的關注真實度不高的樣本,緩解了GAN訓練不穩定和生成影像質量差多樣性不足的問題。DCGAN[9]將CNN引入生成器和判別器,藉助CNN更強的擬合與表達能力,緩解GAN的問題的同時,大大提高了生成影像的能力。
此外,在研究中也產生了很多GAN的變種,比較突出的有將GAN與Encoder結合起來的BiGAN[10]和ALI[11],與VAE結合起來的VAE-GAN[12],新增額外輔助分類器的ACGAN[13],以及新增監督資訊的cGAN[14],引入資訊理論的infoGAN[15],和引入能量的概念與方法的EBGAN[16]等。這些變種在不同的目標上增強了GAN模型的擬合能力與魯棒性,極大地擴充套件了GAN的應用範圍。
GAN-影像生成
直接法
早期的GANs都遵循在其模型中使用一個生成器和一個判別器的原理,並且生成器和判別器的結構是直接的,沒有分支。如GAN [1]、DCGAN [9]、ImprovedGAN [18],InfoGAN [15],f-GAN [19]和GANINT-CLS [20]。這類方法在設計和實現上比較容易,通常也能得到良好的效果。
分層法
分層法的主要思想是將影像分成兩部分,如“樣式和結構”和“前景和背景”,然後在其模型中使用兩個生成器和兩個鑑別器,其中不同的生成器生成影像的不同部分,然後再結合起來。兩個生成器之間的關係可以是並聯的或串聯的。
以SS-GAN [21]為例,其使用兩個GAN,一個Structure-GAN用於生成表面結構,然後再由Style-GAN補充圖片細節,最後生成圖片,整體結構如下所示:
迭代法
迭代法使用具有相似或甚至相同結構的多個生成器,經過迭代生成從粗到細的影像。
以LAPGAN [22]為例:LAPGAN中的多個生成器執行相同的任務:最低階別的生成器僅將噪聲向量作為輸入並輸出影像,而其他生成器都從前一個生成器獲取影像並將噪聲向量作為輸入,這些生成器結構的唯一區別在於輸入/輸出尺寸的大小,每一次迭代後的影像都擁有更多清晰的細節。
GAN-影像轉換
影像到影像的轉換被定義為將一個場景的可能表示轉換成另一個場景的問題,例如影像結構圖對映到RGB影像,或者反過來。該問題與風格遷移有關,其採用內容影像和樣式影像並輸出具有內容影像的內容和樣式影像的樣式的影像。影像到影像轉換可以被視為風格遷移的概括,因為它不僅限於轉移影像的風格,還可以操縱物件的屬性。
影像到影像的轉換可分為有監督和無監督兩大類,根據生成結果的多樣性又可分為一對一生成和一對多生成兩類:
有監督下影像到影像轉換
在原始GAN中,因為輸出僅依賴於隨機噪聲,所以無法控制生成的內容。但cGAN[14]的提出使得我們可以將條件輸入y新增到隨機噪聲Z,以便生成的影像由G(z,y)定義。條件y可以是任何資訊,如影像標註,物件的屬性、文字描述,甚至是圖片。
圖六:CGAN的結構
如果引入圖片作為監督資訊,cGAN就可以完成一些paired data才能完成的任務,如把輪廓圖轉化成真實圖片,把mask轉化成真實圖,把黑白圖轉化成真實圖等。其中最具代表性的工作為pix2pix[23]:
pix2pix提出將cGAN的損失與L1正則化損失相結合,使得生成器不僅被訓練以欺騙判別器而且還生成儘可能接近真實標註的影像,使用L1而不是L2的原因是L1產生較少的模糊影像。其損失函式設計如下:
(1)含有條件資訊的GAN損失
(2)約束自相似性的L1損失
(3)總的目標函式
無監督的影像到影像轉換
雖然有監督下影像轉換可以得到很好的效果,但需要的條件資訊以及paired image成為其很大的限制。但如果用無監督學習,學習到的網路可能會把相同的輸入對映成不同的輸出,這就意味著,我們輸入任意xi並不能得到想要的輸出yi。
CycleGAN [24]、DualGAN [25] 和DiscoGAN [26]突破了這個限制,這幾項工作都提出了一致/重構損失(consistent loss),採取了一個直觀的思想:即生成的影像再用逆對映生成回去應該與輸入的影像儘可能接近。在轉換中使用兩個生成器和兩個判別器,兩個生成器和進行相反的轉換,試圖在轉換週期後保留輸入影像。
以CycleGAN為例,在CycleGAN中,有兩個生成器,Gxy用於將影像從域X傳輸到Y,Gxy用於執行相反的轉換。此外,還有兩個判別器Dx和Dy判斷影像是否屬於該域。
其Consistent loss由L1進行描述:
當然,儘管CycleGAN 和DualGAN具有相同的模型結構,但它們對生成器使用不同的實現。CycleGAN使用卷積架構的生成器結構,而DualGAN遵循U-Net結構。在實踐中可以根據不同的需求更換生成器和判別器的實現結構。
從一對一生成到一對多生成(one-to-many translation)
從pix2pix[23]到CycleGAN系列[24][25][26],再到UNIT[27],這些方法實現的image-to-image translation不管是有監督的還是無監督的,都是一對一的,也就是說輸入一張圖片只能產生一種風格,缺乏多樣性。但其實大多數情況下,image translation是多對多的,也就是一張圖片對應不同風格的轉換圖片。比如我們設計衣服時,一張輪廓圖其實可以設計成不同風格的衣服。再比如同一個場景,不同的光照條件就是一個模式,不一定只有白天和黑夜,還可能有傍晚,清晨等。
BicycleGAN[28]首先對此進行了嘗試,其在模型中新增隨機噪聲,透過隨機取樣使噪聲得到不同的表達,並在輸出與潛在空間上新增雙向對映。雙向對映指的是:不僅僅可以由潛在編碼對映得到輸出也可以由輸出反過來生成對應的潛在編碼,這可以防止兩個不同的潛在編碼生成同樣的輸出,避免輸出的單一性。
但直接用不同的隨機噪聲來產生多樣化的結果,由於mode collapse的存在,很容易訓練失敗。MUNIT[29]和DRIT[30]在UNIT的基礎上,將latent code進一步細化為內容編碼 c 和風格編碼 s 。不同domain的影像共享內容編碼空間 C 而獨享風格編碼空間 S ,將內容編碼c與不同的風格編碼s結合起來就能得到更魯棒的多樣性的結果。
如下所示,BicycleGAN、MUNIT和DRIT都取得了不錯的生成結果:
總結
GAN在影像生成和轉換中的巨大潛力已經得到研究證明,利用GAN進行影像到影像間的生成和轉換最好已經到達幾乎無法分辨的地步。除此之外,利用GAN進行指定影像合成,生成高畫質影像和影片,以及將GAN應用於NLP和其他領域的研究都還受到研究者們的重點關注。GAN影像生成仍然會是一個充滿挑戰與價值的課題,存在很大的研究空間。
小編相關推薦:
http://www.tensorinfinity.com/paper_14.html(Largescale GANtraining for high fidelity natural image synthesis文章解讀)