劉華超,張俊然,劉云飛
四川大學(xué) 電氣工程學(xué)院,成都610065
生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)[1]是Goodfellow 等人在2014 年提出的一種網(wǎng)絡(luò),目前已經(jīng)成為深度學(xué)習(xí)領(lǐng)域最為重要的研究方向之一。該技術(shù)主要應(yīng)用于圖像超分辨[2]、風(fēng)格遷移[3]、圖像分割[4]、文本到圖像的生成、自然語言生成[5]等領(lǐng)域。GAN 基于博弈論中的二人零和博弈思想,其中博弈的雙方是GAN中的生成器和判別器。生成器的作用是根據(jù)輸入的隨機(jī)噪聲生成一個類似真實(shí)訓(xùn)練數(shù)據(jù)的樣本。判別器的目的是區(qū)分真實(shí)數(shù)據(jù)和生成數(shù)據(jù)。因此為了在博弈中勝出,生成器和判別器均需提高自己的生成和判別能力,最終目的是尋找生成器和判別器之間的納什均衡[6]。基于此原理,生成對抗網(wǎng)絡(luò)能夠使生成圖像接近真實(shí)圖像。
最近幾年,眾多學(xué)者根據(jù)不同的應(yīng)用場景提出了多種GAN 的改進(jìn)算法。Mirza 等人在生成器和判別器中加入額外信息作為條件變量指導(dǎo)生成過程的條件生成對抗網(wǎng)絡(luò)[7],從而可以根據(jù)輸入條件的不同生成相應(yīng)類型的圖片。Radford 等人將CNN(Convolutional Neural Network)與GAN融合提出了深度卷積生成對抗網(wǎng)絡(luò)[8],使得模型訓(xùn)練更加穩(wěn)定,生成圖像更加多樣化。Arjovsky等人使用Wassertein 距離衡量生成數(shù)據(jù)分布和真實(shí)數(shù)據(jù)分布之間的距離,從而提出了Wassertein 生成對抗網(wǎng)絡(luò)[9],提高了訓(xùn)練過程的穩(wěn)定性。Zhu 等人使用雙向GAN 提出了循環(huán)一致生成對抗網(wǎng)絡(luò)(CycleGAN)[10],從而可以控制模型的學(xué)習(xí)。
CycleGAN 相較于傳統(tǒng)的生成對抗網(wǎng)絡(luò),主要有兩點(diǎn)改進(jìn):(1)傳統(tǒng)生成對抗網(wǎng)絡(luò)的輸入為隨機(jī)噪聲,因此只能隨機(jī)生成圖片,從而無法控制生成圖像的質(zhì)量。CycleGAN 將輸入改為給定的圖片數(shù)據(jù),從而控制圖像生成。(2)過去圖像和圖像之間的轉(zhuǎn)換,如灰度圖到彩色圖、圖像到語義標(biāo)簽、白天圖像到夜晚圖像等都需要成對的訓(xùn)練數(shù)據(jù),然而在現(xiàn)實(shí)生活中,成對數(shù)據(jù)的獲取是困難且昂貴的。而CycleGAN可以實(shí)現(xiàn)在輸入圖像到目標(biāo)圖像之間的轉(zhuǎn)換且不需要成對的訓(xùn)練數(shù)據(jù)。CycleGAN的主要原理是,在GAN 的對抗損失基礎(chǔ)上引入循環(huán)一致?lián)p失函數(shù)[11]。其中對抗損失控制生成圖像接近目標(biāo)圖像,循環(huán)一致?lián)p失用于保留輸入圖像的內(nèi)容結(jié)構(gòu)和目標(biāo)圖像的特征。在生成圖像時,通過訓(xùn)練尋找多個特征域的潛在聯(lián)系,從而根據(jù)輸入圖像轉(zhuǎn)換相關(guān)域。然而在轉(zhuǎn)換程度未被約束情況下,CycleGAN 的生成結(jié)果會存在明顯的無關(guān)域特征任意變化的缺點(diǎn)。
文獻(xiàn)[12]在無監(jiān)督圖像跨域轉(zhuǎn)換時,其混合損失函數(shù)中包含了轉(zhuǎn)換自身的正則化項(xiàng),使得生成圖像既能夠很好地保存自身信息,又可以達(dá)到不錯的效果。采用該思想,本文基于CycleGAN 的原損失函數(shù),增加了特征損失。該損失能夠約束生成圖像的轉(zhuǎn)換,更好地保留無關(guān)域的特征和轉(zhuǎn)換相關(guān)域,而且圖像的質(zhì)量評估測試結(jié)果顯示生成圖像的質(zhì)量提升明顯。同時為了進(jìn)一步研究特征損失帶來的影響,本文通過調(diào)整特征損失的比例超參數(shù),分析了各部分損失函數(shù)的變化和對生成圖像質(zhì)量的影響,并給出了特征損失的比例超參數(shù)選取策略。
CycleGAN 模型的目的是實(shí)現(xiàn)域X 和域Y 之間的相互轉(zhuǎn)換。如圖1(a)所示,CycleGAN包含兩個映射函數(shù)G:X →Y 和F:Y →X ,以及兩個對應(yīng)的對抗判別器DY和DX。DY激勵G 將X 向目標(biāo)域Y 轉(zhuǎn)換。同樣,DX激勵F 將Y 向X 域轉(zhuǎn)換。為了規(guī)范化映射,引入了兩個循環(huán)一致?lián)p失,即圖像x 和y 從源域轉(zhuǎn)換到目標(biāo)域后,同樣也可以從目標(biāo)域返回到源域。圖1(b)是前向循環(huán)一致?lián)p失:x →G(x)→F(G(x))≈x。圖1(c)是反向循環(huán)一致?lián)p失:y →F(y)→G(F(y))≈y。
因此,CycleGAN 主要包括對抗損失和循環(huán)一致?lián)p失兩部分。其中對抗損失用以匹配生成圖像和目標(biāo)域圖像的數(shù)據(jù)分布,循環(huán)一致?lián)p失用以預(yù)防學(xué)習(xí)映射G和F 的彼此沖突。
CycleGAN 采用對抗損失[1]作為映射函數(shù)。其中生成器G:X →Y 和它的判別器DY可以表示如下:
其中,Pdata(x)表示圖像域X 的樣本分布,Pdata(y)則表示圖像域Y 的分布。生成器G 試圖讓產(chǎn)生的圖像G(x)與Y 域圖像盡可能相似。而判別器DY則最大可能區(qū)分生成圖像G(x) 和真實(shí)圖像y 。因此可以表示為minGmaxD(Y)LGAN(G,DY,X,Y)。
同時另一個相同的生成器F:Y →X 和它的判別器DX,同樣需要minFmaxD(X)LGAN(F,DX,Y,X)。
由于單獨(dú)使用對抗損失函數(shù)無法保證將單個輸入域X 映射到目標(biāo)域Y ,為了在指定圖像域轉(zhuǎn)換的同時保留圖像的內(nèi)容和結(jié)構(gòu)等信息,CycleGAN 引入了循環(huán)一致?lián)p失函數(shù)來約束圖像轉(zhuǎn)換時保留自身固有特征。如圖1(b)所示,對于每一個X 域的圖像x,圖像的循環(huán)轉(zhuǎn)換能夠?qū) 還原,即x →G(x)→F(G(x))≈x,這叫作前向循環(huán)一致。同樣對Y 域的每一個圖像y,G 和F也要滿足反向循環(huán)一致:y →F(y)→G(F(y))≈y 。以上兩部分構(gòu)成了循環(huán)一致?lián)p失:
圖1 CycleGAN結(jié)構(gòu)示意圖
在CycleGAN 中的生成器G 和F 不能明確區(qū)分圖像的多種圖像域信息,因此,圖像在完成特定域轉(zhuǎn)換的同時,也會導(dǎo)致無關(guān)域的隨機(jī)變化,從而使得生成圖像容易失真。為了解決該問題,使生成器能夠區(qū)分轉(zhuǎn)換域和無關(guān)域,在保證轉(zhuǎn)換域的特征轉(zhuǎn)換的同時,盡可能保留無關(guān)域的特征。有必要通過引入其他的損失函數(shù)來約束和引導(dǎo)圖像的生成過程。采用文獻(xiàn)[11]的思想,在生成器中添加一個恒等映射,即通過引入特征損失,在原生成器G:X →Y 、F:Y →X 和循環(huán)一致?lián)p失的基礎(chǔ)上,激勵G:Y →Y 和F:X →X 。然后利用L1損失保證轉(zhuǎn)換后的圖像與原圖像的像素級別對應(yīng)。
如圖2 所示,在傳統(tǒng)的CycleGAN 中,生成器G 的輸入包括圖像x、x^ ,輸出為y^ 。生成器F 的輸入包括y、y^ ,輸出為x^ 。而添加特征損失后,生成器G 的輸入增加圖像y,生成器F 的輸入增加圖像x。因此三輸入共同引導(dǎo)圖像的生成。生成器在原有基礎(chǔ)上將轉(zhuǎn)換目標(biāo)的原圖像輸入,利用L1 損失求取生成圖像與原圖像的相似性的差異,并不斷優(yōu)化。這個過程有助于生成器在生成圖像時,盡可能地獲取目標(biāo)圖像的特征,約束輸入圖像的特征任意變換,從而提高生成圖像的質(zhì)量。
圖2 生成器的輸入輸出圖
其公式如下:
因此CycleGAN的整體損失函數(shù)可以表示為:
其中,λ 和μ 分別決定循環(huán)一致?lián)p失和特征損失與對抗損失的權(quán)重比例超參數(shù)。為了評估特征損失的影響,根據(jù)μ 值的變化,本文做了進(jìn)一步探討。
本文為了測試改進(jìn)后的CycleGAN 在不同數(shù)據(jù)集中的效果,采用了CycleGAN 中使用的monet2photo、horse2zebra、summer2winter 數(shù)據(jù)集。同時將facades 數(shù)據(jù)集作為多種算法對比的統(tǒng)一數(shù)據(jù)集。
monet2photo:monet 風(fēng)格的藝術(shù)圖片從Wikiart 上下載,真實(shí)照片從Flickr 上下載。訓(xùn)練集包括700 張monet風(fēng)格的繪畫和700張真實(shí)照片,測試集由120張繪畫和120張真實(shí)照片組成。
horse2zebra:馬和斑馬數(shù)據(jù)集,使用關(guān)鍵字在Image和ImageNet上下載。訓(xùn)練集由1 067張斑馬圖片和1 067張馬的圖片組成,測試集由120 張馬的圖片和120 張斑馬圖片組成。
summer2winter:夏天和冬天風(fēng)景數(shù)據(jù)集,在Flickr上下載。訓(xùn)練集包括684 張夏季圖片和684 張冬季圖片,測試集由200張夏季和200張冬季圖片組成。
facades:建筑物的正面照片與機(jī)器感知的建筑物外觀圖片。訓(xùn)練集包括400 張世界各地不同的建筑物和400張對應(yīng)的機(jī)器感知圖片,測試集分別有100張圖片。
分類準(zhǔn)確率是廣泛應(yīng)用于無監(jiān)督生成圖像的質(zhì)量評估指標(biāo)。本文采用Inception-Resnet-V2[13]作為分類模型,將原數(shù)據(jù)集的訓(xùn)練集作為分類模型的訓(xùn)練集進(jìn)行訓(xùn)練,將測試集的分類準(zhǔn)確率作為基準(zhǔn)值。然后將μ 值不同的6 組生成圖像送入分類模型進(jìn)行分類。將得到的各自的分類準(zhǔn)確率與基準(zhǔn)值進(jìn)行對比,準(zhǔn)確率越高,則證明生成圖像的質(zhì)量越好。
常見無參考圖像清晰度測量方法包括熵函數(shù)[14]、梯度函數(shù)、方差函數(shù)等方法。本文選取Laplacian 梯度函數(shù)方法作為生成圖像的清晰度評估指標(biāo),計算不同μ 值下生成圖像的清晰度平均值,數(shù)值越高則說明生成圖像越清晰。
本文在多種算法的生成圖像質(zhì)量對比中選擇結(jié)果相似性(SSIM)和余弦相似度(Cosin)作為評價指標(biāo)。其中SSIM從亮度、對比度和結(jié)構(gòu)三方面對比兩幅圖片,從而得到客觀的評價指標(biāo)。而余弦相似度則將圖片表示為一個向量,計算兩幅圖片的相似度。兩種算法的結(jié)果數(shù)值越大則說明兩幅圖片越相似。
為了分析未添加特征損失(μ=0)以及添加特征損失后,CycleGAN 的各部分損失伴隨μ 值的變化趨勢,本文選取μ 值不同的6組實(shí)驗(yàn)結(jié)果,將訓(xùn)練過程中各部分損失取平均值,分別發(fā)現(xiàn)生成器損失、判別器損失、循環(huán)一致?lián)p失變化趨勢,如圖3和圖4所示。
圖3 特征損失變化趨勢圖
根據(jù)圖4(a)生成器損失趨勢圖可知,無特征損失時(μ=0),生成器損失大于μ=1 時的情況,然后隨著μ 的增大,生成器損失也會增大。
判別器作用為判別G(x)與y,F(y)與x 之間的相似程度。在添加特征損失之后,通過調(diào)整μ 的值,可以發(fā)現(xiàn)判別器損失在添加特征損失后,當(dāng)μ 值較小時,判別器損失大于無特征損失時的情況,然后伴隨μ 值的增大而減小,其整體趨勢與生成器損失的變化相反。這也說明添加特征損失,會使得生成圖像與目標(biāo)圖像更相似。
循環(huán)一致?lián)p失包括x →G(x)→F(G(x))≈x 和y →F(y)→G(F(y))≈y,即計算F(G(x)) 與x,G(F(y)) 與y的差異程度。由圖4(c)可以發(fā)現(xiàn),加入特征損失后,循環(huán)一致?lián)p失一開始呈快速減小趨勢,在μ 值較大后,其變化趨勢變慢,即由源域向目標(biāo)域轉(zhuǎn)換的圖像再次轉(zhuǎn)換到源域的效果隨μ 值的增大而變好。圖像實(shí)際生成結(jié)果如圖5 所示,可以清晰地發(fā)現(xiàn)加入特征損失后,其生成圖像還原回去的色彩和特征變化較小。
同時,根據(jù)圖3 的結(jié)果也可以發(fā)現(xiàn),調(diào)整特征損失的比例超參數(shù)μ,也會使得特征損失本身逐漸減小,這有助于生成圖像學(xué)習(xí)到更多的轉(zhuǎn)換目標(biāo)域的特征。
由表1 的實(shí)驗(yàn)結(jié)果可知,增加特征損失,通過將特征損失調(diào)整到合適的比例超參數(shù),可以提高生成圖像的真實(shí)性。但是,實(shí)驗(yàn)結(jié)果同樣顯示,由于特征損失可以約束生成器的特征識別,保證無關(guān)域不被轉(zhuǎn)換的同時,也會約束特定轉(zhuǎn)換域的轉(zhuǎn)換程度。如果μ 選取不合適,會造成一些圖片轉(zhuǎn)換程度不高,圖像分類準(zhǔn)確率也會下降。因此,應(yīng)根據(jù)數(shù)據(jù)集和實(shí)際應(yīng)用需求選擇合適的特征損失比例超參數(shù)。
表1 Inception-Resnet-V2圖像分類準(zhǔn)確率
由圖像生成效果圖可知,當(dāng)μ=0 時,即沒有特征損失時圖6中瀑布的顏色變?yōu)辄S色,天空的色彩也存在失真,同時樹的顏色也變成了藍(lán)色。而當(dāng)μ 不為0 時,上述問題得到了一定的改善。通過調(diào)整μ 的大小,也可以發(fā)現(xiàn)圖像從夏季到冬季的轉(zhuǎn)換程度略有不同。第一、二行中,μ=10 時,樹木和雪地轉(zhuǎn)換程度較高。同時,下文的圖像清晰度測量也顯示該數(shù)據(jù)集在μ 的取值空間為[10,20]之間效果更好。
圖4 各部分損失變化趨勢圖
圖5 生成圖像還原結(jié)果
在冬季轉(zhuǎn)換到夏季的圖片中,無特征損失時,圖7中藍(lán)天變成灰色,箱子和木柱變藍(lán),湖水和草地均發(fā)生色彩的任意變換,從而使得圖像失真。而添加特征損失后可以改善該問題。
在斑馬轉(zhuǎn)換到馬的生成圖像中,有無特征損失給人帶來的視覺影響較小,但圖8中圖像清晰度測量結(jié)果顯示,添加特征損失后,生成圖像更加清晰。無特征損失時,從圖8中仍發(fā)現(xiàn),μ=0 一列,從上到下,第一幅圖片背景更模糊,第二幅圖片在尾部仍存在轉(zhuǎn)換不完全現(xiàn)象。而當(dāng)添加特征損失后,隨著μ 值變化,第一行圖片的背景色彩越來越清晰,第二行圖片尾部的轉(zhuǎn)換也得到了解決。
圖6 夏季轉(zhuǎn)換到冬季效果圖
圖7 冬季轉(zhuǎn)換到夏季效果圖
圖8 斑馬轉(zhuǎn)換到馬效果圖
圖9 monet風(fēng)格繪畫轉(zhuǎn)換到真實(shí)圖片效果圖
在圖9 的monet 風(fēng)格繪畫轉(zhuǎn)化為照片的圖像結(jié)果中,無特征損失時,生成的圖像更模糊,而且紋理的復(fù)雜度較差,不能夠真實(shí)還原繪畫當(dāng)中的細(xì)節(jié)。而添加特征損失后,從左到右,隨著μ 值的變化,生成圖像的紋理還原度越來越高,圖像的清晰度也有明顯的提升。同時結(jié)合圖像分類準(zhǔn)確率的結(jié)果,也可以發(fā)現(xiàn),當(dāng)μ 值較大時,雖然能夠還原繪畫的更多紋理信息,但也會降低圖片分類的準(zhǔn)確率,即轉(zhuǎn)換為真實(shí)圖片的效果變差。因此,該數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明μ 值的選取不宜過大。
由圖10 圖像清晰度測量的結(jié)果可以看出,除了在summer2winter 數(shù)據(jù)集中,當(dāng)μ 值取1 和5 時,圖像清晰度會有所下降之外,其他生成圖像的清晰度均高于未添加特征損失(μ=0)的CycleGAN 的生成結(jié)果。實(shí)驗(yàn)結(jié)果表明,特征損失的引入有助于改善生成圖像的清晰度。另外,結(jié)合圖像分類準(zhǔn)確率的結(jié)果和生成圖像效果圖可以發(fā)現(xiàn),特征損失的比例超參數(shù)μ 不宜選取太小和過大。
圖10 生成圖像清晰度折線圖
在不同算法的對比實(shí)驗(yàn)中,本文選取facades 數(shù)據(jù)集作為統(tǒng)一數(shù)據(jù)集。因?yàn)樵摂?shù)據(jù)集由配對圖像構(gòu)成,所以用于配對圖像的算法表現(xiàn)良好。由于CycleGAN 的特點(diǎn)是可以作用于非配對圖像,因此Pix2pix 算法的生成質(zhì)量明顯優(yōu)于傳統(tǒng)CycleGAN。但是由表2 可知,添加特征損失后,其生成圖像的質(zhì)量具有明顯的提升。SSIM和Cosin的測試結(jié)果均高于Pix2pix。
表2 不同算法生成圖像質(zhì)量評估
特征損失的比例超參數(shù)μ 決定著特征損失在總體損失函數(shù)中所占比例,μ 值的變化影響著圖像的生成結(jié)果。實(shí)驗(yàn)表明,μ 值在[0,10]之間時,圖像的清晰度和分類的結(jié)果是逐漸提高的。而持續(xù)調(diào)大μ 值時,圖像的清晰度變化較小。同時,觀察生成圖像可以發(fā)現(xiàn),在調(diào)大μ 值時,能夠使得生成圖像保留更多的紋理信息。然而當(dāng)μ 值過高時,圖像的分類結(jié)果卻會下降,這表明圖像的真實(shí)性會受到影響。因此μ 值的選取不應(yīng)過高。如果該算法作用于紋理復(fù)雜性較高的數(shù)據(jù)集,應(yīng)適當(dāng)調(diào)大μ 值,從而保留更多的圖像特征。此時建議μ 值選取區(qū)間為[10,30]。而在普通數(shù)據(jù)集中,綜合上述實(shí)驗(yàn)結(jié)果,建議μ 值初始選取區(qū)間為[1,10]。
本文為了解決傳統(tǒng)CycleGAN 的生成圖像存在特征隨意變換問題,在原模型的損失函數(shù)外引入特征損失,利用循環(huán)一致?lián)p失和特征損失共同建立圖像域之間的映射關(guān)系。并且特征損失可以保證圖像域之間的像素級別的對應(yīng),能夠更好地保存輸入圖像的背景色彩和無關(guān)特征。同時實(shí)驗(yàn)進(jìn)一步引入特征損失的比例超參數(shù)μ,并分析了CycleGAN的各部分損失隨μ 值變化的趨勢,以及特征損失的系數(shù)選擇對各部分損失的影響。另外,傳統(tǒng)CycleGAN 在轉(zhuǎn)換圖像后,總會使得生成圖像的清晰度降低,而特征損失的引入約束了原圖像的轉(zhuǎn)換程度,有助于改善生成圖像的清晰度。因此基于本文的策略,在利用CycleGAN 進(jìn)行圖像生成時,根據(jù)輸入數(shù)據(jù)和目標(biāo)圖像的不同,可以通過選取合適的特征損失來提高生成圖像的準(zhǔn)確性、多樣性和清晰度。當(dāng)然,引入特征損失也會帶來一些缺點(diǎn),例如會造成部分圖像轉(zhuǎn)換程度較低,從而使得圖像生成效果較差。因此,未來將對特征損失做進(jìn)一步研究和改進(jìn)。