陳 杰
(中國(guó)聯(lián)合網(wǎng)絡(luò)通信集團(tuán)有限公司宣城市分公司,安徽 宣城 242099)
圖像風(fēng)格遷移是指將藝術(shù)大師的畫風(fēng)遷移到自己的圖片上,使其看上去更富有藝術(shù)氣息。近年來(lái),圖像風(fēng)格遷移成為計(jì)算機(jī)視覺以及圖像處理領(lǐng)域的熱點(diǎn)研究方向。早期的風(fēng)格遷移被視為紋理合成的拓展問題,也被稱為紋理遷移。在基于紋理合成的年代,Julesz[1]率先提出基于紋理建模來(lái)提取圖片特征的方法。該方法基于像素的底層特征,沒有考慮到語(yǔ)義信息的丟失,所以遷移的效果并不理想。后來(lái),風(fēng)格遷移進(jìn)入了基于非真實(shí)感渲染的年代,大體可以分為3種:筆觸渲染的方法(Stroke-based Rendering)、基于圖像類比的方法(Image Analogy)、基于圖像濾波的方法(Image Filtering)?;诠P觸渲染的方法有一個(gè)缺陷,在設(shè)計(jì)之前需要先將風(fēng)格特征確定下來(lái),如果遷移完成后進(jìn)行其他風(fēng)格的遷移,還需要重新設(shè)計(jì)一種風(fēng)格;基于圖像類比的方法要在真實(shí)場(chǎng)景中采集成對(duì)的圖像數(shù)據(jù),過(guò)程十分困難,幾乎是不可能的;基于圖像濾波的方法具有速度快、效果穩(wěn)定的優(yōu)點(diǎn),能夠滿足工業(yè)界落地的需要,然而濾波器的值是由算法工程師不斷調(diào)整得出來(lái)的,費(fèi)時(shí)費(fèi)力,且模擬出來(lái)的風(fēng)格類型也有限。所以,這些方法并沒有得到大規(guī)模的應(yīng)用。
隨著深度學(xué)習(xí)興起,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)被應(yīng)用到圖像風(fēng)格遷移上。Gatys[2]最早提出利用卷積神經(jīng)網(wǎng)絡(luò),將圖像表示為內(nèi)容和風(fēng)格兩個(gè)部分,高層次卷積提取圖像的內(nèi)容特征,低層次卷積提取圖像的風(fēng)格特征,生成讓人比較滿意的藝術(shù)風(fēng)格圖片,在速度以及質(zhì)量等方面也比傳統(tǒng)方法更好。隨后,孫勁光等[3]在殘差式神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行圖像細(xì)節(jié)的風(fēng)格化,但沒有對(duì)風(fēng)格遷移的轉(zhuǎn)換網(wǎng)絡(luò)進(jìn)行研究。因此,本文在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上加入注意力機(jī)制,以期達(dá)到更好的風(fēng)格遷移效果。
CNN是一種帶有卷積層計(jì)算的前饋神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)(Deep Learning)的代表性算法之一[4],本質(zhì)是一個(gè)多層感知機(jī)[5]。它在對(duì)圖像進(jìn)行處理的過(guò)程中采用了局部連接和權(quán)值共享的方式,一方面減少了權(quán)值數(shù)量,讓網(wǎng)絡(luò)優(yōu)化更加方便,另一個(gè)方面降低了網(wǎng)絡(luò)模型的復(fù)雜度,即降低了欠擬合發(fā)生的風(fēng)險(xiǎn)。在圖像風(fēng)格遷移領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)可以更好地提取輸入圖像的特征以及重建輸出圖像的內(nèi)容和風(fēng)格。使用該網(wǎng)絡(luò)可以將風(fēng)格圖像的風(fēng)格特征逐層遷移到內(nèi)容圖像上,并將內(nèi)容圖像的內(nèi)容特征很好地保留下來(lái)。本文選用的卷積神經(jīng)網(wǎng)絡(luò)為VGG-16網(wǎng)絡(luò),是公認(rèn)的比較優(yōu)秀的卷積神經(jīng)網(wǎng)絡(luò)。
注意力機(jī)制來(lái)自于人類大腦對(duì)事物的注意力[6]。例如,我們的視覺系統(tǒng)會(huì)更多地關(guān)注圖像中一些亮眼的信息,忽略一些看上去無(wú)關(guān)緊要的信息。在某一時(shí)刻,眼睛的焦點(diǎn)只集中在一些相對(duì)重要的地方,而不是視野中的所有對(duì)象。這樣大腦可以有效過(guò)濾大量無(wú)用的視覺信息,提高視覺系統(tǒng)的識(shí)別能力。
在計(jì)算機(jī)視覺其他領(lǐng)域中,輸入圖像的某些部分的重要程度的占比會(huì)比其他部分更大一些。例如,在圖像分類問題中,輸入圖像中只有一些區(qū)域可能與判斷出這一圖像屬于哪一類有作用。注意力模型結(jié)合了相關(guān)性的概念,允許模型動(dòng)態(tài)地關(guān)注輸入圖片的某些部分。這些部分在執(zhí)行接下來(lái)的任務(wù)時(shí)會(huì)比其他部分更加有利。神經(jīng)網(wǎng)絡(luò)中的注意力模型借鑒了該函數(shù),使神經(jīng)網(wǎng)絡(luò)模型對(duì)輸入數(shù)據(jù)的不同像素點(diǎn)給予不同的注意和權(quán)重[7-8]。
注意力機(jī)制包括強(qiáng)注意力機(jī)制(Hard Attention)、軟注意力機(jī)制(Soft Attention)、時(shí)間注意力機(jī)制(Temporal Attention)、空間注意力機(jī)制(Spatial Attention)和雙通道注意力機(jī)制(Convolutional Block Attention Module,CBAM),本文選用雙通道注意力機(jī)制,并加入卷積神經(jīng)網(wǎng)絡(luò),在通道和空間維度上更加關(guān)注目標(biāo)物體,具有更好的解釋性。
將給定的圖片F(xiàn)∈RC×H×W作為輸入。雙通道注意力按順序推理通道注意映射MC∈RC×I×I和空間注意映射MS∈RI×H×W,整體注意力處理可概括為:
F*=MC(F)?F
(1)
F**=MS(F*)?F*
(2)
式(1)~(2)中,?表示逐元素乘法算子。
通道注意映射是由特征通道之間的關(guān)系生成的,把每個(gè)通道都視為一個(gè)特征檢測(cè)器,因此更關(guān)注給定輸入圖像中更有意義的部分。為了能有效地計(jì)算通道注意力,將特征映射的空間維數(shù)進(jìn)行壓縮,并在空間中將信息進(jìn)行聚合,比較常用的方法是空間信息聚合average-pooling。max-pooling收集關(guān)于不同物體特征的另一個(gè)重要線索,以推斷更詳細(xì)的通道注意。因此,本文同時(shí)使用average-pooling和max-pooling 特征。共享網(wǎng)絡(luò)由多層感知器(MLP)和1個(gè)隱藏層組成,利用特征間的空間關(guān)系生成空間注意映射。其通道注意力計(jì)算如下:
(3)
與通道注意力機(jī)制不同,空間注意力機(jī)制更關(guān)注圖像輸入的信息部分。這與通道注意力機(jī)制是互補(bǔ)的,空間注意力計(jì)算如下:
(4)
整體注意力機(jī)制CBAM流程如圖1所示。
圖1 整體注意力機(jī)制CBAM流程
本文的轉(zhuǎn)換網(wǎng)絡(luò)由下卷積層與雙通道注意力結(jié)合的卷積層、殘差層以及上卷積層組成。TransformerNet轉(zhuǎn)化網(wǎng)絡(luò)模型如圖2所示。
圖2 TransformerNet轉(zhuǎn)化網(wǎng)絡(luò)模型
首先,圖片經(jīng)過(guò)3層下采樣卷積層,每1個(gè)卷積層中都包含1個(gè)InstanceNorm2d歸一化層以及一個(gè)ReLU激活函數(shù)層。其中,歸一化層主要運(yùn)用在風(fēng)格遷移領(lǐng)域。在風(fēng)格遷移過(guò)程中,某張具體的圖片實(shí)例對(duì)遷移結(jié)果更具有依賴性。所以,風(fēng)格遷移不會(huì)對(duì)整個(gè)批次做歸一化處理,轉(zhuǎn)而對(duì)圖片的高(H)以及寬(W)做處理,計(jì)算其均值,以加速模型的收斂,并保持每個(gè)圖像之間的獨(dú)立性。InstanceNorm2d歸一化層的數(shù)學(xué)公式如下:
(5)
式(5)中,E(x)是batch的均值;Var(x)是batch的方差;ε是常數(shù);γ是對(duì)應(yīng)batch學(xué)習(xí)到的權(quán)重;β是偏置。ReLU激活函數(shù)的收斂速度快,不會(huì)出現(xiàn)梯度消失的問題。
其次,圖片經(jīng)過(guò)5層殘差層,每個(gè)殘差層中包含2個(gè)卷積層,每個(gè)卷積層的卷積核都是3×3。由于殘差網(wǎng)絡(luò)的特性,圖片經(jīng)過(guò)每個(gè)殘差層的輸入以及輸出是相等的。殘差網(wǎng)絡(luò)被用來(lái)加深網(wǎng)絡(luò)深度。
最后,圖片經(jīng)過(guò)3層上采樣層,得到遷移后的結(jié)果圖。InstanceNorm2d激活函數(shù)層的數(shù)字公式如下:
(6)
風(fēng)格遷移的損失函數(shù)分為內(nèi)容損失與風(fēng)格損失,總的損失函數(shù)如下:
Ltotal=αLcontent+βLstyle
(7)
式(7)中,α、β分別代表內(nèi)容損失與風(fēng)格損失的權(quán)重,本文設(shè)置的α/β=1×10-5。
(8)
風(fēng)格遷移領(lǐng)域的風(fēng)格損失使用格拉姆矩陣(Gram Matrix)來(lái)定義。格拉姆矩陣為:
(9)
(10)
本文實(shí)驗(yàn)環(huán)境為在Ubuntu18.04下和pytorch深度學(xué)習(xí)框架和在ImageNet上預(yù)訓(xùn)練好的VGG-16網(wǎng)絡(luò)權(quán)重。機(jī)器的顯存為11 GB,CPU為Intel 6×Xeon E5-2678 v3,內(nèi)存為62 GB,硬盤大小為100 GB,并使用NVIDIA GeForce RTX 2080 Ti進(jìn)行GPU加速。
數(shù)據(jù)集選用的是COCO2014的train2014數(shù)據(jù)集。將加入雙通道注意力的結(jié)果圖與沒加雙通道注意力的結(jié)果圖進(jìn)行比較。風(fēng)格遷移對(duì)比圖如圖3所示。從圖3中可以發(fā)現(xiàn),加入雙通道注意力之后的風(fēng)格遷移更加注重時(shí)鐘主體部分,并且在顏色的渲染方面也比傳統(tǒng)的VGG遷移效果要好一點(diǎn),顯得更加自然。
(a) 內(nèi)容圖片 (b) 原VGG遷移效果
引入峰值信噪比(PSNR)與結(jié)構(gòu)相似比(SSIM)來(lái)對(duì)結(jié)果進(jìn)行評(píng)價(jià):PSNR越大,說(shuō)明圖像的失真越小;SSIM越大說(shuō)明兩幅圖像越相似。2種模型的評(píng)價(jià)指標(biāo)及網(wǎng)絡(luò)迭代速度見表1。
表1 2種模型的評(píng)價(jià)指標(biāo)及網(wǎng)絡(luò)迭代速度
從表1可以看出,加入雙通道注意力之后,遷移效果有了顯著提升,網(wǎng)絡(luò)迭代速度也比傳統(tǒng)VGG16遷移有所提升。
采用了基于卷積神經(jīng)網(wǎng)絡(luò)的風(fēng)格遷移模型,并在此基礎(chǔ)上加入雙通道注意力機(jī)制,達(dá)到了更好的風(fēng)格遷移效果,提高了圖片生成的質(zhì)量與速度,讓圖片更好地進(jìn)行主體部分的風(fēng)格遷移。引入計(jì)算機(jī)視覺領(lǐng)域常用的評(píng)價(jià)指標(biāo)SSIM與PSNR以及2種模型的網(wǎng)絡(luò)迭代速度進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果表明,遷移效果和網(wǎng)絡(luò)迭代速度均有所提升。