張格格,李丹
(四川大學(xué)錦城學(xué)院,四川成都,611731)
CycleGAN是一個可以用于未配對數(shù)據(jù)的轉(zhuǎn)換的對抗網(wǎng)絡(luò)。它做的事情是在一個圖片集中捕獲出特殊的特征,然后將這些特征轉(zhuǎn)移到其他圖片集上??梢詫⑦@個問題描述為圖像到圖像的轉(zhuǎn)換或翻譯。它是從一個給定場景的表示形式中轉(zhuǎn)換圖像,例如將現(xiàn)實生活中的場景轉(zhuǎn)化為某一種風(fēng)格的畫作(例如將玫瑰花照片轉(zhuǎn)換為梵高風(fēng)格畫作的圖片)。雖然CV研究圖像加工、計算攝影技術(shù)和圖像學(xué)經(jīng)過多年的研究,在有監(jiān)督的情況下已經(jīng)產(chǎn)生了強大的可用成對出現(xiàn)的樣本圖片轉(zhuǎn)換系統(tǒng)[1]。但獲得配對好的圖像數(shù)據(jù)于我們而言是一件困難且需要耗費很大成本的事情,而現(xiàn)有的CycleGAN可以實現(xiàn)任意類似數(shù)據(jù)圖像的轉(zhuǎn)換。因此我們可以將CycleGAN模型用于此方面的轉(zhuǎn)換,或者運鏡時的視頻轉(zhuǎn)換。而此篇文章主要是使用CycleGAN來實現(xiàn)現(xiàn)實世界中的場景到動漫風(fēng)格圖片的轉(zhuǎn)換。
生成性對抗網(wǎng)絡(luò)在圖像生成[2,3]、圖像編輯[4]和表示法學(xué)習(xí)[3,5,6]上早已獲得令人贊嘆的結(jié)果,而生成性對抗網(wǎng)絡(luò)成功的關(guān)鍵是對抗性損失想法的提出,即強迫生成圖像在一次次的訓(xùn)練中逼近真實圖片,使得鑒別器無法將生成圖像成功的鑒別為假。這個損失在圖像生成任務(wù)中的功能很強,而循環(huán)一致性對抗網(wǎng)絡(luò)就采用了一個對抗損失來學(xué)習(xí)這個映射,從而使得生成圖像很逼真。
Hertzmann等人提出的圖像類比[7]推動了人們對圖像到圖像的轉(zhuǎn)換的想法。他們是在一個單一輸入輸出的訓(xùn)練圖像對上使用一個非參數(shù)化的紋理模型,而循環(huán)一致性對抗網(wǎng)絡(luò)則是在建立在Isola等人的pix2pix框架基礎(chǔ)之上提出的。pix2pix也是在成對的數(shù)據(jù)集上進行,它使用了一個條件式對抗網(wǎng)絡(luò)來學(xué)習(xí)一個輸入圖像到輸出圖像的映射。
除了CycleGAN之外,也有其他的方法可以處理未配對的情況。這些方法的目標(biāo)都是關(guān)聯(lián)兩個數(shù)據(jù)域X和Y。而CycleGAN作者的構(gòu)想不依賴于任何任務(wù)的特異性。即在輸入和輸出間的預(yù)定義的相似度函數(shù)中,并不假設(shè)輸入和輸出處于相同的低維嵌入空間。這樣一來,CycleGAN就成為了許多視覺和圖形任務(wù)的通用解決方案。
循環(huán)一致性使用傳遞性作為規(guī)劃結(jié)構(gòu)數(shù)據(jù)的方式已經(jīng)有了很長的一段歷史。CycleGAN則是使用了類似于一個循環(huán)一致性損失作為用傳遞性來監(jiān)督CNN訓(xùn)練的途徑[8,9]的損失去推動G和F的一致性。
它基于匹配預(yù)訓(xùn)練的深度特征的Gram矩陣統(tǒng)計數(shù)據(jù)來將一個圖像的內(nèi)容和另一個圖像的風(fēng)格進行結(jié)合來綜合出一個新的圖像。而CycleGAN則是把重點放在兩個圖像集的映射而不是兩個特定的圖像。這也為我將現(xiàn)實場景轉(zhuǎn)換為動漫風(fēng)格圖像提供了條件。
AnimeGAN[10]是基于CartoonGAN[11]的改進,它可以將現(xiàn)實場景進行動漫畫風(fēng)的圖像轉(zhuǎn)換。它提出了一個更加輕量級的生成器結(jié)構(gòu),也提出了三個全新的損失函數(shù)(灰度風(fēng)格損失、灰度對抗損失、顏色重建損失)用來提升風(fēng)格化的動漫視覺效果。
AnimeGANv2則是基于AnimeGAN的改進,與后者相比,它的生成器網(wǎng)絡(luò)的參數(shù)數(shù)量更少。它目前支持宮崎駿、新海誠和今敏的三種畫風(fēng)的風(fēng)格遷移,同時也支持視頻圖像的風(fēng)格轉(zhuǎn)換。而CycleGAN相較于它們有更廣泛的圖像風(fēng)格轉(zhuǎn)換空間。
循環(huán)一致性對抗網(wǎng)絡(luò)中的關(guān)鍵在于他的循環(huán)損失計算,總循環(huán)損失公式為:
來計算出由域X生成的圖像G(x)與域Y的目標(biāo)風(fēng)格圖像的差值損失,鑒別器Y則用于鑒別G(x)和域Y的圖像哪個為真哪個為假。生成器與鑒別器的對抗網(wǎng)絡(luò)使得該損失不斷的降低。這樣不斷的對抗訓(xùn)練可以使得生成器G能夠產(chǎn)生更加逼近真實圖像的圖像。反之理論一樣。循環(huán)一致性對抗網(wǎng)絡(luò)希望找到能使該循環(huán)損失降到最低的情況,這樣就能使由域X和域Y生成的圖像越來越逼近于真實圖像。
理論上來說,對抗性訓(xùn)練可以學(xué)習(xí)映射函數(shù)G和F,使它們分別產(chǎn)生與目標(biāo)域Y和X相同分布的輸出。嚴(yán)格來說,需要的G和F是隨機的函數(shù)[16]。然而當(dāng)具有足夠大的容量時,對抗網(wǎng)絡(luò)可以將相同的一組輸入圖像映射到目標(biāo)域中任意隨機排列的圖像,其中任何學(xué)習(xí)過的映射都可以產(chǎn)生與目標(biāo)分布相匹配的輸出分布。因此,只有對抗性損失并不能保證學(xué)習(xí)過的好的函數(shù)可以將單獨的輸入xi映射到需要的輸出yi。
為了防止生成器學(xué)習(xí)到具有欺騙性的造假數(shù)據(jù)(不是根據(jù)輸入得到的生成圖),以及進一步減少可能的映射函數(shù)的區(qū)間,學(xué)習(xí)過的映射函數(shù)就應(yīng)該是循環(huán)一致的,如圖1(b)中顯示的那樣,對于每個X域中的圖片x,應(yīng)該確保圖像循環(huán)轉(zhuǎn)換應(yīng)該能讓x回到原來的圖像,即x→G(x)→F(G(x))≈x。將其稱為前向循環(huán)一致性。同樣地,對于每個Y域的圖像y,G和F也應(yīng)該滿足反向循環(huán)一致性:y→F(y)→G(F(y))≈y。因此,使用循環(huán)一致性損失函數(shù)Lcyc(G,F)來得到這樣的表現(xiàn):
圖1 循環(huán)一致?lián)p失
該循環(huán)損失約束了生成的圖像要盡力的去保留源域的內(nèi)容和貼近目標(biāo)域的風(fēng)格,以不致生成的圖像丟失了源域的內(nèi)容而只是去盲目地貼合目標(biāo)域的風(fēng)格。
CycleGAN的網(wǎng)絡(luò)結(jié)構(gòu)來自Johnson等人的可生成式網(wǎng)絡(luò)結(jié)構(gòu)。CycleGAN網(wǎng)絡(luò)使用6個128x128的圖像塊和9個256x256的圖像塊以及高分辨率的訓(xùn)練圖像,同后者一樣使用歸一化的實例進行研究。CycleGAN的鑒別器網(wǎng)絡(luò)是70*70的PatchGANs[12,13,14],PatchGANs主要是對70*70大小的重疊的圖像斑塊的真假進行分類。
模型的訓(xùn)練從開始到穩(wěn)定,一共用了兩個過程,首先對于方程式(2),它用一個最小二乘函數(shù)替換了負(fù)數(shù)對數(shù)的客觀存在二點可能性。這使得訓(xùn)練過程更加穩(wěn)定,生成結(jié)果有更高的質(zhì)量。第二,為了減少模型的震蕩,CycleGAN引用了Shrivastava等人的策略,使用由最新生成器產(chǎn)生的圖片更新鑒別器。CycleGAN使用了一個緩沖區(qū)來存儲50張之前的生成圖片,在方程式(1)中設(shè)置λ的值為10,使用批處理大小為1的Adam求解程序[15]。所有的網(wǎng)絡(luò)都從學(xué)習(xí)率為0.0002開始訓(xùn)練,在前100個輪次里保持相同的學(xué)習(xí)率,并在接下來的100輪將速率線性降低至零。
圖2 訓(xùn)練過程的損失折線圖
在我這次所做的將實物場景圖轉(zhuǎn)換為動漫風(fēng)格圖像過程中,我在netG參數(shù)中新加了一個ResnetGenerator_1網(wǎng)絡(luò),它與原來的ResnetGenerator網(wǎng)絡(luò)的差別在于,我將上采樣由兩層改為一層,并將λA的值由10改為30,這樣做的結(jié)果可以使生成圖像更加清晰和契合目標(biāo)圖像的風(fēng)格,原模型與改進后的模型訓(xùn)練過程損失值變動如圖3所示。
圖3 測試結(jié)果圖展示
圖3中展示了原圖與原CycleGAN模型以及和我改動部分參數(shù)之后的模型測試結(jié)果圖。圖中可以很清楚地看出,改動參數(shù)之后的模型產(chǎn)生的圖像比原模型的生成圖像更加符合目標(biāo)圖像設(shè)想。
PSNR,即峰值信噪比,它是最普遍和使用最廣泛的一種評價圖像的客觀標(biāo)準(zhǔn),但它是基于對應(yīng)像素點間的誤差,也就是說是基于誤差敏感的圖像質(zhì)量評價。因為它并不考慮人眼的視覺特性,因此它的評價結(jié)果與人的感覺常常不一致。
SSIM,結(jié)構(gòu)相似性,它用于衡量兩幅圖像的相似度,它使用一張未經(jīng)壓縮的無失真圖像和一張失真后的圖像。取值的范圍為-1到1。它的公式基于樣本x和y之間的亮度、對比度和結(jié)構(gòu)的比較衡量。
表1展示了PSNR和SSIM兩個指標(biāo)對原模型和我改動參數(shù)后的模型進行評價的結(jié)果。我在改動模型參數(shù)后,兩個指標(biāo)都有所提升。
表1 PSNR和SSIM指標(biāo)的評價結(jié)果
雖然改動后的模型測試結(jié)果相較原模型更好,但仍在圖像清晰度和圖像風(fēng)格契合度上有所不足。
在現(xiàn)代生活中,動漫被很多年齡段的人所需求即動漫有著很廣泛的市場。且相較于真實演繹的作品而言,動漫的制作更加的依賴于電子產(chǎn)品。而制作動漫往往要消耗很多精力和時間。聯(lián)想到很多現(xiàn)實世界中的場景效果是可以直接或者稍加修改之后放到動漫中使用的。圖4展示了該算法在實例中的實現(xiàn)流程,即:首先對現(xiàn)實場景進行拍攝,然后使用CycleGAN算法對其進行動漫風(fēng)格的轉(zhuǎn)換,之后將其應(yīng)用到具體動漫的制作過程中。如此一來就可以使得動漫中部分過程的制作變得簡單,使整個動漫的制作變得相對輕松一點。通過將現(xiàn)實中的場景照片轉(zhuǎn)化為動漫風(fēng)格的照片可以在一定程度上節(jié)約資源,也便于更多的場景聯(lián)想。
圖4 轉(zhuǎn)換應(yīng)用流程圖