謝志明,劉少鍇,蔡少霖
(汕尾職業技術學院工程學院,汕尾 516600)
自1987年Alexander Waibel等人提出第一個卷積神經網絡(CNN)——時延網絡(TDNN),和1988年Zhang提出平移不變人工神經網絡(SIANN),CNN仍然不被人們所熟知和關注,直到LeCun于1998年提出基于CNN構建的LeNet-5模型并成功應用于手寫數字識別,該模型的成功使得CNN的應用得到空前的關注及大批學者參與研究。2006年深度學習理論提出后,CNN得到更進一步的研究,兩者相輔相成,CNN的深入研究推動著深度學習不斷快速向前發展。2015年Gatys等提出運用CNN來實現圖像風格遷移這一目標,通過分類目標內容圖像A的內容特征和參考風格圖像B的風格特征實現圖像風格遷移,獲得了非常可觀的藝術效果,此外關于這方面的諸多研究成果還成功轉化成商業應用。為此,本文實驗將依據VGG算法模型并結合TensorFlow2框架,利用神經網絡遷移開展圖像風格遷移應用研究。
VGGNet由牛津大學的視覺幾何組(visual geometry group,VGG)提出,并在2014年舉辦的ILSVRC賽項中獲得了定位任務第1名和分類任務第2名的成績。VGGNet網絡結構是通過改良AlexNet的層數得到的,AlexNet是2012年ImageNet競賽目標識別任務賽項的冠軍,該網絡在LeNet思想啟發下將CNN應用到更深更寬的網絡中,效果提升明顯。此后,VGGNet在AlexNet基礎上對CNN網絡進一步改良的過程中發現網絡深度與性能的相關性,通過持續性地添加小尺寸卷積核來代替大卷積核,當網絡堆疊到一定層數后,網絡效果得到進一步改善。目前,主流的VGGNet網絡結構主要有六種配置模式,其效果展示如表1所列。
從表1可以發現VGG六種配置中,VGG-16和VGG-19效果最好,由于VGG-16網絡結構相較簡單,比VGG-19少了3個卷積層,參數量也相對較少,因此從理論上來說更加適合神經網絡遷移學習。后面我們將通過實驗對其驗證,找到最佳VGG模型并進行優化。

表1 VGGNet網絡配置效果及參數量
VGG模型是由Simonyan等于2014年提出的,模型非常簡單,只有卷積層、最大池化層和全連接層。VGG模型首次提出了小卷積核的優勢,在卷積層使用小尺寸卷積核(3×3)可添加更多的卷積層,使得網絡層次變得更深。VGG-19相比AlexNet的一個重要改進是采用連續的3×3的卷積核代替AlexNet中的較大卷積核(11×11,7×7,5×5),研究發現小卷積核的疊加可以使其感受野達到大卷積核的效果。比如2個3×3的卷積核疊加,它們的感受野等同于1個5×5的卷積核,疊加3個卷積核則感受野相當于1個7×7的效果,由于感受野相同,又使用ReLU激活函數,網絡增加了非線性表達能力,從而可以提供更復雜的模式學習。
VGG-19共有16個卷積層,3個全連接層,比VGG-16多了3個卷積層,其全部采用3×3卷積核,步長和Padding統一為1,最大池化層為2×2,N個卷積層和后面緊接的最大池化層為一個block。VGG-19和VGG-16一樣,都共有5個block,每個block的通道數一致,最大池化層減少特征圖的尺寸。隨著卷積層一層層的運算,卷積核輸出的內容變得越來越抽象,特征圖尺寸和留存信息變小變少。Block5完成后將特征圖平鋪成一維數據作為全連接層的輸入。最后3層為全連接層,前2層每層具有4096個神經元,使用ReLU非線性激活函數,第3層有1000個神經元(1000個類別)使用softmax函數。VGG-19網絡結構如圖1所示。

圖1 VGG-19神經網絡模型結構
Gatys等認為風格參考圖片與生成圖片之間會在不同的層激活過程中保留相似的內部相互關系。風格損失使用了CNN多個層,并從所有空間尺度上而非單一尺度上提取風格參考圖像外觀特征,依據特征之間相互關系映射在特定空間尺度下模式的統計規律,使用層激活的格拉姆矩陣(Gram matrix),即某一層特征圖的內積。風格損失主要有以下兩個特點:
(1)在目標內容圖像和生成圖像之間保持相似的較高層激活能夠保留內容。卷積神經網絡能夠“看到”目標圖像和生成圖像包含相同的內容;
(2)通過在較低和較高的激活層中保持類似的內部相互關系能夠保留風格。特征相互關系捕捉到的是紋理,生成圖像和風格參考圖像在不同的空間尺度上具有相同的紋理。
本實驗的實驗環境為Windows7+Python3.8+TensorFlow2.3.0,CPU為3.40GHz的Inter i7-6700,內存為DDR4 16 G,顯卡為NVIDIA GT-720 2 G,CUDA為10.2,使用的神經網絡模型為VGG-16和VGG-19。
(1)導入相關庫,如TensorFlow,IPython,numpy,matplotlib和time模塊;
(2)自定義編寫圖片預處理函數,將加載的圖片解碼成像素值數組并做歸一化處理;
(3)從VGG中挑出風格層和內容層,風格層的輸出旨在代表風格圖片的特征,內容層的輸出旨在表示內容圖片的特征;
(4)對VGG模型輸出重新定義,因為原始的VGG輸出為分類結果,而風格遷移時需要輸出的是兩張圖片的特征;

(6)建立風格遷移模型,得到風格圖片的風格特征和內容圖片的內容特征;
(7)定義優化函數和損失函數,模型訓練不斷迭代,得到風格遷移圖片。
本組實驗選取一張海龜為內容圖片,隨機選取康丁斯基的一幅抽象畫為風格圖片,同時選擇多組內容層參數和風格層參數進行風格遷移實驗,找到最佳的參數組合。如圖2所示。

圖2 不同內容層和風格層的圖像風格遷移結果
通過實驗我們找到最佳內容層和風格層組合為content_layers=[‘block5_conv2’],style_layers=[‘block1_conv1’,‘block2_conv1’,‘block3_conv1’,‘block4_conv1’,‘block5_conv1’],同時從圖2中發現選取的內容層越靠前,內容圖片保存的數據就越豐富,而要得到較好風格圖片數據盡量選取各blocks的靠前卷積層,這樣得到的風格數據會更多。
本組實驗根據找到最佳內容層和風格層參數組合,選擇VGG-16和VGG-19模型來對比圖像風格遷移效果,內容圖片和風格圖片選取不變,根據訓練迭代次數的不同,觀察不同迭代次數遷移結果圖像的色彩特征及紋理特征。如圖3所示。

圖3 不同模型不同迭代次數的圖像風格遷移結果
從圖3可以看出,VGG-16和VGG-19風格遷移效果都還是比較成功的,相比之下,VGG-19的圖像色彩表現得更加豐富自然,紋理也更加清晰明亮,這和參數量多了6 M有一定的關系,實驗過程還發現相同條件下訓練迭代1000次后,VGG-19耗時會更長,比VGG-16多了500秒左右。
本組實驗仍然選擇同一張海龜為內容圖片,并選取4張出自不同畫家的風格圖片,以風格遷移效果最優的VGG-19為網絡模型,在相同的訓練迭代次數(1000次)的情況下,得到的圖像風格遷移結果分別如圖4所示。

圖4 不同風格圖片迭代1000次的圖像風格遷移結果
從圖4可以看出,當采用同一內容圖像,不同的風格圖像,在相同的模型參數和訓練次數的情況下,風格遷移結果也各不相同,展現的色彩特征、紋理特征等也存在較大差異;此外,我們還發現使用總變分損失可以有效減少因圖片本身小而花紋經頻繁卷積加強后被強化的噪聲,因此有很好的降噪作用,這也正體現了VGG網絡結構具有很好的魯棒性和普適性。
本文以TensorFlow2為深度學習框架、VGG為網絡模型,通過實驗分析圖像風格遷移的有效性。VGGNet通過使用小卷積核代替大卷積核,有效地加深了網絡深度,并使用ReLU作為激活函數,提升了復雜模式的學習能力。通過實驗對比VGG-16和VGG-19兩種網絡結構,找到最佳的風格遷移效果模型為VGG-19;最后使用多張不同風格圖片放到VGG-19模型中來驗證圖像風格遷移效果,發現遷移后的圖像既保證了內容圖像的完整性,同時具有風格圖像的色彩、紋理等特性,符合圖像風格遷移特點,效果較好。