張光華, 王福豹, 段渭軍
(西北工業(yè)大學(xué) 電子信息學(xué)院, 陜西 西安 710072)
圖像生成技術(shù)是根據(jù)已知信息生成圖像的過程、方法和算法的總稱,它在過去的三十年間得到了飛速的發(fā)展并被應(yīng)用于各種場景。Cohen等在1988年提出了一種基于動(dòng)態(tài)計(jì)算結(jié)構(gòu)因子的輻射度算法,首次將輻射度應(yīng)用在圖像生成領(lǐng)域[1]。Yoshio等在1998年通過視頻流速全向圖像采集和從全向視頻流中實(shí)時(shí)生成圖像解決了遠(yuǎn)程視頻傳輸?shù)难訒r(shí)問題[2-3]。近年來,隨著卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像生成與處理領(lǐng)域應(yīng)用研究的不斷深入[4],涌現(xiàn)出了很多使用CNN進(jìn)行圖像生成的方法。例如Yann等人利用CNN的多層反向傳播結(jié)構(gòu)對于復(fù)雜的、高緯度的、非線性圖的學(xué)習(xí)能力,將CNN用于圖像、語音和時(shí)間序列的處理中[5-6]。Zhang等利用圖像的深度信息來生成立體圖像[7],其核心思想是采用非對稱濾波器對圖像的深度圖進(jìn)行預(yù)處理從而消除深度圖中目標(biāo)邊界的非平滑變化。Park等采用視差估計(jì)的方法來進(jìn)行三維圖像的生成[8]。
2014年,Goodfellow等提出了生成對抗網(wǎng)絡(luò)[9],并迅速成為最流行的深度學(xué)習(xí)算法之一,在圖形生成、圖像分類、圖像識別等領(lǐng)域展現(xiàn)出了強(qiáng)大的力量。GAN包含2個(gè)部分,一個(gè)是生成器,一個(gè)是鑒別器。它的優(yōu)點(diǎn)是能夠讓生成器和鑒別器在對抗中自動(dòng)獲得最優(yōu)的結(jié)果。這種方法的核心是利用CNN的多層卷積對目標(biāo)圖像進(jìn)行特征提取,然后根據(jù)目標(biāo)圖像的像素概率密度分布特點(diǎn)進(jìn)行重構(gòu),再將重構(gòu)圖像與目標(biāo)圖像進(jìn)行對比后不斷調(diào)優(yōu)[10-11]。GAN將圖像生成技術(shù)帶到了全新的高度,在GAN被提出之后,許多領(lǐng)域的圖像生成模型都采用了GAN的基本結(jié)構(gòu)并對其進(jìn)行了各種各樣的改進(jìn)[12-20]。
生成高分辨率的星系與恒星圖像對預(yù)測未知恒星與星系,幫助人們了解宇宙有著重要的意義。 GAN能夠利用簡單的結(jié)構(gòu)生成較為清晰的圖像,然而它的缺點(diǎn)是整個(gè)模型較難訓(xùn)練穩(wěn)定,極易出現(xiàn)過擬合或是欠擬合的情況。針對這種情況,研究人員提出了多種方法來穩(wěn)定訓(xùn)練,例如:批歸一化[21]、整流線型單元[22]、隨機(jī)拋棄方法[23]等。這些方法在一定程度上穩(wěn)定了GAN的訓(xùn)練過程,然而到目前為止還沒有一個(gè)最有效的方法能夠保證GAN在訓(xùn)練中的穩(wěn)定,尤其是當(dāng)目標(biāo)圖像分辨率較高時(shí)。目前使用GAN進(jìn)行圖像生成所使用的訓(xùn)練圖像絕大部分是人臉或是景觀圖像,而對于來自于宇宙的星系,恒星等圖像的生成卻鮮有關(guān)注。要生成高分辨率的星系與恒星圖像,必須進(jìn)一步研究和提高GAN的穩(wěn)定性。
本文針對GAN應(yīng)用在生成星系以及恒星圖像上存在的不穩(wěn)定問題,對GAN的結(jié)構(gòu)進(jìn)行了優(yōu)化,對提高GAN穩(wěn)定性的策略和方法進(jìn)行了研究,并進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
GAN由兩部分組成,分別是生成器(generator)和鑒別器(discriminator)。生成器是根據(jù)訓(xùn)練圖像的像素概率密度分布將“初始隨機(jī)噪聲”不斷地進(jìn)行重構(gòu)直到生成的圖像像素概率密度分布無限趨近于訓(xùn)練圖像的一種模型,其任務(wù)是使得生成的圖像能夠“以假亂真”。鑒別器的作用是區(qū)分生成圖像和訓(xùn)練圖像之間的差異,并在訓(xùn)練的過程中不斷地加強(qiáng)自己的靈敏度。GAN模型可以由公式(1)來描述。
(1)
如圖1所示,生成器將生成的圖像與真實(shí)圖像一同輸入到鑒別器中,由鑒別器判斷其真假。
圖1 GAN示意圖
如圖2所示,鑒別器同時(shí)從生成圖像和真實(shí)數(shù)據(jù)中進(jìn)行采樣后進(jìn)行對比,更新鑒別器參數(shù)。生成器從鑒別器中獲得反饋,不斷調(diào)整其參數(shù)使得生成圖像的像素概率分布密度靠近訓(xùn)練圖像。
圖2 生成器與鑒別器參數(shù)更新示意圖
本文使用Keras逐層搭建GAN模型,搭建過程示意圖如圖3所示。
圖3 模型搭建示意圖
本文所設(shè)計(jì)的圖像生成模型與原始GAN模型相比進(jìn)行了如下改進(jìn):①在生成器中的每個(gè)卷積層后都設(shè)置批歸一化層,其目的是為了規(guī)范樣本特征分布,提高神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度;②在生成器的激活層采用 Relu而在鑒別器的激活層中均采用Leaky-Relu,其作用是在訓(xùn)練中避免模型崩塌;③取消所有池化層,在生成器中使用轉(zhuǎn)置卷積(transposed convolutional layer)進(jìn)行上采樣,在鑒別器中使用微步幅卷積代替池化層。其作用是增強(qiáng)模型對圖像細(xì)節(jié)的描述;④在隨機(jī)拋棄層使用了全新的拋棄方法:S-Dropout,其作用是能夠在保證模型穩(wěn)定的前提下盡可能多地保留原始信息的傳遞。
模型的初始化方式對生成圖像的質(zhì)量有著重要的影響。想要訓(xùn)練出一個(gè)性能出色的神經(jīng)網(wǎng)絡(luò)模型,通常會選擇隨機(jī)初始化而不是將所有參數(shù)初始化為0。這樣做的原因是如果所有的神經(jīng)元都具有相同權(quán)重的話,那么它們的激勵(lì)結(jié)果也會相同,這樣網(wǎng)絡(luò)就無法通過神經(jīng)元權(quán)重在反向傳播時(shí)的更新來學(xué)習(xí)到不同的特征了。因此采用隨機(jī)分布的初始化方式就能夠保證每個(gè)神經(jīng)元的初始權(quán)重不同,并且可以使模型學(xué)習(xí)到不同的、豐富的及有層次的特征。目前常用的權(quán)重初始化方法主要有2種,一種是平均分布,一種是高斯分布。本文選用平均分布來初始化模型,主要原因是在做內(nèi)插值時(shí),在曲線上做的效果比在直線上做的效果更好。另外,通過實(shí)驗(yàn)對比發(fā)現(xiàn)采用平均分布初始化生成的圖像質(zhì)量明顯好于采用高斯分布初始化的結(jié)果。圖4是采用平均分布初始化生成的圖像。圖5是采用高斯分布初始化生成的圖像。顯然,采用平均分布初始化的方式更能夠在相對短的時(shí)間內(nèi)學(xué)習(xí)到有用的信息。
圖4 采用平均分布初始化的生成結(jié)果 圖5 采用高斯分布初始化的生成結(jié)果
雖然GAN的提出極大豐富了圖像生成的方法,但是它也有劣勢,最主要的問題在于GAN較難訓(xùn)練。由于深度神經(jīng)網(wǎng)絡(luò)多層結(jié)構(gòu)的特點(diǎn),GAN通常具有大量的訓(xùn)練參數(shù),而且訓(xùn)練參數(shù)的數(shù)量隨著模型深度的加深呈幾何級數(shù)增長。當(dāng)訓(xùn)練圖像的像素較高時(shí)模型通常會出現(xiàn)欠擬合或是過擬合的情況,這種情況被稱之為訓(xùn)練不穩(wěn)定。
本文在基于GAN的天文圖像生成研究中的所有訓(xùn)練數(shù)據(jù)來自于美國斯隆數(shù)字巡天數(shù)據(jù)庫(sloan digital sky survey,SDSS),SDSS項(xiàng)目開始于2000年,以阿爾弗雷德·斯隆的名字命名,計(jì)劃觀測25%的天空,獲取超過100萬個(gè)天體的多色測光資料和光譜數(shù)據(jù),目前該項(xiàng)目取得的觀測結(jié)果涵蓋了南銀極周圍7 500平方度的星空,記錄到近200萬個(gè)天體的數(shù)據(jù),包括八十多萬個(gè)星系和十多萬個(gè)類星體的光譜數(shù)據(jù),這些天體的位置和距離數(shù)據(jù)為人們研究宇宙的大尺度結(jié)構(gòu)開辟了道路[24]。由于SDSS中原始圖像的尺寸過大,無法直接進(jìn)行訓(xùn)練,因此本文首先對原始的大尺寸星系與恒星圖像按照隨機(jī)分割的方式進(jìn)行了分割,并得到了2類小尺寸的、適合訓(xùn)練的圖像集,分別是10萬張64×64×1大小的圖像和30萬張128×128×3大小的圖像。天文圖像通常具有5個(gè)顏色通道,分別是u,g,r,i,z[25]。其中64×64與128×128代表圖像的長度和寬度,1(r通道)與3(g,r,i通道)代表圖像的顏色通道數(shù)量。圖6和圖7分別給出了部分64×64×1訓(xùn)練圖像和128×128×3訓(xùn)練圖像。
圖6 部分64×64×1訓(xùn)練圖像
圖7 部分128×128×3訓(xùn)練圖像
本文為了保持GAN模型在訓(xùn)練中的穩(wěn)定,采用了多種方法。例如,批歸一化層(batch normalization)被用在除最后一層的每個(gè)卷積層之后,這將保證有效梯度信息能夠流過模型的每一層。
本文在生成器的每一個(gè)批歸一化層的后面使用整流線型單元(Relu)作為激活函數(shù)。從信號的生物學(xué)角度上講,Relu比被廣泛使用的Sigmoid和tanh更加適合作為信號的激勵(lì)函數(shù)。Relu可以被表示為f(x)=ln(1+ex),它與其他的激活函數(shù)相比,具有諸多優(yōu)點(diǎn):
1) Relu是一種稀疏激活函數(shù),這意味著它將隨機(jī)地對模型進(jìn)行初始化,并且只有一半的隱層神經(jīng)元會被激活,而其他將保持輸出為0。
2) 它具有高效的梯度傳播和計(jì)算效率且并不會像sigmoid一樣容易出現(xiàn)梯度消失的問題。原因是當(dāng)進(jìn)行反向傳播時(shí),誤差會從輸出層逐層回傳至頂層,并且會與每一層的輸入神經(jīng)元的值相乘。這個(gè)過程可以被表示為:fGradient=E·Sigmoid′(x)·x,相比之下,如果選擇Sigmoid作為每層的激活函數(shù)的話,那么在回傳的過程中,欠擬合就會很容易出現(xiàn)。這是因?yàn)檎`差會在逐層傳播過程中呈指數(shù)級衰減,那么在經(jīng)過多層回傳后,梯度信息就會變得非常小從而降低模型的學(xué)習(xí)速率。Sigmoid激活函數(shù)可以被表示為S(x)=(1+e-x)-1。
因此,在生成器中本文采用Relu作為除最后一層外的每層的激活函數(shù),而在鑒別器中使用Leaky-Relu。Leaky-Relu是Relu的一種變體,它能夠允許節(jié)點(diǎn)在沒有被激活的情況下獲得一個(gè)很小的、不為0的梯度,如公式(2)所示。
(2)
“α”代表調(diào)參系數(shù),通常情況下取值為0.2。
除此之外,本文在鑒別器中每個(gè)卷積層后使用隨機(jī)拋棄方法(dropout);在生成器和鑒別器中同時(shí)使用Adam優(yōu)化器[26];在生成器和鑒別器中使用不一樣的學(xué)習(xí)速率,使得生成器的學(xué)習(xí)速率要略大于鑒別器;在生成器的最后一層使用tanh作為激活層;在鑒別器的所有層采用Leaky-Relu作為激活層。
為了防止在天文圖像生成訓(xùn)練中出現(xiàn)過擬合,本文提出了一個(gè)改進(jìn)的隨機(jī)拋棄方法S-dropout。深度神經(jīng)網(wǎng)絡(luò)由于具有大量的神經(jīng)元和權(quán)重參數(shù),如果在訓(xùn)練中要同時(shí)更新所有神經(jīng)元的權(quán)重,那么計(jì)算量將會非常巨大,而dropout的應(yīng)用可以很好地解決這個(gè)問題,它可以在訓(xùn)練的過程中隨機(jī)切斷一部分神經(jīng)元之間的連接,從而保證整個(gè)模型能夠較為高效和平衡的進(jìn)行訓(xùn)練。
原始dropout的工作方式是將每層所連接的神經(jīng)元隨機(jī)拋棄一半,然而固定的拋棄比例并非最優(yōu)的選擇,雖然按照50%的固定比例拋棄連接能夠幫助模型保持穩(wěn)定,然而這樣也會損失一些有用的連接。因此本文提出將這個(gè)固定的拋棄比例改變成了衰減式拋棄。這樣做的好處是,當(dāng)訓(xùn)練圖像的分辨率較高時(shí),能夠在保證模型穩(wěn)定的前提下盡可能多地保留原始信息的傳遞,從而能夠豐富生成圖像的細(xì)節(jié)。本文將這種改進(jìn)后的隨機(jī)拋棄方法稱為S-dropout。
(3)
如公式(3)所示,f(x)代表了當(dāng)前隨機(jī)拋棄的比例。x代表循環(huán)次數(shù),k是調(diào)節(jié)參數(shù)且被設(shè)置為0.25,除了當(dāng)x等于0的時(shí)候k等于0。
圖8和圖9分別是神經(jīng)元全連接和使用S-dropout的示意圖。
圖8 使用全連接 圖9 使用S-dropout
對抗模型中的高級參數(shù)取值是訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)非常重要的一部分,然而當(dāng)前的取值方法主要是靠經(jīng)驗(yàn)來進(jìn)行設(shè)置。例如,當(dāng)訓(xùn)練圖像分辨率較高時(shí),應(yīng)該使用較多的卷積層。這意味著使用較深層次的網(wǎng)絡(luò)可以使模型盡可能多的學(xué)到訓(xùn)練圖像中的細(xì)節(jié)。反之則使用較淺的模型,這樣可以降低計(jì)算成本加快運(yùn)算速度。本文首先由經(jīng)驗(yàn)大致確定各個(gè)高級參數(shù)的取值范圍,然后采用網(wǎng)格搜索法對這些重要參數(shù)的取值進(jìn)行搜索嘗試并對比其結(jié)果,最終確定了GAN高級參數(shù)的取值。表1是對模型所使用的優(yōu)化器的網(wǎng)格搜索結(jié)果;表2是對循環(huán)次數(shù)及批處理大小的網(wǎng)格搜索結(jié)果;表3是對生成器和鑒別器最后一層激活函數(shù)的網(wǎng)格搜索結(jié)果。
表1 對優(yōu)化器的網(wǎng)格搜索
表2 對循環(huán)次數(shù)及批處理大小的網(wǎng)格搜索
表3 生成器和鑒別器最后一層激活函數(shù)的網(wǎng)格搜索
如表1~3所示,當(dāng)模型的結(jié)構(gòu)相同時(shí),采用如下所述的高級參數(shù)組合能夠生成更加清晰的,模型準(zhǔn)確率最高的結(jié)果:在鑒別器,生成器及網(wǎng)絡(luò)中均使用Adam作為優(yōu)化器;選擇循環(huán)次數(shù)20 000,且批處理大小為32;選取tanh和Leaky-Relu分別為生成器和鑒別器最后一層激活函數(shù)。
在對抗模型中,訓(xùn)練圖像的像素概率密度分布與生成圖像的像素概率密度分布的差異主要是靠“距離”來描述的。在原始GAN模型中,這個(gè)距離是由Jensen-Shannon散度[27](JS散度)來度量的。然而,GAN模型的不穩(wěn)定與JS散度的特點(diǎn)有著很大的關(guān)系。JS散度可以被描述為由兩部分KL散度[28]組成,(4)式和(5)式分別給出了KL散度和JS散度的表達(dá)式,其中,P1(x)與P2(x)分別代表2個(gè)數(shù)據(jù)分布。
GAN模型的訓(xùn)練過程其實(shí)是求損失函數(shù)最優(yōu)解的過程。即求鑒別器損失函數(shù)最大值與生成器損失函數(shù)最小值的和的過程。鑒別器與生成器的損失函數(shù)分別如(6)式和(7)式所示。公式(8)是簡化后的生成器的損失函數(shù)表達(dá)式,要求生成器損失函數(shù)的最小值等價(jià)于求公式(8)的最小值,也就是求訓(xùn)練數(shù)據(jù)與生成數(shù)據(jù)之間的JS散度最小值。
Dloss=-[Ex~pr[lgD(x)]-Ex~pg[lg(1-D(x))]
(6)
Gloss=Ex~pg[lg(1-D(x))]
(7)
Gloss=2JShannon(Pr||Pg)-2lg2
(8)
經(jīng)過分析可知:當(dāng)Pr(x)等于0且Pg(x)等于0時(shí),或當(dāng)Pr(x)不等于0且Pg(x)不等于0時(shí),它們對于計(jì)算JS散度的貢獻(xiàn)為0。其原因是當(dāng)2個(gè)分布沒有重疊或者重疊可以忽略時(shí),它們之間的JS散度為0。而由于在GAN模型中,生成圖像都是從低緯度(100維)的隨機(jī)噪聲生成的,然而生成的圖像都是遠(yuǎn)遠(yuǎn)大于100維的高維圖像,例如128×128的圖像共有16 384維,那么這個(gè)時(shí)候隨機(jī)噪聲與生成圖像之間就構(gòu)成了一種從低緯度到極高緯度的映射,那么此時(shí)2個(gè)分布之間的重合部分可以被忽略;
當(dāng)Pr(x)等于0且Pg(x)不等于0時(shí),或Pr(x)不等于0且Pg(x)等于0時(shí),生成器損失函數(shù)的最優(yōu)解是一個(gè)固定值:lg2。這也就意味著有效的梯度信息無法在模型中進(jìn)行傳播,而且這種情況在生成圖像分辨率越高時(shí)越嚴(yán)重。
文獻(xiàn)[18]提出了wasserstein distance(EM-distance),EM-distance最大的優(yōu)勢在于能夠有效描述2個(gè)沒有共同部分的數(shù)據(jù)集差異。為了解決從低緯度的隨機(jī)噪聲生成高緯度圖像過程中容易產(chǎn)生模型崩潰的問題,本文使用了EM-distance來替代原先的JS散度,形成改進(jìn)的損失函數(shù)。
(9)式是EM-distance的表達(dá)式,(10)式是本文所采用的改進(jìn)損失函數(shù),(11)式是生成器的損失函數(shù),(12)式是鑒別器的損失函數(shù)。
W(Pr,Pg)=infγ~Π(Pr,Pg)E(x,y)~γ[‖x-y‖]
(9)
floss=Ex~Pr[fω(x)]-Ex~Pg[fω(x)]
(10)
Gloss=-Ex~Pr[fω(x)]
(11)
Dloss=Ex~Pg[fω(x)]-Ex~Pr[fω(x)]
(12)
為了驗(yàn)證基于GAN的天文圖像生成方法的有效性,本文分別使用了10萬張64×64×1和30萬張128×128×3的訓(xùn)練圖像對模型進(jìn)行了訓(xùn)練,并將本文GAN的改進(jìn)與采用原始對抗網(wǎng)絡(luò)模型所生成的結(jié)果進(jìn)行了對比。
圖10 采用本文方法所生成的64×64×1圖像 圖11 采用原始對抗模型生成的64×64×1圖像
圖10和圖11是采用64×64×1訓(xùn)練圖像的生成結(jié)果。其中,圖10是采用本文方法所生成的64×64×1的圖像,圖11為采用原始對抗模型生成的結(jié)果。圖12是在訓(xùn)練中所使用的SDSS原圖。由圖10與圖11相比較可知圖10中生成圖像的噪點(diǎn)要明顯少于圖11中的噪點(diǎn),這表明本文方法更能夠使模型保持穩(wěn)定。
圖13和圖14是由64張128×128×3生成結(jié)果隨機(jī)組合所構(gòu)成的圖像。其中,圖13是采用本文方法所生成的圖像的組合,圖14為采用原始對抗模型所生成的圖像組合??梢钥闯霾捎迷糋AN方法生成的圖像之間邊界信息較為模糊,生成圖像中的噪聲較大;而本文方法生成的圖像中噪聲被有效抑制且生成的恒星和星系的細(xì)節(jié)更加細(xì)膩和清晰。
圖12 SDSS原始圖像 圖13 采用本文方法生成的 圖14 使用原始對抗模型生成的 128×128×3圖像 128×128×3圖像
表4 生成圖像最終準(zhǔn)確率
如表4所示,采用本文方法生成的64×64×1的圖像(圖10所示)的準(zhǔn)確率為84%,采用原始GAN生成的圖像(圖11所示)的準(zhǔn)確率為73%;采用本文方法生成的128×128×3的圖像(圖13所示)的準(zhǔn)確率為97%,采用原始GAN生成的圖像(圖14所示)的準(zhǔn)確率為86%。
本文將GAN用于生成星系與恒星圖像,并針對GAN用于生成天文圖像存在的問題,對GAN進(jìn)行了改進(jìn)。針對模型崩潰問題使用了多種穩(wěn)定訓(xùn)練過程的方法并設(shè)計(jì)了合理的訓(xùn)練策略,取得了良好的訓(xùn)練效果;針對生成圖像的細(xì)節(jié)不夠細(xì)膩以及有效信息的傳遞效率不夠高的問題,提出了一種改進(jìn)的S-dropout;針對高級參數(shù)的取值優(yōu)化問題,使用網(wǎng)格搜索法對模型中部分高級參數(shù)的取值進(jìn)行了優(yōu)化;針對原始GAN中采用的JS散度容易引發(fā)模型崩潰的問題,采用了EM-distance替換原模型中的JS散度。為了驗(yàn)證本文方法的有效性,分別使用了10萬張64×64×1與30萬張128×128×3對模型進(jìn)行訓(xùn)練,結(jié)果表明采用本文方法生成的圖像質(zhì)量要好于采用原始對抗模型生成的結(jié)果,改進(jìn)后的模型穩(wěn)定性得到了提高。