金 陽,何利力
1(浙江理工大學(xué) 智能無人系統(tǒng)軟件技術(shù)與應(yīng)用重點實驗室,杭州 310018)
2(浙江理工大學(xué) 浙江省服裝個性化定制2011 協(xié)同創(chuàng)新中心,杭州 310018)
近幾年來,生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)在計算機視覺、圖像處理等多個領(lǐng)域得到越來越多的應(yīng)用.其中包括應(yīng)用最廣泛的圖像到圖像的轉(zhuǎn)換,它可以將來自不同域的圖像進行相互之間轉(zhuǎn)換.場景圖像轉(zhuǎn)換可以看成是圖形處理和計算機視覺領(lǐng)域相結(jié)合的問題.傳統(tǒng)的場景圖像轉(zhuǎn)換算法大多是基于模型的方法.孫毅剛等[1]提出一種基于改進的snake 模型,該算法利用模糊連接度準(zhǔn)確找到雨雪輪廓點,并通過模糊相似度函數(shù)確定雨雪邊界,實現(xiàn)雨雪場景圖像轉(zhuǎn)換.劉杰平等[2]基于大氣散射模型,提出了一種適應(yīng)人眼視覺特征的HSI 色彩空間估計大氣光和透射率,實現(xiàn)霧霾場景圖像轉(zhuǎn)換.費子豪等[3]建立了基于高頻分量直方圖均衡化,低頻分量同態(tài)濾波處理的小波變換模型,完成晴天多云場景圖像轉(zhuǎn)換.
場景圖像轉(zhuǎn)換是圖像轉(zhuǎn)換的一類問題.解決圖像轉(zhuǎn)換問題大多使用基于學(xué)習(xí)的方法,利用卷積神經(jīng)網(wǎng)絡(luò)的強大特征表示能力,學(xué)習(xí)源域到目標(biāo)域圖像的映射函數(shù).為了學(xué)習(xí)到這個映射函數(shù),許多國內(nèi)外學(xué)者展開了廣泛的科學(xué)研究.得益于文獻[4],其將生成對抗網(wǎng)絡(luò)(GAN)引入到深度學(xué)習(xí)領(lǐng)域,給生成圖像工作帶來了更加新穎的方法.基于GAN 網(wǎng)絡(luò)模型,提出各種改進的圖像轉(zhuǎn)換模型.Mirza 等[5]提出了帶條件約束的cGAN(conditional GAN)模型,該網(wǎng)絡(luò)模型通過添加條件變量限制生成結(jié)果.基于cGAN的思想,Isola 等[6]提出Pix2Pix 算法模型,該算法要求配對的圖像數(shù)據(jù)集,能夠無監(jiān)督地學(xué)習(xí)到不同域圖像之間的映射關(guān)系.Kim 等[7]提出DiscoGAN 模型在跨域圖像轉(zhuǎn)換中發(fā)揮不錯的效果.Yi 等[8]借鑒對偶學(xué)習(xí)的思想提出DualGAN.Radford 等[9]提出DCGAN,極大的提高了圖像生成的實用性.Zhu 等[10]提出了CycleGAN 網(wǎng)絡(luò),該方法突破了要求成對圖像數(shù)據(jù)集的限制,無需配對數(shù)據(jù)集就能夠?qū)崿F(xiàn)不同域圖像之間的轉(zhuǎn)換工作.
本文正是基于CycleGAN 網(wǎng)絡(luò),提出了一種場景圖像轉(zhuǎn)換的新方法.通過改進的生成網(wǎng)絡(luò)結(jié)構(gòu)、SSIM結(jié)構(gòu)重建損失和身份保持損失,應(yīng)用到場景圖像轉(zhuǎn)換上能夠取得很好的效果.
生成對抗網(wǎng)絡(luò)(GAN)是一個十分強大的生成模型,它能夠在各種不同的計算機視覺任務(wù)中取得優(yōu)秀的結(jié)果.GAN 基于連續(xù)數(shù)據(jù),且假設(shè)有無限建模能力[11].其靈感來源于零和博弈思想,通過雙方的博弈過程,達到兩者之間納什平衡.其由兩種網(wǎng)絡(luò)結(jié)構(gòu)模型組成:生成網(wǎng)絡(luò)G(Generator)和判別網(wǎng)絡(luò)D(Discriminator).判別網(wǎng)絡(luò)D用來判斷樣本圖像是原始圖像還是由生成網(wǎng)絡(luò)G生成的圖像,目的是將他們區(qū)分開來.而生成網(wǎng)絡(luò)G則盡可能的生成更加逼真的圖像,以此來迷惑判別網(wǎng)絡(luò)D,達到以假亂真的目的.通過G和D之間相互對抗,直到生成的圖像判別網(wǎng)絡(luò)無法分辨.
GAN的優(yōu)化目標(biāo)函數(shù)為:
其中,x表示真實圖片,采樣于真實數(shù)據(jù)分布,z表示輸入生成網(wǎng)絡(luò)G的隨機噪聲,采樣于正態(tài)分布.D(x)表示輸入的圖片x接近真實圖片的概率.訓(xùn)練是批量進行的,E為數(shù)學(xué)期望.D希望D(x)變 大,D(G(z))變小,所以D盡可能的最大化目標(biāo)函數(shù).G希望D(G(z))變大,這時G盡可能的最小化目標(biāo)函數(shù).
CycleGAN 模型工作在無配對的數(shù)據(jù)集上,實現(xiàn)跨域圖像轉(zhuǎn)換.其網(wǎng)絡(luò)結(jié)構(gòu)由兩個生成網(wǎng)絡(luò)GXY、GYX和兩個判別網(wǎng)絡(luò)DX、DY組成.G與D相互對抗過程類似于一種雙向環(huán)結(jié)構(gòu).其整體結(jié)構(gòu)如圖1所示.
圖1中,左邊部分是GXY與DY,GYX與DX之間的對抗.中間部分是將X域中的圖像經(jīng)過兩次轉(zhuǎn)換回原域后反饋調(diào)節(jié)網(wǎng)絡(luò)參數(shù),右邊部分與之類似,作用于Y域中的圖像.
該模型的目標(biāo)函數(shù)由兩部分損失函數(shù)組成,對抗損失和循環(huán)一致?lián)p失.對抗損失表示生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)之間的對抗,生成網(wǎng)絡(luò)盡可能生成接近真實樣本分布的圖像,而判別網(wǎng)絡(luò)盡可能將他們分辨出來.通過網(wǎng)絡(luò)之間的對抗,模型可以學(xué)習(xí)到很好的映射函數(shù)GXY和GYX,然而單靠對抗損失還不能夠保證學(xué)習(xí)函數(shù)能夠?qū)蝹€輸入xi映 射到期望的輸出yi,因此需要循環(huán)一致?lián)p失縮小映射函數(shù)空間.循環(huán)一致?lián)p失類似于對偶學(xué)習(xí),它通過前后兩次轉(zhuǎn)換將輸入x映射回原始域,例如x→GXY(x)→GYX(GXY(x))≈x,然后根據(jù)反饋回來的信息就能指導(dǎo)模型優(yōu)化改進.
跳躍連接(skip connections)[12]常用在生成網(wǎng)絡(luò)結(jié)構(gòu)中,以保證圖像空間位置信息在網(wǎng)絡(luò)傳遞中的連續(xù)性.通常生成網(wǎng)絡(luò)包含下采樣部分和上采樣部分,在下采樣中,輸入是原始圖像,每經(jīng)過一次下采樣,圖像都會在空間上被壓縮,同時擴張圖像的通道數(shù).相反,上采樣中,圖像在空間上拓展,相應(yīng)的通道數(shù)減少.這樣的網(wǎng)絡(luò)是線性的,圖像數(shù)據(jù)從輸入層流入,通過網(wǎng)絡(luò)一層接一層的向下流動,最后到達輸出層.
圖1 CycleGAN 對抗過程整體結(jié)構(gòu)圖
在下采樣部分的網(wǎng)絡(luò)中,經(jīng)過每一個連續(xù)的層,模型都會提取到圖像特征內(nèi)容,但卻丟失了圖像空間位置信息.在下采樣的最后一層,特征圖已經(jīng)有足夠強的能力學(xué)習(xí)到圖像的內(nèi)容,但幾乎不理解空間位置.對于預(yù)測分類問題,這已經(jīng)足夠了,所以我們可以把它連接到一個稠密層上,來輸出一個特定類出現(xiàn)在圖像中的概率.然而,對于圖像生成或者圖像轉(zhuǎn)換問題,需要在上采樣回到原始圖像大小過程中將下采樣丟失的空間位置信息傳遞回每一層.這就是需要跳躍連接,它允許網(wǎng)絡(luò)將在下采樣過程中捕獲的高級抽象信息與從網(wǎng)絡(luò)的先前層反饋來的特定空間信息進行混合.
為了讓網(wǎng)絡(luò)提取到的特征更加豐富,避免在非采樣層中,過深的網(wǎng)絡(luò)進行卷積和池化操作時導(dǎo)致的圖像信息丟失,我們也引入了殘差塊(residual block)[13].其結(jié)構(gòu)如圖2所示.
圖2 殘差塊結(jié)構(gòu)
殘差塊通過跳躍連接將淺層特征直接傳遞到深層特征,其工作方式是將輸入與殘差塊的網(wǎng)絡(luò)輸出疊加后作為最后的輸出.通過跳躍連接將圖像特征向神經(jīng)網(wǎng)絡(luò)的更深層傳遞,即使網(wǎng)絡(luò)結(jié)構(gòu)更深,也不會出現(xiàn)特征丟失的現(xiàn)象.同時還有效的解決了梯度消失和梯度爆炸問題,提高了網(wǎng)絡(luò)的穩(wěn)定性.
本文從網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)兩個方面改進網(wǎng)絡(luò)模型.
本文設(shè)計了一個全卷積多層下采樣網(wǎng)絡(luò)結(jié)構(gòu),通過提取場景圖像特征,將真假圖像辨別出來.所提的判別網(wǎng)絡(luò)包含兩類DX和DY,DX用來判別輸入的圖像是否來自X域中的真實圖像,DY將Y域中的真實圖像y與生成的圖像區(qū)分開來.它們共用同一網(wǎng)絡(luò)結(jié)構(gòu),但模型參數(shù)不共享.判別網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示.
圖3 判別網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)的輸入為3 通道大小為的圖片,隨后通過邊下采樣邊拓展通道的方式,提取圖像內(nèi)容特征.采用步幅為2,卷積核大小為3×3的卷積操作,每次卷積后圖像寬高都減小一半,除了輸入層和輸出層外,其他層還需要連接Instance Normalization 實例歸一化層以及緊跟著Leaky ReLU 激活層.最后通過一個卷積核為1的卷積操作輸出形狀為1×16×16的特征圖,對其求取平均值作為判別網(wǎng)絡(luò)的輸出,也就是輸入圖片判別為真實圖像的概率.
僅用卷積層提取特征存在缺陷,沒有考慮輸入圖像與生成圖像在紋理特征和圖像結(jié)構(gòu)上的聯(lián)系,造成生成的圖像細(xì)節(jié)模糊.為了彌補該缺陷,本文改進生成網(wǎng)絡(luò)結(jié)構(gòu),通過引入跳躍連接,將下采樣過程中丟失的圖像空間結(jié)構(gòu)信息傳遞回上采樣中,以及在加深的網(wǎng)絡(luò)層中加入殘差塊進一步抑制圖像紋理特征信息在傳遞過程中的丟失現(xiàn)象.
所提的生成網(wǎng)絡(luò)同樣包含兩類GXY:X→Y和,GXY生成網(wǎng)絡(luò)將X域中圖像x作為輸入,盡可能去生成接近Y域數(shù)據(jù)樣本分布的圖像.GYX則是與之相反,將Y域中的圖像盡可GYX:Y→X能轉(zhuǎn)化為X域中圖像.它們的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示.
圖4 生成網(wǎng)絡(luò)結(jié)構(gòu)
該網(wǎng)絡(luò)輸入輸出圖像均為3 通道大小為256×256的圖片.模型左側(cè)為下采樣結(jié)構(gòu),采用步幅為2 卷積核為5×5的卷積層,同時緊跟其后的是實例歸一化層以及Leaky ReLU 層.在這里我們參考Ulyanov 等[14]的建議,使用實例歸一化層(instance normalization),在生成網(wǎng)絡(luò)中使用實例歸一化層比批量歸一化層[15]更能生成令人滿意的結(jié)果.總共進行3 次下采樣,每次圖像寬高減半,通道數(shù)加倍,最終到達256×32×32 尺寸為止.隨后保持該尺寸經(jīng)過9 個殘差塊傳遞圖像特征,對應(yīng)著模型底部的結(jié)構(gòu).之后,進行向上采樣回原圖像尺寸,這部分屬于模型右側(cè)的結(jié)構(gòu),其采用相同的步幅2、卷積核5×5的反卷積層,以及Instance Normalization 層和Leaky ReLU 層,每次上采樣圖像大小加倍,通道數(shù)減半,不同的是使用跳躍連接將下采樣過程中對應(yīng)大小尺寸的特征圖連接過來.最后,將上采樣的結(jié)果通過通道數(shù)為3的反卷積層連接,輸出相同尺寸的圖像.
損失函數(shù)即本文所提模型的目標(biāo)函數(shù),它是由對抗損失、SSIM 重建損失和身份保持損失3 個部分組成.
3.3.1 對抗損失
在原始的GAN 模型中,網(wǎng)絡(luò)的訓(xùn)練過程存在著不穩(wěn)定和生成圖像質(zhì)量不高等問題,針對該問題,我們將交叉熵?fù)p失替換為最小二乘損失[16].對應(yīng)的生成網(wǎng)絡(luò)GXY和判別網(wǎng)絡(luò)DY的對抗損失定義如下:
式中,y~pdata(y)表示變量y采樣于Y域空間服從的概率分布,x~pdata(x)表示變量x采樣于X域空間服從的概率分布,E[]表示計算數(shù)學(xué)期望值.對于生成網(wǎng)絡(luò)GXY,其目標(biāo)是盡可能最大化Lgan(GXY,DY),即生成更接近目標(biāo)域Y數(shù)據(jù)分布的圖像來混淆判別網(wǎng)絡(luò)DY的決策.而判別網(wǎng)絡(luò)DY則盡可能最小化目標(biāo),將真實樣本y和生成樣本區(qū)分開.
如式(3)所示,通過兩者對抗最終達到最優(yōu)解GXY?和DY?.
同樣的,對于生成網(wǎng)絡(luò)GYX和判別網(wǎng)絡(luò)DX的對抗損失定義如式(4),通過兩者之間的對抗過程尋找到最優(yōu)解GYX?,DX?,如式(5)所示.
3.3.2 SSIM 重建損失
通過優(yōu)化上述對抗損失函數(shù)可以學(xué)習(xí)到很好的映射函數(shù)GXY?和GYX?,產(chǎn)生接近目標(biāo)域空間分布的樣本.但如果有足夠大的樣本容量,生成網(wǎng)絡(luò)可以將同一組輸入圖像映射到目標(biāo)域中任意隨機排列的圖像,對于GXY?生成網(wǎng)絡(luò),它完全可以將所有的X域圖像都映射到目標(biāo)Y域的同一圖像上,從而導(dǎo)致對抗損失失效.因此,本文引入了重建損失來幫助網(wǎng)絡(luò)進一步縮小無效的映射函數(shù)空間,確保映射函數(shù)能夠?qū)蝹€輸入映射到期望的輸出.
同時,為進一步保證生成圖像過程中結(jié)構(gòu)特性不丟失,引入Wang 等[17]提出的結(jié)構(gòu)相似性指數(shù)(Structural Similarity Index Measurement,SSIM)來衡量兩幅圖像的結(jié)構(gòu)差異.
對于給定的圖像x和y,其結(jié)構(gòu)相似性指數(shù)定義如下:
式中,ux是圖像x的均值,是圖像x的方差,σxy是圖像x和y的協(xié)方差.c1與c2為兩個常數(shù),避免除零,L為像素范圍,k1=0.01,k2=0.03為默認(rèn)值.SSIM 結(jié)構(gòu)相似性范圍為?1 到1,值越大表示圖像x和y越相似.
因此,我們引入SSIM 重建損失,如式(8)所示,模型盡可能的最小化該目標(biāo).
3.3.3 身份保持損失
為了讓生成網(wǎng)絡(luò)將其目標(biāo)域的圖像作為輸入后保持不變性,我們引入了身份保持損失.存在這樣一種情況,將Y域中的圖像y輸入到GXY中,滿意的結(jié)果應(yīng)該是圖像y原封不動的從生成網(wǎng)絡(luò)中輸出.身份保持損失能夠幫助我們做到這一點,該項損失幫助調(diào)節(jié)生成網(wǎng)絡(luò),以確保它只調(diào)整完成轉(zhuǎn)換所需的圖像部分,而不是更多的內(nèi)容.在保持圖像內(nèi)容前后一致性的同時,也間接地維持了圖像的色彩飽和度.身份保持損失公式如式(9)所示.
模型通過最小化目標(biāo)函數(shù)Lid(GXY,GYX),保證轉(zhuǎn)換圖像前后內(nèi)容的一致性,同時也避免轉(zhuǎn)換后的圖像出現(xiàn)色彩失真現(xiàn)象,以保留更多的色彩細(xì)節(jié).
綜合以上三項損失函數(shù),得到最終的目標(biāo)函數(shù)為L(GXY,GYX,DX,DY).如式(10)所示.
其中,λ1和λ2分別控制3 項損失之間的相對重要性.
本文算法進行實驗的平臺環(huán)境及配置如表1所示.選用Tensorflow 作為深度學(xué)習(xí)框架,在GPU 上使用CUDNN 加速訓(xùn)練模型,使用的編程語言為Python.
表1 實驗環(huán)境配置
數(shù)據(jù)集包括4 個類別的場景圖像,兩類季節(jié)場景summer、winter和兩類天氣場景cloudy、sunny.數(shù)據(jù)分別選自MWD (Multi-class Weather Dataset)數(shù)據(jù)集、Two-class Weather Classification 數(shù)據(jù)集,組成我們需要的兩類場景轉(zhuǎn)換數(shù)據(jù)集,數(shù)據(jù)集一為多云與晴天場景轉(zhuǎn)換數(shù)據(jù)集(cloudy2sunny),數(shù)據(jù)集二為夏季與冬季場景轉(zhuǎn)換數(shù)據(jù)集(summer2winter).每個數(shù)據(jù)集中每類場景各自包含訓(xùn)練數(shù)據(jù)5000 張圖片,測試數(shù)據(jù)1000 張圖片,圖片大小都為256×256.
基于TensorFlow 深度學(xué)習(xí)框架,使用GPU 加速,采用迭代交替的方式對本文算法模型進行訓(xùn)練.優(yōu)化算法使用Adam,批量大小為1,λ1、λ2分別取10和5,所有的網(wǎng)絡(luò)從學(xué)習(xí)率為0.0002 開始訓(xùn)練,前100 個epochs 保持0.0002的學(xué)習(xí)率不變,后100 個epochs 中學(xué)習(xí)率線性衰減為0,交替迭代訓(xùn)練生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò).模型參數(shù)如表2所示.
表2 網(wǎng)絡(luò)模型參數(shù)
為驗證所提模型的有效性,分別進行兩類場景圖像轉(zhuǎn)換對比實驗.第一類場景為天氣場景圖像轉(zhuǎn)換(多云與晴天互轉(zhuǎn)),首先分別選取不同域的圖片,輸入到對應(yīng)的生成網(wǎng)絡(luò)中,得到轉(zhuǎn)換后的圖像結(jié)果.然后將實驗結(jié)果與GAN、Pix2Pix、CycleGAN 模型得到的結(jié)果進行定性和定量對比.第二類場景為季節(jié)場景圖像轉(zhuǎn)換(夏季與冬季互轉(zhuǎn)),驗證過程與上述類似.
(1)定性對比實驗
使用數(shù)據(jù)集一(cloudy2sunny)訓(xùn)練本文所提模型.分別選取多云圖片和晴天圖片各一張進行對比實驗,得到如圖5所示結(jié)果.從實驗結(jié)果中可以發(fā)現(xiàn),GAN模型轉(zhuǎn)換后的晴天和多云場景圖像模糊不清.Pix2Pix模型生成的目標(biāo)場景圖像部分存在結(jié)構(gòu)上的缺陷問題.CycleGAN 模型轉(zhuǎn)換后的場景圖像容易造成圖像色彩失真,與真實的圖像存在差異.本文算法生成的目標(biāo)場景圖像(多云和晴天)更加的接近真實場景圖像.
圖5 天氣場景圖像轉(zhuǎn)換實驗結(jié)果對比圖
使用數(shù)據(jù)集二(summer2winter)時,同樣選取夏季和冬季圖片各一張,將實驗結(jié)果圖與GAN、Pix2Pix、CycleGAN 模型得到的結(jié)果進行對比,如圖6所示.通過對比可以看出,所提模型轉(zhuǎn)換后的結(jié)果更加接近目標(biāo)真實場景,同時保持了完整的圖像結(jié)構(gòu)和紋理細(xì)節(jié)信息.通過這兩類場景圖像轉(zhuǎn)換的對比實驗,驗證了本文所提模型應(yīng)用到場景圖像轉(zhuǎn)換上的有效性和可行性.
圖6 季節(jié)場景圖像轉(zhuǎn)換實驗結(jié)果對比圖
(2)定量對比實驗
定量對比部分,我們采用廣泛使用的PSNR[18]和SSIM這兩種全參考的圖像質(zhì)量評價指標(biāo),來對生成的圖像進行客觀的定量評判.在同一測試數(shù)據(jù)集上,使用這兩種評價指標(biāo),將本文算法和其他算法生成的圖像與真實圖像進行定量對比.各算法的評價指標(biāo)結(jié)果如表3所示.
表3 測試數(shù)據(jù)集上各算法評價指標(biāo)結(jié)果
本文設(shè)計了基于改進生成對抗網(wǎng)絡(luò)的圖像轉(zhuǎn)換算法,應(yīng)用在天氣和季節(jié)場景的圖像轉(zhuǎn)換上能夠獲得很好的效果.具體改進方法涉及以下幾個方面:首先是改進生成網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu),通過在網(wǎng)絡(luò)的下采樣部分和上采樣部分中間加入跳躍連接,保證下采樣部分的圖像空間位置信息傳遞的連續(xù)性,以及在非采樣部分使用殘差塊,保證層數(shù)加深的網(wǎng)絡(luò)不丟失圖像內(nèi)容信息.其次,選用SSIM 相似性指數(shù)作為衡量圖像結(jié)構(gòu)差異的指標(biāo),組成SSIM 結(jié)構(gòu)重建損失,目的是使得模型生成的圖像結(jié)構(gòu)更完整.此外,還通過添加身份保持損失,保證轉(zhuǎn)換前后圖像色彩不失真和內(nèi)容的一致性.在今后的研究工作中,我們將考慮進一步優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),在紋理、細(xì)節(jié)等方面,增強原圖和轉(zhuǎn)換圖之間的結(jié)構(gòu)相似性和語義一致性.