孟 辰,曾志高,朱艷輝,朱文球,易勝秋,董麗君
1.湖南工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,湖南 株洲 412008
2.湖南省智能信息感知及處理技術(shù)重點(diǎn)實(shí)驗(yàn)室,湖南 株洲 412008
近年來深度學(xué)習(xí)的發(fā)展解決了很多人工無法解決的問題,但在有監(jiān)督學(xué)習(xí)中,人工標(biāo)注訓(xùn)練集需要大量的成本。直到2014年Goodfellow提出了無監(jiān)督學(xué)習(xí)GAN,它能夠自動(dòng)完成這個(gè)過程,且擁有較低的成本和較高的效率,之后各種GAN的模型被相繼提出[1]。GAN能夠完成一些使用傳統(tǒng)方法很難完成的任務(wù)。在高分辨率圖片生成領(lǐng)域,漸進(jìn)式增長GAN(progressive growing of GANs,ProGAN)[2]和條件GAN(analyzing and improving the image quality of StyleGAN,StyleGAN2)[3]等架構(gòu)表現(xiàn)出了出色的效果,在文本到圖像合成任務(wù)上,StackGAN[4]也表現(xiàn)優(yōu)秀,研究者社區(qū)已經(jīng)對GAN及其應(yīng)用廣泛接納。
GAN的網(wǎng)絡(luò)架構(gòu)由一個(gè)生成器網(wǎng)絡(luò)和一個(gè)判別器網(wǎng)絡(luò)組成,生成器和判別器兩個(gè)網(wǎng)絡(luò)之間進(jìn)行多次迭代,互相對抗,試圖戰(zhàn)勝對方,從而得到訓(xùn)練。通過生成隨機(jī)的一組一維向量,經(jīng)過生成器網(wǎng)絡(luò),可以得到所需的圖像、文本、音頻、視頻等數(shù)據(jù),而判別器網(wǎng)絡(luò)需要對輸入的真實(shí)數(shù)據(jù)以及生成數(shù)據(jù)進(jìn)行區(qū)分。通常,GAN中的判別網(wǎng)絡(luò)是一個(gè)二分類的網(wǎng)絡(luò),將真實(shí)數(shù)據(jù)判別為1,將生成數(shù)據(jù)判別為0。訓(xùn)練開始時(shí),判別網(wǎng)絡(luò)可以很輕松地將生成數(shù)據(jù)和真實(shí)數(shù)據(jù)區(qū)分開來,然而生成網(wǎng)絡(luò)經(jīng)過不斷地訓(xùn)練,判別網(wǎng)絡(luò)越來越難將真實(shí)數(shù)據(jù)和生成數(shù)據(jù)區(qū)分開來,于是它就會(huì)訓(xùn)練自己的網(wǎng)絡(luò),使得判別能力提升,區(qū)分出真實(shí)數(shù)據(jù)和生成數(shù)據(jù)。在兩個(gè)網(wǎng)絡(luò)不斷訓(xùn)練博弈的情況下,最終達(dá)到納什均衡的狀態(tài)[5]——判別器的準(zhǔn)確率到達(dá)50%,即送來的真實(shí)數(shù)據(jù)和生成數(shù)據(jù)有一半的幾率被誤判,則此時(shí)的GAN就完成了訓(xùn)練。
在GAN的發(fā)展歷程中,存在訓(xùn)練不穩(wěn)定的問題,甚至有時(shí)完全不收斂,生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的梯度在訓(xùn)練路徑上發(fā)散。研究者們?yōu)榱朔€(wěn)定GAN訓(xùn)練花費(fèi)了很大的精力。本文中所提出的網(wǎng)絡(luò)結(jié)構(gòu)可以很好地使GAN的訓(xùn)練變得穩(wěn)定,在圖片數(shù)據(jù)生成中得到高質(zhì)量的圖片。
在本文中,做出了如下貢獻(xiàn):
(1)改進(jìn)了原始GAN的結(jié)構(gòu),使得網(wǎng)絡(luò)結(jié)構(gòu)具有更高的穩(wěn)定性、魯棒性,它在訓(xùn)練中可以有效避免模式崩塌的問題。
(2)設(shè)計(jì)了一種多分類圖片數(shù)據(jù)生成的網(wǎng)絡(luò)結(jié)構(gòu),能夠滿足一個(gè)網(wǎng)絡(luò)訓(xùn)練多種類圖片數(shù)據(jù)生成的任務(wù)。
(3)設(shè)計(jì)了一種隨時(shí)間勻速更新學(xué)習(xí)速率的算法,并將其應(yīng)用在了本文的網(wǎng)絡(luò)結(jié)構(gòu)中。
GAN的博弈過程可以看作是一位數(shù)據(jù)制假者和一位數(shù)據(jù)鑒別者的博弈,數(shù)據(jù)制假者代表了GAN中的生成器,數(shù)據(jù)鑒別者代表了GAN中的判別器。在博弈過程中,數(shù)據(jù)制假者會(huì)一直提高數(shù)據(jù)制假能力,使生成數(shù)據(jù)達(dá)到以假亂真的地步,成功騙過數(shù)據(jù)鑒別者。而數(shù)據(jù)鑒別者的任務(wù)是提高自己的鑒別能力,找出真假數(shù)據(jù)間的區(qū)別,成功判別出數(shù)據(jù)的真假,從而給真實(shí)數(shù)據(jù)打上真的標(biāo)簽,給生成數(shù)據(jù)打上假的標(biāo)簽。
博弈的最開始,生成數(shù)據(jù)和真實(shí)數(shù)據(jù)會(huì)很容易被鑒別器區(qū)分開來,在生成器網(wǎng)絡(luò)進(jìn)行訓(xùn)練更新之后,生成數(shù)據(jù)的質(zhì)量得到提高,讓判別器難以辨別出生成數(shù)據(jù)與真實(shí)數(shù)據(jù)之間的區(qū)別。同時(shí),判別器也得到訓(xùn)練,使得生成數(shù)據(jù)難以通過判別。在兩個(gè)神經(jīng)網(wǎng)絡(luò)不斷訓(xùn)練進(jìn)步下,生成器的生成數(shù)據(jù)的數(shù)據(jù)分布逐漸與真實(shí)數(shù)據(jù)趨于擬合,判別器無法區(qū)分真實(shí)數(shù)據(jù)與生成數(shù)據(jù),對送來的真假數(shù)據(jù)都有一半的誤判幾率,這個(gè)博弈過程,如式(1)所示:
式(1)中,G代表了生成器,D代表了判別器,V為式子的價(jià)值函數(shù),V(D,G)相當(dāng)于表示真實(shí)數(shù)據(jù)和生成真實(shí)的差異程度,意思是固定住生成器G,盡可能地讓判別器D能夠最大化地判別出樣本來自于生成數(shù)據(jù)還是真實(shí)數(shù)據(jù)。表示固定住判別器D,訓(xùn)練生成器G,生成器G要將真實(shí)樣本和生成樣本的差異最小化,如圖1所示。
圖1 GAN的基本結(jié)構(gòu)Fig.1 Basic structure of GAN
原始GAN的網(wǎng)絡(luò)層使用了全連接層進(jìn)行設(shè)計(jì),訓(xùn)練生成的圖片數(shù)據(jù)質(zhì)量很差。DCGAN[6]使用了卷積層代替了GAN的全連接層,使用了帶步長的卷積代替上采樣層。DCGAN雖然有著不錯(cuò)的架構(gòu),但是沒有解決GAN訓(xùn)練的穩(wěn)定性問題,訓(xùn)練時(shí)仍需要小心平衡生成器與鑒別器的訓(xùn)練進(jìn)程,如圖2所示。
圖2 DCGAN的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of DCGAN
WGAN[7]對原始GAN的損失函數(shù)做了改進(jìn),使得網(wǎng)絡(luò)模型在全連接層上也能得到很好的效果,并且提出了使用沃瑟斯坦(Wassertein)距離作為優(yōu)化方式訓(xùn)練GAN,但為了使用Wassertein距離需要滿足利普希茨(lipschitz)連續(xù)性,所以進(jìn)行了權(quán)重限制,導(dǎo)致理論證明漂亮,但是實(shí)際的訓(xùn)練效果并不好。改進(jìn)后的WGAN-GP[8]提出了使用梯度懲罰的方式以滿足連續(xù)性條件,解決了梯度消失和梯度爆炸的問題。
改進(jìn)的生成對抗網(wǎng)絡(luò)采用了稀疏表達(dá)結(jié)構(gòu)[9]和殘差結(jié)構(gòu)[10]組合的生成器網(wǎng)絡(luò)模型,在生成器網(wǎng)絡(luò)中,通過兩個(gè)全連接層構(gòu)建了4×4×64和24×24×64兩種尺度的特征,在其中的4×4×64結(jié)構(gòu)中構(gòu)建了稀疏連接,引入了多尺度感受野(3×3,24×24)與多尺度融合,使得網(wǎng)絡(luò)的表征能力上升。為了防止網(wǎng)絡(luò)梯度在反向傳播時(shí)產(chǎn)生梯度爆炸或梯度彌散,引入了殘差結(jié)構(gòu),在梯度得不到更新時(shí),梯度會(huì)通過短接層進(jìn)行更新。稀疏表達(dá)結(jié)構(gòu)和殘差結(jié)構(gòu)組合的策略會(huì)導(dǎo)致模型結(jié)構(gòu)復(fù)雜,但是能獲得生成更高圖像質(zhì)量的網(wǎng)絡(luò)模型,生成器網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)的GAN(IGAN)生成器網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Improved network structure of GAN(IGAN)generator
在最開始,隨機(jī)生成的100維向量,通過兩個(gè)全連接層分別生成一個(gè)4×4×64和24×24×64大小的向量。4×4×64的向量重塑成一個(gè)通道數(shù)量為64的4×4的矩陣,在此時(shí),4×4的矩陣經(jīng)過多次卷積與反卷積生成通道數(shù)量為64的96×96的矩陣。同時(shí),它還經(jīng)過了一次反卷積生成了另一個(gè)通道數(shù)量為64的96×96的矩陣,生成的兩個(gè)矩陣在通道數(shù)量維度進(jìn)行相加,在后續(xù)梯度得不到更新的時(shí)候,將會(huì)通過殘差層跳過中間層更新梯度。在右邊,通道數(shù)量為64的24×24的矩陣也通過反卷積生成通道數(shù)量為64的96×96的矩陣,然后與左邊生成的通道數(shù)量為64的96×96的矩陣在通道數(shù)量維度相加,生成一個(gè)通道數(shù)量為64的96×96的矩陣。最后,通道數(shù)量為64的96×96的矩陣經(jīng)過一個(gè)卷積層,生成需要得到的96×96×3的圖像。
改進(jìn)的生成對抗網(wǎng)絡(luò)構(gòu)建了一組過完備特征集合。在原始的GAN中,100維特征向量經(jīng)過全連接成生成了特征集合F(X)={x1,x2,…,x(4×4×64),原始特征集合F(X)經(jīng)過網(wǎng)絡(luò)模型不斷地進(jìn)行反卷積生成了輸出特征集合F(Y)={y1,y2,…,y(96×96×3)},此時(shí)length(F(X))<l ength(F(Y))。改進(jìn)的生成對抗網(wǎng)絡(luò)在最初通過兩個(gè)全連接層生成了兩個(gè)特征集合,一個(gè)為F(X)={x1,x2,…,x(4×4×64)},另一個(gè)特征集合為F(X′)={x′1,x′2,…,x′(24×24×64)},此時(shí),length(F(X))+length(F(X′))>length(F(Y)),它比之原始的GAN抽象出了更多的基礎(chǔ)特征,這也是第二個(gè)全連接層取24×24×64的原因。
改進(jìn)的生成對抗網(wǎng)絡(luò)采用了多種不同的卷積核(24×24,4×4),使得網(wǎng)絡(luò)擁有了不同的感受野,最后進(jìn)行的兩次拼接意味著多種尺度特征的融合。網(wǎng)絡(luò)層中的短接層,使得訓(xùn)練后期網(wǎng)絡(luò)仍然能夠得到更新。
在每一個(gè)卷積(Conv2D)層和反卷積[11](Conv2Dtranspose)層的后面接了一個(gè)批規(guī)范化層[12](Batch Normalzation,BN)層和激活函數(shù)層(leaky relu[13])層,最后一個(gè)Conv2D層后面接一個(gè)BN層和激活函數(shù)層(tanh)層,如圖4所示。
圖4 模塊名稱Fig.4 Module name
在實(shí)際任務(wù)中,有時(shí)需要訓(xùn)練生成多種類圖像數(shù)據(jù),若每次只訓(xùn)練一種數(shù)據(jù),則花費(fèi)的時(shí)間會(huì)比較漫長。在多種類圖像數(shù)據(jù)生成中,需要完成的任務(wù)比較復(fù)雜,需要使用更深的網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),故沿用IGAN的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行拓展,在每一層反卷積結(jié)束后添加一層通道數(shù)相同步長為1的卷積,增加網(wǎng)絡(luò)的表征能力,并在24×24×64的模塊后連接相應(yīng)分類數(shù)量分支網(wǎng)絡(luò),并與另一模塊生成的分支模塊進(jìn)行連接,得到如圖5所示的二分類圖像數(shù)據(jù)生成網(wǎng)絡(luò)結(jié)構(gòu)。
圖5 二分類圖像數(shù)據(jù)生成網(wǎng)絡(luò)結(jié)構(gòu)(IGAN_V2)Fig.5 Binary image data generation network structure(IGAN_V2)
網(wǎng)絡(luò)中的IBlock結(jié)構(gòu)由兩個(gè)上卷積層構(gòu)成,如圖6所示。
圖6 IBlock網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 IBlock network structure
由此基本結(jié)構(gòu)可以拓展出更多圖片種類數(shù)據(jù)生成的網(wǎng)絡(luò)結(jié)構(gòu),圖7為N分類圖像數(shù)據(jù)生成網(wǎng)絡(luò)。
圖7 N分類圖像數(shù)據(jù)生成網(wǎng)絡(luò)結(jié)構(gòu)(IGAN_VN)Fig.7N classification image data generation network structure(IGAN_VN)
判別器采用如圖8的網(wǎng)絡(luò)結(jié)構(gòu),它將輸入的圖片數(shù)據(jù)經(jīng)過一個(gè)殘差網(wǎng)絡(luò)進(jìn)行分類,判斷輸入數(shù)據(jù)為生成數(shù)據(jù)還是真實(shí)數(shù)據(jù)。在多分類圖像數(shù)據(jù)生成中,生成幾分類圖片數(shù)據(jù),就使用多少個(gè)判別器。
圖8 IGAN判別器網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 Network structure of IGAN discriminator
可以看到,判別器網(wǎng)絡(luò)結(jié)構(gòu)比生成器網(wǎng)絡(luò)結(jié)構(gòu)要簡單,其原因是因?yàn)榕袆e數(shù)據(jù)的難度要比生成數(shù)據(jù)的難度要小得多,如果使用復(fù)雜的判別網(wǎng)絡(luò),判別損失會(huì)迅速下降到一個(gè)很小的數(shù)值,使得網(wǎng)絡(luò)不再更新,同時(shí)也為了降低對顯卡的要求。如圖9所示,網(wǎng)絡(luò)中的每個(gè)卷積塊包含一個(gè)卷積層和一個(gè)批歸一化層以及LeakyRelu層。在之后還會(huì)采取一些調(diào)參技巧(trick)來平衡網(wǎng)絡(luò)大小不平衡的問題。
圖9 殘差塊基本結(jié)構(gòu)Fig.9 Basic structure of residual block
本文使用的數(shù)據(jù)集為Fashion-MNIST、MNIST、CelebA,以及LSUN-bedrooms數(shù)據(jù)集,實(shí)驗(yàn)中的LSUN數(shù)據(jù)集以及CelebA數(shù)據(jù)集都經(jīng)由程序處理成統(tǒng)一的96×96的大小,可將數(shù)據(jù)預(yù)處理或在訓(xùn)練中實(shí)時(shí)處理,為了在程序運(yùn)行時(shí),可以減小程序資源的開銷,節(jié)省時(shí)間,本文采用了預(yù)先處理。
2.2.1 使用動(dòng)態(tài)學(xué)習(xí)速率
在GAN的訓(xùn)練中,生成器最開始擬合的數(shù)據(jù)分布距離真實(shí)數(shù)據(jù)分布較遠(yuǎn),需要使用較大的學(xué)習(xí)速率進(jìn)行訓(xùn)練,加快網(wǎng)絡(luò)的收斂[14]。隨著生成的數(shù)據(jù)分布不斷接近真實(shí)分布,學(xué)習(xí)率需要隨著訓(xùn)練的進(jìn)行不斷減小,提高網(wǎng)絡(luò)的穩(wěn)定性,避免學(xué)習(xí)率過大跳過最小值。
在學(xué)習(xí)率的選擇上,一般采取以下四種方式:
(1)使用固定的學(xué)習(xí)速率。
(2)每迭代step次后學(xué)習(xí)率減少gamma倍。
(3)學(xué)習(xí)率呈多項(xiàng)式曲線下降。
(4)學(xué)習(xí)率隨迭代次數(shù)增加而下降。
實(shí)驗(yàn)中采用了第四種策略的變體。
此時(shí):
在式(6)中,end_lr為最后的學(xué)習(xí)速率,end_lr+為最初的學(xué)習(xí)速率,gamma為學(xué)習(xí)速率衰減率,通過控制end_lr、ini t_set、gamma可以動(dòng)態(tài)地控制學(xué)習(xí)速率,圖10為學(xué)習(xí)速率衰減曲線。
圖10 動(dòng)態(tài)學(xué)習(xí)速率曲線Fig.10 Dynamic learning rate curve
2.2.2 單側(cè)標(biāo)簽平滑
在原始GAN的訓(xùn)練中,分類器的標(biāo)簽只使用0或者1、0代表生成數(shù)據(jù),1代表真實(shí)數(shù)據(jù)。標(biāo)簽平滑是指將標(biāo)簽處理成α(真)、β(假),而不是采取0(假)和1(真)的處理方式。此時(shí),GAN的損失函數(shù)變?yōu)槭剑?):
在實(shí)際訓(xùn)練中,去掉了log函數(shù),此時(shí),GAN的損失函數(shù)變?yōu)槭剑?):
其最優(yōu)解D(x)變?yōu)椋?/p>
真實(shí)數(shù)據(jù)和生成數(shù)據(jù)都需要進(jìn)行平滑處理,有助于GAN進(jìn)入納什均衡狀態(tài)、損失函數(shù)得到收斂、增加程序的魯棒性。
2.2.3 批歸一化(batch normalzation)
批歸一化技術(shù)是將特征向量歸一化,把非線性函數(shù)映射后向取值區(qū)間飽和區(qū)靠攏的輸入分布,調(diào)整至均值為0、方差為1的比較標(biāo)準(zhǔn)的正態(tài)分布,使得非線性變換函數(shù)的輸入值落入對輸入比較敏感的區(qū)域,避免梯度消失。該技術(shù)可提高學(xué)習(xí)過程的穩(wěn)定性,以及解決權(quán)重值初始化效果差的問題。將該技術(shù)作為預(yù)處理步驟應(yīng)用于神經(jīng)網(wǎng)絡(luò)的隱藏層,有助于緩解內(nèi)部協(xié)變量轉(zhuǎn)移的問題,如圖11所示。
圖11 數(shù)據(jù)經(jīng)過BN層后數(shù)據(jù)分布示意圖Fig.11 Diagram of data distribution after data passing through batch normalization(BN)layer
批歸一化需要對所有隱藏層應(yīng)用,而不僅僅是輸入層使用。
2.2.4 工程手段
在實(shí)際應(yīng)用中,一些調(diào)參技巧對圖像質(zhì)量的改進(jìn)擁有不錯(cuò)的效果,在本文實(shí)驗(yàn)中,采取了如下調(diào)參技巧。
(1)在判別器進(jìn)行數(shù)據(jù)輸入時(shí),將輸入圖像的數(shù)值范圍限制在[-1,1],在最后輸出圖像時(shí)再還原成[0,255],歸一化限定了輸入向量的最大值跟最小值不超過隱層跟輸出層函數(shù)的限定范圍。
(2)在生成數(shù)據(jù)以及真實(shí)數(shù)據(jù)送入判別器之前,給其分別加入一個(gè)高斯噪聲[15],這樣可以有效提高程序的魯棒性。
(3)給所有的隨機(jī)數(shù)設(shè)置一個(gè)隨機(jī)數(shù)種子,以便于之后的實(shí)驗(yàn)復(fù)現(xiàn)。
(4)由于網(wǎng)絡(luò)復(fù)雜度的不平衡,在訓(xùn)練一次生成器之后訓(xùn)練三到五次判別器,可以有效平衡兩個(gè)網(wǎng)絡(luò)。
(5)在反卷積時(shí)使用PixelShuffle和轉(zhuǎn)置卷積進(jìn)行上采樣[16],避免較大化池用于下采樣,使用帶步長的卷積,減少梯度稀疏。
(6)給生成器與判別器設(shè)置不同的學(xué)習(xí)速率[17],通常生成器的學(xué)習(xí)速率設(shè)置的大一點(diǎn),實(shí)驗(yàn)中將生成器學(xué)習(xí)速率設(shè)置為判別器的1.5倍。
(7)激活函數(shù)選擇使用Leaky_ReLu代替ReLu避免梯度稀疏[18]:
激活函數(shù)示意圖如圖12所示。
圖12 激活函數(shù)示意圖Fig.12 Activation function diagram
(8)選擇ADAM作為優(yōu)化器加快訓(xùn)練。
(9)實(shí)際代碼中用反轉(zhuǎn)標(biāo)簽來訓(xùn)練G更有效[19],即讓生成圖片使用真實(shí)的標(biāo)簽來訓(xùn)練,而真實(shí)數(shù)據(jù)使用生成數(shù)據(jù)的標(biāo)簽進(jìn)行訓(xùn)練。
此時(shí),GAN的損失函數(shù)變?yōu)椋?/p>
(10)在發(fā)現(xiàn)損失值不變時(shí),或者生成圖像質(zhì)量不好時(shí),不要終止訓(xùn)練,GAN的訓(xùn)練非常耗時(shí),多等等會(huì)得到好的結(jié)果。但是在判別器的損失快速接近0的時(shí)候,可以終止訓(xùn)練、調(diào)整網(wǎng)絡(luò)、重新訓(xùn)練。
(11)加入一個(gè)懲罰項(xiàng)來懲罰那些和歷史平均權(quán)重相差過多的權(quán)重值,本文采用的是WGAN-GP中的梯度懲罰,梯度懲罰損失函數(shù)如式(12)所示,其中x?為真實(shí)樣本,x為生成樣本。
(2)使用隨機(jī)失活技術(shù)——DropOut,也是為了引入一定的噪聲,在生成器的某幾層中使用DropOut,增加網(wǎng)絡(luò)的魯棒性[20],如圖13所示。
圖13 DropOut示意圖Fig.13 DropOut diagram
生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)架構(gòu)由1.2節(jié)所示。損失函數(shù)L=Llabel+Lgp,Lgp中懲罰因子λ設(shè)置為5。一輪訓(xùn)練大小設(shè)置為64,因?yàn)閿?shù)據(jù)集大小過大,一個(gè)輪次設(shè)置為一個(gè)批次數(shù)據(jù)的學(xué)習(xí)時(shí)間,而不是跑完整個(gè)數(shù)據(jù)集所用的時(shí)間。學(xué)習(xí)速率設(shè)置為動(dòng)態(tài)學(xué)習(xí)速率,每100輪保存一次權(quán)重以及可視化輸出結(jié)果查看訓(xùn)練情況,每30輪保存一次損失值。所用機(jī)器為NVIDIA 2 070 s,內(nèi)存32 GB,使用的深度學(xué)習(xí)的框架為tensorflow2.0。
MNIST(手寫數(shù)字?jǐn)?shù)據(jù)集)包含了60 000個(gè)用于訓(xùn)練的示例和10 000個(gè)用于訓(xùn)練的示例,這些數(shù)字已經(jīng)經(jīng)過標(biāo)準(zhǔn)化并位于圖像中心,為值0到1的28×28大小的圖像。Fashion-MNIST(服飾數(shù)據(jù)集)包含了70 000張28×28的灰度圖像,其中包含了60 000個(gè)圖片的訓(xùn)練集以及10 000個(gè)圖片的測試集,共包含了10類圖像。在MNIST(手寫數(shù)字識別數(shù)據(jù)集)和Fashion-MNIST(服飾數(shù)據(jù)集)等簡單數(shù)據(jù)集上,IGAN和IGAN_v2都能取得不錯(cuò)的結(jié)果,圖14為在IGAN網(wǎng)絡(luò)和IGAN_v2網(wǎng)絡(luò)上MNIST的生成結(jié)果,圖15為在IGAN網(wǎng)絡(luò)和IGAN_v2網(wǎng)絡(luò)上Fashion-MNIST生成結(jié)果。
圖14 模型在MNIST數(shù)據(jù)集上生成結(jié)果Fig.14 Model generates results on MNIST dataset
圖15 模型在Fashion-mnist數(shù)據(jù)集上生成結(jié)果Fig.15 Model generates results on fashion MNIST dataset
在訓(xùn)練這類簡單數(shù)據(jù)集的時(shí)候,如直接使用0.000 2的學(xué)習(xí)速率,判別網(wǎng)絡(luò)的損失將會(huì)銳減至很小,導(dǎo)致不能指導(dǎo)生成網(wǎng)絡(luò)的參數(shù)進(jìn)行更新,所以需要將最開始的學(xué)習(xí)速率調(diào)成0.002,然后逐步衰減至0.000 2,可使用2.2.1小節(jié)中的動(dòng)態(tài)學(xué)習(xí)速率。
可以看到,經(jīng)過IGAN與IGAN_V2的網(wǎng)絡(luò),生成的結(jié)果可以清楚地判別出它的類別,生成質(zhì)量優(yōu)秀。
在GAN中,應(yīng)用最多和最全的便是人臉數(shù)據(jù)生成,數(shù)據(jù)集采用了名人人臉屬性數(shù)據(jù)集——CelebA,其中包含了10 177個(gè)名人身份的202 599張人臉圖片,該數(shù)據(jù)集經(jīng)過預(yù)處理成96×96×3大小后分別送入IGAN與IGAN_v2網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到了如圖16、圖17的高質(zhì)量人臉圖片。
圖16 IGAN在CelebA數(shù)據(jù)集上生成結(jié)果Fig.16 IGAN generates results on CelebA dataset
圖17 IGAN_v2在CelebA數(shù)據(jù)集上生成結(jié)果Fig.17 IGAN_v2 generates results on CelebA dataset
在圖中可以發(fā)現(xiàn),人物的膚色光影可以很好地生成出來,這說明圖像數(shù)據(jù)生成的質(zhì)量和多樣性能夠得到保證。而且在訓(xùn)練中,網(wǎng)絡(luò)生成的背景趨于同一種顏色,保證了生成圖像的真實(shí)性。
LUSN Dataset是一個(gè)大規(guī)模圖像數(shù)據(jù)集,包含了10個(gè)場景類別和20個(gè)對象類別,共計(jì)約100萬張標(biāo)記圖像,本文使用了LUSN Dataset數(shù)據(jù)集中的bedding-room類別的訓(xùn)練部分?jǐn)?shù)據(jù)集。在這些數(shù)據(jù)集中,能否生成優(yōu)秀的圖像是一個(gè)大的挑戰(zhàn)。
將圖片預(yù)處理成96×96×3大小的數(shù)據(jù)集,然后經(jīng)過IGAN與IGAN_v2神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,分別得到如圖18、圖19所示的生成樣本。
圖18 IGAN在LUSN數(shù)據(jù)集上生成結(jié)果Fig.18 IGAN generates results on LUSN dataset
圖19 IGAN_v2在LUSN數(shù)據(jù)集上生成結(jié)果Fig.19 IGAN_v2 generates results on LUSN dataset
可以看到,圖像中的窗戶、門、床,甚至是掛飾也可以比較不錯(cuò)地生成,但是其中也會(huì)出現(xiàn)一些圖片訓(xùn)練的有些失敗,這也是在訓(xùn)練GAN時(shí)必然會(huì)碰到的問題,即圖像越復(fù)雜,生成難度越高,生成質(zhì)量越差。
3.5.1 評估方式介紹
在GAN進(jìn)行了圖像生成任務(wù)后,需要一個(gè)度量指標(biāo)來衡量生成的圖像是否優(yōu)秀,在進(jìn)行一項(xiàng)任務(wù)的度量時(shí),不能完全靠主觀判斷對圖像進(jìn)行是否優(yōu)秀的判斷,從以下兩方面來考慮:
(1)圖片自身的質(zhì)量(是否逼真,是否清晰,內(nèi)容是否完整)。
(2)多樣性。在一項(xiàng)任務(wù)中,生成網(wǎng)絡(luò)所產(chǎn)生的圖片是多種多樣的,如果只產(chǎn)生一種或者幾種類型的圖像,將會(huì)出現(xiàn)模式崩潰(mode collapse)的現(xiàn)象。
進(jìn)行圖像評價(jià)時(shí),一般使用如下兩種常用的評價(jià)指標(biāo),IS(inception score)和FID(fréchet inception distance)[21]。
但是IS評價(jià)標(biāo)準(zhǔn)的Inception V3權(quán)重是在ImageNet下訓(xùn)練出來的,而本文中使用了其他四個(gè)數(shù)據(jù)集生成圖像,這種跨數(shù)據(jù)集的計(jì)算IS是錯(cuò)誤的,所以在利用ImageNet以外的數(shù)據(jù)集計(jì)算IS時(shí),得出的結(jié)果沒有意義。
為了克服IS評價(jià)的缺點(diǎn),本實(shí)驗(yàn)中使用FID進(jìn)行評價(jià)。FID可以計(jì)算真實(shí)圖像和生成圖像的特征向量距離的一種度量,特征向量由Inception V3 Network所得到,它使用的是Inception V3 Network分類網(wǎng)絡(luò)倒數(shù)第二個(gè)全連接層的輸出的1×1×2 048維圖像特征向量進(jìn)行距離度量。
這個(gè)距離可以衡量真實(shí)圖像和生成圖像之間的相似程度,F(xiàn)ID值越小,相似程度越高,在FID=0時(shí),兩個(gè)圖像相同。
使用式(13)計(jì)算數(shù)據(jù)的FID:
其中,tr表示矩陣對角線上元素之和——跡(trace)。均值為μ協(xié)方差為Σ。此外r表示真實(shí)圖片數(shù)據(jù),g表示生成圖片數(shù)據(jù)。
FID對模式崩潰更加敏感。相比較IS來說,它的對比用到了生成數(shù)據(jù)和真實(shí)數(shù)據(jù),比IS更加靈活,而且可以使用不同的數(shù)據(jù)集進(jìn)行訓(xùn)練。
3.5.2 評分結(jié)果
受限于設(shè)備和數(shù)據(jù)集的大小,不能將整個(gè)數(shù)據(jù)集與生成的圖像進(jìn)行對比,為保證公平性,將抽取數(shù)據(jù)集中的一部分樣本與生成樣本進(jìn)行FID計(jì)算,抽取樣本的大小為10 000,實(shí)驗(yàn)結(jié)果如表1所示。
表1 FID分?jǐn)?shù)Table 1 FID score
由表1可以看出,IGAN在簡單以及復(fù)雜的數(shù)據(jù)集上表現(xiàn)都很優(yōu)異,而IGAN_v2在簡單數(shù)據(jù)集上的效果并不理想,因?yàn)樗鼜?fù)雜的網(wǎng)絡(luò)在小數(shù)據(jù)集上很難得到收斂,而在復(fù)雜數(shù)據(jù)集上,它的表現(xiàn)和單分類生成同樣優(yōu)秀。
在圖像生成領(lǐng)域最直觀的還是主觀評價(jià),客觀量化至今還存在著各種問題。圖20、圖21為IGAN生成圖像,圖22、圖23為IGAN_v2生成圖像,圖24、圖25為WGAN-GP生成圖片,圖26、圖27為DCGAN生成圖像。
圖20 IGAN在CelebA數(shù)據(jù)集生成圖像Fig.20 IGAN generates results on CelebA dataset
圖21 IGAN在LUSN-bedroom數(shù)據(jù)集生成圖像Fig.21 IGAN generates results on LUSN-bedroom dataset
圖22 IGAN_v2在CelebA數(shù)據(jù)集生成圖像Fig.22 IGAN_v2 generates results on CelebA dataset
圖23 IGAN_v2在LUSN-bedroom數(shù)據(jù)集生成圖像Fig.23 IGAN_v2 generates results on LUSN-bedroom dataset
圖24 WGAN-GP在CelebA數(shù)據(jù)集生成圖像Fig.24 WGAN_GP generates results on CelebA dataset
圖25 WGAN-GP在LUSN-bedroom數(shù)據(jù)集生成圖像Fig.25 WGAN_GP generates results on LUSN-bedroom dataset
圖26 DCGAN在CelebA數(shù)據(jù)集生成圖像Fig.26 DCGAN generates results on CelebA dataset
圖27 DCGAN在LUSN-bedroom數(shù)據(jù)集生成圖像Fig.27 DCGAN generates results on LUSN-bedroom dataset
從這些圖可以看到,四組生成結(jié)果之中,IGAN與IGAN_v2網(wǎng)絡(luò)的生成效果最佳,DCGAN中還出現(xiàn)了模式崩潰的問題,生成了模糊重復(fù)的圖片。在客觀量化手段還不能完全替代主觀判斷的今天,主觀判斷仍然是圖像生成質(zhì)量評價(jià)的一大手段。
實(shí)驗(yàn)在兩種類型的數(shù)據(jù)集之間進(jìn)行了對比,分別是簡單數(shù)據(jù)集——手寫數(shù)字?jǐn)?shù)據(jù)集(MNIST)、服飾數(shù)據(jù)集(Fashion-MNIST),以及復(fù)雜數(shù)據(jù)集——名人人臉屬性數(shù)據(jù)集(CelebA)、大規(guī)模圖像數(shù)據(jù)集(LUSN)。在簡單數(shù)據(jù)集上,對比于其他的網(wǎng)絡(luò)模型,IGAN與IGAN_v2幾乎不需要進(jìn)行調(diào)參,而其他的GAN需要經(jīng)過精心的調(diào)參才能達(dá)到接近的效果。在復(fù)雜的數(shù)據(jù)集上,IGAN和IGAN_v2達(dá)到了最佳生成質(zhì)量效果,這和它復(fù)雜強(qiáng)大的網(wǎng)絡(luò)模型是分不開的。在進(jìn)行真實(shí)實(shí)驗(yàn)場景應(yīng)用時(shí),如果需要生成簡單數(shù)據(jù)集數(shù)據(jù)且沒有相應(yīng)的計(jì)算資源時(shí),可以使用傳統(tǒng)GAN架構(gòu)。在進(jìn)行復(fù)雜圖像任務(wù),并且擁有計(jì)算資源的情況下,推薦使用IGAN的架構(gòu),它更適合復(fù)雜的圖像任務(wù)。
在完成了現(xiàn)有的工作后,可以發(fā)現(xiàn),GAN在很多領(lǐng)域具有廣闊的應(yīng)用前景,甚至在一些領(lǐng)域還是一片藍(lán)海。
(1)在進(jìn)行有監(jiān)督學(xué)習(xí)的時(shí)候,神經(jīng)網(wǎng)絡(luò)需要大量的數(shù)據(jù),而獲取這些數(shù)據(jù)的成本卻十分高昂,耗時(shí)耗力。在只有一個(gè)小規(guī)模數(shù)據(jù)集時(shí),一旦訓(xùn)練好一個(gè)GAN,就可以使用GAN來生成大量的數(shù)據(jù),用來進(jìn)行訓(xùn)練,可以節(jié)省很多精力。
(2)在設(shè)計(jì)領(lǐng)域,設(shè)計(jì)過程不僅耗時(shí)耗力,而且需要具備專業(yè)技能。借助人工智能和GAN,可以進(jìn)行各種各樣的設(shè)計(jì),或者生成初始數(shù)據(jù)供設(shè)計(jì)師啟發(fā)靈感,可以節(jié)省大量的時(shí)間成本。
(3)在多分類圖像生成網(wǎng)絡(luò)結(jié)構(gòu)中,由于生成器結(jié)構(gòu)復(fù)雜,且每一分類的圖像生成對應(yīng)一個(gè)不同的判別器,導(dǎo)致特別耗費(fèi)GPU資源,在之后可以對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化,使得計(jì)算資源的使用更加合理。
近些年來,研究者們研發(fā)出了數(shù)以百計(jì)的GAN架構(gòu),GAN的領(lǐng)域不斷變得豐富,今后將繼續(xù)研究,并設(shè)計(jì)新的架構(gòu),不斷完善GAN的能力,使GAN的應(yīng)用落地。