深度学习(图像处理): A neural algorithm of artistic style算法详解
Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “A neural algorithm of artistic style.” arXiv preprint arXiv:1508.06576 (2015).
下面這篇發表于CVPR16,內容類似,排版更便于閱讀。
Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “Image Style Transfer Using Convolutional Neural Networks.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
概述
本文介紹Leon Gatys在2016年初大熱的Style Transfer算法。這一算法結果直觀,理論簡潔,廣受人民群眾喜愛,在github上有各種平臺的源碼實現:?
- 基于Torch的Neural-Style?
- 基于Tensorflow的Neural Art?
- 基于Caffe的Style Transfer。
本文的核心思路如下:?
- 使用現成的識別網絡,提取圖像不同層級的特征。?
- 低層次響應描述圖像的風格,高層次響應描述圖像的內容。?
- 使用梯度下降方法,可以調整輸入響應,在特定層次獲得特定的響應。?
- 多次迭代之后,輸入響應即為特定風格和內容的圖像。
【辨】一般網絡層有如下形式?
網絡的權重W,網絡的響應xt+1。
特別要強調的是,常見的深度學習問題利用輸入-輸出樣本對訓練網絡的權重。這篇文章中,是利用已經訓練好的權重,獲取一個符合輸出要求的輸入。
復習:分類網絡
直接使用VGG191分類網絡(下圖省略了末尾處做分類的幾層。和原始分類網絡相比,本文僅將max pooling換成了average pooling,略微提升結果視效。?
網絡不同層次的響應描述了圖像不同層次的信息:低層次描述小范圍的邊角、曲線,中層次描述方塊、螺旋,高層次描述內容。
下文在提到“卷積層”時,實際指的是Conv+ReLU的復合體。用慣了Torch的同學尤其注意。
圖像中的信息
使用分類網絡中卷積層的響應來表達圖像的風格和內容。
內容:響應
任取一張圖像X0,將其輸入上述分類網絡。其第l個卷積層的響應記為Xl,其尺寸是Hl×Wl×Nl。?
對于目標圖像X0?????,同樣送入該網絡,可以得到該層響應Xl????。
若希望X0和X0?????內容相似,可以最小化如下二范數誤差:?
這一誤差可以對本層響應的每一元素求導2:?
h=1,2...H,w=1,2...W,k=1,2...N
進一步,利用鏈式法則,可以求得誤差對輸入圖像每一元素的導數?Elc/?x0hwk。這一步驟就是神經網絡經典的back-propagation方法。
利用?Elc/?X0來更新X0,可以獲得一個新的輸入圖像,其在第l層的響應Xl更接近目標圖像的響應Xl????。也就是說:和目標圖像的內容更接近。
風格:響應的矩陣積
先引入一個Nl×Nl的特征矩陣Gl:?
i=1,2...N,j=1,2...N
Gl由第l層的響應計算而來,但是消除了響應的位置信息,可以看做對于風格的描述。ij位置的元素描述第i通道響應和第j通道響應的相關性。
對于目標圖像相應層的風格Gl????,最小化如下誤差可以使X0和X0?????的風格近似:?
可以求得誤差對本層響應的導數:?
同樣可以通過back-propagation求得?Els/?X0,進而更新X0使其風格接近X0?????。
實驗
以高斯噪聲為初始輸入圖像,優化內容+風格的混合誤差,多次執行前向/后向迭代使用L-BFGS方法優化,即可實現style transfer。其中:?
內容層 - conv4_2?
風格層 - conv1_1, conv2_1, conv3_1, conv4_1, conv5_1
權重
內容誤差與風格誤差的權重設為α,β,兩者之比從1×10?3到5×10?4,五個風格層權重相同。
當風格誤差權重很高時,得到的結果近似風格圖像的紋理。
風格層
和直覺相反,風格誤差可以包含非常高的卷積層(conv5_1),反而有更自然,更“神似”的視覺效果。?
?
這告訴我們:風格本身也是非常抽象的概念,需要較深的網絡來描述。
速度
由于需要反復迭代,本文算法的速度很慢。512×512圖像,使用NVIDIA K40 GPU,需要近1小時完成。
總結
這篇文章頗有一些啟發:?
- 深度學習不只是一頭進一頭出的“香腸工廠”。?
-“識別”這個看似無關的高層任務包含了很豐富的信息。
我們并不需要特別訓練,就能夠欣賞非寫實風格的繪畫,識別其中的對象,辨認畫家的風格。這說明人類在認識真實世界的過程中,就學習到了分別提取“內容”和“風格”的能力。?
同樣的,以真實世界物體訓練的識別神經網絡,也自然地能夠分別提取“內容”和“風格”。
想要親自體驗的同學,可以使用DeepArt網站提交自己的風格圖像和內容圖像,不過免費版本需要等待幾天。網站還提供了其他用戶的精彩作品可以欣賞。
2016年夏季在俄羅斯大熱的照片濾鏡Prisma同樣實現風格轉移,只需等待幾十秒到若干分鐘,8月份的更新更是支持移動端的離線運算,不過其提速依賴于另外的論文。
在處理視頻時,這篇文章考慮了結果的連續性和穩定性,這里有基于Torch的實現。
總結
以上是生活随笔為你收集整理的深度学习(图像处理): A neural algorithm of artistic style算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android sim卡状态改变广播,a
- 下一篇: 深度学习 | 误差反向传播法