劉運(yùn)鑫,江愛(ài)文,葉繼華,王明文
江西師范大學(xué) 計(jì)算機(jī)信息工程學(xué)院,南昌 330022
圖像風(fēng)格遷移是圖像紋理遷移的擴(kuò)展,可以理解為提取風(fēng)格圖中的風(fēng)格(紋理、顏色等),并與內(nèi)容圖相結(jié)合,進(jìn)行圖像重建,生成風(fēng)格化的結(jié)果圖。由于技術(shù)的局限性,傳統(tǒng)技術(shù)只能做到紋理遷移,但隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,Gatys 等人[1]開辟了基于深度學(xué)習(xí)的風(fēng)格遷移研究領(lǐng)域。他們的實(shí)驗(yàn)結(jié)果表明,圖片的風(fēng)格和內(nèi)容可以被深度卷積神經(jīng)網(wǎng)絡(luò)分離并提取,通過(guò)不同內(nèi)容和風(fēng)格的融合,達(dá)到圖像風(fēng)格遷移的目的。他們提出利用Gram 矩陣作為風(fēng)格統(tǒng)計(jì)量和損失,并證明相同風(fēng)格的圖片Gram 矩陣是相同的。他們的方法可以對(duì)任意尺寸的圖像實(shí)現(xiàn)風(fēng)格遷移并且能夠生成相對(duì)高質(zhì)量的風(fēng)格化圖片。但是,他們的方法優(yōu)化過(guò)程十分緩慢,需要使用數(shù)百次的梯度下降過(guò)程來(lái)逼近最優(yōu)的圖像解,無(wú)法做到實(shí)時(shí)性。一旦更換目標(biāo)遷移的風(fēng)格,模型就需要重新訓(xùn)練。因此,Gatys 等人[1]的方法是典型的單模型單風(fēng)格的風(fēng)格遷移算法。
除了Gram 矩陣作為損失函數(shù),Li 和Wand[2]提出了基于馬爾科夫隨機(jī)場(chǎng)(Markov random field,MRF)的非參數(shù)風(fēng)格遷移的算法。該算法核心是使用MRF損失來(lái)代替Gram 損失,文獻(xiàn)[3-5]都是此類非參數(shù)方法。除此以外,Li 等人[6]提出的均值和方差,Risser 等人[7]提出的直方圖損失,Peng 等人[8]提出的CORAL 損失均可以作為風(fēng)格損失來(lái)滿足風(fēng)格遷移的要求。
Johnson 等人[9]改進(jìn)了Gatys 等人[10]的方法,使用前饋網(wǎng)絡(luò)和感知損失進(jìn)行風(fēng)格遷移,大大提升了風(fēng)格遷移的速度,在一定程度上做到了實(shí)時(shí)性。但是,此方法依然保留著對(duì)每一個(gè)新的風(fēng)格都需要重新訓(xùn)練一個(gè)新的模型的局限性。
隨后出現(xiàn)了大量風(fēng)格遷移的算法,如文獻(xiàn)[11-13]中的單模型多風(fēng)格。他們能夠做到單一模型實(shí)現(xiàn)多個(gè)風(fēng)格遷移的效果。盡管如此,這些模型能夠遷移的風(fēng)格依然有限和固定。
本文關(guān)注的是更具挑戰(zhàn)性和實(shí)際應(yīng)用價(jià)值的單模型任意風(fēng)格遷移[14-16]。
Fig.1 Method results of Ref.[17]圖1 文獻(xiàn)[17]方法結(jié)果
Shen 等人[17]提出基于元網(wǎng)絡(luò)的任意風(fēng)格遷移算法,成功實(shí)現(xiàn)了快速的任意風(fēng)格遷移,并且擁有良好的實(shí)驗(yàn)結(jié)果,得到業(yè)界的廣泛關(guān)注。經(jīng)過(guò)反復(fù)實(shí)驗(yàn)作者提供的源代碼,并仔細(xì)驗(yàn)證Shen 等人[17]的方法,發(fā)現(xiàn)該算法在進(jìn)行風(fēng)格遷移時(shí),主要存在兩方面的缺陷:(1)風(fēng)格化后結(jié)果圖片總是出現(xiàn)明顯風(fēng)格不一致的不協(xié)調(diào)像素缺塊,如圖1 所示。從圖1 中可以看出幾乎每一張圖片都有一個(gè)比較明顯的灰色橢圓形缺塊(在圖中已用紅框標(biāo)出)。在該算法中,這是一個(gè)普遍現(xiàn)象。(2)圖1 中風(fēng)格圖與風(fēng)格化后的結(jié)果圖,在顏色布局上通常并不一致。例如,Style3 的風(fēng)格示例圖,整體是藍(lán)白黑三色調(diào),但是得到的風(fēng)格化后的結(jié)果圖帶有大部分的米黃色色調(diào)。Style2 中也存在類似現(xiàn)象。這種色調(diào)不一致的現(xiàn)象反復(fù)出現(xiàn)。經(jīng)過(guò)多次實(shí)驗(yàn)驗(yàn)證發(fā)現(xiàn)該算法測(cè)試生成的結(jié)果圖顏色布局與訓(xùn)練過(guò)程中最后一張風(fēng)格圖相關(guān)(主要在顏色上受影響),導(dǎo)致風(fēng)格化后結(jié)果圖與風(fēng)格示例圖具有不一致的顏色布局。從圖1 中便可見(jiàn)一斑。風(fēng)格完全不同的Style1、Style2、Style3 對(duì)應(yīng)的風(fēng)格化結(jié)果圖在顏色色調(diào)上卻很接近。因此,此方法在遷移效果上,僅做到了紋理風(fēng)格的不完美遷移,并沒(méi)有完全做到風(fēng)格的任意遷移。
為了避免風(fēng)格化結(jié)果圖出現(xiàn)明顯的不協(xié)調(diào)像素缺塊,且同時(shí)實(shí)現(xiàn)風(fēng)格化結(jié)果圖與風(fēng)格圖的顏色布局相一致,本文主要借鑒Gatys 等人[1]提出的Gram 矩陣,在風(fēng)格統(tǒng)計(jì)量和損失函數(shù)等方面對(duì)Shen 等人[17]方法進(jìn)行了改進(jìn)。通過(guò)實(shí)驗(yàn)對(duì)比,本文改進(jìn)的模型能夠較完美地解決前述兩方面的問(wèn)題,實(shí)現(xiàn)良好、快速有效的任意風(fēng)格任意內(nèi)容的快速遷移。
本文的主要貢獻(xiàn)在于:(1)將Gram 矩陣引入基于元網(wǎng)絡(luò)的任意風(fēng)格遷移算法框架并進(jìn)行改進(jìn),有效解決了基準(zhǔn)方法的明顯缺陷,同時(shí)實(shí)現(xiàn)實(shí)時(shí)有效的任意內(nèi)容任意風(fēng)格的單圖像風(fēng)格遷移。(2)對(duì)于風(fēng)格遷移問(wèn)題,通過(guò)充分的實(shí)驗(yàn)驗(yàn)證、理論分析,進(jìn)一步厘清了Gram 矩陣統(tǒng)計(jì)量在算法收斂性和視覺(jué)效果上優(yōu)越性所在。
Shen 等人[17]提出的元網(wǎng)絡(luò)為兩層全連接層,輸入是風(fēng)格圖的組合特征向量,輸出向量用于對(duì)圖像轉(zhuǎn)換網(wǎng)絡(luò)(image transformation network,ITN)各卷積層的卷積核進(jìn)行權(quán)重分配,以達(dá)到不同的風(fēng)格對(duì)應(yīng)不同的卷積核,最終實(shí)現(xiàn)任意風(fēng)格遷移的目的。他們將VGG16[18]中Relu1_2、Relu2_2、Relu3_3、Relu4_3 卷積層對(duì)應(yīng)的特征映射圖,求均值和方差,然后串聯(lián)成一維向量,輸入至元網(wǎng)絡(luò)的第一層全連接層。輸入向量的維度大小等于(64+128+256+512)×2=1 920。為了避免元網(wǎng)絡(luò)參數(shù)過(guò)大,第二層全連接層采用分組全連接層的思路:每組全連接輸入128 維,各組輸出對(duì)應(yīng)分配到特定卷積層權(quán)重。圖像轉(zhuǎn)換網(wǎng)絡(luò)的卷積層,包括下采樣卷積層2 層、殘差卷積層10 層、上采樣反卷積層2 層。因此,元網(wǎng)絡(luò)第二層的全連接層輸入大小為14×128=1 792 維。該方法的具體元網(wǎng)絡(luò)細(xì)節(jié)如圖2 所示,其他細(xì)節(jié)在此不再贅述。
雖然均值和方差計(jì)算非常簡(jiǎn)單,但作為風(fēng)格統(tǒng)計(jì)量,其包含的信息量有限,不足以表征風(fēng)格圖的特點(diǎn),這也是Shen 等人[17]的方法存在前述缺陷的主要因素。本文主要借鑒Gatys 等人[1]提出的Gram 矩陣,改變了Shen 等人[17]方法中元網(wǎng)絡(luò)輸入信息和風(fēng)格損失計(jì)算方式。本文不再使用特征圖的均值和方差,而是使用VGG16 的Relu1_2、Relu2_2、Relu3_3、Relu4_3 的特征映射圖計(jì)算Gram 矩陣。
相對(duì)于均值和方差,直接使用Gram 矩陣輸入至元網(wǎng)絡(luò)中,會(huì)使全連接層的參數(shù)變得非常大,整個(gè)網(wǎng)絡(luò)框架幾乎無(wú)法放進(jìn)主流GPU(如11 GB顯存的GTX 1080TI)。為了既能最大程度保留Gram 矩陣信息豐富的特點(diǎn),又能適當(dāng)縮小網(wǎng)絡(luò)參數(shù)規(guī)模,把尺寸最大的Relu4_3 層的Gram 矩陣(大小為512×512)進(jìn)行了下采樣,采用平均池化將其大小變?yōu)樵瓉?lái)尺寸的1/4。由于Gram 矩陣式對(duì)稱陣,選擇Gram 矩陣的上三角或下三角數(shù)值作為特征,再結(jié)合分組全連接的思路,最終能將整個(gè)網(wǎng)絡(luò)控制在合理參數(shù)規(guī)模范圍以內(nèi)。改進(jìn)后的元網(wǎng)絡(luò)輸入信息是能夠有效表征風(fēng)格特點(diǎn)的Gram 矩陣,由4 個(gè)Gram 子矩陣64×64、128× 128、256×256、256×256 串聯(lián)而成。
Fig.2 Meta network architecture圖2 元網(wǎng)絡(luò)框架
在內(nèi)容損失函數(shù)計(jì)算方面,本文保持和Shen 等人[17]方法一致。具體地,將風(fēng)格化結(jié)果圖和原始內(nèi)容圖分別經(jīng)過(guò)在ImageNet 預(yù)訓(xùn)練好的VGG16 網(wǎng)絡(luò),計(jì)算它們相同層對(duì)應(yīng)的特征圖之間的歐式距離。內(nèi)容損失公式如式(1)所示:
其中,x為輸入的內(nèi)容圖像,像,F(xiàn)j(x)是處理圖像x時(shí)VGG16 網(wǎng)絡(luò)第j層的特征圖,尺寸為Cj×Wj×Hj。
預(yù)訓(xùn)練好的VGG16 網(wǎng)絡(luò)參數(shù)在整個(gè)訓(xùn)練和測(cè)試過(guò)程中保持固定。
在風(fēng)格損失計(jì)算方面,Shen 等人[17]計(jì)算風(fēng)格化結(jié)果圖y分別經(jīng)過(guò)VGG16 的Relu1_2、Relu2_2、Relu3_3、Relu4_3 四層后的特征圖的均值和方差的歐式距離。
Shen 等人[17]利用均值和方差代替Gram 矩陣作為風(fēng)格統(tǒng)計(jì)量的做法,雖然也能使風(fēng)格化后結(jié)果圖具有與風(fēng)格示例圖相似的紋理,且相對(duì)于Gram 矩陣計(jì)算速度更快,計(jì)算量更小,但是經(jīng)常很容易導(dǎo)致結(jié)果圖的整體風(fēng)格布局與風(fēng)格圖不相匹配或者匹配度較低,如Huang 等人[16]的方法便采用了均值和方差作為損失函數(shù)。該方法的風(fēng)格化結(jié)果圖像均帶有明顯的塊狀,以至于在視覺(jué)上他們的結(jié)果與其他方法存在差距。均值和方差作為風(fēng)格統(tǒng)計(jì)量并不適用于所有的框架。
Gram 矩陣計(jì)算圖像特征之間的偏心協(xié)方差矩陣(即沒(méi)有減去均值的協(xié)方差矩陣)。定義矩陣Ψ表示大小為C×W×H特征圖Fk(x)。
令Ψ=[f1,f2,…,fC],其中fi∈?WH是特征圖Fk(x)第i={1,2,…,C}個(gè)通道層對(duì)應(yīng)的特征平面的所有元素構(gòu)成的列向量。Gram 矩陣如式(2)所示:
特征圖Fk(x)的方差和均值表示為σ=[σ1,σ2,…,σC],μ=[μ1,μ2,…,μC],其中均值向量元素,方差向量元素σi=(fi-μiI)T(fi-μiI)。類似地,可以計(jì)算協(xié)方差:
從它們的數(shù)學(xué)計(jì)算過(guò)程也不難看出,Gram 矩陣計(jì)算是均值和方差計(jì)算的一般泛化形式,包含了比方差和均值更豐富的信息。Gram 矩陣可以度量特征各維度自身特性以及各維度之間的關(guān)系,能夠更全面表示特征圖Fk(x)的結(jié)構(gòu)特性,反映風(fēng)格的整體屬性。相比之下,均值和方差只能反映特征維度自身的特性。
采用能更好適用于風(fēng)格特征表示的Gram 矩陣作為風(fēng)格損失,雖然會(huì)使計(jì)算量變大,也會(huì)使網(wǎng)絡(luò)整體框架變得更大,但是只要能進(jìn)行合理優(yōu)化,是可以做到性能與計(jì)算代價(jià)的平衡。
風(fēng)格損失如下:
其中,G表示在VGG16 網(wǎng)絡(luò)中第j層的特征圖的Gram 矩陣。
需要指出的是,雖然在元網(wǎng)絡(luò)輸入表示時(shí),對(duì)Gram 矩陣進(jìn)行池化操作,但在訓(xùn)練時(shí),因?yàn)椴簧婕暗骄W(wǎng)絡(luò)參數(shù)大小的問(wèn)題,采用了原始大小的Gram 矩陣計(jì)算風(fēng)格損失。
網(wǎng)絡(luò)最終的總損失函數(shù)如式(5)所示。
其中,超參數(shù)α和β分別為內(nèi)容權(quán)重和風(fēng)格權(quán)重。
作為用戶控制參數(shù),提高α/β的比值會(huì)使風(fēng)格化結(jié)果圖注重內(nèi)容信息,視覺(jué)上更偏向于內(nèi)容圖像;減小α/β風(fēng)格權(quán)重會(huì)使風(fēng)格化結(jié)果圖像注重風(fēng)格信息,使其更具有風(fēng)格化。
圖像轉(zhuǎn)換網(wǎng)絡(luò)(ITN)的權(quán)重(除了第一層和最后一層)由元網(wǎng)絡(luò)分配。改進(jìn)模型的整體框架如圖3所示。
圖3 所示的整體網(wǎng)絡(luò)的數(shù)據(jù)流向?yàn)椋海?)網(wǎng)絡(luò)輸入有內(nèi)容圖像和風(fēng)格圖像。(2)紅色數(shù)據(jù)流向指示,風(fēng)格圖像經(jīng)過(guò)預(yù)訓(xùn)練VGG16 網(wǎng)絡(luò)。其中,若干層卷積特征計(jì)算Gram 矩陣輸入元網(wǎng)絡(luò)。元網(wǎng)絡(luò)的輸出為圖像轉(zhuǎn)換網(wǎng)絡(luò)(ITN)進(jìn)行權(quán)重賦值。(3)藍(lán)色數(shù)據(jù)流向指示,內(nèi)容圖像經(jīng)過(guò)風(fēng)格權(quán)重賦值的圖像轉(zhuǎn)換網(wǎng)絡(luò),生成結(jié)果風(fēng)格化圖像。(4)綠色數(shù)據(jù)流向指示,訓(xùn)練時(shí),風(fēng)格化圖像結(jié)果經(jīng)過(guò)VGG16 網(wǎng)絡(luò),在對(duì)應(yīng)卷積層上計(jì)算與風(fēng)格圖像的風(fēng)格損失,計(jì)算與內(nèi)容圖像的內(nèi)容損失。
實(shí)驗(yàn)所使用的內(nèi)容圖像來(lái)自于Microsoft COCO數(shù)據(jù)集,風(fēng)格示例圖來(lái)自于WikiArt 數(shù)據(jù)集。其中,內(nèi)容圖像大約80 000 張,風(fēng)格圖大約有8 000 張。在訓(xùn)練過(guò)程中,先把內(nèi)容圖像縮放到[256,480]的區(qū)間范圍,然后再隨機(jī)剪裁成256×256 尺寸的圖像。優(yōu)化器采用Adam,網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)率固定為0.001,批量大小Batchsize 設(shè)置為2。每20 輪循環(huán),隨機(jī)更換一張風(fēng)格圖。
在內(nèi)容損失方面,重點(diǎn)考慮圖像高層語(yǔ)義相似性計(jì)算,因此采用預(yù)訓(xùn)練好的VGG16的Rule3_3層的特征圖來(lái)計(jì)算內(nèi)容損失;在風(fēng)格損失方面,選取預(yù)訓(xùn)練好的VGG16的Relu1_2、Relu2_2、Relu3_3、Relu4_3四層的特征圖的Gram 來(lái)計(jì)算風(fēng)格損失;ITN 網(wǎng)絡(luò)結(jié)構(gòu)保持與Shen 等人[17]方法一致。
由于內(nèi)容損失和風(fēng)格損失計(jì)算的量值比例的原因,將α/β比值作為用戶控制參數(shù)。在圖4 展示了不同的α/β值的效果。當(dāng)比值為2×10-5時(shí),能夠做到內(nèi)容與風(fēng)格平衡協(xié)調(diào)。因此,為了調(diào)參的方便,后續(xù)實(shí)驗(yàn)均采用此設(shè)置。式(5)中內(nèi)容權(quán)重α=1,風(fēng)格權(quán)重為β=2×105。
為了評(píng)價(jià)改進(jìn)方法的有效性,與其他主流的風(fēng)格遷移方法進(jìn)行了對(duì)比。
Fig.3 Model architecture圖3 模型結(jié)構(gòu)
Fig.4 Effect of different weight ratios圖4 不同權(quán)重比值的效果
在損失收斂方面,將本文方法與Shen 等人[17]的方法進(jìn)行了比較,如圖5 所示。在內(nèi)容損失方面本文方法更加穩(wěn)定,從風(fēng)格損失方面可以看到本文方法收斂得更好。主要?dú)w因于Gram 矩陣在風(fēng)格損失的計(jì)算數(shù)值上較均值和方差更穩(wěn)定。
Fig.5 Loss convergence圖5 損失收斂情況
為了驗(yàn)證Gram 矩陣作為風(fēng)格損失計(jì)算的必要性,繼續(xù)進(jìn)行了對(duì)比實(shí)驗(yàn)。Johnson 等人[9]提出的框架是風(fēng)格遷移領(lǐng)域中最基礎(chǔ)、最通用的方法之一。用均值和方差作為損失替代該算法框架中的Gram矩陣,并且將超參數(shù)調(diào)整到實(shí)驗(yàn)最優(yōu),結(jié)果如圖6 所示。除卻偽影,從紋理和顏色方面可以看出使用均值和方差損失的效果與Gram 矩陣差距較大。均值方差損失在風(fēng)格遷移中的效果并不理想。通過(guò)前述理論分析、實(shí)驗(yàn)佐證,進(jìn)一步肯定了采用Gram 矩陣作為風(fēng)格損失和特征統(tǒng)計(jì)量在算法收斂性和視覺(jué)效果方面的優(yōu)越性。
Fig.6 Comparison of effects of different losses圖6 不同損失的效果比較
Fig.7 Stylized effect results of proposed model(Compared with Fig.1)圖7 本文模型的風(fēng)格化效果圖(與圖1 對(duì)比)
在圖像風(fēng)格化的質(zhì)量與效果方面,圖7 展示了本文改進(jìn)方法結(jié)果的優(yōu)越性。相比圖1中Shen等人[17]方法的實(shí)驗(yàn)結(jié)果,無(wú)論在圖像缺塊問(wèn)題,還是在顏色色調(diào)布局不一致方面,在本文改進(jìn)的方法中都得到了較好的解決。
圖8 所采用的風(fēng)格示例圖,均為Shen 等人[17]和本文的方法在訓(xùn)練過(guò)程中從未訓(xùn)練過(guò)的風(fēng)格圖。不難看出,在視覺(jué)紋理分布上,本文方法與Gatys 等人[10]的方法基本相似,都比Shen 等人[17]的方法紋理更豐富;同時(shí),本文在內(nèi)容上比Gatys 等人[10]的方法視覺(jué)表現(xiàn)更好;在顏色色調(diào)方面,本文方法也取得了比其他方法明顯更好的效果。
為了更多地驗(yàn)證本文方法的適應(yīng)能力,圖9 展示了使用本文方法進(jìn)行風(fēng)格遷移的更多效果圖。所有生成的圖片尺寸均為256×256,不難看出,本文方法取得了不錯(cuò)的結(jié)果,可以適用于不同風(fēng)格、不同內(nèi)容的場(chǎng)景。
Fig.8 Contrast of stylized effect charts of different methods圖8 不同方法的風(fēng)格化效果圖對(duì)比
Fig.9 More stylized results generated by proposed model圖9 更多本文模型生成的風(fēng)格化結(jié)果
表1 記錄了五種主流風(fēng)格化遷移算法的遷移速度。在GTX1080TI 上進(jìn)行測(cè)試,測(cè)試的風(fēng)格圖像和內(nèi)容圖像大小均為256×256??梢钥闯鰜?lái),本文方法雖然比Shen 等人[17]的原方法慢了3 ms(主要是計(jì)算Gram 矩陣的原因),但幾乎是可以忽略不計(jì)的程度,仍然可以實(shí)現(xiàn)快速的風(fēng)格遷移。
Table 1 Comparison of transfer speed for different methods表1 不同方法的遷移速度對(duì)比
本文在Shen 等人[17]的基礎(chǔ)上解決了他們的方法遺留下的風(fēng)格結(jié)果圖存在的不協(xié)調(diào)缺塊和顏色布局與目標(biāo)風(fēng)格圖不一致等問(wèn)題,提出了基于Gram 矩陣風(fēng)格統(tǒng)計(jì)量的元網(wǎng)絡(luò)風(fēng)格遷移改進(jìn)網(wǎng)絡(luò),并通過(guò)合理優(yōu)化避免了傳統(tǒng)Gram 矩陣帶來(lái)網(wǎng)絡(luò)參數(shù)整體過(guò)大的問(wèn)題。通過(guò)實(shí)驗(yàn)驗(yàn)證,使用本文方法不僅不會(huì)出現(xiàn)風(fēng)格化圖像不協(xié)調(diào)缺塊的問(wèn)題,而且還可以完美保持與風(fēng)格圖像的顏色布局一致。本文方法進(jìn)行風(fēng)格遷移后的圖片在視覺(jué)效果上比原方法具有更好的效果和表現(xiàn),可以實(shí)現(xiàn)任意風(fēng)格任意內(nèi)容的快速風(fēng)格遷移。