侯澤宇 許 毅
(武漢理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 湖北 武漢 430061)
圖像風(fēng)格化技術(shù)可以將藝術(shù)作品的風(fēng)格遷移到另一種現(xiàn)實(shí)生活的圖像中,使得圖像在保留原始內(nèi)容的情況下加入卡通、動(dòng)漫、黑白、油畫、抽象畫等極具特色的藝術(shù)風(fēng)格,創(chuàng)作出具有藝術(shù)風(fēng)格的作品。目前,圖像風(fēng)格化已經(jīng)在攝影和視頻方面有了較為廣泛的應(yīng)用,在動(dòng)漫制作、電影特效和照片濾鏡等領(lǐng)域有了重大突破,極大地減少了藝術(shù)設(shè)計(jì)工作者的工作量,同時(shí)可以幫助非專業(yè)用戶方便快速地創(chuàng)作出具有藝術(shù)風(fēng)格的作品,有重要的現(xiàn)實(shí)意義和實(shí)際應(yīng)用價(jià)值。
近年來(lái),學(xué)者們?cè)谏疃葘W(xué)習(xí)的圖像風(fēng)格化方向進(jìn)行了很多研究,在圖像風(fēng)格化速度方面,可分為慢速圖像風(fēng)格化方法和快速圖像風(fēng)格化方法。慢速圖像風(fēng)格化方法的研究源于Gatys等[1]使用深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)進(jìn)行紋理合成的工作。之后他們又提出了迭代更新的圖像風(fēng)格化方法[2],該方法利用卷積神經(jīng)網(wǎng)絡(luò)VGGNet學(xué)習(xí)到的通用特征表示分離圖像的內(nèi)容與風(fēng)格,將風(fēng)格轉(zhuǎn)換問(wèn)題轉(zhuǎn)變成為神經(jīng)網(wǎng)絡(luò)的優(yōu)化問(wèn)題,但其生成一幅風(fēng)格化圖像需要反復(fù)進(jìn)行前反向計(jì)算迭代,耗時(shí)較長(zhǎng)。Li等[3]在Gatys的基礎(chǔ)上使用馬爾可夫隨機(jī)場(chǎng)(Markov Random Field,MRF)的方法代替Gram矩陣來(lái)確定風(fēng)格損失,圖像風(fēng)格化的效果優(yōu)于Gatys的方法,但生成風(fēng)格化圖像依然需要反復(fù)的迭代,耗時(shí)較長(zhǎng)。Johnson等[4]首次提出了快速圖像風(fēng)格化方法,該方法通過(guò)訓(xùn)練一個(gè)風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)來(lái)進(jìn)行風(fēng)格的遷移,從而將圖像風(fēng)格化的速度提升了近1 000倍,但是作者提出的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)參數(shù)約為100萬(wàn)個(gè),過(guò)多的網(wǎng)絡(luò)參數(shù)導(dǎo)致了風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)的訓(xùn)練耗時(shí)較長(zhǎng)。Ulyanov等[5]在Johnson的基礎(chǔ)上提出了多尺度的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)Texture Nets,網(wǎng)絡(luò)更加輕巧,圖像風(fēng)格化速度具有一定的提升,但網(wǎng)絡(luò)的訓(xùn)練仍需要較長(zhǎng)的時(shí)間。
除了風(fēng)格化速度方面的研究之外,學(xué)者們還提出了一系列針對(duì)特定情況下的圖像風(fēng)格化效果進(jìn)行提升的方法。Gatys等[6]提出使用顏色控制的方法,在圖像風(fēng)格化的過(guò)程中保留內(nèi)容圖像原本的顏色信息,在需要顏色保留的情況下可以提升圖像風(fēng)格化效果,但是對(duì)于需要顏色變化的圖像風(fēng)格化處理,該方法并不適用。吳聯(lián)坤[7]使用前景背景分離的方法,提升了純色背景圖像的風(fēng)格化效果,但是對(duì)于非純色背景的圖像,圖像風(fēng)格化效果較差。
根據(jù)上述的分析,針對(duì)圖像風(fēng)格化速度和效果兩個(gè)關(guān)鍵點(diǎn),本文提出利用更輕量的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò),并結(jié)合圖像物體空間語(yǔ)義信息控制的方法,在各種情況下均可以獲得更優(yōu)秀的風(fēng)格化生成圖像。
現(xiàn)實(shí)世界中的圖像場(chǎng)景一般比較復(fù)雜,在給內(nèi)容圖像進(jìn)行風(fēng)格轉(zhuǎn)換的過(guò)程中應(yīng)該尊重內(nèi)容圖像的場(chǎng)景語(yǔ)義信息,在圖像的空間信息層級(jí)進(jìn)行一定的控制,約束風(fēng)格化的空間范圍。因此,本文在圖像塊匹配方法的基礎(chǔ)上提出語(yǔ)義風(fēng)格損失,以控制圖像語(yǔ)義內(nèi)容與風(fēng)格的匹配程度,空間控制和語(yǔ)義風(fēng)格損失的計(jì)算原理如圖1所示。
圖1 空間控制和語(yǔ)義風(fēng)格損失計(jì)算原理圖
FSTSC方法使用一個(gè)尺寸為3×3的窗口,以1為步長(zhǎng)在內(nèi)容圖像經(jīng)過(guò)轉(zhuǎn)換網(wǎng)絡(luò)的輸出圖像的特征圖上進(jìn)行滑動(dòng),每次滑動(dòng)該窗口都作為一個(gè)patch,通過(guò)塊匹配方法在風(fēng)格特征圖中尋找最匹配的patch。
塊匹配方法使用歸一化交叉相關(guān)(Normalization Cross Correlation,NCC)函數(shù)作為匹配準(zhǔn)則[8],通過(guò)計(jì)算圖像之間的互相關(guān)性來(lái)確定匹配的程度,即在風(fēng)格特征圖Φl(s)中搜索與Φl(y)中選取的patch塊NCC最高的區(qū)域作為對(duì)應(yīng)匹配,計(jì)算方法為:
(1)
式中:ΨiΦl(y)為在轉(zhuǎn)換網(wǎng)絡(luò)輸出圖像的特征圖上選取的第i個(gè)patch;ΨjΦl(s)為在風(fēng)格特征圖上選取的第j個(gè)patch。
在尋找到匹配的patch之后,使用DeepLab-v2圖像語(yǔ)義分割算法[9]對(duì)風(fēng)格圖像和內(nèi)容圖像進(jìn)行語(yǔ)義分割操作,可以獲得具有多個(gè)內(nèi)容類別的語(yǔ)義分割圖,生成引導(dǎo)矩陣,該矩陣記錄了原圖像各個(gè)像素對(duì)應(yīng)的內(nèi)容類別。利用引導(dǎo)矩陣獲取patch中各個(gè)內(nèi)容類別對(duì)應(yīng)的patch引導(dǎo)向量,從而計(jì)算出patch引導(dǎo)Gram矩陣。假設(shè)c為patch塊p的內(nèi)容類別之一,首先通過(guò)引導(dǎo)矩陣得到類別c對(duì)應(yīng)的引導(dǎo)向量,即矢量化后的二進(jìn)制掩碼,之后將patch特征圖Fl(p)與類別c的patch引導(dǎo)向量Tc(p)相乘的結(jié)果作為patch引導(dǎo)特征圖:
Fl,c(p)=Fl(p)Tc(p)
(2)
進(jìn)一步計(jì)算出patch引導(dǎo)Gram矩陣:
Gl,c(p)=Fl,c(p)·Fl,c(p)T
(3)
l層patch語(yǔ)義風(fēng)格損失根據(jù)VGG-16損失網(wǎng)絡(luò)中第l層輸出特征圖的patch引導(dǎo)Gram矩陣進(jìn)行比較,將通過(guò)塊匹配方法獲得的兩個(gè)最匹配patch之間的所有內(nèi)容類別引導(dǎo)Gram矩陣的歐氏距離之和作為patch語(yǔ)義風(fēng)格損失,l層語(yǔ)義風(fēng)格損失為所有patch語(yǔ)義風(fēng)格損失之和:
Gl,c(ΨNN(i)(Φl(s)))‖2
(4)
式中:P為所有patch的總數(shù);C為每個(gè)patch包含的內(nèi)容類別總數(shù)??傉Z(yǔ)義風(fēng)格損失為relu1_2、relu2_2、relu3_3和relu4_3四層語(yǔ)義風(fēng)格損失之和:
(5)
對(duì)于內(nèi)容損失,使用內(nèi)容圖像經(jīng)過(guò)轉(zhuǎn)換網(wǎng)絡(luò)的輸出圖像y和內(nèi)容圖像c在損失網(wǎng)絡(luò)的relu4_2層輸出的特征圖之間的歐氏距離作為內(nèi)容損失:
Lcontent=‖Φl(y)-Φl(c)‖2
(6)
FSTSC方法使用以上的方式對(duì)圖像風(fēng)格化過(guò)程中圖像風(fēng)格化的空間范圍進(jìn)行控制,為了使生成圖像更加平滑,還加入了全變差正則化損失LTV。因此,總損失Ltotal為內(nèi)容損失、語(yǔ)義風(fēng)格損失與全變差正則化損失的加權(quán)之和:
Ltotal=λcLcontent+λsLstyle+λTVLTV
(7)
式中:λc為內(nèi)容損失的權(quán)重;λs為語(yǔ)義風(fēng)格損失的權(quán)重;λTV為全變差正則化損失的權(quán)重。
為了進(jìn)一步降低風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)的訓(xùn)練時(shí)間,F(xiàn)STSC方法設(shè)計(jì)了一個(gè)新的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò),精簡(jiǎn)了網(wǎng)絡(luò)架構(gòu),減少了網(wǎng)絡(luò)的參數(shù)數(shù)量,F(xiàn)STSC方法的總體結(jié)構(gòu)如圖2所示。
圖2 總體結(jié)構(gòu)圖
FSTSC方法主要包括一個(gè)風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)和一個(gè)損失網(wǎng)絡(luò)。風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)以殘差網(wǎng)絡(luò)[10]作為基礎(chǔ),共包含三個(gè)部分。第一部分為下采樣,根據(jù)GoogLeNet中非對(duì)稱卷積的設(shè)計(jì)思想[11],將一個(gè)9×9卷積層分解為9×1和1×9的兩個(gè)卷積層,可以在保證感受野相同的情況下減少網(wǎng)絡(luò)的參數(shù)數(shù)量,并采納了Radford等的建議并未使用池化層,而是使用小步長(zhǎng)的卷積層進(jìn)行下采樣[12],所以該部分共包含了9×1卷積層、1×9卷積層和3×3卷積層。第二部分由4個(gè)相同的殘差塊組成,每個(gè)殘差塊均包含兩個(gè)3×3卷積層,在卷積層之間使用實(shí)例歸一化(Instance Norm)層和Leaky ReLU層進(jìn)行連接,以增強(qiáng)網(wǎng)絡(luò)的泛化能力并解決部分神經(jīng)元失效的問(wèn)題[13]。第三部分為上采樣,使用與下采樣相同數(shù)量的反卷積層將圖像進(jìn)行放大,還原至與輸入圖像相同的尺寸,最后的卷積層使用tanh作為激活函數(shù)以保證輸出值在[0,255]內(nèi)[14]。該風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)降低了網(wǎng)絡(luò)模型的復(fù)雜度,能夠提升圖像風(fēng)格化速度,提高圖像風(fēng)格化效率。
該模型利用在ImageNet數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練的VGG-16網(wǎng)絡(luò)作為損失網(wǎng)絡(luò),基于此網(wǎng)絡(luò)提取圖像的高維特征,通過(guò)不同層的響應(yīng)結(jié)果構(gòu)建內(nèi)容損失Lcontent和語(yǔ)義風(fēng)格損失Lstyle分別用于衡量圖像之間的內(nèi)容和風(fēng)格差異,從而計(jì)算出總損失。之后使用Adam優(yōu)化方法逐步減小總損失值來(lái)進(jìn)行風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)權(quán)值W的更新,完成風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)的訓(xùn)練:
(8)
最終將風(fēng)格圖像的風(fēng)格保存到風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)模型中,在使用階段,將內(nèi)容圖像輸入到風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)就能夠快速地得到生成圖像,從而進(jìn)行快速圖像風(fēng)格化處理。
FSTSC方法的實(shí)驗(yàn)環(huán)境采用六核心的Intel Core i7-8700K CPU,內(nèi)存為16 GB,運(yùn)行64位Ubuntu 18.04操作系統(tǒng),使用NVIDIA GTX 1080Ti GPU,顯存為11 GB。實(shí)驗(yàn)主要使用Python作為編程語(yǔ)言,通過(guò)開源的深度學(xué)習(xí)框架TensorFlow進(jìn)行實(shí)現(xiàn),并使用CUDA和CuDNN技術(shù)實(shí)現(xiàn)GPU加速。
風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)的訓(xùn)練使用MSCOCO 2014數(shù)據(jù)集,共采用80 000幅圖像作為訓(xùn)練集,設(shè)置batch size為10,epoch為2,采用學(xué)習(xí)率自適應(yīng)的優(yōu)化算法Adam Optimizer,設(shè)置學(xué)習(xí)率為0.001。
將FSTSC方法與Gatys等[2]和Johnson等的方法[4]進(jìn)行對(duì)比,實(shí)驗(yàn)包括風(fēng)景、建筑、動(dòng)植物等場(chǎng)景,實(shí)驗(yàn)結(jié)果如圖3所示??梢钥闯?,Gatys等的方法和Johnson等的方法忽略了內(nèi)容圖像與風(fēng)格圖像在內(nèi)容上的差異,在風(fēng)格轉(zhuǎn)換的過(guò)程中沒(méi)有考慮語(yǔ)義內(nèi)容信息,導(dǎo)致生成圖像部分內(nèi)容與風(fēng)格不匹配,比如在第二行結(jié)果中的草地出現(xiàn)了鮮花的風(fēng)格,第三行結(jié)果中的天空出現(xiàn)了大橋的風(fēng)格,以及第四行結(jié)果中的夜空出現(xiàn)了建筑物的風(fēng)格等。而FSTSC方法在進(jìn)行圖像風(fēng)格化時(shí),考慮到圖像子空間區(qū)域中語(yǔ)義內(nèi)容與風(fēng)格的匹配關(guān)系,對(duì)風(fēng)格圖像和內(nèi)容圖像分別進(jìn)行語(yǔ)義分割預(yù)處理,使得圖像的內(nèi)容與風(fēng)格相匹配,圖像風(fēng)格化的結(jié)果更加真實(shí)。此外,相比現(xiàn)有方法,F(xiàn)STSC方法的生成圖像邊緣更加平滑,效果更加優(yōu)秀。
圖3 3種圖像風(fēng)格化方法效果對(duì)比
對(duì)實(shí)驗(yàn)結(jié)果的評(píng)價(jià)主要包括主觀評(píng)價(jià)和客觀評(píng)價(jià)兩方面,其中主觀評(píng)價(jià)主要是對(duì)圖像風(fēng)格化的效果進(jìn)行評(píng)價(jià),以人為觀察者,對(duì)生成圖像的優(yōu)劣作出主觀的定性評(píng)價(jià)。共選取20人作為觀察者參與實(shí)驗(yàn),向每位觀察者展示風(fēng)格圖像及對(duì)應(yīng)的3種方法的生成圖像,要求觀察者在觀看圖像的同時(shí)根據(jù)與風(fēng)格圖像風(fēng)格的相似程度給出相應(yīng)的評(píng)價(jià)分值,使用分值1~5表示很差、較差、一般、較好、很好五個(gè)等級(jí),實(shí)驗(yàn)共進(jìn)行20次,最終將每幅結(jié)果圖的平均分值作為最后的評(píng)價(jià)分值[15],結(jié)果如圖4所示。實(shí)驗(yàn)結(jié)果表明,F(xiàn)STSC方法的生成圖像的風(fēng)格與風(fēng)格圖像最相似,圖像風(fēng)格化效果最好。
圖4 圖像風(fēng)格化效果主觀評(píng)價(jià)
客觀評(píng)價(jià)主要從風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)的訓(xùn)練時(shí)間和圖像風(fēng)格化速度兩方面進(jìn)行比較。對(duì)于風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)訓(xùn)練時(shí)間的比較,本文在相同實(shí)驗(yàn)環(huán)境下將Johnson等提出的殘差轉(zhuǎn)換網(wǎng)絡(luò)[4]、Ulyanov等提出的多尺度轉(zhuǎn)換網(wǎng)絡(luò)[5]與FSTSC方法使用的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò),經(jīng)過(guò)40 000次迭代訓(xùn)練所需時(shí)間進(jìn)行對(duì)比,結(jié)果如表1所示。
表1 各風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)訓(xùn)練時(shí)間對(duì)比
對(duì)于圖像風(fēng)格化速度的比較,由于Gatys等的風(fēng)格化方法原理與其他方法不同,因此本文使用Gatys方法迭代500次的圖像風(fēng)格化時(shí)間與Johnson等的方法、Ulyanov等的方法、FSTSC方法進(jìn)行對(duì)比,結(jié)果如表2所示。
表2 各圖像風(fēng)格化方法風(fēng)格化時(shí)間對(duì)比 s
從表1和表2的結(jié)果可以看出,F(xiàn)STSC方法設(shè)計(jì)的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)結(jié)構(gòu)更加精簡(jiǎn),參數(shù)數(shù)量減少,在降低計(jì)算成本和訓(xùn)練時(shí)間的同時(shí)可提升圖像風(fēng)格化的速度。因此,F(xiàn)STSC方法在圖像風(fēng)格化效果和速度上具有一定的優(yōu)化效果,針對(duì)快速圖像風(fēng)格化方法進(jìn)行有效的提升。
本文提出了一種FSTSC方法,使用塊匹配方法尋找風(fēng)格圖像和內(nèi)容圖像最匹配的patch,并利用圖像語(yǔ)義分割方法進(jìn)行預(yù)處理,根據(jù)不同的內(nèi)容類別計(jì)算語(yǔ)義風(fēng)格損失,以保證生成圖像的局部?jī)?nèi)容與其風(fēng)格相匹配。另外,設(shè)計(jì)了結(jié)構(gòu)更加精簡(jiǎn)的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò),從而可以加快圖像風(fēng)格化速度的同時(shí)有效提升圖像風(fēng)格化的效果。從圖像風(fēng)格化效果的主觀評(píng)價(jià)和圖像風(fēng)格化時(shí)間的客觀評(píng)價(jià)兩方面進(jìn)行分析,結(jié)果表明FSTSC方法優(yōu)于現(xiàn)有的一些方法。
下一步的研究工作是解決在圖像風(fēng)格化過(guò)程中當(dāng)內(nèi)容圖像與風(fēng)格圖像的語(yǔ)義內(nèi)容差別過(guò)大時(shí),由于很難保證內(nèi)容與風(fēng)格的完美匹配所導(dǎo)致的在一定程度上影響生成圖像視覺觀感的問(wèn)題。