論文筆記:圖像風格轉換(一)
來自專欄程序員的筆記本1 人贊了文章
A Neural Algorithm of Artistic Style
論文地址:[1508.06576] A Neural Algorithm of Artistic Style
tensorflow代碼實現:woodrush/neural-art-tf
本文介紹Leon Gatys在2016年初大熱的Style Transfer演算法,發表於CVPR16
1. 概述
首次提出,使用預訓練好的VGG19網路,提取圖像不同層級的特徵,分別作為圖像的風格特徵和內容特徵,以高斯雜訊為初始輸入圖像,多次執行前向/後向迭代使用L-BFGS方法優化,保持CNN的參數不變,根據風格損失和內容損失,反向傳播更新圖片。
保留內容圖片的內容和全局布局的同時,由風格圖片提供顏色和局部結構信息。
2. VGG19
如圖所示為VGG19的網路結構,16個convolutional和5個pooling layer,本文不使用後面的全連接層。使用average pooling代替max pooling,得到更好的視覺效果。
如圖所示,輸入內容圖片和風格圖片,在abcde五層處分別重構風格圖片和內容圖片。
內容重構:
(a)conv1_1,(b) conv2_1,(c)conv3_1,(d)conv4_1,(e)conv5_1
可以看出,在高層(d,e),細節像素信息丟失,但內容保留,所以內容特徵一般用高層。
風格重構:
(a)conv1_1,(b)conv1_1, conv2_1,(c)conv1_1, conv2_1,conv3_1,(d)conv1_1, conv2_1,conv3_1,conv4_1,(e)conv1_1, conv2_1,conv3_1,conv4_1,conv5_1
感受野大小和特徵複雜程度隨著網路層級增大,當風格表示匹配到網路的更高層時,局部圖像結構在越來越大的範圍內匹配,從而導致更平滑和更連接的視覺效果
所以在最終的實驗里
內容層 - conv4_2
風格層 - conv1_1, conv2_1, conv3_1, conv4_1, conv5_1
3. 內容損失
輸入x,在網路中某一層的輸出為,shape可以表示為 ,reshape為 ,寫作矩陣。其中 表示該層卷積核的個數, 是該層feature的長度 和寬度 的乘積。 表示 層第 個filter的位置 。
內容損失就是原始圖像和生成圖片,經過VGG19網路,在這一層的feature的SSE(和方差,誤差平方和)
4. 風格損失
先引入Gram matrix ,由矩陣和他轉置矩陣的相乘得到。 是第 層的feature 向量和feature 向量的內積。可以認為是一個未零均值化的協方差矩陣,捕獲的是哪些feature是趨於一起激活的信息(如果無法理解為什麼內積=協方差,可以看參考里的2和3兩篇博文)。
5層的損失相加,乘以對應權重,通常為
當風格圖片和內容圖片size不一樣,這個風格損失函數也可以用,因為Gram矩陣shape一樣
5. 總損失
和 表示權重,不可能內容和風格完美匹配,需要調節。文章中使用 (B,C,D)更加註重原圖,或者 (E,F),更加藝術化。
參考
【深度學習】A neural algorithm of artistic style演算法詳解
【統計學習1】方差、協方差、相關係數與向量內積 - CSDN博客
CodingLabs - PCA的數學原理
後記
最近對風格轉換的文章比較感興趣,看了一篇NVIDA最新的,然後有些地方不明白,就循著參考文獻看過來,這片是最經典最早的一篇,後續看完其他幾篇,也會做個筆記,堅持每周至少精讀一篇文章並做個筆記。
推薦閱讀:
※ECCV 2018 | IBN-Net:打開域適應的新方式
※模型性能估計(計算量篇)
※文本檢測之PixelLink
※點雲感知 CVPR 2018 論文總結
※想訓練動作識別模型?這裡有六個數據源供你參考
TAG:計算機視覺 | 神經網路 | 深度學習DeepLearning |