王 鹿, 曾國(guó)輝, 黃 勃
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院, 上海 201620)
近年來(lái),隨著人工智能、計(jì)算機(jī)視覺技術(shù)的迅猛發(fā)展,越來(lái)越多的機(jī)器學(xué)習(xí)應(yīng)用場(chǎng)景在不斷涌現(xiàn)。與此同時(shí),目前有著較好表現(xiàn)的監(jiān)督學(xué)習(xí)需要大量的標(biāo)注數(shù)據(jù),但標(biāo)注數(shù)據(jù)是一項(xiàng)枯燥無(wú)味且花費(fèi)巨大的任務(wù),所以無(wú)監(jiān)督的image-to-image式風(fēng)格遷移學(xué)習(xí)即吸引了學(xué)界的更多關(guān)注,并已成為深度學(xué)習(xí)技術(shù)的重要應(yīng)用之一。對(duì)于傳統(tǒng)監(jiān)督式機(jī)器學(xué)習(xí)而言,遷移學(xué)習(xí)都是基于同分布假設(shè)[1],同時(shí)需要大量標(biāo)注數(shù)據(jù),然而實(shí)際使用不同數(shù)據(jù)集的過(guò)程中可能出現(xiàn)一些問題,比如數(shù)據(jù)分布差異,訓(xùn)練數(shù)據(jù)過(guò)期,也就是已然做過(guò)標(biāo)定的數(shù)據(jù)要被丟棄,有些應(yīng)用中數(shù)據(jù)分布也會(huì)隨著時(shí)間的推移產(chǎn)生變化。因此,如何充分利用已經(jīng)標(biāo)注好的數(shù)據(jù),同時(shí)又保證在新任務(wù)上的模型精度已經(jīng)成為一個(gè)亟需解決的難題?;诖耍疚臄M對(duì)基于深度學(xué)習(xí)的遷移學(xué)習(xí)進(jìn)行研究[2-3]。
目前,研究發(fā)現(xiàn)對(duì)一幅圖像而言,風(fēng)格和內(nèi)容在卷積神經(jīng)網(wǎng)絡(luò)中的表達(dá)是可以分開的。也就是說(shuō),研究中可以獨(dú)立地操縱2種表達(dá)來(lái)產(chǎn)生新的、可以感受的有意義的圖片。在本文中,將使用VGG-16、VGG-19和 Cycle GAN[4],來(lái)實(shí)現(xiàn)風(fēng)格遷移,對(duì)比這3種網(wǎng)絡(luò)的結(jié)果,分析后發(fā)現(xiàn),Cycle GAN的效果最好,VGG-16和VGG-19雖然也有一定的效果,但是合成圖像的整體風(fēng)格并不突出,不能滿足本文研究的需求。
圖像風(fēng)格遷移技術(shù)主要有2種。一種是由Gatys等人[5]率先提出的NAAS,該方法以VGG網(wǎng)絡(luò)為基礎(chǔ)進(jìn)行損失網(wǎng)絡(luò)的設(shè)計(jì);另一種是Johnson等人[6]提出的快速圖像風(fēng)格遷移技術(shù)(FNST),該方法基于Gatys等人的研究成果,在損失網(wǎng)絡(luò)的前端添加了一個(gè)Image Transform Net,該網(wǎng)絡(luò)基于殘差網(wǎng)絡(luò)進(jìn)行設(shè)計(jì)。兩者之間的關(guān)系如圖1所示。
Gatys所提出的NAAS是在VGG網(wǎng)絡(luò)的基礎(chǔ)上,利用梯度下降,經(jīng)過(guò)若干次的迭代從而獲得轉(zhuǎn)換風(fēng)格后的圖像。該方法的整體流程如圖2所示。
圖1 快速圖像風(fēng)格遷移方法
Fig. 1 Fast image style migration method
圖2 NASS工作流程圖
VGG (Visual Geometry Group)隸屬于牛津大學(xué), VGG自2014年先后發(fā)布了網(wǎng)絡(luò)模型VGG11~VGG19, 該小組研究證明了增加神經(jīng)網(wǎng)絡(luò)的深度能夠在一定程度上影響神經(jīng)網(wǎng)絡(luò)的性能。VGG網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,其卷積層和池化層可以劃分為不同的塊(Block),從前到后依次編號(hào)為Block1~Block5。每一個(gè)塊內(nèi)包含若干卷積層和一個(gè)池化層。使用同樣大小的卷積核尺寸 (3×3) 和最大池化尺寸 (2×2)。此外,VGG網(wǎng)絡(luò)還有5個(gè)最大池化層,分別分布在不同的卷積層之下[7-8]。
(1) VGG16。VGG16共有13個(gè)卷積層(Convolutional Layer),分別用conv3-XXX表示,3個(gè)全連接層(Fully connected Layer)分別用FC-XXXX表示,5個(gè)池化層(Pool layer)分別用MaxPool表示。卷積層和全連接層具有權(quán)重系數(shù),因此也被稱為權(quán)重層,總數(shù)目為13+3=16,這即是VGG16中16的來(lái)源??紤]到池化層不涉及權(quán)重,因此不屬于權(quán)重層,不被計(jì)數(shù)。VGG16神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖3所示。
(2) VGG19。VGG19共有16個(gè)卷積層和3個(gè)全連接層。如圖4所示。
以圖4為例,在VGG19的Block2中包含2個(gè)卷積層,卷積核為3×3×3,通道數(shù)都是128,而Block4包含4個(gè)卷積層,1個(gè)最大池化層,通道數(shù)是512。
傳統(tǒng)的GAN的G是將隨機(jī)噪聲轉(zhuǎn)換為圖片,但風(fēng)格遷移中需要將圖片轉(zhuǎn)為圖片,所以這個(gè)時(shí)候就要將圖片作為G的輸入,而G則是學(xué)習(xí)一種映射了。但是用單獨(dú)一個(gè)GAN的訓(xùn)練并不穩(wěn)定,可能導(dǎo)致所有照片全部映射到同一張圖片的mode collapse[9]。為此,就提出了Cycle GAN用來(lái)解決這個(gè)問題,Cycle GAN是將2個(gè)GAN組合起來(lái),其目的是實(shí)現(xiàn)非成對(duì)image的轉(zhuǎn)換,尤其適用于圖像風(fēng)格遷移中。為了使得GAN更加穩(wěn)定,引入了此雙向映射的機(jī)制,即A→B的GAN和B→A的GAN,同時(shí)加入了一個(gè)cycle_loss,cycle_loss是采用L1損失設(shè)計(jì)而成[10-11]。所以研究得到Cycle GAN的損失函數(shù),可將其寫為:
圖3 VGG16網(wǎng)絡(luò)結(jié)構(gòu)圖
圖4 VGG19網(wǎng)絡(luò)結(jié)構(gòu)圖
LGAN(F,DX,Y,X)=Ex~Pdata(x)[logDX(x)],
(1)
LGAN(G,DY,X,Y)=Ey~Pdata(y)[logDY(y)],
(2)
接下來(lái),研究得到了循環(huán)一致性損失可表示為:
Lcyc(G,F)=Ex~Pdata(x)[‖F(xiàn)(G(x))-x‖1],
(3)
進(jìn)而,推得總損失的數(shù)學(xué)公式如下:
L(G,F,DX,DY)=LGAN(G,DY,X,Y)+
LGAN(F,DX,Y,X)+λLcyc(G,F).
(4)
(5)
(6)
(7)
綜上可知,總的損失函數(shù)可由下式來(lái)計(jì)算:
(8)
其中,α和β分別是內(nèi)容和風(fēng)格在圖像重構(gòu)中的權(quán)重因子,且滿足:
α+β=1.
(9)
(1)峰值信噪比(Peak Signal to Noise Ratio,PSNR)[12]:這是一種全參考的圖像質(zhì)量評(píng)價(jià)指標(biāo)。運(yùn)算中需用到如下數(shù)學(xué)公式:
(10)
(11)
其中,MSE(Mean Square Error)表示當(dāng)前圖像X和參考圖像Y的均方誤差;H、W分別表示圖像的高度和寬度;n為每像素的比特?cái)?shù),一般取8,即像素灰階數(shù)為256。PSNR,單位是dB,取值范圍為(0,∞),數(shù)值越大表示失真越小。
(2)結(jié)構(gòu)相似性(structural similarity,SSIM)[13]: 這也是一種全參考的圖像質(zhì)量評(píng)價(jià)指標(biāo),可分別從亮度、對(duì)比度、結(jié)構(gòu)三方面度量圖像相似性。運(yùn)算中涉及的數(shù)學(xué)公式可表示為:
(12)
(13)
(14)
其中,uX,uY分別表示圖像X和Y的均值;σX,σY分別表示圖像X和Y的方差;σXY表示圖像X和Y的協(xié)方差,即:
(15)
(16)
(17)
其中,C1、C2、C3為常數(shù),為了避免分母為0的情況,SSIM取值范圍[0,1],值越大,表示圖像失真越小。
本實(shí)驗(yàn)選擇Python語(yǔ)言和Tensorflow, Pytorch框架進(jìn)行圖像風(fēng)格遷移的仿真測(cè)試。實(shí)驗(yàn)環(huán)境為 Intel(R) Core(TM) i5-8300H 2.1GHz CPU, GPU 為 NVIDIA。
(1) VGG16和VGG19訓(xùn)練。由于VGG網(wǎng)絡(luò)深,網(wǎng)絡(luò)架構(gòu)權(quán)重?cái)?shù)量非常大,導(dǎo)致訓(xùn)練非常緩慢,故研究用到的模型就是在ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練的模型。
研究將從預(yù)訓(xùn)練的模型中,獲取卷積層部分的參數(shù),用于構(gòu)建仿真中使用的模型,這些參數(shù)均是作為常量使用,即不再被訓(xùn)練,在反向傳播的過(guò)程中也不會(huì)改變,此外VGG中的全連接層舍棄掉。參數(shù)設(shè)置見表1。
(2) Cycle GAN。使用vangogh2photo數(shù)據(jù)集,Generator采用的是文獻(xiàn)[6]中的網(wǎng)絡(luò)結(jié)構(gòu);一個(gè)residual block組成的網(wǎng)絡(luò),降采樣部分采用stride 卷積,增采樣部分采用反卷積;Discriminator采用的仍是pix2pix中的Patch GANs結(jié)構(gòu),大小為70×70,Lr=0.000 2。對(duì)于前100個(gè)周期,保持相同的學(xué)習(xí)速率0.000 2,然后在接下來(lái)的100個(gè)周期內(nèi)線性衰減到0。
表1 VGG16與19相關(guān)訓(xùn)練參數(shù)設(shè)定
實(shí)例中的風(fēng)格圖片選為梵高先生的名畫《星夜》,如圖5所示。
圖5 模板藝術(shù)圖《星夜》
分別使用Cycle GAN、VGG16、VGG19進(jìn)行實(shí)驗(yàn), 通過(guò)生成的圖片觀察不同目標(biāo)函數(shù)的效果,實(shí)例中的風(fēng)格圖片均為梵高先生的名畫《星夜》,實(shí)驗(yàn)運(yùn)行效果見圖6,圖6的對(duì)應(yīng)數(shù)據(jù)指標(biāo)見表2。
通過(guò)對(duì)圖6以及表2 的對(duì)比發(fā)現(xiàn),VGG16,VGG19得到的結(jié)果相近,相較之下藝術(shù)風(fēng)格并不濃烈,而Cycle GAN給人的直觀感受就好得多,色度適宜,藝術(shù)化表現(xiàn)也恰到好處。
圖6 實(shí)驗(yàn)效果
表2 實(shí)驗(yàn)指標(biāo)
Tab. 2 Experimental index
SSIM/PSNRVGG-19VGG-16Cycle GANImage_10.481 7/17.473 00.449 4/16.868 80.424 6/16.190 5Image_20.431 0/17.329 70.396 1/17.069 80.373 0/16.722 1Image_30.432 2/16.645 30.459 2/17.248 00.428 2/16.390 3
VGG-16與VGG-19本質(zhì)上并無(wú)太大區(qū)別,兩者均繼承了Alex Net的深度思想,以其較深的網(wǎng)絡(luò)結(jié)構(gòu)、較小的卷積核和池化采樣域,使其能夠在獲得更多圖像特征的同時(shí)控制參數(shù)的個(gè)數(shù),避免過(guò)多的計(jì)算量以及過(guò)于復(fù)雜的結(jié)構(gòu),如此一來(lái)VGG就能更好地找出內(nèi)在特性,從而提取圖像的style features。
對(duì)比之下,由2個(gè)鏡像對(duì)稱的GAN組成的Cycle GAN不僅不需要成對(duì)的數(shù)據(jù)樣本,在損失函數(shù)方面也進(jìn)一步考慮了防止生成器G與F生成的樣本相互矛盾,保證生成的樣本與真實(shí)的樣本同分布,這樣也就保證了生成圖像的連續(xù)性。
總體來(lái)說(shuō),GAN網(wǎng)絡(luò)在這種image-to-image 領(lǐng)域內(nèi)還是存在很大的優(yōu)勢(shì)。
本文選用卷積神經(jīng)網(wǎng)絡(luò)模型VGG16、VGG19和Cycle GAN作為訓(xùn)練模型,詳細(xì)論述三者的網(wǎng)絡(luò)結(jié)構(gòu),在pytorch框架下實(shí)現(xiàn)圖像的風(fēng)格遷移。對(duì)比分析了3種模型的優(yōu)缺點(diǎn)。最后,以梵高的著作《星夜》為風(fēng)格模板,以峰值信噪比(PSNR)和結(jié)構(gòu)相似度(SSIM)作為評(píng)價(jià)指標(biāo),選取3幅真實(shí)的照片做主觀和客觀評(píng)價(jià),結(jié)果表明Cycle GAN效果最佳。但是在實(shí)際中,由于卷積神經(jīng)網(wǎng)絡(luò)的不可控性,以及噪聲處理等原因,可能會(huì)使得網(wǎng)絡(luò)的結(jié)果變得不可接受,這也是后續(xù)有待深入研究加以改進(jìn)的問題。