基於深度卷積神經網絡的圖像風格遷移與神經塗鴉系統的設計與實現


基於深度卷積神經網絡的圖像風格遷移與神經塗鴉系統的設計與實現

 

【摘要】深度卷積神經網絡提取圖像特征的機器學習方法目前被應用到各類圖像處理問題中,該方法可以很好地識別分析圖像,是人工智能領域的一個重要分支。 本文中設計並實現了一款基於卷積神經網絡的圖像風格遷移系統,可以通過神經表示來分離和重組任意圖像的內容與風格,為藝術圖像的創建提供了新的算法與算法框架;本文中還實現了神經塗鴉系統作為風格遷移功能的補充,神經塗鴉系統通過使用語義注釋及手動創建像素標簽的方法提高了生成圖像的質量,實現了圖像的塗鴉風格遷移。 經測試,風格遷移系統產生的圖片很好地獲取了風格圖片的紋理並保持內容圖片的內容完整;神經塗鴉系統也能很好的轉換圖像的塗鴉風格。

【關鍵字】 圖像風格遷移;神經塗鴉;深度學習;卷積神經網絡

【復現論文】 Gatys, L. A. , Ecker, A. S. , & Bethge, M. . (2015). A neural algorithm of artistic style. Computer Science. https://arxiv.org/abs/1508.06576

Champandard, A. J. (2016). Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artworks.(2016). arXiv preprint arXiv:1603.01768. https://arxiv.org/abs/1603.01768

【復現源碼】 https://github.com/baobaotql/CCNU_CV/tree/master/style_transfer

 

1. 背景及現狀

  過去的圖像風格變換系統的主要工作是直接提取風格圖片中的紋理,過程是先找出紋理,再通過一系列復雜的算法找到包含紋理的像素,最終把這些像素整合到源圖片當中。這一風格變換過程過於復雜,且復用性低。目前卷積神經網絡被廣泛應用在圖像風格遷移工作中,對於圖像風格遷移問題,卷積神經網絡的特征提取也十分適用。通過卷積神經網絡進行的圖像風格遷移,是針對源圖像的不斷優化,使其風格逐漸接近風格圖像。這一方法僅需要訓練好神經網絡模型,就可以復用至其他圖像的風格遷移。隨着卷積神經網絡模型的完善,基於卷積神經網絡的圖像風格遷移也有了更多的提升和改進。

2. 研究方法

2.1 Neural Style Transfer算法

  圖像風格遷移功能主要實現算法為Neural Style Transfer算法。Neural Style Transfer算法中的Gram矩陣是比較圖像風格的重要參數矩陣。Gram矩陣是一組 n維k個向量的兩兩內積組成的對稱矩陣。向量的內積能夠反映向量之間的聯 系,因此 Gram矩陣能夠反映一組 n維向量組中k個向量之間的兩兩關系,除此之外,通過Gram矩陣的對角線還能夠計算出每個特征向量在圖像中出現的數量,公式2.1即為Gram矩陣的計算公式,其中F為從風格圖片中提取出的特征矩陣。而在圖像風格遷移系統中也正是要應用到Gram矩陣的這一特性。在圖像風格遷移過程中,需要不斷調整源圖像的風格,使其風格逐漸變得相似於風格圖像的風格。這一調整風格的過程中,就需要分別計算出源圖像和目標圖像的特征向量(作為其風格的數學表示),再分別計算出這兩組特征向量的Gram矩陣,以減小這兩個Gram矩陣之間的差異作為優化目標,對源圖像的特征向量進行優化,當這兩個圖像的Gram矩陣相類似時,就可以認為這兩張圖像的風格相近。

   除此之外,圖像風格遷移系統中需要計算損失函數來生成目標圖片,損失函數由內容損失和風格損失共同加權構成。其中公式2.2為內容損失計算方法,公式2.3為內容損失函數對生成圖像的特征向量求導獲得梯度的計算方法,生成的梯度將在誤差反向傳播過程中作為梯度下降算法的輸入,用於對目標圖片張量進行優化,公式中p,x表示原始圖像和生成圖像,表示原始圖像的特征向量,表示生成圖像的特征向量。

  風格損失的計算方法如公式2.5所示,由於卷積神經網絡的不同層之間根據深度不同提取特征向量的能力也不同,較深的網絡層能夠針對整體風格特征進行提取,而較淺的網絡層只能提取出簡單的局部的特征,只用其中的某一層進行風格特征提取的方法必然是片面的,因此在公式2.5中采用參數來作為權值去平衡這些特征向量的提取。在某一層的特征提取中,選擇公式2.4來計算第l層目標圖片和風格圖片這兩個Gram矩陣的差的平方,作為單層的風格損失,最終將各層的風格損失加權得到總的風格損失。在神經網絡進行優化迭代的誤差反向傳播過程中,將利用公式2.6計算出梯度,來進行梯度下降的優化方式。

  圖像的內容屬於較為復雜而抽象的特征,只有在較為高層的神經網絡,通過更多的卷積核帶來的更強大的特征提取能力來進行提取。而圖像的風格的提取也由於包含了從細節紋理到總體風格,需要既參考高層網絡提取出的總體特征,也不能忽略淺層網絡擁有高層網絡所不具有的對像素值的精准把握能力。利用好不同網絡層提取特征能力不同這一特點,綜合各層神經網絡提取的特征並對提取到的各個特征進行加權求和才能獲得較為完整的圖像風格特征。損失函數的計算是圖像風格遷移系統的重要組成部分,有了損失函數的輸入,神經網絡才能依靠誤差反向傳播的方式求出損失函數對需要優化的目標圖像中各個特征向量的導數,即梯度,依此得出優化后的目標圖像。

  將風格損失和內容損失都輸入VGG19網絡中,分別求出風格損失和內容損失函數與像素變量的偏導,得出的結果為梯度。再利用梯度信息通過梯度下降的方式進行反向傳播,設置優化器的優化目標為總損失函數最小時目標圖片的像素變量來進行迭代,迭代過程中不斷改變最初設定的噪聲圖像,使通過其得出的總損失函數值最小,就得到了優化后的與風格圖像特征匹配同時在高層次的總體特征上也與內容圖像相匹配的像素變量。

   對於圖像合成來說,平均池化比最大池化在生成圖像的效果上來說更加吸引人。這是由於最大池化舍棄了由圖像提取出的不重要特征,而平均池化則顧及到了圖像的各個層次的特征。因此最大池化多用於圖像識別等需要突出重要特征的圖像處理工作,而平均池化的方法則活躍在圖像風格遷移等需要提取圖像大部分特征的圖像處理領域。

2.2 Neural Doodle算法

  神經塗鴉算法是由 Alex J. Champandard提出的一種基於風格遷移方式的來將塗鴉轉化為完整圖片的算法。該算法需要輸入一張風格圖片來提供將塗鴉變為完整圖像的素材,還需要針對輸入的風格圖片再輸入一張以不同顏色對風格圖片進行分塊的圖片作為風格圖片的像素標簽,再繪制一幅簡單的塗鴉並將對應像素標簽中各部分的顏色填入塗鴉的各個部分,經過卷積神經網絡的訓練,能夠按照像素標簽圖片中提供的顏色分塊將風格圖片也分割成不同的部分,再將每一部分的風格按塗鴉顏色對應地遷移到用戶繪制的塗鴉中的分塊里,使塗鴉中單一的顏色塊能夠轉化為較為復雜的風格,由此方法將用戶繪制的簡單塗鴉轉化為完整的圖片。

  進行神經塗鴉工作時,需要對輸入的風格圖片提供像素標簽。其中在實現上較為簡單的方式是通過手動繪制的辦法在風格圖片的不同區域填充一種不同的顏色,進而將風格圖片划分為不同區域。而實現起來較為復雜的方法就是利用圖像的語義分割算法,通過卷積神經網絡或馬爾可夫隨機場等深度學習方法讓計算機識別出風格圖像中的不同內容並進行標注,進而獲得風格圖像的像素標簽,再按像素標簽生成圖片,讓用戶按照生成圖片中色塊的顏色來填充塗鴉。對用戶來說,使用圖像語義分割算法進行繪制比手動繪制像素標簽的方式在操作上更簡便,識別的內容也更加精准細致,而手動繪制的方式則可以讓用戶來自己決定將風格圖片中的哪一部分的風格遷移至塗鴉中的哪一色塊,給予用戶更高的自由度來生成想要的圖片。

3. 實驗結果

3.1 損失函數測試結果

  選擇隨機測試樣例作為輸入運行系統,觀察並比較損失變化趨勢,從圖3.1、圖3.2和圖3.3可以發現,在進行大約200次迭代后,圖像的各個損失函數都已基本趨於穩定,可以認為生成的圖像的效果也已基本定型。而在之后的200次至 1000次迭代中生成的目標圖像相比於風格圖像和內容圖像的總損失變化不大,其生成的圖像效果即使只比之前的迭代結果略有提升但目標圖像的效果依然能夠被不斷地優化。因此可以認為當用戶使用圖像風格遷移系統時,如果用戶期望在短時間內生成簡單的遷移結果,而不願耗費更多時間進行等待,則可以將風格遷移系統的迭代次數設置為 200次。而如果用戶希望獲得一幅遷移得更加美觀的圖像且不惜等待更長的時間,則可以將風格遷移系統的迭代次數設置為 1000 次甚至 1000 次以上。這樣的迭代次數設置方式能夠幫助用戶在其認為的更合理的時間內獲得其希望獲得的風格遷移效果。

3.1 內容損失隨迭代次數變化趨勢圖

 

3.2 風格損失隨迭代次數變化趨勢圖

 

3.3 總損失隨迭代次數變化趨勢圖

3.2 圖像風格遷移測試結果

測試中進行的風格遷移工作為將油畫(圖3.2(a))的風格遷移到一張風景照(圖3.2(b))上,圖3.2(c)為進行迭代訓練的次數為 50 次后生成的風格遷移結果,圖3.2(d)的迭代次數為 300 次,圖3.2(e)的迭代次數達到了 1000 次。對比 3.2 (c)、3.2 (d)、3.2 (e)三圖,在迭代次數較少的圖片中,出現了內容圖片和風格圖片中都沒有的像素亂碼,而在迭代次數較多的圖片中這一現象得到了改善。觀察迭代 1000 次后輸出的圖片不難發現,油畫的風格較好地融入了風景圖中,不僅油畫中的橙色等風景圖中沒有的色彩出現在了風景圖中,而且油畫風格的紋理在結果圖中也有所體現,而風景圖上的原本內容則得到了很好地保留,樹和圍欄等物體在結果圖上都仍能找到。

3.3神經塗鴉測試結果

  針對神經塗鴉系統進行的一組測試為以輸入的塗鴉圖片(圖7.3(c))生成一張風景圖片。圖片3.3(a)為輸入的風格圖片。圖3.3(b)為該風格圖片的像素標簽,需要注意使不同區域間的顏色反差較大來防止使kmeans聚類時將像素標簽上相近的顏色是為同一類顏色。 結果圖3.3(d)為迭代200次的結果。

  對比圖 3.3(a)(b)(c)(d)四圖可以發現,通過輸入圖3.3(b)這一對風景照的簡單塗色覆蓋,系統很好的采集了圖3.3(a)所示的風景照中的大致划分出的 4種風格,並通過輸入的圖3.3(c)中的塗鴉對目標圖片進行分區,將風格圖片中各分區的風格對應遷移到了目標圖片中。由於進行塗色覆蓋產生的像素標簽較為簡單,沒有細致分割出圖3.3(a)天空中的雲和海水中日光的倒影,圖 3.3(d)所示的目標圖片的畫面中的海水和天空有一定程度的模糊,但山和海岸的遷移效果不錯,整體的畫面也很符合塗鴉中的繪制。總體來說神經塗鴉系統的輸出結果取決於遮罩圖片和塗鴉繪制的細致和精確程度,但只要這兩張圖片的塗色符合輸入規定就能夠獲得良好的輸出結果。

4. 結論

  本文設計並實現了一個基於卷積神經網絡的圖像風格遷移與神經塗鴉系統,輸入測試用例均得到較好的圖像風格遷移結果與神經塗鴉結果。

   在神經塗鴉中我們通過手動編寫與像素標記的方法對輸入圖片進行注釋,同時加入卷積神經網絡利用標注信息將圖像分割與圖像合成聯系起來。實際上神經塗鴉是圖像風格遷移的延伸,實現了在模塊化上的良好復用。在今后的系統優化中可以考慮將圖像語義識別功能加入神經塗鴉系統,這樣可實現從塗鴉到圖片的完整過程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM