奚祥品,陳 筱,朱向冰
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖241002)
近年來,隨著計算機技術(shù)的發(fā)展,數(shù)據(jù)量的積累和對動物神經(jīng)網(wǎng)絡(luò)的研究及成果,使得人工智能發(fā)展迅速,在機器學(xué)習(xí)方面尤為突出。依據(jù)輸入數(shù)據(jù)集是否有標(biāo)簽(label),機器學(xué)習(xí)任務(wù)被分為有監(jiān)督學(xué)習(xí)[1]、無監(jiān)督學(xué)習(xí)[2]和半監(jiān)督學(xué)習(xí)[3]。目前機器學(xué)習(xí)[4]方法,特別是深度學(xué)習(xí)[5]方法在無監(jiān)督學(xué)習(xí)任務(wù)中取得優(yōu)秀的成績,如圖像修復(fù)、圖像生成及風(fēng)格遷移等。生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)是一種無需大量標(biāo)注訓(xùn)練數(shù)據(jù)的深度學(xué)習(xí)模型,在許多方面都有應(yīng)用,包括圖像生成[6]、圖像語義編輯[7]、圖像風(fēng)格轉(zhuǎn)換[8]以及圖像超分辨率等[9]。
2014年,Goodfellow等人[10]最早提出了生成器和判別器的概念和結(jié)構(gòu),介紹了GAN。2014年9月,Mehdi Mirza等人[11]在原始GAN的基礎(chǔ)上提出了條件GAN,證明了該模型可以生成以類別標(biāo)簽為條件的手寫數(shù)字集。Xi Chen等人[12]提出了GAN的理論擴展InfoGAN,從3D渲染圖像的光照中構(gòu)成模型,從SVHN數(shù)據(jù)集上的中心數(shù)字中獲得背景數(shù)字。Yu L等人[13]提出了一個序列生成框架,稱為SeqGAN,以解決原始GAN不易生成離散標(biāo)記序列的問題。GAN廣泛應(yīng)用在圖像領(lǐng)域,將從GAN模型的結(jié)構(gòu)和原理進行介紹。
GAN是一組相互競爭的網(wǎng)絡(luò)。GAN由生成器(Generator)和判別器(Discriminator)組成。例如對于一組圖像數(shù)據(jù)集,常見的類比是把一個網(wǎng)絡(luò)看作偽造專家,而另一個網(wǎng)絡(luò)看作鑒別專家。偽造專家被稱為“生成器G”,生成器的目的是為了生成逼真的圖像。鑒別專家被稱為“判別器D”,它接收偽造(fake)圖像和真實 (real)圖像,并將它們區(qū)分開,如圖1所示。在GAN的結(jié)構(gòu)中,生成器接受隨機噪聲生成合成數(shù)據(jù)樣本。將合成數(shù)據(jù)樣本或真實樣本數(shù)據(jù)集輸入到判別器進行判斷,如果是合成數(shù)據(jù)樣本,則輸出“偽造”,同時輸出分?jǐn)?shù)(接近0)。如果判別器判斷輸入是真實數(shù)據(jù)集樣本,則輸出“真實”,并進行打分。生成器和判別器接受訓(xùn)練,相互競爭。
圖1 GAN結(jié)構(gòu)Fig.1 Structure of GAN
生成器無法直接生成真實圖像,它學(xué)習(xí)的方式是通過與判別器進行交互。判別器可以獲得真實樣本(來自真實圖像數(shù)據(jù)集)以及偽造樣本。如果判別器識別到樣本來自生成器,判別器反饋結(jié)果為偽造;如果識別到樣本來自真實數(shù)據(jù)集,反饋結(jié)果為真實。這個結(jié)果(fake)可以用來訓(xùn)練生成器,使其能夠產(chǎn)生質(zhì)量更好的偽造品。判別器網(wǎng)絡(luò)D可以理解為一個函數(shù),計算輸入圖像樣本數(shù)據(jù)來自真實數(shù)據(jù)分布的概率,對輸入的圖像樣本進行評價。判斷的數(shù)據(jù)若來自真實數(shù)據(jù)集,則輸出接近于1;若是有生成器生成,則輸出接近0。當(dāng)判別器分類效果比較優(yōu)秀時停止訓(xùn)練,對生成器G繼續(xù)進行訓(xùn)練,同時降低判別器的準(zhǔn)確度。如果生成器產(chǎn)生的圖像數(shù)據(jù)與真實的圖像數(shù)據(jù)及其相近,判別器就會最大程度地混淆,對所有輸入預(yù)測結(jié)果為0.5。
GAN網(wǎng)絡(luò)有很多優(yōu)點,但也存在訓(xùn)練不穩(wěn)定、梯度消失、模式崩潰的問題。為解決這些問題,提出了很多的GAN改進模型,下文對部分模型進行介紹。
Radford等人[14]提出了一種名為深度卷積生成對抗神經(jīng)網(wǎng)絡(luò) (Deep Convolutional Generative Adversarial Networks,DCGAN)的網(wǎng)絡(luò)架構(gòu),生成器模型和判別器模型都運用了深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)。如圖2所示,它將原始GAN網(wǎng)絡(luò)和CNN網(wǎng)絡(luò)結(jié)合起來,生成多種多樣的圖像。生成器和判別器使用ReLU激活函數(shù)降低梯度消失風(fēng)險。將池化層用卷積層替代,判別器用步幅卷積替代,生成器用部分步幅卷積替代。DCGAN對CNN的結(jié)構(gòu)做了一些改變,以提高樣本的質(zhì)量和收斂的速度。
圖2 DCGAN生成器結(jié)構(gòu)Fig.2 Generator structure of DCGAN
原始GAN生成的圖像隨機,生成圖像不可控制。針對原始GAN不能生成特定屬性圖像的問題,Mehdi Mirza等人提出了條件生成對抗網(wǎng)絡(luò)(Conditional Generative Adversarial Networks,CGAN)。如圖3所示,CGAN生成器和判別器的輸入多了一個約束項y,用來生成指定的圖像。約束項y可以是一個圖像的類別標(biāo)簽,也可以是圖像的部分屬性數(shù)據(jù)。如果條件變量y是類別標(biāo)簽,那么CGAN便將無監(jiān)督的學(xué)習(xí)轉(zhuǎn)化為有監(jiān)督的學(xué)習(xí)。CGAN生成的圖像雖有很多缺陷,譬如圖像邊緣模糊,生成的圖像分辨率太低等,但是它為后面的Cycle-GAN開拓了道路,模型轉(zhuǎn)換圖像風(fēng)格時對屬性特征的處理方法受CGAN啟發(fā)。
圖3 CGAN結(jié)構(gòu)Fig.3 Structure of CGAN
相對于原始GAN網(wǎng)絡(luò),無監(jiān)督式生成對抗網(wǎng)絡(luò)(Information Maximizing Generative Adversarial Networks,InfoGAN)[12]將隨機噪聲z分成固定分布噪聲z1(見圖4)和有隱含意義的信號(例如圖像風(fēng)格)c,損失函數(shù)里面用到互信息,使得隱變量c與生成的變量G(z,c)擁有盡可能多的共同信息。對隨機噪聲 z 施加可解釋的隱含變量,控制圖像生成。以MINST數(shù)據(jù)集為例,了解隱含變量可以控制生成圖像的亮度、傾斜程度、筆劃粗細等。
圖4 CGAN結(jié)構(gòu)Fig.4 Structure of InfoGAN
基于能量式生成對抗網(wǎng)絡(luò)(Energy-based Generative Adversarial Networks,EBGAN)[15]與原始GAN的區(qū)別在于,EBGAN更改了判別器的架構(gòu),如圖5所示。在輸入圖像(x)后添加一個自編碼器(Auto-encoder),把自編碼器當(dāng)作判別器,輸出的E是編碼器(Encoder)和解碼器(Decoder)的均方差(MSE)。根據(jù)提供的真實圖像樣本重構(gòu)誤差值來判斷圖像質(zhì)量的好壞,圖像重構(gòu)的誤差越小,說明圖像的質(zhì)量越高;相反,如果圖像重構(gòu)的誤差值越大,說明圖像的質(zhì)量越差。EBGAN的優(yōu)點是不需要生成器提供偽造圖像樣本,僅使用真實圖像樣本就可以重復(fù)訓(xùn)練判別器。在訓(xùn)練EBGAN最初的幾個迭代(epoch)就可以得到比較清晰的圖像。
圖5 EBGAN結(jié)構(gòu)Fig.5 Structure of EBGAN
改進自編碼器式生成對抗網(wǎng)絡(luò) (Variational Autoencoder Generative Adversarial Networks,VAE-GAN)[16]可以理解為用變分自編碼器(Variational Autoencoder)來強化GAN。VAE可以理解為auto-encoder的改進。如圖6,圖像x進入編碼器(Encoder)后轉(zhuǎn)化為向量(代碼)q,q再進入解碼器(decoder)后再輸出圖像x。圖像x前后要求越相近越好。VAE會約束q,使其滿足正態(tài)分布。VAE-GAN在原來的編碼器和解碼器之后再加一個判別器,來判斷解碼器(生成器)輸出圖像x的真?zhèn)涡?。生成器在?xùn)練的時候要考慮判別器的反饋,同時需要降低圖像重構(gòu)差異值,所以訓(xùn)練的結(jié)果比較穩(wěn)定。
圖6 VAE-GAN結(jié)構(gòu)Fig.6 Structure of VAE-GAN
雙向生成對抗網(wǎng)絡(luò)(Bidirectional Generative Adversarial Networks,BiGAN)[17]由一組自編碼器(autodecoder)和判別器(discriminator)組成。編碼器和解碼器相互無關(guān)聯(lián)。如圖7所示,輸入真實圖像x進入編碼器獲得代碼(code)p,輸入代碼(code)p進入解碼器(decoder)生成圖像x。
圖7 BiGAN結(jié)構(gòu)Fig.7 Structure of BiGAN
為了提高圖像在更高分辨率下的保真度,C.Ledig等[18]提出了超分辨率生成對抗網(wǎng)絡(luò) (Super-Resolution Using a Generative Adversarial Network,SRGAN),使一幅低分辨率的圖像生成一幅相同更高分辨率的圖像。為了使生成的高分辨率圖像和真實高分辨率圖像相近,SRGAN在loss上增加了feature map部分的均分誤差。生成器和判別器的結(jié)構(gòu)如圖8所示。生成器由B殘差塊(B residual block)和多個卷積層組成,目的是生成高分辨率的圖像。B residual block包括卷積(Conv)、歸一化(BN)、參數(shù)化修正線性單元(PReLU)、元素求和(Element Wise Sum)。圖8中的k,n,s分別表示每個卷積層相應(yīng)的卷積核大小、特征映射數(shù)量和步幅。判別器同樣由大量卷積層組成,目的是判別輸入圖像的真?zhèn)涡裕袆e器的卷積層包括Conv、BN以及帶泄露的修正線性單元(Leaky ReLU)。
圖8 SRGAN部分結(jié)構(gòu)Fig.8 Structure of SRGAN
由GAN的結(jié)構(gòu)就可以了解到,GAN的一個作用就是生成數(shù)據(jù)。目前限制深度學(xué)習(xí)發(fā)展的一個原因是訓(xùn)練數(shù)據(jù)的缺乏,而GAN生成數(shù)據(jù)剛好可以彌補這一缺陷。最近的GAN研究主要集中在提高圖像生成能力的質(zhì)量和實用性上。LAPGAN模型[19]在Laplacian金字塔框架中引入了層疊的卷積網(wǎng)絡(luò),以粗糙到精細的方式生成圖像。Huang等人[20]使用了類似的方法,GAN對中間表示操作,而不是低分辨率圖像。CGAN的想法后來被擴展到自然語言。Reed等人[21]使用GAN架構(gòu)從文本描述中合成圖像,可以理解為自然語言處理(NLP)。例如,給定一只鳥的文字說明,比如它的頭部和翅膀上有一些黑色的白色,以及長長的橙色的喙,經(jīng)過訓(xùn)練的GAN可以生成一些與描述相符的圖像,如圖9所示。
圖9 文字描述生成圖像Fig.9 Text description generated image
條件GAN不僅可以用來生成具有特定屬性的新樣本,還可以用來開發(fā)編輯圖像的工具。例如,改變圖像中一個人的表情,讓她微笑,或者修改皮膚顏色讓她看起來更年輕,如圖10所示。GAN在圖像編輯方面的其他應(yīng)用包括Brock[22]等人的工作。
圖10 更改面部表情Fig.10 Facial expression changes
圖像超分辨率技術(shù)能夠使低分辨率圖像生成高分辨率圖像,訓(xùn)練模型在上采樣時模擬出逼真的細節(jié)。SRGAN模型[18]通過添加一個損失組件(loss)改進GAN的損失函數(shù),將基于均方誤差的內(nèi)容損失替換為基于VGG網(wǎng)絡(luò)的特征映射計算的損失。損失函數(shù)包括對抗損失、圖像平滑項和特征圖差異三個損失項,對抗式損失是損失函數(shù)的組成部分。圖像超分辨應(yīng)用介紹如圖11所示,從左到右分別為:雙三次插值法對應(yīng)圖像、超分辨率深度殘差網(wǎng)絡(luò)對應(yīng)圖像、超分辨率生成對抗網(wǎng)絡(luò)圖像以及原始高分辨率圖像。
圖11 SRGAN生成高分辨率圖像Fig.11 Generates high-resolution images by SRGAN
圖像風(fēng)格遷移如圖12所示,使用內(nèi)容圖像和風(fēng)格圖像組合,生成一張風(fēng)格遷移之后的圖像。pix2pix模型為圖像風(fēng)格遷移提供了通用的解決方案。pix2pix模型學(xué)習(xí)輸入圖像到輸出圖像的圖像特征變化,同時構(gòu)建了一個loss函數(shù)來訓(xùn)練這種特征變化。如圖13所示,從模型圖生成街景,航拍照片生成地圖,黑白圖像上色到手繪圖像轉(zhuǎn)變現(xiàn)實圖像,體現(xiàn)了pix2pix模型在圖像風(fēng)格遷移上的作用。
圖12 圖像風(fēng)格遷移Fig.12 Image style transfer
圖13 pix2pix生成圖像Fig.13 Generate image use pix2pix
本文對GAN的原理結(jié)構(gòu)、改進模型以及應(yīng)用進行了介紹與總結(jié),在深度學(xué)習(xí)這個廣泛的背景下使用GAN進行圖像分類,對在非監(jiān)督學(xué)習(xí)中提取特征進行有效定量評估。GAN應(yīng)用主要是圖像生成,在預(yù)先設(shè)定的條件下生成圖像時很有效。以圖像超分辨率為例,解釋了現(xiàn)有的方法如何優(yōu)化生成對抗網(wǎng)絡(luò)(如SRGAN),以獲得更高質(zhì)量的圖像結(jié)果。最后,pix2pix演示了GAN如何解決自動將輸入圖像轉(zhuǎn)換為輸出圖像等一系列任務(wù)。借由GAN的強大能力,基于GAN的應(yīng)用在未來也將會有更廣闊的前景。