翁子欣 張凱 羅培鋮 吳明暉
摘? 要: CycleGAN算法能很好地解決在圖像未配對(duì)的情況下不能完成圖像風(fēng)格轉(zhuǎn)換的問題,并且CycleGAN通過加入循環(huán)一致性損失,解決了數(shù)據(jù)分布捕捉能力不夠的問題。實(shí)現(xiàn)了基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換算法的Web服務(wù),并基于該Web服務(wù)開發(fā)了圖像風(fēng)格轉(zhuǎn)換App。結(jié)果表明,使用CycleGAN算法可以較好地實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換。
關(guān)鍵詞: CycleGAN; 圖像風(fēng)格轉(zhuǎn)換; Web服務(wù); 移動(dòng)應(yīng)用
中圖分類號(hào):TP399? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ?文章編號(hào):1006-8228(2019)08-24-05
Abstract: The CycleGAN algorithm can well solve the problem that the image style transfer cannot be completed when the images are not paired. In addition, CycleGAN solves the problem of the insufficient data distribution capture ability by adding cycle consistency loss. In this paper, a Web service with CycleGAN's image style transfer algorithm is realized, and an image style transfer App based on the Web service is developed thereby. Results show that CycleGAN algorithm can be used to achieve better image style conversion.
Key words: CycleGAN; image style transfer; web service; mobile app
0 引言
圖像風(fēng)格轉(zhuǎn)換主要是指將圖像按照參考的風(fēng)格圖像進(jìn)行轉(zhuǎn)換,最終得到融合了某種特定的圖像風(fēng)格的目標(biāo)圖像的過程。
在使用神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像風(fēng)格轉(zhuǎn)換前,圖像風(fēng)格轉(zhuǎn)換主要依賴于非參數(shù)紋理合成。盡管這種模型有學(xué)習(xí)紋理轉(zhuǎn)換的能力,但模型不能根據(jù)物體的形狀進(jìn)行靈活的融合[1]。與只專注于提取圖像局部特征的圖像類比方法相比,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像風(fēng)格轉(zhuǎn)換要更復(fù)雜,它們通過匹配神經(jīng)網(wǎng)絡(luò)訓(xùn)練的早期層的特征映射所得到的格拉姆矩陣統(tǒng)計(jì)信息來進(jìn)行圖像風(fēng)格轉(zhuǎn)換。為了得到更好的轉(zhuǎn)換效果,Duomiln等人[2]實(shí)現(xiàn)了允許在預(yù)先訓(xùn)練的樣式之間進(jìn)行插值,Huang等人[3]實(shí)現(xiàn)了允許實(shí)時(shí)傳輸?shù)募夹g(shù)。但即使集成了以上的技術(shù),也只能捕獲較低層的紋理信息[4]。Chunlei Chai等人[5]采用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNN)消除了特征提取過程的需要,支持端到端圖像學(xué)習(xí),實(shí)現(xiàn)從原始輸入學(xué)習(xí)然后輸出所需圖像。由于深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Networks,DCNNs)在許多計(jì)算機(jī)視覺任務(wù)中表現(xiàn)良好,CNNs也被應(yīng)用于圖像風(fēng)格轉(zhuǎn)換[6]。但是每一張要生成的圖像都需要初始化,并且保持CNN的參數(shù)不變,再經(jīng)過反向傳播后得到最終結(jié)果,轉(zhuǎn)換效率并不理想。之后使用VGG19并對(duì)圖像網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練的結(jié)構(gòu)來進(jìn)行圖像風(fēng)格轉(zhuǎn)換[7]。利用基于VGG的網(wǎng)絡(luò)框架進(jìn)行風(fēng)格轉(zhuǎn)換使用了感知損失,感知損失的好處在于將生成問題看作是變換問題,即生成圖是從內(nèi)容圖中變化得到的,但是當(dāng)遇到高分辨率的圖像時(shí),圖像風(fēng)格轉(zhuǎn)換的效果不佳。聯(lián)級(jí)優(yōu)化網(wǎng)絡(luò)(Cascaded Refinement Network, CRN)的圖像合成系統(tǒng)可以實(shí)現(xiàn)高分辨率的圖像的合成[8],但是它前饋的方法合成的圖像過于平滑,真實(shí)感欠佳且細(xì)節(jié)不夠清晰。為了解決圖像真實(shí)感不夠的問題,pix2pix算法[9-10]采用神經(jīng)網(wǎng)絡(luò)用作通用圖像分析器,可保持原圖的真實(shí)性,但缺點(diǎn)是訓(xùn)練數(shù)據(jù)集需要人工標(biāo)注目標(biāo)圖像或結(jié)合裁剪方法對(duì)風(fēng)格轉(zhuǎn)換的內(nèi)容進(jìn)行裁剪,并且當(dāng)訓(xùn)練集圖像不配對(duì)時(shí)pix2pix失效。Ian J. Goodfellow提出了一個(gè)通過對(duì)抗過程估計(jì)生成模型的生成對(duì)抗網(wǎng)絡(luò)(GAN,Generative Adversarial Networks)的框架,但是普通GAN應(yīng)用于圖像風(fēng)格轉(zhuǎn)換時(shí),對(duì)數(shù)據(jù)分布的捕捉能力不足,且算力消耗巨大。
本文采用一個(gè)改進(jìn)的生成對(duì)抗網(wǎng)絡(luò)CycleGAN[11]解決了pix2pix在沒有成對(duì)訓(xùn)練數(shù)據(jù)的情況下不能將圖像內(nèi)容從源數(shù)據(jù)分布 域(即源域)遷移到目標(biāo)數(shù)據(jù)分布域(即目標(biāo)域)的問題。訓(xùn)練數(shù)據(jù)不配對(duì)的指的是CycleGAN在訓(xùn)練時(shí)只需要將源域的圖像和目標(biāo)域的圖像作為輸入即可,對(duì)源域和目標(biāo)域的圖像內(nèi)容是否匹配并無要求。CycleGAN加入了循環(huán)一致性損失限定Loss后使得一對(duì)GAN相互循環(huán),獲得了比普通GAN更好的數(shù)據(jù)分布捕捉能力,從而得到了更好的圖像風(fēng)格轉(zhuǎn)換效果。
1 GAN
生成式對(duì)抗網(wǎng)絡(luò)的框架結(jié)構(gòu)主要由生成模型和判別模型組成。生成器和判別器兩者通過交替訓(xùn)練互相博弈學(xué)習(xí)最終產(chǎn)生相當(dāng)好的輸出。生成器和判別器各自提高自己的生成能力和判別能力最終使得生成器能夠重現(xiàn)訓(xùn)練數(shù)據(jù)的分布,如圖1所示。
2 CycleGAN
CycleGAN是Jun-Yan Zhu等人于2017年3月份提出的對(duì)抗神經(jīng)網(wǎng)絡(luò)模型,它本質(zhì)上是兩個(gè)鏡像對(duì)稱的GAN構(gòu)成了一個(gè)環(huán)形網(wǎng)絡(luò)。CycleGAN在訓(xùn)練時(shí)只需要將源域的圖像和目標(biāo)域的圖像作為輸入即可,對(duì)源域和目標(biāo)域的圖像內(nèi)容是否是匹配的并無要求。也就是說,CycleGAN能在訓(xùn)練圖像不配對(duì)的情況下實(shí)現(xiàn)不同風(fēng)格圖像之間的相互轉(zhuǎn)換,且可擴(kuò)展性好及應(yīng)用更廣。CycleGAN的兩個(gè)鏡像對(duì)稱的GAN共享兩個(gè)生成器,并各自帶一個(gè)判別器,即共有兩個(gè)判別器和兩個(gè)生成器。一個(gè)單向GAN有兩個(gè)Loss,因而,CycleGAN有四個(gè)Loss。CycleGAN總的目標(biāo)函數(shù)為:
如圖2所示,該模型通過從域DA獲取輸入圖像,該輸入圖像被傳遞到第一個(gè)生成器Generator A2B,在這一過程中,來自域DA的待轉(zhuǎn)換的源圖像被轉(zhuǎn)換成目標(biāo)域DB中的圖像。這個(gè)新生成的圖像又被傳遞到另一個(gè)生成器Generator B2A。生成器Generator B2A的任務(wù)是將目標(biāo)域DB中的圖像Generated_B轉(zhuǎn)換回原始域DA,這里可以與自動(dòng)編碼器作對(duì)比。這個(gè)轉(zhuǎn)換回原始域的圖像Cyclic_A必須與原始輸入圖像相似,其意義在于,定義非匹配對(duì)數(shù)據(jù)集中原來不存在的有意義的映射。
3 基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換方法
生成器首先利用卷積神經(jīng)網(wǎng)絡(luò)從輸入圖像中提取特征。將圖像壓縮成256*256的特征向量后,通過組合圖像的不相近特征,將待轉(zhuǎn)換的圖像在Discriminator A域中特征向量轉(zhuǎn)換為Discriminator B域中特征向量。轉(zhuǎn)換階段的神經(jīng)網(wǎng)絡(luò)層能夠?qū)崿F(xiàn)在特征向量轉(zhuǎn)換的同時(shí)保留原始圖像的特征。在編碼和轉(zhuǎn)換之后,生成器進(jìn)入解碼階段,利用反卷積層完成從特征向量中還原出低級(jí)特征的任務(wù),最后得到生成圖像。
判別器在CycleGAN工作過程中從圖像中提取特征,再通過添加產(chǎn)生一維輸出的卷積層來確定提取的特征是否屬于特定的類別。
通過訓(xùn)練判別器對(duì)該風(fēng)格圖像的判別能力以及生成器生成該類風(fēng)格圖像的能力,當(dāng)兩者達(dá)到納什均衡時(shí)即生成器和判別器相互優(yōu)化促進(jìn)達(dá)到兩者最優(yōu)對(duì)抗的狀態(tài)時(shí),認(rèn)為訓(xùn)練已經(jīng)達(dá)到較為成熟的程度。
以水墨畫風(fēng)格的訓(xùn)練為例,數(shù)據(jù)集包括500張水墨畫和500張風(fēng)景圖。訓(xùn)練過程中,每次從數(shù)據(jù)集中選取一張水墨畫與一張風(fēng)景圖進(jìn)行一次對(duì)應(yīng)轉(zhuǎn)換訓(xùn)練。每個(gè)epoch(訓(xùn)練周期)進(jìn)行600次迭代。當(dāng)生成器的參數(shù)G與判別器的參數(shù)D最后穩(wěn)定在G=D=0.5左右時(shí),訓(xùn)練過程結(jié)束。
4 基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換App的設(shè)計(jì)與開發(fā)
采用Python+PyTorch框架實(shí)現(xiàn)基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換Web服務(wù),基于該Web服務(wù)采用Android Studio開發(fā)了一款A(yù)ndroid App,實(shí)現(xiàn)了圖像風(fēng)格轉(zhuǎn)換功能。
5 結(jié)束語
本文研究了基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換方法,實(shí)現(xiàn)了基于CycleGAN的圖片風(fēng)格轉(zhuǎn)換Web服務(wù),并在此基礎(chǔ)上設(shè)計(jì)與開發(fā)了圖片風(fēng)格轉(zhuǎn)換App。應(yīng)用效果表明,該基于CycleGAN的圖像風(fēng)格轉(zhuǎn)換方法能較好的實(shí)現(xiàn)不同風(fēng)格的圖像風(fēng)格轉(zhuǎn)換。
參考文獻(xiàn)(References):
[1] David Bau et al.Network dissection:Quantifying interpretability of deepvisual representations[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:6541–6549
[2] Chunlei Chai et al. A one-to-many conditional generative adversarial net-work framework for multiple image-to-image translations[J]. Multimedia Tools and Applications,2018.77(17):22339–22366
[3] Vincent Dumoulin, Jonathon Shlens, and Manjunath Kudlur. A learnedrepresentation for artistic style. Proc. of ICLR2, 2017.
[4] Leon A Gatys, Alexander S Ecker, and Matthias Bethge. Image styletransfer using convolutional neural networks[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016.2414–2423
[5] Aaron Gokaslan et al. Improving shape deformation in unsupervisedimage-to-image translation[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018.649–665
[6] Xun Huang and Serge Belongie. Arbitrary style transfer in real-time withadaptive instance normalization[C]. Proceedings of the IEEE? Conference on Computer Vision and Pattern Recognition,2017.1501–1510
[7] Phillip Isola et al. Image-to-image translation with conditional adversar-ial networks[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:1125–1134
[8] Justin Johnson,Alexandre Alahi,and Li Fei-Fei. Perceptual losses forreal-time style transfer and super-resolution[C]. European conference oncomputer vision. Springer,2016:694–711
[9] Justin Johnson,Agrim Gupta, and Li Fei-Fei.Image Generation from Scene Graphs[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018:1219–1228
[10] Karen Simonyan and Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv,1409.1556, 2014.
[11] Jun-Yan Zhu et al. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017: 2223–2232
[12] 王萬良,李卓蓉. 生成式對(duì)抗網(wǎng)絡(luò)研究進(jìn)展[J]. 通信學(xué)報(bào), 2018.2:135–148