高 媛,王思彤
(牡丹江師范學(xué)院 數(shù)學(xué)科學(xué)學(xué)院,黑龍江 牡丹江 157011)
圖像風(fēng)格遷移是使用計(jì)算機(jī)技術(shù)將自然圖片轉(zhuǎn)化為特定風(fēng)格的圖片。最初,人們嘗試通過(guò)算法模仿藝術(shù)家的作畫(huà)習(xí)慣,但這種算法的不足在于算法改動(dòng)依賴(lài)于圖像像素,無(wú)法控制圖像的內(nèi)容結(jié)構(gòu)保留效果,深度學(xué)習(xí)技術(shù)的出現(xiàn)解決了圖像語(yǔ)義與紋理提取的問(wèn)題,能夠自動(dòng)抽取圖像的關(guān)鍵紋理結(jié)構(gòu)特征,從而實(shí)現(xiàn)任意風(fēng)格與內(nèi)容的結(jié)合,取得了很好的風(fēng)格遷移效果。圖像風(fēng)格遷移包括基于紋理遷移和基于深度學(xué)習(xí)的圖像風(fēng)格遷移。圖像紋理能代表圖像的風(fēng)格特征,將圖像某一部分色彩具有的規(guī)律性稱(chēng)為該圖像的紋理,因此圖像的風(fēng)格遷移也可以是圖像紋理的遷移[1]。圖像風(fēng)格與圖像紋理密不可分,將二者聯(lián)系起來(lái)可形成紋理遷移方法:一類(lèi)屬于紋理再生成的物理仿真技術(shù),另一類(lèi)是基于數(shù)據(jù)集樣本的統(tǒng)計(jì)拼接技術(shù),通過(guò)統(tǒng)計(jì)紋理樣式重新采樣的參數(shù)化紋理遷移及通過(guò)初始圖像數(shù)據(jù)生成特定紋理的非參數(shù)化紋理遷移。Gatys等[2]提出了一種運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)的新型的風(fēng)格遷移算法,將特征圖的Gram矩陣作為圖像的風(fēng)格特征,進(jìn)行迭代,為了定義該算法的損失函數(shù),分別提取內(nèi)容圖片的內(nèi)容特征及風(fēng)格圖片的風(fēng)格特征,通過(guò)卷積層的特征圖提供損失,內(nèi)容損失則由高卷積層構(gòu)成,風(fēng)格損失由多個(gè)卷積層綜合構(gòu)成,計(jì)算機(jī)由此學(xué)會(huì)藝術(shù)風(fēng)格應(yīng)用到普通圖像上,即基于深度學(xué)習(xí)的圖像風(fēng)格遷移。本研究基于深度學(xué)習(xí)的圖像風(fēng)格遷移算法原理,對(duì)影響算法效果的兩個(gè)關(guān)鍵因素,即遷移次數(shù)與目標(biāo)圖像的選擇,采用控制變量法與實(shí)驗(yàn)對(duì)比法進(jìn)行實(shí)驗(yàn),找到遷移效果與這兩個(gè)因素之間的變化規(guī)律,從而對(duì)算法的應(yīng)用研究提供參考。
基于深度學(xué)習(xí)的圖像處理網(wǎng)絡(luò)主要采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)。卷積神經(jīng)網(wǎng)絡(luò)因其獨(dú)特的結(jié)構(gòu)而具有強(qiáng)大的學(xué)習(xí)能力,包括輸入層、卷積層、激活函數(shù)、池化層及全連接層。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,卷積層的卷積運(yùn)算相當(dāng)于圖像處理中的濾波器運(yùn)算(也稱(chēng)核運(yùn)算),將各個(gè)位置上濾波器的元素與輸入元素相乘的和(即做內(nèi)積)保存到對(duì)應(yīng)的輸出位置,每個(gè)位置都計(jì)算一遍,以得到卷積運(yùn)算的輸出。池化層的作用是將卷積運(yùn)算后的結(jié)果特征矩陣進(jìn)行壓縮,且不破壞特征的方位信息。通常使用最大池化層,這種池化層不僅保留了特征的方位信息,還能防止特征值被壓縮或過(guò)濾。卷積與池化后通常需使用全連接層進(jìn)行分類(lèi)或回歸,全連接層激活函數(shù)通常為sigmoid函數(shù)及ReLu函數(shù)。
算法模型網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。本研究使用的深度學(xué)習(xí)網(wǎng)絡(luò)模型是VGG[3],具有多種模型結(jié)構(gòu),其中VGG16及VGG19是效果最好的兩種。該模型主要使用3×3的卷積算子,在保證感受野的前提下減少了模型參數(shù)量,能夠很好地實(shí)現(xiàn)紋理及內(nèi)容特征提取。模型結(jié)構(gòu)主要采用已經(jīng)訓(xùn)練好的VGG19深度網(wǎng)絡(luò)模型,對(duì)風(fēng)格圖像、目標(biāo)圖像及內(nèi)容圖像均進(jìn)行特征的卷積采集,并選擇一些卷積層作為風(fēng)格或內(nèi)容因素對(duì)比層,來(lái)計(jì)算目標(biāo)圖像與風(fēng)格圖像的風(fēng)格損失,計(jì)算目標(biāo)圖像與內(nèi)容圖像的內(nèi)容損失,并對(duì)內(nèi)容損失及風(fēng)格損失進(jìn)行加權(quán)求和,求得的總損失作為優(yōu)化目標(biāo),來(lái)更新目標(biāo)圖像的像素內(nèi)容。
圖1 算法模型網(wǎng)絡(luò)結(jié)構(gòu)
內(nèi)容損失。生成圖像與原始內(nèi)容圖像在內(nèi)容上的差異程度被稱(chēng)為內(nèi)容損失,通過(guò)原始圖片的內(nèi)容和生成圖片的內(nèi)容作歐氏距離求得,其大小隨著原始圖像與生成圖像的內(nèi)容結(jié)構(gòu)距離的變化而變化,見(jiàn)式(1):
(1)
風(fēng)格損失。使用格拉姆矩陣(Gram矩陣)代表圖像的風(fēng)格。n維歐氏空間中,任意k(k≤n)個(gè)向量a1,a2,…ak內(nèi)積所組成的矩陣,稱(chēng)為這k個(gè)向量a1,a2,…ak的Gram矩陣。例如:向量a=[a1,a2,a3,…an],向量b=[b1,b2,b3,…bn],則a和b的內(nèi)積公式為:
a·b=a1b1+a2b2+…anbn
(2)
如果兩個(gè)圖像的特征向量的Gram矩陣差異較小,那么判定它們高度相似。
(3)
(4)
(5)
將輸入的圖像縮放,將其轉(zhuǎn)換為torch tensor且適合網(wǎng)絡(luò)的輸入尺寸。對(duì)內(nèi)容圖像和風(fēng)格圖像分別用預(yù)訓(xùn)練好的VGG網(wǎng)絡(luò)進(jìn)行特征采集,并保存計(jì)算出的所有層的特征數(shù)據(jù)。對(duì)目標(biāo)圖像通過(guò)VGG網(wǎng)絡(luò)進(jìn)行特征學(xué)習(xí),與已經(jīng)計(jì)算好的內(nèi)容圖像及風(fēng)格圖像對(duì)應(yīng)的特征層的特征數(shù)據(jù)進(jìn)行計(jì)算,得到內(nèi)容損失、風(fēng)格損失及總損失。對(duì)總損失函數(shù)進(jìn)行求導(dǎo),根據(jù)導(dǎo)數(shù)采用反向誤差傳播法,對(duì)目標(biāo)圖像進(jìn)行優(yōu)化。重復(fù)上一步過(guò)程,直到總損失函數(shù)的變化量足夠小,即內(nèi)容圖像的風(fēng)格變化與風(fēng)格圖片的風(fēng)格距離最小且風(fēng)格圖像的內(nèi)容變化與內(nèi)容圖片的內(nèi)容距離最小或達(dá)到預(yù)定的迭代次數(shù)。
本實(shí)驗(yàn)以Pyhton為編程語(yǔ)言,使用VGG16神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。計(jì)算機(jī)硬件處理器為Intel(R) Core(TM) i5-8300H,主頻為2.30 GHz,內(nèi)存為12.0 GB。
如圖2、圖3所示,風(fēng)格圖像是梵高的星空,當(dāng)?shù)螖?shù)固定為2000次時(shí),改變內(nèi)容與風(fēng)格的權(quán)重比,當(dāng)權(quán)重比較小時(shí),生成圖像與內(nèi)容圖像幾乎相同,原因是風(fēng)格權(quán)重相對(duì)于內(nèi)容權(quán)重在運(yùn)算時(shí)產(chǎn)生的影響過(guò)小。當(dāng)權(quán)重比過(guò)大時(shí),產(chǎn)生的遷移效果過(guò)分依賴(lài)于風(fēng)格圖像,干擾了內(nèi)容成分。
圖3 內(nèi)容與風(fēng)格不同權(quán)重比生成圖
從圖3能夠看出,當(dāng)風(fēng)格權(quán)重較小時(shí),生成圖像的風(fēng)格與風(fēng)格圖像的風(fēng)格差別較大,內(nèi)容圖像的內(nèi)容特征能很好地展現(xiàn)。當(dāng)風(fēng)格權(quán)重較大時(shí),生成圖像的風(fēng)格會(huì)與風(fēng)格圖像的風(fēng)格相近,但仍能保存內(nèi)容圖片的內(nèi)容特征。當(dāng)風(fēng)格權(quán)重為100時(shí)(此時(shí)就可以理解為是最為合適的權(quán)重比),能生成視覺(jué)上感覺(jué)好看的圖像。風(fēng)格特征與內(nèi)容特征的權(quán)重比沒(méi)有一個(gè)固定精確的值,可依情況精細(xì)處理。
使用噪聲圖片進(jìn)行圖像風(fēng)格遷移,因?yàn)樵肼晥D片的像素是隨機(jī)產(chǎn)生的,它所包含的特征既不同于內(nèi)容圖像也不同于風(fēng)格圖像,在遷移過(guò)程中能更好地向內(nèi)容圖像及風(fēng)格圖像進(jìn)行遷移,令風(fēng)格遷移效果增強(qiáng)。
如圖4所示,當(dāng)?shù)螖?shù)逐漸增大時(shí),使用噪聲圖像進(jìn)行遷移與使用內(nèi)容圖像進(jìn)行遷移生成的輸出圖像有明顯差別。這是因?yàn)槭褂脙?nèi)容圖像進(jìn)行遷移時(shí),遷移結(jié)果對(duì)于內(nèi)容圖像的內(nèi)容特征損失值為0,迭代過(guò)程中遷移效果更傾向于內(nèi)容圖像,即受到內(nèi)容圖像的約束較大,所以迭代次數(shù)少時(shí)也能生成視覺(jué)上感覺(jué)好看的圖像。使用噪聲圖像進(jìn)行遷移是向內(nèi)容圖像與風(fēng)格圖像兩個(gè)方向同時(shí)遷移,遷移過(guò)程中既要在內(nèi)容上向內(nèi)容圖像的內(nèi)容特征接近,又要在風(fēng)格上向風(fēng)格圖像的風(fēng)格特征接近,使優(yōu)化過(guò)程相對(duì)自由,不會(huì)像使用內(nèi)容圖像時(shí)落入局部最優(yōu)點(diǎn),所以迭代時(shí)更傾向于優(yōu)化為全局最優(yōu)點(diǎn),迭代次數(shù)越大,整體遷移效果越好,整體風(fēng)格的遷移越好。
圖4 不同原始目標(biāo)圖像對(duì)比圖
圖像風(fēng)格遷移算法是計(jì)算機(jī)領(lǐng)域的重要應(yīng)用。探究了基于深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)所形成的圖像風(fēng)格遷移算法及算法相關(guān)因素,即損失因素對(duì)比率,根據(jù)原始內(nèi)容的選取與迭代次數(shù)的關(guān)系,完成了實(shí)驗(yàn)并對(duì)影響因素進(jìn)行分析,得到以下結(jié)果:風(fēng)格權(quán)重與內(nèi)容權(quán)重之比對(duì)遷移效果影響較大,比率與遷移效果呈倒U規(guī)律,故可根據(jù)此規(guī)律調(diào)整比率參數(shù)。根據(jù)噪聲圖像或內(nèi)容圖像為原始目標(biāo)圖像在遷移效果上的特點(diǎn),可按照遷移的具體要求選擇不同的原始目標(biāo)圖像,如果能從理論上分析出最優(yōu)值,就可以不采用實(shí)驗(yàn)法來(lái)確定這些參數(shù),從而提高風(fēng)格遷移效率。