王瑜佳
(陜西師范大學(xué) 物理學(xué)與信息技術(shù)學(xué)院,陜西 西安 710062)
在學(xué)術(shù)研究方面,對(duì)于圖片風(fēng)格轉(zhuǎn)換的可探索性領(lǐng)域十分廣泛;在日?;ヂ?lián)網(wǎng)產(chǎn)品中,其應(yīng)用空間也十分廣闊。例如可應(yīng)用于所拍攝照片的后期處理,為用戶打破使用固定濾鏡的限制;還可以根據(jù)用戶心儀的風(fēng)格,改變圖片紋理,對(duì)圖片的視覺(jué)感官進(jìn)行層次化處理,從而在社交網(wǎng)絡(luò)分享平臺(tái)上多角度體現(xiàn)自己圖片的獨(dú)特性,為用戶打造個(gè)性化體驗(yàn)。
在圖像方面,2015年Gatys等人提出了基于神經(jīng)網(wǎng)絡(luò)的風(fēng)格遷移算法。Justin Johnson提出了采用Torch實(shí)現(xiàn)Neural-style網(wǎng)絡(luò),將圖片經(jīng)過(guò)多次運(yùn)算,達(dá)到無(wú)法以肉眼判別圖片真?zhèn)蔚某潭?。后?lái)研究方法主要包括利用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)高層次圖像的內(nèi)容合成和對(duì)Gatys算法的優(yōu)化,加快了訓(xùn)練模型的速度。隨著人們對(duì)技術(shù)的更加智能、精準(zhǔn)、快捷的追求,反卷積層允許模型被提出,通過(guò)小圖的點(diǎn)描繪大圖中的方塊。隨后Bag of Features方法也被提出,該方法先把圖片拆成小塊,然后逐塊進(jìn)行比較,并標(biāo)記出相似塊數(shù)最多的區(qū)域;當(dāng)某一小塊識(shí)別出現(xiàn)錯(cuò)誤時(shí),將其他小塊作為識(shí)別依據(jù),從而大大降低系統(tǒng)錯(cuò)誤的風(fēng)險(xiǎn)。基于神經(jīng)網(wǎng)絡(luò)的風(fēng)格遷移從2015年出現(xiàn)至今,發(fā)展非常迅速,并且被應(yīng)用在很多領(lǐng)域里。本系統(tǒng)以Python作為開(kāi)發(fā)語(yǔ)言來(lái)實(shí)現(xiàn)深度學(xué)習(xí),在運(yùn)用Neural Style算法的同時(shí)進(jìn)行優(yōu)化改進(jìn),通過(guò)收集用戶感興趣的畫(huà)家作品,將圖片轉(zhuǎn)化為各種需求的畫(huà)作風(fēng)格,大大增強(qiáng)了系統(tǒng)應(yīng)用的性能。
圖片風(fēng)格轉(zhuǎn)換系統(tǒng)利用Tensorflow框架和大量的第三方庫(kù)提供了卷積式神經(jīng)網(wǎng)絡(luò)方法,并利用Neural Style算法對(duì)圖片和不同的風(fēng)格加以融合,使照片更具個(gè)性和藝術(shù)氣息。另外還對(duì) Neural Style 算法進(jìn)行優(yōu)化,以增強(qiáng)其實(shí)際使用的有效體現(xiàn),顯示了基于CNN的樣式傳輸方法的輸出。首先以深度學(xué)習(xí)為基礎(chǔ),采用VGG19網(wǎng)絡(luò)結(jié)構(gòu)與Python的Tensorflow系統(tǒng)提取原有圖片內(nèi)容與藝術(shù)作品的圖像風(fēng)格,后期基于輕量框架Flask將系統(tǒng)部署在Web服務(wù)器上運(yùn)行。
VGG19網(wǎng)絡(luò)結(jié)構(gòu)通過(guò)層層遞進(jìn)對(duì)更復(fù)雜的特征進(jìn)行提取,從而更好地識(shí)別物體,所以每層都相當(dāng)于許多小提取器,對(duì)局部特征進(jìn)行更精確地提取。深度卷積分類網(wǎng)絡(luò)在特征提取方面功能強(qiáng)大,將網(wǎng)絡(luò)訓(xùn)練好后可以成為效果良好的圖片數(shù)據(jù)特征提取器,由多層非線性函數(shù)所構(gòu)成的深度網(wǎng)絡(luò)可定義為復(fù)雜多元非線性函數(shù)來(lái)實(shí)現(xiàn)從輸入圖片到輸出的映射。因此,通過(guò)將深度網(wǎng)絡(luò)進(jìn)行訓(xùn)練就可以成為一種損失函數(shù)計(jì)算器。
VGGNet旨在提取輸入圖片的特征并輸出圖像類別,而圖像風(fēng)格遷移技術(shù)主要是用于產(chǎn)生對(duì)應(yīng)輸入特征的圖片并進(jìn)行輸出,如圖1所示。通過(guò)VGGNet,前面的卷積層是從圖片中獲取風(fēng)格特征,后面的全連通層將特征轉(zhuǎn)化成類別概率。其中的淺層提取特征比較簡(jiǎn)單,可檢測(cè)亮度和點(diǎn)等特征;深層提取特征往往是較為復(fù)雜,如判斷是否體現(xiàn)臉部特征、是否出現(xiàn)某種特定物體等。
圖1 VGGNet與圖像風(fēng)格遷移過(guò)程
一般情況下對(duì)所需風(fēng)格進(jìn)行定義會(huì)相對(duì)復(fù)雜。根據(jù)上一層卷積操作中卷積核的數(shù)量,可以獲得每一級(jí)中的特征圖。對(duì)feature map兩兩進(jìn)行內(nèi)積,得到Gram矩陣為圖片風(fēng)格,其中包含了紋理和顏色的相關(guān)信息,定義如下:
每層風(fēng)格的損失函數(shù)定義如下:
其中:N為某一feature map的個(gè)數(shù);M為feature map的尺寸。對(duì)這層中的每一個(gè)feature map進(jìn)行遍歷,從而得出Gram矩陣,和可相同。
最終的風(fēng)格損失函數(shù)為:
其中,w為某層的風(fēng)格對(duì)應(yīng)的權(quán)重。
選擇白噪聲圖像,并加入表達(dá)內(nèi)容的圖片和所需風(fēng)格的圖片來(lái)搭建卷積式神經(jīng)網(wǎng)絡(luò),從而得到具有特定內(nèi)容和風(fēng)格的合成圖片,如圖2所示。設(shè)計(jì)網(wǎng)絡(luò)時(shí)須注意某些層和提取網(wǎng)絡(luò)的維度相同。
圖2 訓(xùn)練圖像示例
首先利用Tensorflow庫(kù)與VGG19網(wǎng)絡(luò)搭建卷積神經(jīng)網(wǎng)絡(luò),訓(xùn)練出具有將任意一張圖片的內(nèi)容與風(fēng)格分離功能的模型;然后分別對(duì)原照片的Content(內(nèi)容)與名畫(huà)風(fēng)格的Style(風(fēng)格)進(jìn)行單獨(dú)提取;再將提取到的風(fēng)格與原圖的內(nèi)容相結(jié)合,生成最終的效果圖,實(shí)現(xiàn)風(fēng)格遷移;最終將訓(xùn)練好的模型保存,利用Flask將項(xiàng)目部署在Web服務(wù)器上即可。
接下來(lái)訓(xùn)練卷積式神經(jīng)網(wǎng)絡(luò),然后定義卷積算法,在Tensorflow的slim模塊中傳入?yún)?shù)。對(duì)結(jié)構(gòu)部分進(jìn)行處理,需要先對(duì)輸入圖片做padding,并通過(guò)圖像轉(zhuǎn)換網(wǎng)絡(luò)后去除,這樣可以防止經(jīng)過(guò)遷移之后出現(xiàn)邊緣效應(yīng)。
隨后根據(jù)VGG19的特征圖片,對(duì)圖片的內(nèi)容差異進(jìn)行了比對(duì)衡量。根據(jù)輸出的特征圖片的均方誤差,可以通過(guò)比較合成圖片與內(nèi)容圖片對(duì)來(lái)實(shí)現(xiàn)優(yōu)化,使其內(nèi)容一致。通過(guò)Gram 矩陣量化體現(xiàn)合成圖片與原圖片在風(fēng)格和內(nèi)容上的差異;再將風(fēng)格loss與內(nèi)容loss按權(quán)值相加,優(yōu)化loss,使所優(yōu)化圖片同時(shí)擁有所選內(nèi)容圖片的內(nèi)容和所選風(fēng)格圖片的風(fēng)格。
為了帶給用戶更快的圖片轉(zhuǎn)換體驗(yàn),該系統(tǒng)在實(shí)現(xiàn)過(guò)程中對(duì)速度進(jìn)行了優(yōu)化。首先,建立交換網(wǎng)絡(luò),以進(jìn)一步優(yōu)化權(quán)值,進(jìn)而實(shí)現(xiàn)快速風(fēng)格轉(zhuǎn)化;其次,對(duì)系統(tǒng)進(jìn)行降維和升維優(yōu)化,減少計(jì)算量,并對(duì)loss進(jìn)行優(yōu)化,將圖片在水平、垂直兩方向上平移一個(gè)像素,再與平移前的圖片相減,算出絕對(duì)值之和,為Total Variation;最后,對(duì)一些近似圖片進(jìn)行約束,減少內(nèi)容相似的圖片和風(fēng)格相似的圖片,從而產(chǎn)生一個(gè)可以較快地對(duì)風(fēng)格和圖片進(jìn)行有效融合并輸出用戶期望圖片的模型。
為了達(dá)到更加友好的交互效果,選擇將項(xiàng)目部署在Web上,采用了輕量級(jí)Web框架Flask,將程序打包搭建成一個(gè)Web系統(tǒng)。最終實(shí)現(xiàn)結(jié)果如圖3所示。
圖3 系統(tǒng)頁(yè)面
通過(guò)測(cè)試來(lái)驗(yàn)證本系統(tǒng)功能是否滿足所計(jì)劃的用戶需求,是否與實(shí)際情況相符合。圖4為測(cè)試圖,選擇陜西師范大學(xué)的一張風(fēng)景照片,對(duì)不同的風(fēng)格進(jìn)行風(fēng)格融合,選擇六種不同藝術(shù)畫(huà)作為風(fēng)格訓(xùn)練內(nèi)容,其中包括愛(ài)德華?蒙克的《吶喊》(如圖5所示)、葛飾北齋的《神奈川沖浪里》(如圖6所示)、梵高的《星月夜》(如圖7所示)、伊萬(wàn)?切爾尼的《尖角》(如圖8所示)、梵高的《向日葵》(如圖9所示)、畢加索的《窗前的女人》(如圖10所示)。隨著意境的變化,圖片產(chǎn)生了別樣的美感,彷佛本來(lái)就出自著名畫(huà)家之手。
圖4 陜西師范大學(xué)風(fēng)景
圖5 愛(ài)德華·蒙克《吶喊》風(fēng)格轉(zhuǎn)換效果
圖6 葛飾北齋《神奈川沖浪里》風(fēng)格轉(zhuǎn)換效果
圖7 梵高《星月夜》風(fēng)格轉(zhuǎn)換效果
圖8 伊萬(wàn)·切爾尼《尖角》風(fēng)格轉(zhuǎn)換效果
圖9 梵高《向日葵》風(fēng)格轉(zhuǎn)換效果
圖10 畢加索《窗前的女人》風(fēng)格轉(zhuǎn)換效果
本文通過(guò)使用卷積神經(jīng)網(wǎng)絡(luò)方法,設(shè)計(jì)了圖片風(fēng)格轉(zhuǎn)換系統(tǒng)。首先,系統(tǒng)整體從設(shè)計(jì)開(kāi)發(fā)、功能運(yùn)行到測(cè)試,已經(jīng)達(dá)到了最初開(kāi)發(fā)目的;并且經(jīng)過(guò)實(shí)際測(cè)試,已達(dá)到投入使用的標(biāo)準(zhǔn)。另外,開(kāi)發(fā)系統(tǒng)所用技術(shù)為當(dāng)前主流技術(shù),開(kāi)發(fā)工具和所用框架效果較好,整體設(shè)計(jì)良好。最后,圖片風(fēng)格轉(zhuǎn)換系統(tǒng)為用戶處理圖片提供了更多選擇和更全面的功能,能夠使拍攝的照片更具有藝術(shù)氣息。