朱佳寶,張建勛,陳虹伶
重慶理工大學 計算機科學與工程學院,重慶400054
在短視頻興起的時代,各種風格濾鏡效果備受人們喜愛,圖像風格遷移技術(shù)已經(jīng)廣泛地被人們熟知。然而,許多圖像風格遷移方法一個模型都只能針對一種風格,在應(yīng)用上效率低下。
Gatys等人[1]在2015年首次提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的統(tǒng)計分布參數(shù)化紋理建模方法,他們發(fā)現(xiàn)VGG(Visual Geometry Group)網(wǎng)絡(luò)的高層能夠很好地表達圖像的語義風格信息,網(wǎng)絡(luò)的低層能夠很好地表示圖像的內(nèi)容紋理特征信息,通過計算Gram矩陣來表示一種風格紋理,再利用圖像重建的方法,不斷優(yōu)化迭代來更新白噪聲圖像的像素值,使其Gram矩陣與風格圖Gram矩陣相似,最后重建出既具有風格圖的風格又具有內(nèi)容圖像的內(nèi)容,這一研究引起了后來學者的廣泛研究,并成功使用深度學習技術(shù)來進行風格遷移。
文獻[2]從理論上驗證了Gram矩陣為什么能夠代表風格特征,認為神經(jīng)風格遷移的本質(zhì)是匹配風格圖像與生成圖像之間的特征分布,并提出一種新的在不同層使用批歸一化統(tǒng)計量對風格建模方法,通過在VGG網(wǎng)絡(luò)不同層的特征表達的每一個通道的均值和方差來表示風格,為后續(xù)研究提供了風格建模的參考。這些方法都是在CNN(Convolutional Neural Networks)網(wǎng)絡(luò)的高層特征空間提取特征,高層特征空間是對圖像的一種抽象表達,容易丟失一些低層次的信息,比如邊緣信息的丟失會造成結(jié)構(gòu)上形變。文獻[3]提出在風格遷移的同時應(yīng)該考慮到像素空間和特征空間,在Gatys提出的損失函數(shù)基礎(chǔ)上,將在像素空間的內(nèi)容圖進行拉普拉斯算子濾波,得到的結(jié)果與生成圖之間的差異作為一個新的損失添加進去,彌補了在抽象特征空間丟失低層次圖像信息的缺點。文獻[4]分別將內(nèi)容圖像與風格圖像進行語義分割,來增強圖像的邊緣真實性。
文獻[5]提出了一個取代Gram損失的MRF損失,將風格圖與生成圖分成若干塊,對每個生成圖中的塊去尋找與其最接近的風格塊,這種基于塊匹配的風格建模方法比以往的統(tǒng)計分布方法有的主要優(yōu)勢在于,當風格圖不是一幅藝術(shù)畫作,而是同樣的攝影作品,可以很好地保留圖像中的局部結(jié)構(gòu)等信息,提高了模型的泛化能力。文獻[6-7]在Gatys的方法基礎(chǔ)上,提出一種快速風格遷移方法,通過一個前向網(wǎng)絡(luò)去學習一個風格,前向網(wǎng)絡(luò)基于殘差網(wǎng)絡(luò)設(shè)計,損失函數(shù)依然采用Gatys的算法。文獻[8]對基于塊匹配的風格遷移算法做了改進,引入生成對抗網(wǎng)絡(luò),使用鑒別器來替代塊匹配這一過程,加速了風格遷移的效率。
這些方法在靜態(tài)圖像的風格遷移任務(wù)中,對于每一個風格都需要單獨訓練一個模型,不利于工業(yè)的落地使用。對于有很多種風格的應(yīng)用來說,每一個模型都會占用大量的存儲空間,鑒于此,很多學者就開始研究利用一個模型去學習多種風格。文獻[9]提出通過發(fā)掘出不同風格網(wǎng)絡(luò)之間共享的部分,然后對于新的風格只去改變有差別的部分,共享的部分保持不變,他們發(fā)現(xiàn)在訓練好的風格網(wǎng)絡(luò)基礎(chǔ)上,只通過在Instance Norlization層做一個彷射變換,每個新風格只需要去訓練很少的參數(shù),就可以得到一個具有完全不同網(wǎng)絡(luò)風格的結(jié)果。文獻[10]提出一種自適應(yīng)實例正則化層(AdaIN),通過權(quán)衡內(nèi)容特征與風格特征之間的均值和方差,實現(xiàn)了一種多風格遷移模型,但是這種方法會對遷移紋理呈現(xiàn)塊狀干擾。文獻[11]提出將任意風格圖像的語義信息對齊風格特征來重建內(nèi)容特征,不僅在整體上匹配其特征分布,又較好地保留了細節(jié)的風格信息。但是這種方法會在一定程度上造成模糊的情況。文獻[12]把風格化網(wǎng)絡(luò)中間層稱為StyleBank層,將其與每個風格綁定,對于新風格只去訓練StyleBank層,其余層保持不變。文獻[13]通過預測實例正則化的參數(shù)來適應(yīng)不同的內(nèi)容與風格樣式,雖然實現(xiàn)了任意內(nèi)容與風格的轉(zhuǎn)換,卻降低了風格化的效果。
假設(shè)應(yīng)用需要有n種風格化遷移場景,就需要有n種模型堆砌在應(yīng)用中,勢必會造成應(yīng)用占用大量資源,并且用戶體驗也會下降。針對這種問題,本文提出一種可學習的線性變換網(wǎng)絡(luò),可以接受任意的一對內(nèi)容圖像和風格圖像,使用兩組CNNs網(wǎng)絡(luò)來作為轉(zhuǎn)換網(wǎng)絡(luò)模塊,以此來擬合被風格遷移廣泛使用的Gram矩陣,一組用來擬合內(nèi)容特征,另一組用來擬合風格特征。通過實驗得出,本文的風格遷移方法具有更高的靈活性,風格化效果也大有提示,并能夠很好地應(yīng)用在視頻風格化領(lǐng)域。
單模型是指訓練一個模型,單風格是指這個模型只能遷移一種風格。文獻[7]在Gatys等人的方法基礎(chǔ)上,提出去訓練一個特定的前饋網(wǎng)絡(luò),來改善Gatys等人提出的風格遷移方法耗時的問題。主要是針對一張風格圖去訓練模型,在測試階段只需要輸入一張內(nèi)容圖像,就可以得到一個固定風格樣式的圖像。其網(wǎng)絡(luò)結(jié)果如圖1所示。
這種模型結(jié)構(gòu)由兩個網(wǎng)絡(luò)組成,一個圖像轉(zhuǎn)換網(wǎng)絡(luò)和一個損失網(wǎng)絡(luò)。其中圖像轉(zhuǎn)換模型由一個下采樣層、中間殘差塊層、后一個上采樣層構(gòu)成。訓練階段風格圖像是固定的,只有一張,而內(nèi)容圖像則是使用COCO數(shù)據(jù)集,試圖用一張風格圖像來擬合多種內(nèi)容圖像,來達到一個快速遷移的效果。
其中x是輸入圖像,經(jīng)過圖像轉(zhuǎn)換模塊得到了風格化圖y?,y s表示風格圖像,yc表示的是輸入的內(nèi)容圖像,其實yc=x。而后通過一個損失函數(shù)網(wǎng)絡(luò),分別計算y?與y c在不同網(wǎng)絡(luò)層之間的內(nèi)容損失,y?與y s之間的風格損失。網(wǎng)絡(luò)中內(nèi)容損失選擇的是relu3_3層,風格損失是多層的組合,越低層風格化的效果越清晰,與內(nèi)容紋理相近;越高層風格化的效果就越抽象,內(nèi)容紋理越扭曲。
雖然基于訓練前饋網(wǎng)絡(luò)的方法能夠提高風格遷移的速度,但是一個模型只能處理特定的風格,在實際應(yīng)用上嚴重不足。因此,研究一種單模型多風格遷移方法有實際的應(yīng)用意義。本文在該方法的基礎(chǔ)上,提出一種改進方法,使得一個模型可以遷移多種風格。
圖1 單模型單風格遷移模型示意圖
圖2 改進的網(wǎng)絡(luò)結(jié)構(gòu)圖
在風格遷移任務(wù)中,通常都是在一個網(wǎng)絡(luò)中分別對內(nèi)容圖像和風格圖像進行處理,通過一個預訓練好的VGG分類網(wǎng)絡(luò),從網(wǎng)絡(luò)提取出的高層特征,兩張圖像的歐式距離越小,說明兩張圖在內(nèi)容上是相似的;從網(wǎng)絡(luò)提取的低層特征,用Gram矩陣統(tǒng)計的共同特性越多,則表示兩張圖像的風格是越接近的。
但是,風格圖像往往有其共同的相似性,比如印象派的風格擁有相似的筆觸,它們只是色彩上有差異,梵高的畫作與莫奈的畫作也有很多相似之處。本文希望通過學習到不同風格之間的共同特性,使用線性變化來將任意風格遷移到內(nèi)容圖像上。
本文網(wǎng)絡(luò)結(jié)構(gòu)由三部分組成,一個是預訓練好的編碼器解碼器模塊,用來提取圖像特征和重建圖像,風格轉(zhuǎn)換模塊用來學習任意風格之間的線性變換,損失函數(shù)網(wǎng)絡(luò)模塊用來約束重建網(wǎng)絡(luò),生成出高質(zhì)量的圖像。本文網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖2所示。
其中的Encoder、Decoder和loss model都是采用VGG網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)的輸入是一對256×256大小的圖片,通過Encode分別提取出內(nèi)容特征F c和風格特征F s。文獻[6]中直接將Fc與F s直接通過轉(zhuǎn)換網(wǎng)絡(luò)來重建圖像,這些重建的圖像細膩度較低,越低層的特征重建出的效果會越好,所以本文通過跳躍連接的方式,將Fc與轉(zhuǎn)換網(wǎng)絡(luò)輸出結(jié)果進行連接,以此重建出更加細膩,更加符合內(nèi)容圖像特征的風格化結(jié)果。
大多數(shù)風格遷移研究人員都直接將F s作為風格的提取特征來和Fc進行對比計算,這種方式會隨著風格圖像的增多,風格化的質(zhì)量逐漸下降。本文使用了一個中間虛擬函數(shù)?s來表示風格特征,?s可以對F s做非線性映射,即?s=?(F s)。本文的優(yōu)化目標是獲得最小的F d,使得編碼器輸出的特征圖與所遷移的風格特征圖盡可能的匹配,其優(yōu)化公式如下:
其中,N是像素個數(shù),C是通道數(shù),表示將特征向量F進行零均值化,表示F d與?s之間的最小中心協(xié)方差。并且,由公式(1)可知,當且僅當F向量模的平方最小時,才有最小值,即:
由奇異值分解可得:
其中,U是一組正交基,可知轉(zhuǎn)換遷移特征向量T都是由內(nèi)容特征向量與風格特征向量之間的協(xié)方差矩陣決定的。為了避免大量的協(xié)方差之間的矩陣運算,本文設(shè)計的轉(zhuǎn)換網(wǎng)絡(luò)模塊能夠直接地輸出結(jié)果矩陣,并將內(nèi)容特征與風格特征項分開,網(wǎng)絡(luò)轉(zhuǎn)換模塊設(shè)計如圖3所示。
圖3 轉(zhuǎn)換網(wǎng)絡(luò)設(shè)計圖
對編碼器輸出的內(nèi)容特征F c與風格特征F s設(shè)置單獨的通道,包含3個卷積層,卷積核大小都是3×3,卷積核數(shù)量依次減半,將卷積操作得出的與其轉(zhuǎn)置矩陣進行相乘得到其對應(yīng)的協(xié)方差矩陣,在將得出的協(xié)方差矩陣通過一個全連接層,再與風格特征通道進行內(nèi)積,得出轉(zhuǎn)換矩陣T。
本文采用組合的多級風格損失函數(shù),風格特征損失主要將VGG網(wǎng)絡(luò)的relu1_2、relu2_2、relu3_3三層進行合并,通過組合的多層次風格損失,用來增強轉(zhuǎn)換網(wǎng)絡(luò)的泛化能力。內(nèi)容特征損失主要來自VGG網(wǎng)絡(luò)的第relu3_3和relu4_3層。
風格損失計算方法與內(nèi)容損失計算一致,都是采用二者特征激活值做距離差平方計算,是風格損失在三層網(wǎng)絡(luò)中的平均值,其公式如下:
因此,本文的總損失函數(shù)為:
本文的損失模塊設(shè)計圖如圖4所示。
圖4 損失模塊設(shè)計圖
高層的內(nèi)容特征信息能夠夠重建出原圖的內(nèi)容,低層的風格特征信息能夠更好地表示風格,所以本文沒有取第5層的特征信息。本文的風格重建損失是VGG網(wǎng)絡(luò)前三層損失之和,內(nèi)容重建損失分別使用的是relu3_3層和relu4_3層,為了驗證本文的轉(zhuǎn)換模塊是否能夠靈活地適應(yīng)不同層的風格損失,本文將使用不同的內(nèi)容重建損失的生成效果進行展示,如圖5所示。
圖5 不同層內(nèi)容損失與組合風格損失效果
根據(jù)圖5實驗結(jié)果,使用的組合風格損失能夠很好地表現(xiàn)出風格圖像的風格;使用relu4_3層的內(nèi)容損失重建出來的圖像,在紋理上更清晰,色彩上更加平滑。
動態(tài)視頻風格化遷移通常是將視頻拆分成一幀一幀的圖像,將每一幀圖像送入訓練好的模型,得到風格化效果的幀圖像,然后再將風格化幀圖像重新組合成視頻。但是這種方式特別依賴模型的規(guī)模,若是模型特別繁重,風格化過程會特別耗時,且容易造成抖動和閃爍的問題。
視頻中的抖動和閃爍問題,多數(shù)領(lǐng)域都是添加光流[14]來加強時間一致性約束。Ruder等人[15]采用基于迭代優(yōu)化的方式,通過添加光流一致性約束,來重點計算運動物體的邊界,以此來保持風格化后視頻的連續(xù)性,雖然這種方法能夠解決視頻閃爍的問題,引入光流的計算會帶來更大的計算開銷,會降低風格化速度。
第2章所介紹的模型,證明了本文的線性變換能夠快速地適用于風格變換,并且網(wǎng)絡(luò)是輕量的,它只有兩組CNNS結(jié)構(gòu),共6個卷積層,2個全連接層,輕量的網(wǎng)絡(luò)能夠快速地完成風格遷移過程,能夠產(chǎn)生穩(wěn)定傳輸?shù)囊曨l。這是因為內(nèi)容視頻與風格化后的視頻應(yīng)該存在某種相似性,這種相似性應(yīng)該是二者在像素和特征信息之間具備某種一定的相似性。在風格化過程中,這種信息相似關(guān)系會被保留下來。
事實上,靜態(tài)圖像風格遷移與視頻遷移中的相似性保留是一致的,只是屬于不同形式的矩陣表示關(guān)系,它們都可以用特征信息之間的線性變換表示。令Sim(F)表示特征之間的相似性保留,其相似性關(guān)系表示為:
在本文的設(shè)計中,網(wǎng)絡(luò)每層中輸出的特征圖大小決定了這種相似性所保留的尺度,為了使得這種相似性能最大化地保留,本文選擇了更淺層的網(wǎng)絡(luò),在自編碼器結(jié)構(gòu)中,使用VGG網(wǎng)絡(luò)relu3_1層作為輸出,僅對風格樣式進行一次特征提取,然后將其應(yīng)用在所有幀上,這樣可以減少大量的計算,且能夠有效保持幀間的內(nèi)容關(guān)聯(lián)性,這是因為視頻遷移中,幀間的內(nèi)容關(guān)聯(lián)性主要依賴于內(nèi)容特征。其應(yīng)用結(jié)果在本文的4.4節(jié)展示??梢园l(fā)現(xiàn),使用線性變換來映射風格遷移能夠有效地應(yīng)用在動態(tài)視頻遷移,并且對于運動物體也能有效地解決閃爍和抖動的問題。
下面介紹本文實驗的相關(guān)軟硬件環(huán)境及訓練細節(jié):
(1)硬件環(huán)境:處理器為Intel?CoreTMi7-8750H CPU@2.20 GHz,8 GB DDR4內(nèi)存,顯卡為NVIDIA GeForce GTX1050Ti 4 GB獨立顯卡。
(2)軟件環(huán)境:Linux Mint19.2操作系統(tǒng),Python3.6,CUDA9.2,troch0.4.1-cu92,opencv3.6等相關(guān)工具包。
本文實驗內(nèi)容數(shù)據(jù)集使用MS-COCO,使用Kaggle比賽上的Painter by numbers WikiArt數(shù)據(jù)集作為本文的風格數(shù)據(jù)集。其中內(nèi)容數(shù)據(jù)集有80 000多張圖片,圖像內(nèi)容多種多樣,包括人物照、風景照、建筑照等;風格數(shù)據(jù)集有8 000張圖片。
由于數(shù)據(jù)集里面圖片大小不一,所有圖片送入網(wǎng)絡(luò)前都需進行預處理,保持圖像之間的比例關(guān)系,將大小重新調(diào)整為300×300,然后從中隨機裁剪出256×256大小區(qū)域作為訓練樣本輸入,因此網(wǎng)絡(luò)可以處理任意大小的輸入。
本文將網(wǎng)絡(luò)分為兩步訓練,首先訓練對稱的編碼器、解碼器結(jié)構(gòu)來重建任意輸入圖像,使用在ImageNet上預訓練好的VGG網(wǎng)絡(luò)作為初始化參數(shù),當訓練損失穩(wěn)定時結(jié)束訓練,然后將其參數(shù)固定,最后訓練轉(zhuǎn)換網(wǎng)絡(luò)。本文BatchSize設(shè)置為1,其中內(nèi)容損失權(quán)重為α=1,風格損失權(quán)重β=0.02,這是為了使得重建出的風格圖像能夠保留更多的內(nèi)容信息,學習率為0.000 1。
為了驗證本文方法的有效性,本文分別與Johnson[6]、AdaIN[10]、Avatar-net[11]和Ghiasi[15]的方法進行比較,風格化實驗效果如圖6所示。分別測試了三種風格類型的遷移效果,第一行是對梵高的油畫作品進行風格遷移,從圖中可以看到,Johnson和AdaIN方法的風格化紋理遷移過重,導致生成圖片天空處顯得雜亂,Avatar-net方法能夠較好地匹配內(nèi)容與風格特征,只是生成效果顯得暗淡,Ghiasi的方法在天空區(qū)域風格紋理過重,本文的方法能夠更好地匹配內(nèi)容與風格特征,且生成效果更具觀賞性。第二行是對素描風格類型進行遷移,輸入的是一張年輕女性頭像,其中Johnson的方法在眼睛處風格效果不佳,AdaIN方法在紋理上顯得粗糙,Avatar-net方法風格化后在嘴角鼻子出顯得扭曲,Ghiasi的方法在頭發(fā)臉頰等處遷移效果不夠細膩,而本文方法能夠在臉部細節(jié)與頭發(fā)紋理上都有著最好的表現(xiàn)。第三行是對密集風格塊類型進行遷移,其中Johnson的方法紋理遷移過重,AdaIN方法紋理已變得模糊,Avatar-net方法在建筑邊界區(qū)已信息丟失,Ghiasi的方法對風格樣式的模塊化遷移紋理太重,導致風格化效果有很多雜亂的小方塊,而本文的方法重建出的圖像紋理信息保存完整,風格化效果也比較完整,沒有出現(xiàn)大的扭曲現(xiàn)象。
本文的生成效果能夠更好,得益于轉(zhuǎn)換網(wǎng)絡(luò)采用了雙通道結(jié)構(gòu),將內(nèi)容特征與風格特征分開處理,減少了噪聲的引入,所以生成的圖像內(nèi)容與風格之間才能有較少的干擾。
本文選用了一段健身愛好者跑步的視頻作為實驗數(shù)據(jù),時長共33 s,首先使用ffmpeg將視頻拆分成一幀一幀的圖像,總計拆分為338幀圖像。本文將該動態(tài)視頻轉(zhuǎn)換為具有梵高畫作的風格視頻,并對關(guān)鍵幀的結(jié)果進行展示,如圖7所示。
該實驗數(shù)據(jù)包含鏡頭的變換,鏡頭從前往后在拉近,從結(jié)果可以看出,本文的風格遷移算法在運動物體上具有很好的穩(wěn)定性,不需要添加光流等方法,就可以遷移出具有穩(wěn)定的幀圖像,也沒有出現(xiàn)遷移過度的問題,幀圖像上的影子等場景也沒有被風格化侵蝕,整體上來說,本文方法的遷移效果質(zhì)量完成度高,內(nèi)容圖像特征保留完整,風格化效果適中,風格化速度快。
為驗證本文方法在視頻風格遷移中更具有效性,分別與Avatar-net和AdaIN方法進行對比,抽取上述視頻中第10幀、第224幀與第329幀圖像進行展示,其結(jié)果如圖8所示。
圖6 三種風格類型的遷移效果實驗結(jié)果對比圖
圖7 關(guān)鍵幀風格遷移效果
圖8 關(guān)鍵幀效果對比圖
從結(jié)果展示可以看出,本文的方法出現(xiàn)的偽影較少,風格化效果最佳。
由于風格化難以有定量的實驗值來作為評價,其好壞的評價受個人主觀因素的影響。大多數(shù)的研究人員都是采用與其他實驗結(jié)果進行對比來作為評價方法。本文主要采用峰值信噪比(PSNR)與結(jié)構(gòu)相似性(SSIM)來作為度量方法。
PSNR用來衡量圖像的生成質(zhì)量,SSIM用來衡量圖像的結(jié)構(gòu)相似性,這兩個值越大表示風格化的圖像質(zhì)量越高,以運行時間復雜度為指標,本文以256×256大小的圖像作為測試數(shù)據(jù),以i7-8750H CPU作為計算處理器,分別與Johnson、AdaIN、Avatar-net和Ghiasi的方法進行比較,其結(jié)果如表1所示。
表1 定量分析結(jié)果及運行時間對比
從表1中可以觀察出,峰值信噪比本文得到11.591的分數(shù),比其他四種都要高一些,說明本文方法生成的圖像質(zhì)量最高。結(jié)構(gòu)性本文方法獲得0.499的分數(shù),同樣比其他方法要高,說明本文方法生成的圖像與內(nèi)容圖像具有更高的相似性。
由于本文方法沒有使用Gram矩陣,減少了大量的矩陣運行,所以本文方法在所需要使用的運行時間更少。
以往的風格遷移模型,每個模型只能對應(yīng)一種風格,當遷移其他風格圖像的時候就需要重新去訓練模型,使得應(yīng)用效率低下。本文通過提出一種線性變換的輕量網(wǎng)絡(luò)結(jié)構(gòu),使得單個模型可以遷移任意風格,大大改善了在實際應(yīng)用上的能力;且在實驗效果上相比其他方法有一定的提升,并且對動態(tài)視頻幀也有一定的風格約束能力。