本系列文章由 @yhl_leo 出品,轉載請注明出處。
文章鏈接: http://blog.csdn.net/yhl_leo/article/details/53931536
1. 資源
- Paper: A Neural Algorithm of Artistic Style
- TensorFlow version in GitHub: anishathalye/neural-style
- Caffe version in GitHub: fzliu/style-transfer
- Torch version in GitHub: jcjohnson/neural-style
- DeepPy version in GitHub: andersbll/neural_artistic_style
2. 論文概述
這是2015年的一篇論文,作者首次提出使用卷積神經網絡生成具有人工藝術風格的作品。作者認為,卷積神經網絡中的卷積層可以理解為收集圖像特定特征的濾波器集(filters),即生成了輸入圖像各種版本濾波結果,把普通影像重構成具有藝術風格的作品,既需要保持普通圖像內容布局上保持不變,又要使其具有與參考藝術作品具有相同的風格,此分別為文中所述的content reconstructions 和 style reconstructions.
作者發現,較深層的卷積特征能獲取圖像高級(high-level)的、目標級的內容信息以及在原圖像上的位置信息,但是卻不能約束準確的像素重構,也就是詳細的像素信息丟失(如圖 1,content reconstructions 的 d,e);相反地,淺層的卷積特征卻能很容易的生成準確的像素值(如圖 1,content reconstructions 的 a,b,c),因此,作者使用較深層的卷積進行內容重構,實驗中是在relu4_2
上進行content representation.
在風格化的問題上,為了表示參考藝術作品的風格,作者使用特征空間獲取紋理信息。這一特征空間基于卷積神經網絡的各個卷積階段得到的特征,它由不同卷積特征圖之間的相關性構成。通過引入卷積層之間的相關性,作者獲得了對原圖穩定的,多尺度的表示,能夠得到參考藝術作品的紋理信息(不包含全局的排布信息)。
因此,作者的思路非常簡單,通過輸入原圖,在較深層的卷積層中得到的特征進行圖像內容約束,使用參考藝術作品,在卷積不同階段的卷積特征學習得到圖像紋理,進行紋理約束,從而優化得到最終結果。
3. 論文細節
圖 2展示了算法的約束簡圖,其中包含兩個主要約束:content constrain 和 style constrain。
作者使用的是VGG-19 network, 包含16個卷積層(分為5個卷積階段),每個階段末尾都有 pooling 層,全連接層被拋棄掉,另外Pooling階段使用average pooling。
content loss:
Fl,Pl 分別是 xx,pp圖像在卷積層l上對應的卷積特征響應, Fl∈RNl×Ml, Flij是卷積層l的第i個卷積在j位置上激活值,Plij。則,在該層上的梯度為:style loss:
計算不同濾波響應之間的相關性,表示在 Gram 矩陣中:
Al,Gl分別為 aa,xx 圖像在卷積層l上對應的卷積特征響應,通過使得兩者的差方和最小,作為約束調整圖像風格:
因此,風格的損失代價為:
即,使用多層的卷積特征,進行整體約束,(其中conv1_1
,conv2_1
,conv3_1
,conv4_1
和conv5_1
中 wl = 1/5, 其余層wl = 0)。梯度很容易求導為:total loss:
其中 α/β 被設置為1e?3
或1e?4
.
4. 實驗結果
論文以及開源代碼中具有實驗結果,可自行查看或測試,這里不貼出。