莊軒權(quán),李彩霞,黎培興,2
(1. 中山大學(xué)數(shù)學(xué)學(xué)院,廣東廣州510275;2. 中山大學(xué)廣東省計(jì)算科學(xué)重點(diǎn)實(shí)驗(yàn)室,廣東廣州510275)
風(fēng)格遷移技術(shù)指對(duì)某個(gè)圖像進(jìn)行渲染,使其藝術(shù)風(fēng)格與某個(gè)藝術(shù)繪畫作品相似,且畫面的主體內(nèi)容不變(見圖1)。2015 年Gatys 等[1-2]開創(chuàng)性地將卷積神經(jīng)網(wǎng)絡(luò)運(yùn)用到風(fēng)格遷移領(lǐng)域,提出了度量特征相關(guān)性的Gram 矩陣用于風(fēng)格表示,開創(chuàng)了現(xiàn)代風(fēng)格遷移時(shí)代。Gram 矩陣的核心思想是利用預(yù)訓(xùn)練網(wǎng)絡(luò)強(qiáng)大的特征提取能力得到有意義的特征映射輸出,并將特征映射之間的相關(guān)性作為風(fēng)格的度量。此后,Justin 等[3]基于Gram 矩陣設(shè)計(jì)了基于前饋網(wǎng)絡(luò)的快速風(fēng)格遷移模型,使得Prisma等圖像藝術(shù)風(fēng)格化的應(yīng)用得以流行。
圖1 風(fēng)格遷移示例Fig. 1 Examples of style transfer
然而自Gatys等提出Gram矩陣以來,風(fēng)格遷移研究領(lǐng)域?qū)τ趽p失函數(shù)的構(gòu)造一直沒有足夠的探索,本文提出使用層間互相關(guān)矩陣作為Gram 矩陣的代替或補(bǔ)充,在得到良好結(jié)果的情況下縮短20%以上的計(jì)算時(shí)間,從而提高訓(xùn)練效率。
2015 年,Gatys 等[1-2]提出使用Gram 矩陣來度量圖像的風(fēng)格,由此開辟了基于深度學(xué)習(xí)的圖像風(fēng)格遷移領(lǐng)域。對(duì)于一張圖片,使用預(yù)訓(xùn)練好的分類網(wǎng)絡(luò),如VGG-16[4],將圖片輸入得到某一層的特征映射,對(duì)特征映射的各個(gè)通道兩兩做互相關(guān)計(jì)算得到對(duì)稱矩陣,這個(gè)矩陣就稱為Gram矩陣。嚴(yán)格來說,衡量圖像之間風(fēng)格差異的損失函數(shù)LS(Is,X)定義為
其中,Is和X 分別表示風(fēng)格圖像和待優(yōu)化圖像,li表示特征映射處于預(yù)訓(xùn)練網(wǎng)絡(luò)的層數(shù),Lli為第li層兩圖像間的風(fēng)格損失,wli為對(duì)應(yīng)的權(quán)重參數(shù)。第ls層的風(fēng)格損失函數(shù)定義為
風(fēng)格遷移任務(wù)的目標(biāo)是使用風(fēng)格圖像的紋理特點(diǎn)繪制內(nèi)容圖像的內(nèi)容信息。因此,除了對(duì)風(fēng)格進(jìn)行迭代逼近之外,對(duì)內(nèi)容的逼近也同樣重要。在Gatys 等的實(shí)驗(yàn)中,直接使用預(yù)訓(xùn)練網(wǎng)絡(luò)的中間幾層特征映射之間的像素值差異作為衡量語義信息相似度的標(biāo)準(zhǔn),并獲得了良好的效果。這其中的原因是這些預(yù)訓(xùn)練網(wǎng)絡(luò)都是以圖像分類任務(wù)為目標(biāo)進(jìn)行訓(xùn)練的,訓(xùn)練集包含了大量的物體類別,因此卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練中降低多類別交叉熵?fù)p失函數(shù)的過程中,卷積層的卷積核在試圖提取各種能描述不同物體差異的信息,這其中就包括了低層到高層的語義信息。以內(nèi)容圖像和待優(yōu)化圖像作為輸入,預(yù)訓(xùn)練網(wǎng)絡(luò)在第li層得到的特征映射的損失嚴(yán)格定義為
其中,Ic表示內(nèi)容原始圖像,X 表示待優(yōu)化圖像,j表示在第li層特征映射中第j個(gè)卷積核的編號(hào),k表示該卷積核得到的特征映射中第k 個(gè)位置的像素點(diǎn)??梢钥闯?,衡量?jī)蓮垐D像內(nèi)容上差異的損失函數(shù)僅僅只是簡(jiǎn)單使用特征映射之間的平方損失,我們不得不感嘆于卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的特征提取能力。由各層內(nèi)容損失得到的總體內(nèi)容損失為
其中,wli為賦予第li層內(nèi)容損失的權(quán)重。由此我們得到了以待優(yōu)化圖像,內(nèi)容圖像,風(fēng)格圖像作為共同輸入的三元損失
其中α 和β 為內(nèi)容損失和風(fēng)格損失的權(quán)重參數(shù)。在原文中,作者選擇的預(yù)訓(xùn)練網(wǎng)絡(luò)是VGG-16,VGG-16在VGG系列的卷積神經(jīng)網(wǎng)絡(luò)中是應(yīng)用最為廣泛的,因?yàn)槠渚哂辛己玫臏?zhǔn)確率以及不錯(cuò)的效率。在內(nèi)容損失方面,作者選取了conv4_2 作為計(jì)算內(nèi)容損失的特征映射。在風(fēng)格損失方面,作者選 取 了conv1_1、 conv2_1、 conv3_1、 conv4_1、conv5_1 作為計(jì)算風(fēng)格損失的特征映射,并賦予各層相等的權(quán)重,而α/β選取10-3或10-4。
盡管使用Gram 矩陣進(jìn)行的圖像風(fēng)格遷移取得了良好的效果,但對(duì)于Gram 矩陣的本質(zhì)、是否有其他方式度量風(fēng)格差異等問題,文中并沒有給出答案。Li 等[5]從遷移學(xué)習(xí)的角度出發(fā)去看圖像風(fēng)格遷移。文章將風(fēng)格遷移任務(wù)看做是一種域適應(yīng)的問題,并從理論上證明了Gram 矩陣實(shí)際上與二階多項(xiàng)式核的最大均值差異等價(jià)。從這種等價(jià)關(guān)系可知:
(i)圖像的風(fēng)格可以本質(zhì)上表示為卷積神經(jīng)網(wǎng)絡(luò)中不同卷積層下的特征分布;
(ii)風(fēng)格遷移的過程可以看成是從內(nèi)容圖像到風(fēng)格圖像的一種分布調(diào)整。
Li 等嘗試將二階多項(xiàng)式核函數(shù)替換成其他多項(xiàng)式核函數(shù)或高斯核函數(shù),實(shí)驗(yàn)結(jié)果表明,不同的核函數(shù)替代Gram 矩陣進(jìn)行風(fēng)格遷移能得到類似的良好結(jié)果,同時(shí)又有許多不同的細(xì)節(jié)上的變化,從最小均值差異出發(fā)使用不同的核函數(shù)度量風(fēng)格差異的做法大大豐富了風(fēng)格遷移結(jié)果的多樣性。
針對(duì)Gatys 等[1]通過迭代更新像素值的方式效率較低的問題,以Justin等[3]為代表的一系列研究提出了使用前饋網(wǎng)絡(luò)直接輸出風(fēng)格遷移結(jié)果的快速風(fēng)格遷移方法,按模型可承載的風(fēng)格數(shù)量可劃分為單模型單風(fēng)格方法[3,6]、單模型多風(fēng)格方法[7]、單模型任意風(fēng)格方法[8-9]。
自2014 年Goodfellow 等[10]提出生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN) 以來,有關(guān)生成式對(duì)抗網(wǎng)絡(luò)的研究便一直活躍在眾多研究領(lǐng)域當(dāng)中。深度卷積生成式對(duì)抗網(wǎng)絡(luò)[11]提出使用卷積層和轉(zhuǎn)置卷積層對(duì)生成式對(duì)抗網(wǎng)絡(luò)進(jìn)行改進(jìn),為生成式對(duì)抗網(wǎng)絡(luò)在圖像領(lǐng)域的發(fā)展開拓了更優(yōu)的思路。
近年來,部分研究將生成式對(duì)抗網(wǎng)絡(luò)運(yùn)用于兩個(gè)域之間的圖像的相互轉(zhuǎn)換,這可以看作是一種廣義上的風(fēng)格遷移方法。Zhu 等[12]提出使用兩個(gè)對(duì)稱的生成式對(duì)抗網(wǎng)絡(luò)構(gòu)造一種循環(huán)一致性損失,從而實(shí)現(xiàn)將輸入的圖像向特定分布轉(zhuǎn)換的目的,如將夏季的圖像轉(zhuǎn)換為冬季的圖像。類似的想 法 還 有DualGAN[13]和DiscoGan[14]等。Style-GAN[15]利用風(fēng)格遷移領(lǐng)域提出的AdaIN 模塊[8]對(duì)生成式對(duì)抗網(wǎng)絡(luò)進(jìn)行優(yōu)化,成功實(shí)現(xiàn)了對(duì)輸入圖像的各種細(xì)節(jié)進(jìn)行微調(diào)的重大突破,成為生成式對(duì)抗網(wǎng)絡(luò)和廣義風(fēng)格遷移領(lǐng)域的里程碑之一。
盡管使用生成式對(duì)抗網(wǎng)絡(luò)系列的方法也能做到將輸入的圖片進(jìn)行紋理風(fēng)格上的轉(zhuǎn)化并保持圖片內(nèi)容上的一致性,但和基于Gram 矩陣的一系列風(fēng)格遷移方法有許多差異:
(i)基于Gram 矩陣的風(fēng)格遷移方法使用Gram矩陣衡量圖像之間的風(fēng)格差異,是一個(gè)可以被計(jì)算的統(tǒng)計(jì)量,可以量化地給出任意一張圖片的風(fēng)格數(shù)值;生成式對(duì)抗網(wǎng)絡(luò)系列方法無法顯式給出風(fēng)格的定義,而是通過對(duì)抗訓(xùn)練對(duì)兩個(gè)域的分布進(jìn)行學(xué)習(xí),試圖讓網(wǎng)絡(luò)自行擬合出一套進(jìn)行風(fēng)格轉(zhuǎn)換的參數(shù)。
(ii)基于Gram 矩陣的風(fēng)格遷移方法可以學(xué)習(xí)任意單一圖像的紋理風(fēng)格特征并將其遷移到任意圖像之上;而生成式對(duì)抗網(wǎng)絡(luò)由于損失函數(shù)和訓(xùn)練的動(dòng)機(jī)限制,只能學(xué)習(xí)一類圖像的風(fēng)格而無法刻畫單一圖像的紋理風(fēng)格特征,比如其通過訓(xùn)練可以學(xué)習(xí)畫家梵高的畫作整體風(fēng)格,但無法很好地學(xué)習(xí)梵高的《Starry Night》這幅畫作的風(fēng)格。盡管一些工作嘗試通過生成式對(duì)抗網(wǎng)絡(luò)學(xué)習(xí)單一圖像的紋理分布,但基本只能輸出與原風(fēng)格圖像在內(nèi)容上極度統(tǒng)一的結(jié)果[16],而基于Gram 矩陣的方法通過將對(duì)多個(gè)圖像分別進(jìn)行學(xué)習(xí)得到的參數(shù)進(jìn)行簡(jiǎn)單組合就可以得到融合后的風(fēng)格輸出,因而也能學(xué)習(xí)一類圖像的風(fēng)格紋理特征。
(iii)由于(ii)中提及的原因,基于Gram 矩陣的風(fēng)格遷移方法得到一個(gè)輸出結(jié)果良好的模型所需的數(shù)據(jù)獲取成本會(huì)遠(yuǎn)低于基于生成式對(duì)抗網(wǎng)絡(luò)的方法;另外,由于期望網(wǎng)絡(luò)自行學(xué)習(xí)一種風(fēng)格紋理的概率分布,在訓(xùn)練生成式對(duì)抗網(wǎng)絡(luò)時(shí)需要更龐大的參數(shù)量,以及更多的訓(xùn)練技巧和嘗試從而規(guī)避無法收斂或?qū)W習(xí)不出特征的問題,其訓(xùn)練的時(shí)間成本也遠(yuǎn)大于Gram矩陣方法。
(iv)生成式對(duì)抗網(wǎng)絡(luò)在生成高分辨率的圖像上效果不如低分辨率圖片,或是需要更大的模型和更長(zhǎng)的訓(xùn)練周期才能達(dá)到較好效果;基于Gram矩陣的方法則在各個(gè)分辨率尺度上都有穩(wěn)定的表現(xiàn)。
自Gatys 等[1-2]的工作以來,基于Gram 矩陣的風(fēng)格遷移方法一直是該領(lǐng)域的主流方法,至少現(xiàn)階段包括基于生成式對(duì)抗網(wǎng)絡(luò)在內(nèi)的方法都還無法得到這樣高效且效果良好的風(fēng)格遷移結(jié)果。但Gram 矩陣作為人工設(shè)計(jì)的統(tǒng)計(jì)量,必然受到人們先驗(yàn)知識(shí)的限制,通過對(duì)生成式對(duì)抗網(wǎng)絡(luò)訓(xùn)練過程的深度挖掘以及與Gram 矩陣之間的關(guān)聯(lián)的分析或許能為風(fēng)格遷移進(jìn)一步的發(fā)展提供動(dòng)力。
卷積神經(jīng)網(wǎng)絡(luò)的卷積核提取的特征等級(jí)往往與該卷積核所處的深度有關(guān),即淺層的卷積核提取低級(jí)特征,深層的卷積核提取高級(jí)特征。理論上,Gram 矩陣只能表現(xiàn)同層級(jí)的特征之間的相關(guān)程度。針對(duì)這一問題,我們提出使用層間互相關(guān)矩陣來進(jìn)行補(bǔ)充。
給定圖像I 在預(yù)訓(xùn)練網(wǎng)絡(luò)的第l1、l2層的輸出Fl1(I)及Fl2(I)(l1<l2),層間互相關(guān)矩陣為一個(gè)Nl1× Nl2的矩陣Gl1l2=(Gjk)Nl1×Nl2,
其中Nl1和Nl2分別為預(yù)訓(xùn)練網(wǎng)絡(luò)的第l1層和第l2層的通道數(shù),M表示特征映射的長(zhǎng)寬乘積,D(*)為降采樣函數(shù)。
由于不同深度的特征映射的長(zhǎng)寬不一致(如VGG-16不同層的特征映射的長(zhǎng)寬最大相差16倍),我們需要對(duì)淺層特征映射使用降采樣或?qū)ι顚犹卣饔成涫褂蒙蓸?,使得用于層間互相關(guān)矩陣計(jì)算的兩個(gè)特征映射的長(zhǎng)寬一致??紤]到計(jì)算成本等原因,我們選擇對(duì)淺層特征映射進(jìn)行降采樣,降采樣函數(shù)可使用平均池化或最大池化等。
對(duì)于不同的特征映射組,需要使用不同的降采樣參數(shù)使得兩者得感受野對(duì)齊。以VGG-16網(wǎng)絡(luò)為例,通過對(duì)感受野的計(jì)算可以發(fā)現(xiàn),特征映射relu2_1的每一個(gè)元素實(shí)際上對(duì)應(yīng)著特征映射relu1_1 中一個(gè)8× 8 大小的區(qū)域。具體地,我們需要在大小為3 的填充下使用8× 8 大小的池化濾波器以步長(zhǎng)為2的方式對(duì)relu1_1進(jìn)行池化操作。表1中為VGG-16 中部分特征映射層使用池化方式進(jìn)行層間互相關(guān)計(jì)算應(yīng)該使用的參數(shù),特征映射層A為池化操作的作用層。
表1 層間互相關(guān)矩陣計(jì)算池化操作參數(shù)Table 1 pooling parameters for cross-layer correlation matrix computation
2.2.1 語義特征的登記對(duì)比 Gram 矩陣可以理解為層內(nèi)互相關(guān)矩陣,計(jì)算同等級(jí)語義特征間的相關(guān)程度。與之對(duì)應(yīng),層間互相關(guān)矩陣計(jì)算不同等級(jí)語義特征間的相關(guān)程度。從這個(gè)意義上來理解,Gram 矩陣和層間互相關(guān)矩陣在對(duì)圖像風(fēng)格的描述上應(yīng)該是互為補(bǔ)充的。
從直觀理解出發(fā),層間互相關(guān)矩陣的意義甚至比層內(nèi)互相關(guān)矩陣更重要。舉例而言,不同的顏色應(yīng)該屬于同一等級(jí)的特征,不同的動(dòng)物、植物也應(yīng)該屬于同一等級(jí)的特征,而對(duì)于圖像中一塊具體的感受野來說,只應(yīng)該是某個(gè)顏色或者某種動(dòng)植物,而不應(yīng)該同時(shí)具備多個(gè)。相比之下,層間互相關(guān)矩陣的可解釋性更強(qiáng),如某種動(dòng)植物或山水的特征與某個(gè)顏色或線條紋理的特征相關(guān)性強(qiáng),可以理解為作品中對(duì)某種事物的刻畫使用了某種技法,這些相關(guān)性共同描述了作品的藝術(shù)風(fēng)格。因此,如果從相同深度的卷積核只提取同等級(jí)的語義特征這個(gè)前提出發(fā),層間互相關(guān)矩陣對(duì)于風(fēng)格差異的描述更加具有可解釋性。然而在實(shí)際的預(yù)訓(xùn)練網(wǎng)絡(luò)中,相同深度的卷積核提取的特征有時(shí)也難以說明是否為同一等級(jí)的特征,甚至有許多卷積核提取的特征拿出來單獨(dú)看無法從人的視覺角度理解,因此無論層間互相關(guān)矩陣還是層內(nèi)互相關(guān)矩陣在實(shí)際的應(yīng)用中都表現(xiàn)出相似的效果。
2.2.2 計(jì)算與存儲(chǔ)效率對(duì)比 顯然,區(qū)別于Gram矩陣的對(duì)稱方陣的特點(diǎn),層間互相關(guān)矩陣是一個(gè)C1× C2的矩陣,且每個(gè)元素對(duì)應(yīng)的含義都唯一。而相比之下Gram 矩陣有將近一半的重復(fù)元素,信息的冗余度較高,占用大量?jī)?nèi)存的同時(shí)卻沒有盡可能精簡(jiǎn)出不重復(fù)的信息。層間互相關(guān)矩陣通過融合兩個(gè)特征映射層使得其可以用單個(gè)矩陣對(duì)兩個(gè)特征映射層的信息進(jìn)行表達(dá),且其存儲(chǔ)和計(jì)算量都低于Gram矩陣方法。
以relu3_1 和relu5_1 為例,使用Gram 方法進(jìn)行風(fēng)格遷移需要存儲(chǔ)的Gram 矩陣大小為2562+5122= 327 680,使用層間互相關(guān)矩陣方法需要存儲(chǔ)的矩陣大小為256 × 512 = 131072,僅為Gram方法存儲(chǔ)量的40%,自然,風(fēng)格損失的計(jì)算量也為Gram 方法的40%;而計(jì)算Gram 矩陣本身的成本也比計(jì)算層間互相關(guān)矩陣要高,Gram 矩陣方法需要 進(jìn) 行 約2 ×(2562× 642+ 5122× 162)≈6.7× 108次運(yùn)算,層間互相關(guān)方法僅需進(jìn)行約2 ×(256 ×512 × 162)≈6.7× 107次運(yùn)算,僅為前者的10%。
然而Gram 矩陣相對(duì)層間互相關(guān)矩陣而言,由于不需要關(guān)注特征映射大小改變的問題,在訓(xùn)練過程中計(jì)算過程更加簡(jiǎn)單可理解,相比之下層間互相關(guān)矩陣的計(jì)算不僅要根據(jù)特定的兩個(gè)層的選擇來確定采樣操作中的參數(shù),對(duì)于不同的預(yù)訓(xùn)練網(wǎng)絡(luò)而言也要重新計(jì)算,增加了額外的計(jì)算且拓展性不如Gram矩陣好。
本文實(shí)驗(yàn)采用與Gatys 等[1]相似的模型結(jié)構(gòu),選取多個(gè)特征映射層及其組合計(jì)算Gram 矩陣和層間互相關(guān)矩陣,并對(duì)比它們?cè)诩y理合成及風(fēng)格遷移中的實(shí)際效果。
實(shí)驗(yàn)使用python3.6 及tensorflow1.13,預(yù)訓(xùn)練網(wǎng)絡(luò)使用matlab 平臺(tái)在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練的VGG-16 網(wǎng)絡(luò)①M(fèi)atConvNet Pretrained Models.http://www.vlfeat.org/matconvnet/pretrained/imagenet-ilsvrc-classification.,使用一塊Tesla K80 GPU 加速。所有圖片均縮放至256 × 256 大小,區(qū)別于Gatys等[1]的實(shí)驗(yàn),我們使用Adam 優(yōu)化器[17],學(xué)習(xí)率設(shè)置為10-2。在紋理合成實(shí)驗(yàn)中,損失函數(shù)僅使用風(fēng)格損失,不加入內(nèi)容損失。
3.2.1 優(yōu)化器的選擇 在本文所進(jìn)行的所有實(shí)驗(yàn)中,統(tǒng)一選擇了Adam 優(yōu)化器進(jìn)行模型的訓(xùn)練。在Gatys等[1]最初提出的風(fēng)格遷移方法中,使用了LBFGS 方法進(jìn)行梯度求解。我們注意到,從Johnson等[3]開始的一系列風(fēng)格遷移的研究中,使用Adam優(yōu)化器已經(jīng)成為了主流的方法。在大量的研究實(shí)驗(yàn)中,Adam 優(yōu)化器證明了其在大規(guī)模參數(shù)優(yōu)化當(dāng)中卓越的性能[18-19],幾乎所有的深度學(xué)習(xí)框架對(duì)其都有良好的支持,更方便結(jié)果的橫向比對(duì)。Adam 算法的提出時(shí)間和Gatys 等[1]提出Gram 矩陣的時(shí)間相近,在當(dāng)時(shí)仍未普遍使用,但現(xiàn)如今使用Adam 算法已經(jīng)是主流的做法。為了保持實(shí)驗(yàn)條件的一致性,我們?cè)趶?fù)現(xiàn)Gatys 等[1]提出的方法時(shí)也將優(yōu)化方法改為了Adam 方法,以保證結(jié)果對(duì)比的公正客觀。
3.2.2 特征提取網(wǎng)絡(luò)的選擇 Gatys 等[1]的實(shí)驗(yàn)中選擇了VGG-19[4]作為特征提取網(wǎng)絡(luò),這也是VGG 系列中最深且性能最強(qiáng)悍的網(wǎng)絡(luò)。在本文的所有實(shí)驗(yàn)中,特征提取網(wǎng)絡(luò)都選擇了VGG-16 網(wǎng)絡(luò)。這是由于在多個(gè)權(quán)威的圖像分類數(shù)據(jù)集上VGG-19 相比VGG-16 在準(zhǔn)確率上的提升都不明顯,且參數(shù)量更大,占用資源更多。圖像分類的準(zhǔn)確率相當(dāng)反映出模型在特征提取上的能力相當(dāng),而風(fēng)格遷移中使用預(yù)訓(xùn)練的特征網(wǎng)絡(luò)的核心目的就是借助其特征提取能力得到有意義的特征映射,因此選擇VGG-16 與VGG-19 在結(jié)果上的區(qū)別并不明顯(可以從本文的實(shí)驗(yàn)和Gatys 等[1]的實(shí)驗(yàn)結(jié)果對(duì)比看出),綜合實(shí)驗(yàn)的計(jì)算資源限制等因素,本文使用VGG-16代替VGG-19。
近年來,一些具有革命性意義的模型改進(jìn)方法使得更深更大的神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練成為可能,在性能上也大大超越了早期的VGG 等模型[20-21]。然而,這些方法需要的計(jì)算規(guī)模也遠(yuǎn)超早期的方法,且往往層數(shù)很大,這會(huì)給風(fēng)格遷移任務(wù)帶來一個(gè)問題,即如何有效地選擇適合的特征映射層進(jìn)行Gram 矩陣或?qū)娱g互相關(guān)矩陣的計(jì)算。由于使用大部分特征映射層計(jì)算得到的Gram 矩陣共同進(jìn)行風(fēng)格損失的計(jì)算并不現(xiàn)實(shí),而通過實(shí)驗(yàn)對(duì)比選擇適合的特征映射層又有層數(shù)過多的問題導(dǎo)致實(shí)驗(yàn)成本較大,使用最新的高精度模型作為特征提取網(wǎng)絡(luò)并不是一個(gè)好的選擇。這也解釋了大部分風(fēng)格遷移方法的研究中都使用較淺的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行特征提取的原因。
3.3.1 風(fēng)格紋理學(xué)習(xí)實(shí)驗(yàn) 風(fēng)格紋理學(xué)習(xí)實(shí)驗(yàn)使用不同的特征映射層計(jì)算層間互相關(guān)矩陣和Gram矩陣,對(duì)六幅繪畫作品的風(fēng)格紋理進(jìn)行學(xué)習(xí),得到輸出結(jié)果(圖2)。層間互相關(guān)矩陣方法全部使用平均池化對(duì)淺層特征映射做降采樣處理。從輸出結(jié)果可以看出,單純使用層間互相關(guān)矩陣作為損失函數(shù)學(xué)習(xí)到的風(fēng)格紋理與使用Gram 矩陣的模型得到的相似,說明單純使用層間互相關(guān)矩陣也可以很好地完成風(fēng)格遷移的目標(biāo);其次,通過對(duì)輸出結(jié)果的觀察我們可以看出,層間互相關(guān)矩陣方法得到的輸出結(jié)果的語義等級(jí)(紋理的顆粒度、色彩深淺)大概處于其使用的兩個(gè)特征映射層分別使用Gram 矩陣方法進(jìn)行紋理學(xué)習(xí)得到的輸出結(jié)果之間,可以看做是兩者的一個(gè)加權(quán)融合。
另外,從風(fēng)格紋理學(xué)習(xí)的實(shí)驗(yàn)中我們發(fā)現(xiàn)了一些值得關(guān)注的細(xì)節(jié)問。
(i)層間互相關(guān)矩陣使用的兩個(gè)特征映射層越深,學(xué)到的風(fēng)格圖像中的語義信息越多。這也映證了越深的特征映射層會(huì)提取越多高級(jí)特征,使得輸出結(jié)果帶有越多風(fēng)格圖像中的畫面輪廓。這也是層間互相關(guān)矩陣和Gram矩陣共同具有的屬性,而這點(diǎn)也可以啟發(fā)我們?cè)陲L(fēng)格遷移任務(wù)中根據(jù)對(duì)風(fēng)格遷移程度的要求對(duì)風(fēng)格損失函數(shù)的組合進(jìn)行選擇。
(ii)理論上風(fēng)格遷移任務(wù)中對(duì)風(fēng)格圖像的學(xué)習(xí)并不需要對(duì)其進(jìn)行縮放,因?yàn)閷娱g互相關(guān)矩陣或者Gram 矩陣的輸出大小都與原始圖像輸入大小無關(guān)。然而由于部分語義相關(guān)信息的帶入,可能會(huì)使得風(fēng)格遷移結(jié)果的紋理大小粗細(xì)在輸出尺寸下顯得突兀,導(dǎo)致風(fēng)格遷移的結(jié)果不佳。因此,對(duì)于原始風(fēng)格圖像與風(fēng)格遷移目標(biāo)輸出尺寸相差較大的需要進(jìn)行縮放處理。
(iii)從隨機(jī)得到的噪聲圖像開始優(yōu)化圖像,單純使用風(fēng)格損失很難避免局部失真的現(xiàn)象,即局部色塊中出現(xiàn)明顯不符合原風(fēng)格圖像特征的噪聲點(diǎn)。使用更小的學(xué)習(xí)率以及更多的迭代次數(shù)只能稍微緩解該現(xiàn)象,使用一定的平滑技術(shù)才能較好地解決該問題,如在目標(biāo)損失函數(shù)中加入總變分損失。但加入的平滑技術(shù)會(huì)在一定程度上破壞渲染出的風(fēng)格紋理,引入局部的條狀或塊狀紋理。因此,如何尋找合適的平滑技巧或其他方法使得輸出結(jié)果,尤其是在高分辨率輸出中避免局部失真現(xiàn)象仍是需要解決的問題。在第二部分的風(fēng)格遷移實(shí)驗(yàn)中我們使用內(nèi)容圖像作為初始化代替了引入平滑損失的做法,并發(fā)現(xiàn)具有較好的效果。
(iv)實(shí)驗(yàn)部分展示的層間互相關(guān)矩陣方法得到的結(jié)果均采用降采樣的方法。除了2.1節(jié)中提到的資源消耗原因外,在實(shí)際的實(shí)驗(yàn)結(jié)果中我們也發(fā)現(xiàn)基于上采樣的層間互相關(guān)矩陣方法效果較差。最重要的原因是上采樣無法類似降采樣通過步長(zhǎng)以及卷積核大小的控制進(jìn)行感受野的對(duì)齊,造成了特征相關(guān)關(guān)系的紊亂;另外,降采樣的過程是將特征進(jìn)行組合精簡(jiǎn),是特征的再提取過程,但上采樣則試圖將精簡(jiǎn)后特征還原,而這并非一個(gè)可逆的過程。
(v)風(fēng)格紋理學(xué)習(xí)實(shí)驗(yàn)部分展示的結(jié)果均使用平均池化,我們?cè)趯?shí)驗(yàn)中發(fā)現(xiàn)使用最大池化得到的結(jié)果在紋理的細(xì)節(jié)和連貫上不如平均池化效果好,即紋理出現(xiàn)局部失真和斷層的現(xiàn)象更多。在風(fēng)格遷移實(shí)驗(yàn)部分我們展示了最大池化和平均池化的結(jié)果對(duì)比。
3.3.2 風(fēng)格遷移實(shí)驗(yàn)
風(fēng)格遷移實(shí)驗(yàn)對(duì)使用不同特征映射層進(jìn)行計(jì)算的Gram 矩陣方法及層間互相關(guān)矩陣方法的輸出結(jié)果進(jìn)行對(duì)比(圖3),用圖2 中的三種風(fēng)格對(duì)圖1中中山大學(xué)懷士堂、中山大學(xué)北門牌坊兩張圖片進(jìn)行風(fēng)格遷移。從風(fēng)格遷移實(shí)驗(yàn)的輸出圖像以及訓(xùn)練時(shí)長(zhǎng)對(duì)比(表2)中,我們得到以下結(jié)論:
圖2 紋理合成實(shí)驗(yàn)結(jié)果Fig.2 Texture synthesis outputs
表2 風(fēng)格遷移方法結(jié)果比較Table 2 comparision of style transfer methods
(i)選取相同的特征映射層,層間互相關(guān)矩陣方法和Gram 矩陣方法會(huì)得到相似水平的輸出,例如圖3第3行中,使用relu1_1,relu2_1,relu3_1三個(gè)特征映射層的Gram 矩陣方法和層間互相關(guān)矩陣方法都較好地保留了禮堂整體輪廓形狀,而加入了特征映射層relu4_1 后的三個(gè)輸出結(jié)果,整體輪廓都在一定程度上被破壞;第5行中,后三組實(shí)驗(yàn)的天空部分有明顯的黃色塊狀紋理,而前三組則沒有。
(ii)無論是Gram 矩陣方法還是層間互相關(guān)矩陣方法,都存在一定的局部失真。在風(fēng)格遷移的實(shí)際實(shí)驗(yàn)過程中,我們首先嘗試了內(nèi)容損失、風(fēng)格損失和總變分損失三部分進(jìn)行加權(quán)組合的損失函數(shù),但發(fā)現(xiàn)盡管總變分項(xiàng)的加入使得最終的輸出結(jié)果更平滑,但會(huì)帶來與藝術(shù)風(fēng)格不匹配的局部紋理。另外,總變分損失的加入使得訓(xùn)練過程中內(nèi)容損失和風(fēng)格損失的下降變得困難,難以達(dá)到令人滿意的輸出結(jié)果,且對(duì)于不同的風(fēng)格和內(nèi)容,總變分損失部分的損失似乎都需要特殊的調(diào)參,否則結(jié)果差異較大?;诖耸聦?shí),以及本文比較不同風(fēng)格損失函數(shù)的核心,最終在實(shí)驗(yàn)中我們舍棄了總變分損失的部分,雖然導(dǎo)致風(fēng)格遷移結(jié)果局部失真,但在實(shí)際實(shí)驗(yàn)中使用內(nèi)容圖像進(jìn)行初始化的方式很大程度地緩解了問題。
圖3 風(fēng)格遷移實(shí)驗(yàn)結(jié)果Fig.3 style transfer outputs
(iii)盡管在使用的特征映射層相同的條件下,使用Gram 矩陣和層間互相關(guān)矩陣方法得到的風(fēng)格遷移輸出結(jié)果類似,從個(gè)別例子中仍能看出使用最大池化的方法不如使用平均池化方法得到的圖像效果穩(wěn)定,相比之下其差異會(huì)更大。如圖3 第6行的后三組實(shí)驗(yàn)中,使用最大池化得到的結(jié)果和使用Gram 矩陣或平均池化的層間互相關(guān)矩陣方法得到的結(jié)果差異較大。
(iv)在得到相似輸出水平的情況下,使用層間互相關(guān)矩陣方法比使用Gram 矩陣的方法在速度上有著顯著優(yōu)勢(shì)。在風(fēng)格遷移的所有實(shí)驗(yàn)中我們對(duì)輸入圖像的優(yōu)化迭代次數(shù)都是20 000 次,這也是前期實(shí)驗(yàn)對(duì)比得出的經(jīng)驗(yàn)值。我們發(fā)現(xiàn)無論是Gram 矩陣方法還是層間互相關(guān)矩陣方法,得到效果良好的輸出圖像所需要的迭代次數(shù)是相當(dāng)?shù)模@可能是因?yàn)橄嗨频膿p失函數(shù)構(gòu)成和相同的學(xué)習(xí)率使得每次反向傳播過程中給出的梯度值都在基本相同的量級(jí)。因此在表2的運(yùn)行時(shí)間對(duì)比中我們給出了單次迭代耗時(shí),實(shí)際上也是總耗時(shí)與迭代次數(shù)的比值。在前三組實(shí)驗(yàn)中,使用平均池化、最大池化方法的單次迭代耗時(shí)約為Gram 矩陣方法的74.54%及71.6%;后三組實(shí)驗(yàn)中,使用平均池化、最大池化方法的單次迭代耗時(shí)約為Gram 矩陣方法的75.54%及69.93%,提速均在20%以上,使用最大池化的層間互相關(guān)矩陣方法速度最快。
(v)我們?cè)诘? 節(jié)中提到,理論上層間互相關(guān)矩陣刻畫的是不同等級(jí)語義特征之間的相關(guān)性。然而,在實(shí)際實(shí)驗(yàn)結(jié)果中我們發(fā)現(xiàn),藝術(shù)風(fēng)格紋理的差異主要是使用了不同的特征映射層造成的,與使用層間互相關(guān)矩陣還是Gram 矩陣的關(guān)系并不顯著。這是由于這種理論上的語義等級(jí)差異并不完全和實(shí)際情況相符。實(shí)際上,卷積神經(jīng)網(wǎng)絡(luò)的中間隱藏層所提取的很多特征從人的角度是難以理解的,其對(duì)語義特征等級(jí)的區(qū)分也和人的理解有差異。另外,卷積神經(jīng)網(wǎng)絡(luò)也難以確保在訓(xùn)練中將同等級(jí)的特征提取放在同一層中進(jìn)行,光依靠卷積層和池化層的結(jié)構(gòu)是無法保證這種限制的。因此,同一層的卷積核提取的特征之間也可能存在等級(jí)差異,很多情況下,只要選取的特征映射一致,Gram 矩陣方法和層間互相關(guān)矩陣方法得到的風(fēng)格遷移輸出結(jié)果整體不會(huì)有很大差異。但這并不妨礙在細(xì)節(jié)處層間互相關(guān)矩陣帶來的紋理多樣性。
(vi)本文實(shí)驗(yàn)中對(duì)比了Gram 矩陣和層間互相關(guān)矩陣在Gatys 等[1]提出的算法中表現(xiàn)的差異,若在基于前饋網(wǎng)絡(luò)的快速風(fēng)格遷移系列方法 中 將Gram 矩陣替換為層間互相關(guān)矩陣,則無法提升模型使用時(shí)的效率,而是提升了模型訓(xùn)練時(shí)的效率。
本文提出使用層間互相關(guān)矩陣作為Gram 矩陣的代替或補(bǔ)充,用于風(fēng)格遷移任務(wù)中風(fēng)格損失的計(jì)算。實(shí)驗(yàn)表明,在獲得與基于Gram 矩陣的神經(jīng)風(fēng)格遷移方法相似水平的輸出結(jié)果的情況下,使用層間互相關(guān)矩陣的方法可以在一定程度上提高模型的訓(xùn)練效率。
除了風(fēng)格遷移任務(wù)本身外,層間互相關(guān)矩陣和Gram 矩陣的有效性也表明深度學(xué)習(xí)方法在藝術(shù)風(fēng)格的表示、分類、聚類等問題上有著很大的潛力。另外,由于風(fēng)格遷移任務(wù)的特殊性,我們可能需要更多藝術(shù)專業(yè)領(lǐng)域的專家知識(shí)的指導(dǎo),作為先驗(yàn)知識(shí),這可能為未來風(fēng)格遷移的效果帶來一定的提升。
中山大學(xué)學(xué)報(bào)(自然科學(xué)版)(中英文)2020年6期