劉華超,張俊然,劉云飛
四川大學 電氣工程學院,成都610065
生成對抗網絡(Generative Adversarial Network,GAN)[1]是Goodfellow 等人在2014 年提出的一種網絡,目前已經成為深度學習領域最為重要的研究方向之一。該技術主要應用于圖像超分辨[2]、風格遷移[3]、圖像分割[4]、文本到圖像的生成、自然語言生成[5]等領域。GAN 基于博弈論中的二人零和博弈思想,其中博弈的雙方是GAN中的生成器和判別器。生成器的作用是根據輸入的隨機噪聲生成一個類似真實訓練數據的樣本。判別器的目的是區(qū)分真實數據和生成數據。因此為了在博弈中勝出,生成器和判別器均需提高自己的生成和判別能力,最終目的是尋找生成器和判別器之間的納什均衡[6]。基于此原理,生成對抗網絡能夠使生成圖像接近真實圖像。
最近幾年,眾多學者根據不同的應用場景提出了多種GAN 的改進算法。Mirza 等人在生成器和判別器中加入額外信息作為條件變量指導生成過程的條件生成對抗網絡[7],從而可以根據輸入條件的不同生成相應類型的圖片。Radford 等人將CNN(Convolutional Neural Network)與GAN融合提出了深度卷積生成對抗網絡[8],使得模型訓練更加穩(wěn)定,生成圖像更加多樣化。Arjovsky等人使用Wassertein 距離衡量生成數據分布和真實數據分布之間的距離,從而提出了Wassertein 生成對抗網絡[9],提高了訓練過程的穩(wěn)定性。Zhu 等人使用雙向GAN 提出了循環(huán)一致生成對抗網絡(CycleGAN)[10],從而可以控制模型的學習。
CycleGAN 相較于傳統(tǒng)的生成對抗網絡,主要有兩點改進:(1)傳統(tǒng)生成對抗網絡的輸入為隨機噪聲,因此只能隨機生成圖片,從而無法控制生成圖像的質量。CycleGAN 將輸入改為給定的圖片數據,從而控制圖像生成。(2)過去圖像和圖像之間的轉換,如灰度圖到彩色圖、圖像到語義標簽、白天圖像到夜晚圖像等都需要成對的訓練數據,然而在現實生活中,成對數據的獲取是困難且昂貴的。而CycleGAN可以實現在輸入圖像到目標圖像之間的轉換且不需要成對的訓練數據。CycleGAN的主要原理是,在GAN 的對抗損失基礎上引入循環(huán)一致損失函數[11]。其中對抗損失控制生成圖像接近目標圖像,循環(huán)一致損失用于保留輸入圖像的內容結構和目標圖像的特征。在生成圖像時,通過訓練尋找多個特征域的潛在聯系,從而根據輸入圖像轉換相關域。然而在轉換程度未被約束情況下,CycleGAN 的生成結果會存在明顯的無關域特征任意變化的缺點。
文獻[12]在無監(jiān)督圖像跨域轉換時,其混合損失函數中包含了轉換自身的正則化項,使得生成圖像既能夠很好地保存自身信息,又可以達到不錯的效果。采用該思想,本文基于CycleGAN 的原損失函數,增加了特征損失。該損失能夠約束生成圖像的轉換,更好地保留無關域的特征和轉換相關域,而且圖像的質量評估測試結果顯示生成圖像的質量提升明顯。同時為了進一步研究特征損失帶來的影響,本文通過調整特征損失的比例超參數,分析了各部分損失函數的變化和對生成圖像質量的影響,并給出了特征損失的比例超參數選取策略。
CycleGAN 模型的目的是實現域X 和域Y 之間的相互轉換。如圖1(a)所示,CycleGAN包含兩個映射函數G:X →Y 和F:Y →X ,以及兩個對應的對抗判別器DY和DX。DY激勵G 將X 向目標域Y 轉換。同樣,DX激勵F 將Y 向X 域轉換。為了規(guī)范化映射,引入了兩個循環(huán)一致損失,即圖像x 和y 從源域轉換到目標域后,同樣也可以從目標域返回到源域。圖1(b)是前向循環(huán)一致損失:x →G(x)→F(G(x))≈x。圖1(c)是反向循環(huán)一致損失:y →F(y)→G(F(y))≈y。
因此,CycleGAN 主要包括對抗損失和循環(huán)一致損失兩部分。其中對抗損失用以匹配生成圖像和目標域圖像的數據分布,循環(huán)一致損失用以預防學習映射G和F 的彼此沖突。
CycleGAN 采用對抗損失[1]作為映射函數。其中生成器G:X →Y 和它的判別器DY可以表示如下:

其中,Pdata(x)表示圖像域X 的樣本分布,Pdata(y)則表示圖像域Y 的分布。生成器G 試圖讓產生的圖像G(x)與Y 域圖像盡可能相似。而判別器DY則最大可能區(qū)分生成圖像G(x) 和真實圖像y 。因此可以表示為minGmaxD(Y)LGAN(G,DY,X,Y)。
同時另一個相同的生成器F:Y →X 和它的判別器DX,同樣需要minFmaxD(X)LGAN(F,DX,Y,X)。
由于單獨使用對抗損失函數無法保證將單個輸入域X 映射到目標域Y ,為了在指定圖像域轉換的同時保留圖像的內容和結構等信息,CycleGAN 引入了循環(huán)一致損失函數來約束圖像轉換時保留自身固有特征。如圖1(b)所示,對于每一個X 域的圖像x,圖像的循環(huán)轉換能夠將x 還原,即x →G(x)→F(G(x))≈x,這叫作前向循環(huán)一致。同樣對Y 域的每一個圖像y,G 和F也要滿足反向循環(huán)一致:y →F(y)→G(F(y))≈y 。以上兩部分構成了循環(huán)一致損失:

圖1 CycleGAN結構示意圖

在CycleGAN 中的生成器G 和F 不能明確區(qū)分圖像的多種圖像域信息,因此,圖像在完成特定域轉換的同時,也會導致無關域的隨機變化,從而使得生成圖像容易失真。為了解決該問題,使生成器能夠區(qū)分轉換域和無關域,在保證轉換域的特征轉換的同時,盡可能保留無關域的特征。有必要通過引入其他的損失函數來約束和引導圖像的生成過程。采用文獻[11]的思想,在生成器中添加一個恒等映射,即通過引入特征損失,在原生成器G:X →Y 、F:Y →X 和循環(huán)一致損失的基礎上,激勵G:Y →Y 和F:X →X 。然后利用L1損失保證轉換后的圖像與原圖像的像素級別對應。
如圖2 所示,在傳統(tǒng)的CycleGAN 中,生成器G 的輸入包括圖像x、x^ ,輸出為y^ 。生成器F 的輸入包括y、y^ ,輸出為x^ 。而添加特征損失后,生成器G 的輸入增加圖像y,生成器F 的輸入增加圖像x。因此三輸入共同引導圖像的生成。生成器在原有基礎上將轉換目標的原圖像輸入,利用L1 損失求取生成圖像與原圖像的相似性的差異,并不斷優(yōu)化。這個過程有助于生成器在生成圖像時,盡可能地獲取目標圖像的特征,約束輸入圖像的特征任意變換,從而提高生成圖像的質量。

圖2 生成器的輸入輸出圖
其公式如下:

因此CycleGAN的整體損失函數可以表示為:

其中,λ 和μ 分別決定循環(huán)一致損失和特征損失與對抗損失的權重比例超參數。為了評估特征損失的影響,根據μ 值的變化,本文做了進一步探討。
本文為了測試改進后的CycleGAN 在不同數據集中的效果,采用了CycleGAN 中使用的monet2photo、horse2zebra、summer2winter 數據集。同時將facades 數據集作為多種算法對比的統(tǒng)一數據集。
monet2photo:monet 風格的藝術圖片從Wikiart 上下載,真實照片從Flickr 上下載。訓練集包括700 張monet風格的繪畫和700張真實照片,測試集由120張繪畫和120張真實照片組成。
horse2zebra:馬和斑馬數據集,使用關鍵字在Image和ImageNet上下載。訓練集由1 067張斑馬圖片和1 067張馬的圖片組成,測試集由120 張馬的圖片和120 張斑馬圖片組成。
summer2winter:夏天和冬天風景數據集,在Flickr上下載。訓練集包括684 張夏季圖片和684 張冬季圖片,測試集由200張夏季和200張冬季圖片組成。
facades:建筑物的正面照片與機器感知的建筑物外觀圖片。訓練集包括400 張世界各地不同的建筑物和400張對應的機器感知圖片,測試集分別有100張圖片。
分類準確率是廣泛應用于無監(jiān)督生成圖像的質量評估指標。本文采用Inception-Resnet-V2[13]作為分類模型,將原數據集的訓練集作為分類模型的訓練集進行訓練,將測試集的分類準確率作為基準值。然后將μ 值不同的6 組生成圖像送入分類模型進行分類。將得到的各自的分類準確率與基準值進行對比,準確率越高,則證明生成圖像的質量越好。
常見無參考圖像清晰度測量方法包括熵函數[14]、梯度函數、方差函數等方法。本文選取Laplacian 梯度函數方法作為生成圖像的清晰度評估指標,計算不同μ 值下生成圖像的清晰度平均值,數值越高則說明生成圖像越清晰。
本文在多種算法的生成圖像質量對比中選擇結果相似性(SSIM)和余弦相似度(Cosin)作為評價指標。其中SSIM從亮度、對比度和結構三方面對比兩幅圖片,從而得到客觀的評價指標。而余弦相似度則將圖片表示為一個向量,計算兩幅圖片的相似度。兩種算法的結果數值越大則說明兩幅圖片越相似。
為了分析未添加特征損失(μ=0)以及添加特征損失后,CycleGAN 的各部分損失伴隨μ 值的變化趨勢,本文選取μ 值不同的6組實驗結果,將訓練過程中各部分損失取平均值,分別發(fā)現生成器損失、判別器損失、循環(huán)一致損失變化趨勢,如圖3和圖4所示。

圖3 特征損失變化趨勢圖
根據圖4(a)生成器損失趨勢圖可知,無特征損失時(μ=0),生成器損失大于μ=1 時的情況,然后隨著μ 的增大,生成器損失也會增大。
判別器作用為判別G(x)與y,F(y)與x 之間的相似程度。在添加特征損失之后,通過調整μ 的值,可以發(fā)現判別器損失在添加特征損失后,當μ 值較小時,判別器損失大于無特征損失時的情況,然后伴隨μ 值的增大而減小,其整體趨勢與生成器損失的變化相反。這也說明添加特征損失,會使得生成圖像與目標圖像更相似。
循環(huán)一致損失包括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ā)現,加入特征損失后,循環(huán)一致損失一開始呈快速減小趨勢,在μ 值較大后,其變化趨勢變慢,即由源域向目標域轉換的圖像再次轉換到源域的效果隨μ 值的增大而變好。圖像實際生成結果如圖5 所示,可以清晰地發(fā)現加入特征損失后,其生成圖像還原回去的色彩和特征變化較小。
同時,根據圖3 的結果也可以發(fā)現,調整特征損失的比例超參數μ,也會使得特征損失本身逐漸減小,這有助于生成圖像學習到更多的轉換目標域的特征。
由表1 的實驗結果可知,增加特征損失,通過將特征損失調整到合適的比例超參數,可以提高生成圖像的真實性。但是,實驗結果同樣顯示,由于特征損失可以約束生成器的特征識別,保證無關域不被轉換的同時,也會約束特定轉換域的轉換程度。如果μ 選取不合適,會造成一些圖片轉換程度不高,圖像分類準確率也會下降。因此,應根據數據集和實際應用需求選擇合適的特征損失比例超參數。

表1 Inception-Resnet-V2圖像分類準確率
由圖像生成效果圖可知,當μ=0 時,即沒有特征損失時圖6中瀑布的顏色變?yōu)辄S色,天空的色彩也存在失真,同時樹的顏色也變成了藍色。而當μ 不為0 時,上述問題得到了一定的改善。通過調整μ 的大小,也可以發(fā)現圖像從夏季到冬季的轉換程度略有不同。第一、二行中,μ=10 時,樹木和雪地轉換程度較高。同時,下文的圖像清晰度測量也顯示該數據集在μ 的取值空間為[10,20]之間效果更好。

圖4 各部分損失變化趨勢圖

圖5 生成圖像還原結果
在冬季轉換到夏季的圖片中,無特征損失時,圖7中藍天變成灰色,箱子和木柱變藍,湖水和草地均發(fā)生色彩的任意變換,從而使得圖像失真。而添加特征損失后可以改善該問題。
在斑馬轉換到馬的生成圖像中,有無特征損失給人帶來的視覺影響較小,但圖8中圖像清晰度測量結果顯示,添加特征損失后,生成圖像更加清晰。無特征損失時,從圖8中仍發(fā)現,μ=0 一列,從上到下,第一幅圖片背景更模糊,第二幅圖片在尾部仍存在轉換不完全現象。而當添加特征損失后,隨著μ 值變化,第一行圖片的背景色彩越來越清晰,第二行圖片尾部的轉換也得到了解決。

圖6 夏季轉換到冬季效果圖

圖7 冬季轉換到夏季效果圖

圖8 斑馬轉換到馬效果圖

圖9 monet風格繪畫轉換到真實圖片效果圖
在圖9 的monet 風格繪畫轉化為照片的圖像結果中,無特征損失時,生成的圖像更模糊,而且紋理的復雜度較差,不能夠真實還原繪畫當中的細節(jié)。而添加特征損失后,從左到右,隨著μ 值的變化,生成圖像的紋理還原度越來越高,圖像的清晰度也有明顯的提升。同時結合圖像分類準確率的結果,也可以發(fā)現,當μ 值較大時,雖然能夠還原繪畫的更多紋理信息,但也會降低圖片分類的準確率,即轉換為真實圖片的效果變差。因此,該數據集的實驗結果表明μ 值的選取不宜過大。
由圖10 圖像清晰度測量的結果可以看出,除了在summer2winter 數據集中,當μ 值取1 和5 時,圖像清晰度會有所下降之外,其他生成圖像的清晰度均高于未添加特征損失(μ=0)的CycleGAN 的生成結果。實驗結果表明,特征損失的引入有助于改善生成圖像的清晰度。另外,結合圖像分類準確率的結果和生成圖像效果圖可以發(fā)現,特征損失的比例超參數μ 不宜選取太小和過大。

圖10 生成圖像清晰度折線圖
在不同算法的對比實驗中,本文選取facades 數據集作為統(tǒng)一數據集。因為該數據集由配對圖像構成,所以用于配對圖像的算法表現良好。由于CycleGAN 的特點是可以作用于非配對圖像,因此Pix2pix 算法的生成質量明顯優(yōu)于傳統(tǒng)CycleGAN。但是由表2 可知,添加特征損失后,其生成圖像的質量具有明顯的提升。SSIM和Cosin的測試結果均高于Pix2pix。

表2 不同算法生成圖像質量評估
特征損失的比例超參數μ 決定著特征損失在總體損失函數中所占比例,μ 值的變化影響著圖像的生成結果。實驗表明,μ 值在[0,10]之間時,圖像的清晰度和分類的結果是逐漸提高的。而持續(xù)調大μ 值時,圖像的清晰度變化較小。同時,觀察生成圖像可以發(fā)現,在調大μ 值時,能夠使得生成圖像保留更多的紋理信息。然而當μ 值過高時,圖像的分類結果卻會下降,這表明圖像的真實性會受到影響。因此μ 值的選取不應過高。如果該算法作用于紋理復雜性較高的數據集,應適當調大μ 值,從而保留更多的圖像特征。此時建議μ 值選取區(qū)間為[10,30]。而在普通數據集中,綜合上述實驗結果,建議μ 值初始選取區(qū)間為[1,10]。
本文為了解決傳統(tǒng)CycleGAN 的生成圖像存在特征隨意變換問題,在原模型的損失函數外引入特征損失,利用循環(huán)一致損失和特征損失共同建立圖像域之間的映射關系。并且特征損失可以保證圖像域之間的像素級別的對應,能夠更好地保存輸入圖像的背景色彩和無關特征。同時實驗進一步引入特征損失的比例超參數μ,并分析了CycleGAN的各部分損失隨μ 值變化的趨勢,以及特征損失的系數選擇對各部分損失的影響。另外,傳統(tǒng)CycleGAN 在轉換圖像后,總會使得生成圖像的清晰度降低,而特征損失的引入約束了原圖像的轉換程度,有助于改善生成圖像的清晰度。因此基于本文的策略,在利用CycleGAN 進行圖像生成時,根據輸入數據和目標圖像的不同,可以通過選取合適的特征損失來提高生成圖像的準確性、多樣性和清晰度。當然,引入特征損失也會帶來一些缺點,例如會造成部分圖像轉換程度較低,從而使得圖像生成效果較差。因此,未來將對特征損失做進一步研究和改進。