郭穎,王佳新
(北方工業(yè)大學信息學院,北京100144)
在神經網絡之前,圖像風格遷移的程序有一個共同的思路:分析某一種風格的圖像,建立一個數學或者統(tǒng)計模型,再改變要做遷移的圖像讓它能更好地符合建立的模型。此類方法的缺點是:一個程序基本只能做某一種風格或者某一個場景,從而導致了基于傳統(tǒng)風格遷移研究的局限性。2006年起,深度學習之父Hinton掀起了AI浪潮,至今仍是學術界與工業(yè)界的研究熱點。對于圖像風格遷移這一課題,Gatys等人[1]提出了如下思路:使用卷積神經網絡有效分離圖像的內容特征和圖像的風格特征。一方面對于內容特征來說,模型通過預訓練的VGG[2]模型提取其特征表示。另一方面對于風格特征來說,同樣通過預訓練的VGG[2]模型提取其特征表示,其次在其特性圖上計算格拉姆矩陣,從而建模其風格表示。輸入任意一張隨機噪聲圖,可通過梯度下降法不斷迭代改變圖像的像素值,目標是其內容表示接近于內容圖片的內容,其風格表示接近于風格圖片的風格。也就是說,通過不斷學習減小內容損失和風格損失,即可實現內容和風格的合成圖像,從而達到“風格遷移”的目的。本文主要采用VGG19[3]分類網絡,來實現圖像風格遷移。
本文采用VGG網絡結構。同AlexNet[4]相比,VGG采用連續(xù)多層的3×3卷積核來代替AlexNet中的(11×11、7×7、5×5)等較大卷積核。多層非線性層可以增加網絡深度,從而能夠學習到更復雜的模式,并且代價相對更小。對于給定的與輸出有關的輸入圖片的局部大小,采用連續(xù)多層的小卷積核效果強于采用單一大的卷積核。在VGG中,使用3個3×3卷積核來代替7×7卷積核,使用2個3×3卷積核來代替5×5卷積核,這樣做可以保證具有相同的與輸出有關的輸入圖片的局部大小的條件下,增加網絡的深度,捕捉更深層次的特征,在一定程度上提升神經網絡的效果。VGG有VGG16和VGG19兩種結構,兩者本質上并沒有區(qū)別,只是網絡深度不一樣。VGG16包含了16個隱藏層(13個卷積層和3個全連接層),VGG19包含了19個隱藏層(16個卷積層和3個全連接層)。VGG網絡的結構非常一致,每一層都是使用的3×3的卷積和2×2的max pooling。此外,和原始分類網絡相比,本文的VGG將max pooling換成了average pooling,略微提升結果視效。
卷積神經網絡[5-6]中的每一層都定義了一個非線性的過濾器組,其復雜性會隨著在網絡中所在層的位置而改變。所以一個給定的輸入圖片→x在VGG19網絡的每一層的編碼的過濾器是響應圖片的。一個有Ni個不同的過濾器的層有Ni個特征圖譜,每個圖譜的大小Mi,Mi是特征圖譜的長與寬的乘積。所以對于層L的響應可以被存儲在矩陣中Fi中,Fi,j表示第i個過濾器在層L中的第j個位置的激活。為了可視化由不同層次編碼的圖片信息,采用對一個白噪聲圖片進行坡度下降來找到另外一張可以匹配原圖的特征反應的圖片。代表初始圖像[11],代表處理后新的圖像,令Fl和Pl分別是在l層中的特征表示。所以,二者間的殘差平方和損失函數[8]為:
此函數表示對于提取內容的圖片p,將該位置所代表的內容表示P,通過構造使得p在應位置的特征無限趨近于P,最終達到內容損失函數的最小結果。其倒數為:
任取一張圖像X0,將其輸入上述分類網絡。其第l個卷積層的響應記為Xl,其尺寸是Hl×Wl×Nl。對于目標圖像,同樣送入該網絡,可以得到該層響應。
若希望X0和內容相似,可以最小化如下二范數誤差:
這一誤差可以對本層響應的每一元素求導:
進一步,利用鏈式法則,可以求得誤差對輸入圖像每一元素的導數。這一步驟就是神經網絡經典的back-propagation方法。
為從風格圖像中得到想要的風格,使用固定的紋理信息空間來顯示風格。該特征空間可以建立在任何卷積神經網絡水平上處理的過濾器出口上,期望是接辦輸入圖的空間擴展。這些特征間的相互聯(lián)系是由Gram矩陣計算的,其中Gli,j是向量化特征圖譜i和j在層l上的內積:
為了生成一個匹配給定圖片的紋理,從一個白噪聲圖梯度下降,找到一張與原始圖片的風格匹配的圖片。這是通過最小化原始圖片的Gram矩陣和待生成圖片的Gram矩陣之間的平均方差做到的。→代表原始圖像,→x代表生成的新圖像,Al代表1層的風格,Gl代表l層相對于總體的損失所占的比率,為:
總風格損失函數是:
先引入一個Nl×Nl的特征矩陣Gl:
Gl由第l層的響應計算得出,消除了響應的位置信息,可以看做是對風格的描述。i,j位置的元素描述了第i通道響應和第j通道響應的相關性。
可以求得誤差對本層響應的導數:
為生成混合了照片的內容和畫作的風格的圖片,共同最小化了白噪聲在網絡某一層到照片的內容表達的距離以及在VGG網絡多層上到風格表達的距離。本文最小化的損失函數是:
為了獲得輸入圖像的風格表示,本文使用了一個最初設計用于捕獲紋理信息的特征空間。這個特征空間建立在網絡每一層的分級響應之上。它由不同的分級響應在特征圖的空間范圍內的相關性組成(詳見方法)。通過包括多層的特征相關性,本文得到一個固定的,多尺度的輸入圖像的表示,它捕捉其紋理信息,但不是全部信息。
圖1 風格遷移結果圖
在VGG的每個處理階段,給定的輸入圖像被表示為一組濾鏡圖像。雖然不同的過濾器的數量增加沿處理層次,濾鏡圖像的大小減少了一些下采樣機制(如最大池),導致在網絡的每層單位的總數減少,內容重建。本文可以通過只知道網絡在某一層的響應來重建輸入圖像,從而可視化VGG中不同處理階段的信息。本文從建立在VGG層的不同子集上的風格表示重建輸入圖像。這樣可以創(chuàng)建出與給定圖像風格相匹配的圖像,規(guī)模越來越大,同時丟棄場景的全局排列信息。
有了基礎的圖像風格遷移代碼實現,本文開發(fā)了一款以圖像風格遷移轉換功能為主的集圖像處理、社區(qū)分享等功能為一體的圖片處理交流社區(qū)式App。
圖2 軟件功能結構圖
圖3 創(chuàng)作相關界面展示
本文鎖定了兩款直接非常值得借鑒的圖像處理軟件分別是prisma和造畫。造畫是仿prisma的“國內版prisma”。在界面觀感上和本尊存在著較大差距,功能和界面符合國內模式:“多”。整體上功能覆蓋有余,美觀簡約不足。更有眾多調色社交軟件如MIX、Pinter-est、Snapseed。Snapseed在視覺上與前兩款App相比有差距,勝在調色功能。MIX和Pinterest都是比較成熟的優(yōu)質App,其產品瀑布流社區(qū)[9]的功能十分值得本文借鑒。于是本文在幾款App的基礎上進行了界面設計,簡單易操作的創(chuàng)作界面以及豐富的社區(qū)交流界面。
圖4 瀑布流式社區(qū)界面和發(fā)現界面
圖5 消息通知界面
圖6 用戶個人界面
本文旨在對基于卷積神經網絡的圖像風格遷移做基礎的遷移效果實現,并在此基礎上設計開發(fā)一款圖像風格處理與社區(qū)交流為一體的App,本文開發(fā)的此款App旨在強化基于卷積神經網絡的圖像風格遷移效果,選取大量風格圖片進行模型訓練,讓用戶可以記錄生活中很多美好的時刻并與自己喜歡的風格圖片相結合,保留生活中每個美好畫面。將記錄下的點滴分享在社區(qū)平臺上,找到志同道合的朋友。
整合更多功能,以契合更多需求:
(1)訓練更多國畫風格模型,讓風格庫更加豐富多樣,開發(fā)新的國風風格;
(2)利用大數據技術[10],完善根據用戶的偏好進行社區(qū)內容推薦功能;
(3)將訓練后的各個風格應用在視頻上,實現視頻的風格遷移。