常 佳,王玉德,吉燕妮
(曲阜師范大學,山東 曲阜 273165)
圖像翻譯是將源域的輸入圖像向著目標域的輸出圖像轉換的過程[1],是圖像處理的一個重要領域。圖像翻譯(Image-to-Image Translation)廣泛應用在計算機視覺任務中,如模糊圖像修復[2-3]、人臉上妝[4]、圖像上色[5]、圖像生成[6]以及風格遷移[7]等。
Hertzmann等人首次提出了圖像翻譯模糊的概念[8],采用的是輸入-輸出圖像對來訓練一個非參數模型,然后利用這個模型訓練輸入的圖像對應的輸出圖像,從而完成圖像翻譯。2014年Goodfellow等人受博弈論的啟發[9],提出了生成對抗網絡GAN。模型由生成器和判別器組成,生成器生成一個與真實圖像類似的生成圖像來迷惑判別器,判別器努力區分生成圖像和真實圖像。該模型利用對抗的思想實現了無監督圖像翻譯。Mirza等人提出了CGAN[10],在GAN生成器的輸入中加入一個條件,將無監督圖像翻譯變成有監督圖像翻譯,從而可以按照人們的需要生成圖像,實現圖像翻譯。Isola等人提出Pix2Pix[1],模型結構和CGAN一致,并且在損失函數中加入了L1損失,而生成器采用U-Net模型[11],大大提高了圖像翻譯的質量。
針對Pix2Pix生成的圖像部分紋理、輪廓丟失以及噪聲大等不足,提出了基于改進U-Net模型生成對抗網絡的圖像翻譯算法。該算法重點解決的問題是生成器中反卷積層中信息強度的增強,通過生成器反卷積跳躍連接過程中逐次增加encoder重復次數來增強圖像特征,從而提升圖像翻譯效果。
2014年Goodfellow等人提出了生成對抗網絡,基于二人零和博弈思想(兩人的利益之和為零,即若一個人得到利益,則另一個人便失去利益),近年來已經成為深度學習比較熱門的研究方向[12-13]。
GAN的模型包括兩個部分——生成器(Generator,簡稱G)和判別器(Discriminator,簡稱D)。在訓練過程中,生成器主要是生成一個與真實圖片相似的圖片;判別器的主要作用是判斷輸入圖像是真實的還是生成的,輸出結果是一個概率。若為真實圖像,則輸出為1;若是生成圖像,則輸出為0。生成器和判別器相互博弈,直到輸出的概率為0.5時,判別器無法判別真假,模型達到最優。GAN的網絡模型如圖1所示。

圖1 生成對抗網絡模型
GAN的優化函數為:

其中輸入圖像x服從px(x)分布,生成器的輸入噪聲z服從pz(x)分布。
實踐中,GAN在訓練過程中容易出現振蕩而達不到均衡,出現部分模式崩潰現象,使得生成樣本缺乏多樣性。針對這一問題,Mirza等人提出了CGAN,期望網絡根據輸入條件生成指定的圖像。與原始GAN不同的是,它在生成器的輸入部分增加了條件約束,將無監督學習轉換成有監督學習,其中加入的約束條件記為y,引導噪聲生成圖像模擬目標圖像。CGAN的目標函數為:

其中,y是約束條件。
模型結構如圖2所示。

圖2 條件生成對抗網絡模型
圖像翻譯質量是否提高是人們最關心的問題,常用的對圖像翻譯質量的評價指標分為主觀評價和客觀評價[14-15]。
主觀評價采用的是用戶調研方法,用戶用肉眼直接觀察圖像翻譯的質量。用戶主觀評價滿意度指標用公式表示為:

其中A代表參加調研的人數,B表示從數據集中隨機挑選的測試圖像,N代表用戶觀察的最優的圖像個數。
在神經網絡中,淺層卷積核提取Low-Level特征,深層卷積核需要提取High-Level特征,從而盡可能保留更多的圖像細節。Encoder-decoder只學習高級特征而丟失了低級特征,使得圖像翻譯的效果比較模糊,而U-Net模型可以同時學習高級、低級特征,將第i層拼接到第n-i層。這是因為第i層和第n-i層的圖像大小是一致的,可以認為它們承載著類似的信息。這樣就把淺層的特征通過channel維度跳躍連接到深層特征。Encoder-decoder和U-Net模型如圖3和圖4所示。

圖3 Encoder-decoder

圖4 U-Net模型
U-Net模型第i層和第n-i層承載著類似的信息,通過跳躍連接就可以將第i層的特征復制到第n-i層,使得生成圖像越接近于真實圖像。但是,只做一次跳躍連接容易丟失圖像紋理、輪廓等特征。為了增強圖像特征表達能力,提高圖像翻譯效果,本文通過增加卷積層和反卷積層之間跳躍連接的次數來改進U-Net模型。改進的U-Net模型結構如圖5所示。

圖5 改進的U-Net模型結構
生成器采用改進的U-Net模型,輸入圖像依次經過conv、激活函數和Maxpooling,然后將輸出圖像依次經過deconv、正則化、激活函數和dropout層,最后將圖片大小相同的輸出進行concat跳躍連接。生成器如圖6所示。
判別器,是將真實圖像和生成圖像(或目標圖像)進行concat(即預處理),得到的結果依次經過卷積、BN和激活函數層輸出圖像,然后經過扁平化和全連接層輸出圖片為真或者假的概率。判別器結構如圖7所示。
(1)對樣本圖像進行尺寸歸一化處理,經過m個x×y(x可等于y)卷積核對輸入的圖片進行卷積操作,經過激活函數,選用n×n的池化單元完成下采樣。

圖6 生成器結構

圖7 判別器結構
(2)將encoder輸出的結果進行反卷積、正則化和dropout操作。
(3)將encoder和decoder大小相同的輸出進行concat操作,逐次經過卷積、BN和激活函數層,將輸出的圖像大小經過扁平化和全連接層,進而判斷圖像是真或假的概率。
(4)改變網絡模型參數,優化算法,實驗確定網絡模型的最優參數。
(5)在步驟(4)的基礎上,改變反卷積過程跳躍連接的重復次數,尋找最優反卷積過程跳躍連接次數的最優值,實現圖像翻譯。
本文選用的是CUHK人臉素描數據庫里香港中文大學學生數據庫,包括88張彩色圖和88張素描圖組成的訓練集和100張彩色圖和100張素描圖組成的測試集。
實驗條件為Intel(R) Core(TM) i5-4590 CPU@3.30 GHz,內存64 GB,Windows10操作系統,編程軟件基于TensorFlow 1.10.0框架,python3.6.5。對圖像進行預處理,模型卷積核為3×3,平均池化為2×2,步長為2,激活函數選擇ReLU。
分別選用AdaGrad算法、RMSProp算法以及Adam算法等優化算法,實驗迭代200次,實驗觀察算法對圖像翻譯質量的影響,結果如圖8所示。

圖8 不同優化算法翻譯結果
從圖8可知,當優化算法選擇Adam時,翻譯結果接近于GT圖像,故選擇Adam算法對實驗進行優化。
優化算法選擇Adam方法,改變網絡模型學習率和迭代次數,研究網絡模型參數對圖像翻譯質量的影響,實驗確定模型參數。
研究網絡模型中學習率、迭代次數等參數對改進后的圖像翻譯算法的影響,其中優化算法選擇上面得出的Adam算法。
(1)迭代次數設定為200次,學習率分別設置為0.01、0.001、0.000 1,實驗結果如圖9所示。
從圖9看出,學習率設置過大,生成的圖像輪廓較為清晰,一些細節方面被遺棄;設置過小,噪聲太大,會影響圖像的輪廓。所以,學習率設置為0.001。

圖9 不同學習率翻譯結果
(2)學習率設為0.001,優化算法為Adam算法,改變網絡迭代次數,實驗結果如圖10所示。

圖10 不同迭代次數翻譯結果
為了說明模型在不同迭代次數下生成圖像的效果,列出不同迭代次數下生成器生成的圖像、輸入圖像和目標圖像進行對比。如圖10所示,最左邊是輸入圖像,最右邊是目標圖像,生成器生成的圖像要向目標圖像進行靠近,迷惑判別器。從圖10可以看出,隨著迭代次數的增加,生成器生成的圖像在面部輪廓、紋理細節等方面越來越接近目標圖像,同時背景噪聲大幅度減少。
學習率設為0.001,迭代200次,優化算法為Adam算法,在U-Net模型的反卷積過程中逐漸增加concat跳躍連接的encoder重復次數。實驗觀察U-Net模型中反卷積跳躍連接encoder重復次數對圖像翻譯質量的影響,實驗結果如圖11~圖16所示。
從圖11可以看出,當選用原始模型時,生成器損失曲線從迭代2次時開始急劇下降到32萬,之后在27萬~32萬之間來回震蕩;迭代50次后,在23萬~27萬之間對抗,總體呈現下降趨勢;判別器損失曲線在迭代3次時急劇下降到1.4,迭代25次左右時曲線損失增加到20,之后隨著迭代次數的增加,曲線在1~7之間來回震蕩,達成對抗。

圖11 原始模型Loss曲線
從圖12可以看出,當跳躍連接encoder增加到2次時,生成器的損失函數曲線在迭代3次時急劇下降,然后隨著迭代次數的增加損失在25萬~28萬之間來回震蕩,達到對抗,總體呈現下降趨勢;判別器損失曲線當迭代次數在50時急劇增加到40,之后在0~9之間震蕩,不穩定。


圖12 跳躍連接encoder2次Loss曲線
從圖13可以看出,當跳躍連接encoder增加到3次時,生成器的損失函數曲線在迭代3次時候急劇下降,然后隨著迭代次數的增加損失在23萬~33萬之間來回震蕩,達到對抗,總體趨勢是收斂的;判別器損失曲線十分不穩定,迭代次數在50時急劇增加到43,之后在0~10之間震蕩。

圖13 跳躍連接encoder3次Loss曲線
從圖14可以看出,當跳躍連接encoder增加到4次時,生成器的損失函數曲線在迭代3次時候急劇下降到35萬,然后在2~50次時損失在20萬~33萬之間來回震蕩,迭代次數在50之后震蕩加劇;判別器損失曲線不穩定,迭代次數在50時急劇增加到60,之后在0~10之間震蕩,迭代次數在75時急劇增加到58,對抗趨勢較差。

圖14 跳躍連接encoder4次Loss曲線
從圖15可以看出,當跳躍連接encoder增加到5次時,生成器的損失函數曲線在迭代3次時候急劇下降,然后隨著迭代次數的增加損失在26萬~33萬之間來回震蕩,達到對抗,總體趨勢是收斂的;判別器損失曲線迭代次數在20時急劇增加,之后在0~8之間震蕩,趨于穩定。
從圖16可以看出,當跳躍連接encoder增加到6次時,生成器的損失函數曲線在迭代3次時候急劇下降,然后隨著迭代次數的增加損失來回震蕩加劇,未達到平衡;判別器損失曲線每隔50次急劇增加一次,十分不穩定。
encoder重復不同次數的生成圖像,如圖17所示。通過Loss曲線和生成的圖像對比發現,當U-Net模型的concat層數encoder增加到5次時,圖像翻譯的效果最好。

圖15 跳躍連接encoder5次Loss曲線

圖16 跳躍連接encoder6次Loss曲線

圖17 encoder重復不同次數生成圖像
實驗選取不同跳躍連接encoder次數的圖像翻譯重復50次實驗,圖像翻譯結果圖像由專業人員、普通用戶、學生100人對圖像翻譯結果進行評價,得出用戶評價滿意度指數。用戶評價標準如表1所示,評價結果如表2所示。

表1 主觀評價標準

表2 用戶調研評價滿意度指數
針對圖像翻譯質量問題,提出了一種基于改進U-Net模型的生成對抗網絡圖像翻譯算法,主要通過增加反卷積過程跳躍連接中encoder的重復次數增強圖像特征,得出了生成器反卷積跳躍連接重復次數為5時圖像翻譯的質量達到最好。論文研究結果可為圖像翻譯技術的實現提供理論支撐。