王 婷 李 航 胡 智
(沈陽師范大學軟件學院 遼寧 沈陽 110034)
圖像風格遷移是指利用機器學習算法學習藝術畫作的風格,并將這種風格應用到另一幅圖片上的技術[1]。簡單來講,風格遷移和紋理生成是緊密相關的[2],這種技術的趣味性就是將一幅照片在內容保持不變的情況下被渲染成有藝術風格的新畫作。
圖像風格遷移主要包括基于圖像迭代和基于模型迭代兩個方面[2]。傳統的圖像風格遷移都是基于圖像局部特征的統計模型手動建模,舊式的手工數學建模方法耗時耗力、效果不佳。2015年,Gatys等[5]開創性地提出基于神經網絡的圖像遷移算法后,圖像的風格遷移已不再局限于只基于筆觸、物理模型的繪制和紋理合成的非參數圖像遷移。文中的基于圖像迭代和基于模型迭代兩大創新點引起了熱潮,這一技術越來越多地應用于眾多應用領域。文獻[6]提出一種利用內容圖和訓練好的前向網絡結合的方法,通過求解全局最優解轉換成用前向網絡接近最優解來合成具有新紋理的網絡。文獻[7]利用GAN(Generative Adversarial Networks)網絡對抗訓練模型,增加了圖片轉換的多樣性。文獻[8]提出采用感知損失函數代替逐像素差距的損失函數,實現實時風格轉換和圖像超分倍率重建。文獻[9]提出了N個風格共用一個模型的方式,緩解了模型存儲所消耗的空間問題,實現實時的風格插補并可應用在視頻上。文獻[10]設計了一種轉換神經網路U-StyleNet,并采用遷移學習的方法解決了網絡參數初始化導致輸出圖像有黑塊或亮塊的問題,同時加快了網絡的訓練速度。2016年上線的手機APP Prisma綜合了圖像風格遷移技術和人工智能技術,獲取世界的藝術大師和主要流派的藝術風格,它是基于深度學習的圖像風格化應用非常成功的實例。Artisto APP可直接將視頻處理為藝術性的風格化,從抽象主義到現代派大師畢加索的立體主義。
本文主要基于圖像迭代的圖像遷移方法,采用預訓練卷積神經網絡[11](Visual Geometry Group-Network,VGG-Net)模型和快速靈活的Keras深度學習框架作為核心組件來實現圖像風格遷移。預訓練的VGG-19卷積模型[12]具有較快的收斂速度和更好的泛化特性,整個VGG19網絡的卷積核對一幅圖片的輪廓線條的刺激以及顏色刺激更為敏感。實驗證明基于VGGNet的圖像風格遷移算法將損失度降低至最低時,VGGNet模型的性能最好,合成圖片的匹配度最佳,并降低了實現復雜度。
在機器學習中,卷積神經網絡(Convolutional Neural Network,CNN)是一種深度前饋人工神經網絡。它的人工神經元可以響應一部分覆蓋范圍內的周圍單元,包括卷積層、池化層和全連接層等。CNN的基本結構包括兩層:特征提取層和特征映射層。卷積神經網絡以其局部權值共享的特殊結構在圖像處理、圖像識別、圖像分割等有著獨特的優越性。權值共享降低了網絡的復雜性,多維輸入向量的圖像可直接輸入網絡,避免了復雜的數據重建。
卷積神經網絡中被證明圖像識別能力出色的VGGNet在2014年ILSVRC比賽中取得定位任務第一名和分類任務第二名的優異成績,具有較好的泛化能力。因此,實現圖像風格遷移的過程中,使用含19個參數的標準VGG網絡,包含16個卷積層和5個池化層。VGG19和普通的VGGNet稍有區別,VGGNet通常是利用全連接層輸出物體類別,而VGG19在圖像風格遷移中提取特征時,通過輸入特征后直接輸出對應這種特征的圖片。選擇深層’block5_conv2’卷積層提取內容特征;選擇’block1_conv1’至’block5_conv1’的五個從低維到高維過渡的卷積層提取樣式特征。圖1為VGG19網絡在圖像風格遷移中的工作流程,圖2為VGG19網絡結構圖。

圖1 VGG19網絡在圖像風格遷移的工作流程

圖2 VGG19網絡結構圖
VGG19的拓展性較強,遷移到其他圖片數據集上的泛化性較好;結構簡單,整個圖2網絡結構使用相同尺寸大小為3×3的卷積核和池化尺寸大小2×2。三個3×3的卷積核相當于一個7×7卷積核的感受域,數量更少、模型更具有判別性、便于加快訓練;池化層選擇平均池化代替最大池化,利用RELU激活函數提高優化率。因此,在實現圖像風格遷移中,選擇VGG19可有效地縮短訓練時間、提高圖像識別的精度。
深度學習的模型很難看到其中的內部結構,但是對于卷積神經網絡來說,它能以可視化的形式看到內部特征表示。常見的三種可視化方法為卷積核輸出的可視化、卷積核的可視化和熱度圖的可視化。使用可視化方法可以使圖像風格遷移過程中卷積核感受圖像的方式,以及通過熱度圖定位圖像中物體的位置更加容易。
VGG19中卷積的過程就是特征提取的過程,每一個卷積核代表著一種特征。在可視化卷積核的過程中,低層次的卷積核對目標圖像的顏色、邊緣信息感興趣,提取的特征是簡單的檢測點和線等。隨著層次的不斷加深,內容越來越抽象和復雜,卷積層感知圖像中的物體位置更準確,提取的特征通常是復雜的特定物體。圖3為VGG19網絡第一層和第四層的可視化對比。

圖3 VGG19網絡第一層和第四層的可視化對比
圖像風格遷移算法通過內容、樣式和風格三方面給每張圖片編寫損失函數。為了開始改變生成的圖像以最大限度地減少損失函數,本文算法使用不同的權重進行圖像遷移的實現。算法設計過程中,使用多個內容圖層,伴隨VGG19感受野的增大,精確內容相似度;使用多個風格圖層,在損失函數中添加更多不同風格的圖片;加入全變分去噪,緩解合成圖像中含有不必要的顆粒情況。
圖片風格化的算法主要包含最重要的三部分:內容重構、風格表示和樣式轉換。風格本質是各種空間尺度中圖像的紋理、顏色、視覺圖案等。本文算法通過定義內容損失函數保證從上層看生成的圖片與原始圖片類似;通過風格損失函數嘗試獲取所有空間比例的樣式圖片的外觀;利用L-BFGS算法優化最終的總變化損失值。Gram矩陣計算在特定空間尺度模式下不同維度之間特征激活值的相關性,保證合成圖和樣式圖具有相同的紋理。
(1)
(2) 風格表示。利用Gram矩陣計算樣式圖片中的紋理、顏色和視覺圖案信息,公式如下:
(2)
(3)
樣式損失函數為:
(4)
(3) 風格轉換。利用L-BFGS梯度下降算法優化生成的總損失度,調整α和β權重系數可調整content或style在生成圖中的比重。總損失函數為:
(5)
本文的核心思想是利用卷積神經網絡將目標圖像的內容特征表示和風格圖像的特征表示進行分離,最后進行高度化合成。在實現過程中,分別將內容圖像和藝術風格圖像輸入到預訓練好的VGG19模型,接收圖像的VGG19模型分別提取這兩幅圖片中的全局特征和抽象特征,計算這兩種圖片和生成圖片的圖層激活函數值。神經網絡中不同層級的激活值使得圖像內容在各種空間尺度上進行分解,使用三幅圖上計算的圖層激活值來定義內容損失值、樣式損失值和總損失值loss。從隨機噪聲圖像開始,利用基于Scipy庫的L-BFGS優化算法設置隨梯度下降過程并最小化的總損失函數值,設置迭代次數后生成具有原內容和新風格的合成圖像。具體的技術實現流程如圖4所示。

圖4 圖像風格遷移技術的實現流程
實驗使用Keras框架搭建網絡,本實驗中Keras框架由純Python編寫的基于Tensorflow為后端。它是一個高層神經網絡的API,可以迅速地將想法轉換為結果,允許簡單而快速的原型設計,更適配卷積神經網絡,模型庫中含有很多經典的模型使得深度學習的建模與算法設計較為方便。實驗硬件平臺為Intel(R) Core(TM) i7-4790 CPU主頻3.60 GHz,16 GB內存,AMD Radeon R5 340 CPU。
為驗證不同內容圖片與不同藝術風格的遷移效果,本文進行了大量的實驗。為突出研究的趣味性和藝術性,本文僅僅給出了選擇素描人像、上海外灘作為目標內容圖片,選擇具有代表性的梵高作品《星月夜》和色彩鮮明的油畫兩種風格作為藝術風格圖作為案例。
實驗1選擇素描人像作為目標內容圖片,色彩鮮明的油畫作為藝術風格圖。
實驗1使用了兩幅素描人像圖像和油畫風格圖像。圖5為原始人像圖、油畫和迭代優化20次生成的合成效果圖。設置迭代訓練次數20次,style weight=1,content weight=0.025。通過實驗效果得知,圖像風格遷移算法在本組實驗圖片中可有效的實現,但存在訓練速度較慢、圖片有失真現象,以及不能自然地將樣式轉移到原始圖片中并結合等問題。

(a) 內容圖(b) 樣式圖(c) 合成圖圖5 迭代20次后的人像合成圖
實驗2選擇上海外灘作為目標內容圖片,梵高的《星月夜》作為藝術風格圖。
在實驗2中分別選擇上海外灘和梵高畫作《星月夜》分別作為內容圖和風格圖。實驗設置環境與實驗1相同,但迭代優化次數增加至150次。圖6中,(a)為目標圖上海外灘、(b)為藝術風格圖星月夜、(c)為合成效果圖。圖7中,生成第45張圖的損失值1.017 29e+08最低,第46次到第150次迭代中,損失值從9.981 48e+07降低至4.217 42e+07。這說明迭代45次時,兩幅圖像合成的匹配度最高,但樣式不夠清晰,隨著迭代次數的增加,樣式轉移度越來越高,但紋理清晰度下降。

(a) (b) (c)圖6 上海外灘和梵高-星月夜的內容圖、樣式圖和合成圖

(a) 原始圖(b) 迭代14次(c) 迭代50次(d) 迭代150次 Loss value:1.01729e+08 Loss value:9.20596e+07 Loss value:4.21742e+07圖7 目標內容圖、迭代次數為44、50、150的合成圖
為測試文中算法的有效性,改進實驗1的不足,在本組實驗中增加了VGGNet網絡中的VGG16模型。具體模型區別如下:VGG16包含13個卷積層,VGG19包含16個卷積層。兩種模型均迭代150次,對比實驗結果如表1所示。

表1 不同網絡模型在不同迭代次數下的總損失度
可以看出,VGG16和VGG19模型均在迭代45次時損失度最低,合成匹配度最高。但隨著迭代次數增加至150次,VGG19模型的合成損失度明顯低于VGG16模型。圖8為VGG16和VGG19兩種模型的合成圖。通過150次迭代優化后,明顯看出VGG19圖像遷移的合成圖效果更好,而VGG16合成圖出現明顯的失真效果。本文提出的算法對于層數較高的卷積神經網絡VGG19模型具有一定的優勢,雖然利用兩種不同的VGGNet模型,但匹配程度最佳均為第45次迭代,VGG19在合成圖片的過程中準確率更高,合成效果更優。

(a) VGG16合成圖(b) VGG19合成圖圖8 對比VGG16和VGG19兩種模型合成圖
依據風格轉換總損失函數公式,調整content和style的所占比重,可看出不同效果的實驗結果圖。合理選擇比重所占比,才可實現匹配度較佳的風格遷移技術。表2為VGG19訓練圖片迭代次數45次的不同content和style占比損失度表。圖9為三種不同權重占比合成效果圖。增加內容權重占比可提高合成圖中的內容原始度,設置style weight=0.025、content weight=1,樣式圖星月夜遷移效果明顯下降。設置style weight=1、content weight=0.5時,內容圖上海外灘較清晰。設置style weight=1、content weight=0.025時實現圖像遷移算法后的合成匹配度最佳、損失度最低。

表2 VGG19迭代45次下調整權重占比損失度

(a) style weight=0.025 content weight=1 (b) style weight=1 content weight=0.5(c) style weight=1 content weight=0.025圖9 三種不同權重占比合成效果圖
本文在Gatys等提出的Gram矩陣算法基礎上,采用靈活性較好的VGG19網絡作為核心模型,提出了一種基于VGGNet的圖像風格遷移算法設計與實現,有效地實現了不同風格圖像間的風格遷移。實驗表明,本文算法適用于風格遷移,能夠生成逼真的藝術性合成圖像,在深度學習Keras框架的基礎上,實現過程較為簡單,選擇合理的迭代訓練次數可使得損失度降到最低、合成圖片的匹配度最佳。生成對抗網絡和變分自編碼器(Variational Auto-encoder,VAE)網絡的誕生可能對解決這些問題有很大幫助,需進一步研究和討論。