天天看點

A Neural Algorithm of Artistic Style

論文位址:https://arxiv.org/abs/1508.06576

翻譯位址:https://www.jianshu.com/p/9f03b61fdeac

A Neural Algorithm of Artistic Style
A Neural Algorithm of Artistic Style

上面兩個圖就簡單解釋一下圖像生成過程,其中

A Neural Algorithm of Artistic Style

分别是風格和内容的權重,當我們更想生成的圖檔像内容就把

A Neural Algorithm of Artistic Style

變大,反之把

A Neural Algorithm of Artistic Style

變大。

本文關鍵的發現是對于内容和風格的表征在CNN中是可以分開的。我們可以獨立地操作兩個表征來産生新的,可感覺意義的圖像

Gram矩陣:Gram矩陣詳解

作者的目的是想把藝術大師的名畫的畫風遷移到普通的圖檔上,使機器也可以畫名畫。這就涉及到兩方面的圖檔——畫風圖檔(一般是名畫)、内容圖檔(我們想畫的内容)。

具體實作的方式用框圖表示出來是這樣的

A Neural Algorithm of Artistic Style

實際操作是通過不帶全連接配接層的vgg網絡分别抽取内容圖、畫風圖以及生成圖(就是最後你畫的“名畫”)的特征圖,然後分别用内容特征和生成特征圖計算内容損失,用畫風圖和生成圖計算風格損失,将兩個損失合起來,作為總體損失,用總體損失來計算生成圖的梯度然後更新生成圖。生成圖最初初始化為白噪聲圖。vgg用imagenet預訓練模型。

A Neural Algorithm of Artistic Style

内容重構。我們可以通過從一個已知特定層的網絡的響應重構輸入圖檔來可視化CNN中不同處理層的資訊。我們重構了輸入圖像從VGG的‘conv1 1’ (a), ‘conv2 1’ (b), ‘conv3 1’ (c), ‘conv4 1’ (d) and ‘conv5 1’ (e)。發現從較低層重構的幾乎可以稱完美 (a,b,c)。在網絡的較高層,具體的像素值資訊在更高層次的内容被儲存的時候丢失了(d,e)。

風格重構。在原始的CNN的最高層我們建立了一個新的特征空間來捕獲輸入圖檔的風格。風格表現計算了CNN不同層中不同特征的聯系。我們重構了輸入圖像的風格,建立在以下CNN層的子集( ‘conv1 1’ (a), ‘conv1 1’ and ‘conv2 1’ (b), ‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (c), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and ‘conv4 1’ (d), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’ and ‘conv5 1’ (e))。這創作的圖像在增長的規模上符合了給定圖像的風格,同時丢棄了全局的場景應用的資訊。

上圖展示使用不同風格層和内容層生成的效果圖

作者的意圖是想通過CNN分别抽取内容圖的特征圖、名畫的特征圖。然後用内容特征圖做出目标内容;用畫風特征圖做出目标畫風。根據生成圖的内容與目标内容的差異來“畫”(優化)内容;用生成圖與目标畫風的差異來“畫”(優化)風格。(下面這句為個人了解)這樣一來,上面框圖中最上面的網絡和最下面的網絡實際隻跑一次,但中間網絡要跑N次,但這N次跑前向和後向,後向不會優化網絡參數,隻會優化生成圖。

特征圖可以選擇vgg 5個卷積子產品中任何一個子產品的仁義卷積層的輸出,實際畫風提取了多個卷積層的輸出。内容直接用特征圖表示;畫風采用每個特征圖自己與自己的Gram矩陣表示,通常将多個卷積層提取的多個特征圖作Gram矩陣後疊加。

Gram矩陣是計算相關關系的,個人以為計算特征圖自己的格拉姆矩陣是提取像素與像素之間的關聯,以這種關聯性來表示風格。

論文中實際方法是這樣的:

A Neural Algorithm of Artistic Style

内容的損失和基于生成圖的梯度

其中Fij和Pij分别表示生成圖像和原始内容圖像中的像素值。

畫風損失和基于生成圖的梯度

畫風損失——名畫的格拉姆矩陣和要生成圖的格拉姆矩陣之間的距離總和

A Neural Algorithm of Artistic Style

畫風基于生成圖的梯度

A Neural Algorithm of Artistic Style

總損失

A Neural Algorithm of Artistic Style

以總損失作為目标優化生成圖。