孫 冬,時(shí) 宇,高劉雅,李芳芳,高清維,盧一相
(安徽大學(xué) 電氣工程與自動(dòng)化學(xué)院,安徽 合肥 230601)
傳統(tǒng)的非參數(shù)圖像風(fēng)格遷移(非真實(shí)感渲染[1-2])通過筆觸渲染、圖像類比、紋理合成和圖像濾波的方式,捕捉圖像的低級特征,對圖像進(jìn)行真實(shí)化渲染.Hertzmann在文獻(xiàn)[3-4]中分別提出了筆觸繪制算法和圖像類比算法.筆觸根據(jù)源圖像的色彩進(jìn)行選擇,將風(fēng)格描述為筆觸算法的一組直觀參數(shù),通過調(diào)整參數(shù)改變繪畫風(fēng)格,但筆觸算法的局限性較大,往往只能根據(jù)某一特定的風(fēng)格進(jìn)行設(shè)計(jì).圖像類比算法通過學(xué)習(xí)源圖像示例之間的映射關(guān)系,進(jìn)而得到目標(biāo)圖像的風(fēng)格化效果圖,但是該算法只捕獲到圖像的低級特征,無法獲得有效的樣式,效果不理想.Efros等[5]提出了一種圖像絎縫方法,通過將源圖像的小塊拼接在一起的方法合成新圖像,該算法簡單高效,能夠有效擴(kuò)展紋理圖像,但是產(chǎn)生了一個(gè)大的隨機(jī)圖像,每處理一次大隨機(jī)圖像,就需要遍歷小的紋理圖像的所有像素,導(dǎo)致較長的運(yùn)行時(shí)耗.Raad等[6]研究的Efros-Freeman算法是在圖像絎縫算法[3]的基礎(chǔ)上,通過對輸入紋理進(jìn)行無縫的全塊排列,計(jì)算出新的紋理.該算法可以實(shí)現(xiàn)部分并行化,大大加快了算法運(yùn)行速度,但絎縫算法不適合生成非常大的紋理圖像,尤其在輸入紋理不固定時(shí)缺點(diǎn)更加明顯.Winnemoller等[7]提出一種自動(dòng)實(shí)時(shí)圖像抽象框架,通過調(diào)整亮度和顏色對比度,創(chuàng)造出具有卡通風(fēng)格的圖像,但是在風(fēng)格多樣性方面受到限制.可以看出傳統(tǒng)的非參數(shù)圖像風(fēng)格化能夠機(jī)械地描繪一些規(guī)定的樣式,在靈活性、有效性、多樣性等方面都具有很大的局限性.
隨著深度學(xué)習(xí)的興起,深度神經(jīng)網(wǎng)絡(luò)在圖像處理等相關(guān)領(lǐng)域得到更深一步發(fā)展.Gatys等[8]提出利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像的不同層特征,使用梯度下降法調(diào)整輸入響應(yīng),經(jīng)過多次迭代后,輸入響應(yīng)即為具有特定風(fēng)格和內(nèi)容的圖像.Johnson等[9]提出了一種利用感知損失函數(shù)來訓(xùn)練的前饋神經(jīng)網(wǎng)絡(luò),使用感知損失代替像素?fù)p失,增加了一個(gè)轉(zhuǎn)換網(wǎng)絡(luò),提高訓(xùn)練速度的同時(shí)大大縮短了時(shí)間.Gatys等[10]提出利用顏色直方圖匹配或亮度轉(zhuǎn)移的方法,在風(fēng)格遷移的同時(shí)能夠保留源圖像的色彩.
為了產(chǎn)生更多不同類型的風(fēng)格圖,改變對整幅圖片進(jìn)行風(fēng)格化的現(xiàn)狀,論文提出了一種基于導(dǎo)向?yàn)V波[11]的圖像局部圖像風(fēng)格遷移算法.首先,使用導(dǎo)向?yàn)V波對內(nèi)容圖像進(jìn)行摳圖操作,通過對粗邊緣或手繪的黑白圖像精細(xì)加工處理,得到邊緣細(xì)化的二值掩膜圖像;其次,利用卷積神經(jīng)網(wǎng)絡(luò)中VGG16網(wǎng)絡(luò)的輸出作為圖像的高級特征,分離與重組輸入圖像的特征進(jìn)行風(fēng)格遷移;最后,將風(fēng)格遷移后的圖像與二值掩膜圖像進(jìn)行點(diǎn)乘,將前景、背景或者是任何作者感興趣的部分提取出來進(jìn)行風(fēng)格遷移,獲得更具有欣賞價(jià)值的藝術(shù)圖像.
風(fēng)格遷移算法是指將一幅圖像的藝術(shù)風(fēng)格遷移到另外一張圖像上,既可以保持該圖像語義內(nèi)容,又體現(xiàn)了風(fēng)格圖像的樣式.該算法在對圖像的內(nèi)容和風(fēng)格進(jìn)行特征提取時(shí)主要采用VGG16模型,提取過程中損失函數(shù)分為內(nèi)容損失和風(fēng)格損失,前者表示輸出圖像的內(nèi)容與內(nèi)容圖像之間的差異,后者表示輸出圖像的風(fēng)格與風(fēng)格圖像的差異,通過調(diào)整兩種損失之間的組合方式,可以最終實(shí)現(xiàn)目標(biāo)圖像的風(fēng)格遷移.
在卷積神經(jīng)網(wǎng)絡(luò)中,每個(gè)卷積層具有若干卷積核,可作為用來提取圖像特征的算子.對于輸入圖像,若某個(gè)區(qū)域與卷積核的內(nèi)積運(yùn)算結(jié)果較大,則說明了該區(qū)域與該卷積核的相似度較高.VGG16網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示.
圖1 VGG16模型結(jié)構(gòu)圖
該模型共分為5層,每一層的基本結(jié)構(gòu)均由卷積(第1,2層的卷積次數(shù)為2,第3,4,5層的卷積次數(shù)為3)、池化及relu激活函數(shù)組成.VGG16中卷積核大小為3×3像素,池化層中采用的池化方式為maxpool,核尺寸為2×2,該池化方式能較好地捕捉圖像的梯度特征,從而能有效提取邊緣紋理等更加細(xì)節(jié)的語義信息.
圖2為利用VGG16不同層的輸出特征重建圖像的示例,其中作為輸入的兩幅圖像分別為輸出圖像提供了風(fēng)格和內(nèi)容的約束,可以看出,隨著卷積層的加深,可視化結(jié)果越來越抽象.
圖2 卷積神經(jīng)網(wǎng)絡(luò)的圖像可視化
假設(shè)VGG16網(wǎng)絡(luò)第l層的濾波器數(shù)量為Nl,其中Ml為濾波器輸出的特征圖的尺寸,圖像在經(jīng)過該層后的響應(yīng)矩陣可表示為Fl∈Nl×Ml.
圖像內(nèi)容的損失函數(shù)Lcontent計(jì)算公式如式(1),用以衡量內(nèi)容圖像和生成圖像的低級特征差異
(1)
同樣,圖像風(fēng)格的損失函數(shù)Lstyle計(jì)算公式如式(2),用以衡量風(fēng)格圖像和生成圖像的高級特征差異
(2)
(3)
其中:α和β是權(quán)重因子.
導(dǎo)向?yàn)V波技術(shù)是一種保邊濾波平滑算法,根據(jù)引導(dǎo)圖像提供的信息得知哪些區(qū)域需要濾波操作,哪些區(qū)域邊緣需要對其保留.由于該算法簡單高效,因此被廣泛應(yīng)用在圖像去霧、摳圖等方面.導(dǎo)向?yàn)V波算法構(gòu)建模型如圖3所示,可以將輸出圖像T看成是輸入圖像p經(jīng)過噪聲n污染而產(chǎn)生的退化圖像.
圖3 導(dǎo)向?yàn)V波模型
該算法的關(guān)鍵是假設(shè)在引導(dǎo)圖像I和輸出的濾波圖像T之間、以像素k為中心的窗口中存在局部線性關(guān)系,即在窗口wk中T與I存在如下的線性變換
Ti=akIi+bk,?i∈wk,
(4)
其中:ak和bk是以r為半徑的正方形窗口wk線性系統(tǒng)的系數(shù).由于?T=ak?I,所以在窗口wk這個(gè)局部線性模型中,輸出圖像T和導(dǎo)向圖像I的邊緣具有一致性.根據(jù)無約束圖像復(fù)原的方法可以將其轉(zhuǎn)化為最優(yōu)化問題,優(yōu)化目標(biāo)為min‖n‖2, 即在窗口wk中 的代價(jià)函數(shù)如(5)所示
(5)
其中:εak2為懲罰項(xiàng),ε是正則化參數(shù).上式可由最小二乘法求解得到系數(shù)
(6)
(7)
(8)
(9)
其中:
基于導(dǎo)向?yàn)V波,提出了局部區(qū)域控制的圖像樣式轉(zhuǎn)移算法.首先利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征和樣式,對整個(gè)圖像的風(fēng)格進(jìn)行遷移;然后根據(jù)導(dǎo)向?yàn)V波算法,通過手繪的粗糙掩膜圖像,得到精細(xì)化的二值掩膜圖像;最后將精細(xì)化的掩膜圖像與風(fēng)格遷移圖像進(jìn)行與運(yùn)算,從而完成不改變其他區(qū)域局部圖像風(fēng)格遷的移過程.使用以下公式表示生成的局部樣式轉(zhuǎn)移圖像
(10)
該算法主要用來對圖像進(jìn)行摳圖,正方形窗口wk的半徑r和正則化參數(shù)的選取并不是一成不變的,對不同的圖像選取不同的參數(shù),可以極大地提升摳圖效果精確性.基于導(dǎo)向?yàn)V波的局部圖像摳圖可視化過程如圖4所示,左側(cè)為導(dǎo)向圖I,中間為輸入圖像P,右側(cè)為輸出圖像T.可以看出,根據(jù)導(dǎo)向?yàn)V波算法得到的摳圖輸出圖像的邊緣相較輸入圖像更加精細(xì),局部特征保留得更加完整.
上行圖中r=40,ε=10-5;下行圖中r=15,ε=10-3.圖4 導(dǎo)向?yàn)V波摳圖
該節(jié)通過實(shí)驗(yàn)對文中所提出的局部圖像風(fēng)格遷移算法進(jìn)行驗(yàn)證,其中用于求解方程(3)的梯度下降法由Python提供的函數(shù)fmin_l_bfgs_b[12]實(shí)現(xiàn),初始圖像為高斯隨機(jī)白噪聲,使用VGG16網(wǎng)絡(luò),并將conv5_2作為圖層內(nèi)容的Lc,將conv1-1,conv1-2,conv2-1, conv2-2,conv3-1,conv3-2,conv3-3,conv4-1,conv4-2,conv4-3,conv5-1,conv5-2,conv5-3的Gram Matrices作為模型掩飾的圖像統(tǒng)計(jì),α/β是1×10-4,硬件環(huán)境為Intel Core i7-7700K,Nvidia GeForce GTX 1080Ti.
圖5展示了直接將風(fēng)格圖像與內(nèi)容圖像進(jìn)行相互融合的結(jié)果以及論文所提方法的實(shí)驗(yàn)結(jié)果,從左到右分別是風(fēng)格圖像、內(nèi)容圖像和融合圖像,經(jīng)過2 000次迭代之后,卷積網(wǎng)絡(luò)可以對圖像的風(fēng)格和內(nèi)容進(jìn)行很好的融合,直接遷移化后,內(nèi)容圖像被整體風(fēng)格化,不能突顯局部感興趣區(qū)域;但引入濾波摳圖后,其只對感興趣區(qū)域進(jìn)行局部風(fēng)格遷移,可以更好地保留內(nèi)容圖像的特征,同時(shí)凸現(xiàn)圖像風(fēng)格.
圖5 不同風(fēng)格遷移化結(jié)果
圖6,7通過對不同類型輸入進(jìn)行局部圖像風(fēng)格遷移化的結(jié)果及效果對比,進(jìn)一步證明論文所提方法的優(yōu)越性未引入導(dǎo)向?yàn)V波前,由于使用的是手繪粗略制作掩膜圖像,邊緣做不到和原內(nèi)容圖像完全貼合,拐角處處理不夠細(xì)化,導(dǎo)致局部粗掩膜風(fēng)格化圖像邊緣較粗糙;利用導(dǎo)向?yàn)V波算法先對粗邊緣圖像處理得到精細(xì)化掩膜圖像,再將合成的效果圖通過掩膜圖像切割后與內(nèi)容圖像拼接,可以有效解決粗邊緣的問題.對圖6,7的粗掩膜風(fēng)格圖像局部放大圖與精掩膜風(fēng)格圖像局部放大圖作對比,可見精掩膜圖像的邊緣保留得更加完整,幾乎看不到模糊突兀的部分,進(jìn)一步說明了使用導(dǎo)向?yàn)V波算法對掩膜圖像邊緣進(jìn)行細(xì)化的重要作用.
圖6 實(shí)驗(yàn)結(jié)果展示(一)
圖7 實(shí)驗(yàn)結(jié)果展示(二)
論文提出一種基于導(dǎo)向?yàn)V波的局部圖像風(fēng)格遷移算法,該算法可以控制神經(jīng)風(fēng)格遷移的區(qū)域,實(shí)現(xiàn)局部圖像風(fēng)格遷移.首先利用導(dǎo)向?yàn)V波得到精細(xì)的二值掩膜圖像,該操作能夠保證局部邊緣的平滑度,最大化地保留邊緣有效信息;然后通過神經(jīng)風(fēng)格遷移算法對整個(gè)圖像進(jìn)行風(fēng)格遷移;最后將掩膜圖像和遷移圖像進(jìn)行與運(yùn)算,獲得最終的局部風(fēng)格遷移圖像.通過這種方式,可以提取前景、背景或任何作者感興趣的區(qū)域并進(jìn)行風(fēng)格化,與之前的整個(gè)圖像遷移相比,可以有選擇性地遷移某些部分.同時(shí),精細(xì)的掩膜圖像能夠有效地處理邊緣粗糙等問題,進(jìn)一步提高了局部風(fēng)格遷移圖像的視覺效果.