1. 程式人生 > >一個藝術風格化的神經網路演算法(A Neural Algorithm of Artistic Style)(譯)

一個藝術風格化的神經網路演算法(A Neural Algorithm of Artistic Style)(譯)

文章地址:《A Neural Algorithm of Artistic Style》. arXiv:1508.06576

  對於好的藝術作品,尤其是畫作,人們已經掌握了通過在一幅影象的內容和風格中構成複雜的相互影響來創作獨特的視覺體驗的技能。因此這個過程的演算法基礎是未知的,並且不存在具有相同能力的人工系統。然而,在其他基於視覺概念的關鍵領域,比如物體檢測和人臉識別接近於人類的表現,最近已由一系列仿生的稱為深度神經網路的模型做到了。這裡,我們介紹一種基於深度神經網路的人工系統,,它可以生成具有高感知品質的藝術圖片。這個系統使用神經表達來分離並再結合任意圖片的內容和風格,為建立藝術圖片提供了一種神經演算法。此外,根據從表現最優的人工神經網路和生物視覺之中找到的顯著的共同點,我們的工作給人們提供了人類是如何建立和認知藝術圖片的演算法層面的理解。

  處理影象任務最有效的深度神經網路是卷積神經網路。卷積神經網路由幾層小的在一個前饋中分層處理視覺資訊的計算單元組成。每一層的單元都可以被理解為一個影象濾波器的集合,每個影象濾波器會從影象中提取某個特定的特徵。因此,一個給定層的輸出由所謂的的特徵譜(feature map)組成:輸入圖片的不同被過濾(filtered)版本。

  當卷積神經網路被訓練用於物體檢測,他們他們會生成一種關於圖片的表達,使得物體資訊隨著處理層級的加深越來越明確。因此,沿著網路的處理層級,輸入影象被轉換為相較於它的具體的畫素值,會越來越關注於實際的圖片內容。通過只重構該層的特徵譜,我們可以直接視覺化每一層包含的有關輸入圖片的的資訊。網路中更高階的層捕獲了物體在高階層上的內容,和它們在輸入圖片中的排列(arrangement),但是並不重構原始影象的具體畫素值。與此相反,從較低的層重構只會簡單地重新生成原始圖片的實際畫素值。因此我們參考了網路再高層次上的特徵反應作為內容表現(content representation)。

  為了得到一個輸入圖片的風格表現,我們使用一個最初被設計用於捕獲紋理資訊的特徵空間。這個特徵空間是建立在網路中每一層的濾波器(filter)響應上的。它由空間範圍內的特徵圖譜在不同濾波器響應之間的聯絡組成。(細節見Methods部分)。通過包括多個層級之間的聯絡,我們獲得了輸入圖片的一個固定的,多層規模的表示,它只會捕獲紋理資訊而不獲取全域性的佈置資訊(arrangement)。

Figure1
影象1:卷積神經網路(CNN)。一個給定的輸入影象由一系列在CNN的各個處理階段被過濾的圖片呈現。在不同濾波器的數量隨著處理層級不斷增加的同時,濾波後圖像的大小也被一些下采樣機制(e.g. max_pooling)減小,導致了網路中每一層單元總數的減小。內容重構。

我們可以通過一個已知特定層的網路的響應來重構輸入影象,以視覺化CNN在不同處理層級的資訊。我們重構了輸入影象在VGG模型上的‘conv1 1’ (a), ‘conv2 1’ (b), ‘conv3 1’ (c), ‘conv4 1’ (d) and ‘conv5 1’(e)。我們發現從較低層次重構的結果,幾乎完美(a,b,c)。在網路較高層上,具體的畫素資訊已經在儲存更高層次的內容時丟失。風格重構。在原始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))。這樣建立的影象在增長的規模上符合了給定影象的風格,同時丟棄了全域性的場景應用的資訊。

  又一次,我們可以通過構建一個可以匹配風格表現的影象,來視覺化由建立在網路的不同層上的風格特徵空間捕獲的資訊。事實上,風格特徵的重構產生紋理化的輸入圖片,捕獲了他依照顏色和區域性結構捕獲的外觀。此外,輸入圖片區域性的圖片大小和複雜度隨著層數的增加而增加,也可以被解釋為感受野的大小和特徵複雜度增加。我們將這種多層的表示稱為風格表示(stylerepresentation)。

  這篇論文的關鍵發現在於,內容和風格在CNN中的表達是可以分開來的。也就是說,我們可以獨立地操作兩種表達來產生新的,視覺上有意義的圖片。為了展示這個發現,我們生成了一些圖片,融合了兩幅不同的原圖片的內容和風格表現。特別地,我們匹配了一張描繪the “Neckarfront” in Tubingen, Germany的照片的內容表示,和一些不同時期的著名藝術作品的風格表示。

  這些圖片是通過發現一張同時匹配照片的內容表現和格子的各自的藝術作品的風格表現的圖片合成的。在原始照片的全域性佈置被保留的同時,組成全域性景色的顏色和區域性結構則是由藝術作品提供。十分有效地,這將照片渲染成藝術作品的風格,比如說合成圖片的外觀看起來和藝術作品很類似,儘管它的內容與照片中是一樣的。

Figure2

  正如概述所說,風格表現是一個多層次的表示,包括了多層神經網路。正如我們在圖片2中展示的那樣,風格表達包括了整個神經網路的各個層級。風格也可以定義得更加區域性化,通過只包含一小部分的低層級,能產生不同的視覺效果。當風格表現匹配到網路中更高的層級時,區域性的圖片結構會逐漸在更大的尺寸上匹配,產生一個更平滑更連續的視覺效果。因此,視覺上最有感染力的圖片通常都是匹配到網路中的高層級的風格表現產生的。

  當然,圖片的內容和風格不能完全分離。當綜合生成一張結合了某一張圖片的內容和另一張圖片的風格的圖片時,通常並不存在一幅影象同時完美地匹配那兩張圖片的約束。然而,我們要在圖片生成過程中最小化的損耗函式(loss function)分別包含了很好地分離開了的內容和風格兩個方面。因此我們可以平滑地調節在重構內容或是風格時的偏重。著重強調風格會使得生成的圖片可以匹配藝術作品的表現,實際上給了一個紋理化的版本,但卻幾乎不會顯示照片中的內容。(圖3,first column)。如果更著重與內容,結果中可以很清晰地確認到照片,但是藝術作品的風格就不能很好地匹配了。(圖3,last column)對於一組特定的源圖片的我們可以調節內容和風格的偏重,來產生視覺上有感染力的圖片。

Figure3

  在這裡我們展示了一個可以從圖片中分理處內容和風格的人工神經網路系統,因此可以用另一幅影象的風格來改寫某張圖片的內容。我們通過生成一系列新的、藝術化的,結合了一些著名的畫作的風格和任意選定的照片的內容合成的影象,來展示效果。特別地,我們的圖片的內容和風格的神經表達源自於訓練好的用於物體檢測的並且表現很好的深度神經網路的特徵響應。據我們所知,這是把自然圖片的內容和風格的圖片特徵區分開的首次展示。之前的分離圖片的內容和風格的工作所評估的圖片的輸入的複雜度更小,比如不同的手寫字母或者人臉或者不同姿勢的小圖片。

  在我們的展示中,我們提供了一個在不同的有名的藝術平的風格下的給定圖片。這個問題通常是計算機視覺的一個被稱為相片擬真處理技術(nonphotorealistic rendering)的分支所研究的。在概念上,最近似的相關方法是使用紋理轉換來實現藝術風格轉換(artistic style transfer)。然而,前面的這些方法主要基於相片擬真處理技術(nonphotorealistic rendering)來直接操作影象具體的畫素資訊。與此相反,通過使用用於物體識別而訓練的深度神經網路,我們在特徵空間執行的操作清楚地表示了影象在高層級網路的內容。

  為了目標檢測而訓練出來的深度神經網路的特徵已經被用到風格識別上,來根據藝術作品產生的時期分類。分類器是由原始的網路啟用層訓練而來,我們將其稱為內容表現。我們猜測一個到固定的特徵空間的轉換,比如我們的風格變現可能實現比風格分類更好的效果。

  一般來說,我們的從不同源混合內容和風格來合成圖片的方法提供了一個新的,有趣的工具來學習感知和藝術、風格和內容獨立的圖片的神經表現。我們可以設計新穎的激勵(novel stiluli(?))來介紹兩個獨立的,感知上有意義的變體的源:圖片的外觀和內容。我們預想這可能對很多關於視覺感知方面的研究會比較有用,範圍從心理物理學(psychophysics)的功能影像(functional imaging)到電生理學(electrophysiological)的神經記錄(neural recordings)。事實上,我們的工作提供了一個關於神經表達如何獨立地捕獲影象呈現的內容和風格的在演算法上的理解。重要的是,我們的風格表達的數學形式生成了一個清晰的,可檢驗的關於影象外觀到網路中的一個單獨的神經元的假設。風格表達簡單地計算了網路中不同種類型的神經元之間的關聯性。提取的不同神經元間的相關性是一個生物上貌似可信的計算,也就是說,舉個例子,由主要視覺系統中所謂的複雜細胞來執行。我們的結果表明:表現一個複雜細胞就像沿著腹側流(ventral stream)進行不同處理過程的計算,可能是一個獲得一個視覺輸入的外觀的內容獨立的表達的方法。

  總而言之,看到一個神經系統,被訓練以完成生物視覺的核心計算任務之一,並自動學習能將影象的風格和內容分離開的影象表達,是一件很神奇的事情。可以這麼解釋:當網路再學習物體識別時,這個網路變得對於所有保留了物體特徵的不同圖片變數都保持不變。分解影象內容中的變種的表達和它的外觀的變種在這個任務中十分實用。因此,我們從內容中提取風格的能力和我們建立和享受藝術的能力可能主要是我們具有強大推理能力的視覺系統的突出的特徵。

Methods

  在正文中展示的結果是以VGG-Net為基礎產生的(VGG-Network——一個在一般視覺物體識別基準任務上的表現可以和人類相對抗的卷積神經網路)我們使用19層VGG-Network中的16個卷積層和5個池化層的特徵空間。我們不使用其中任何的全連線層。這個模型是開源的,並且可以在caffe框架中找到。為了圖片合成我們發現把最大池化替換成平均池化可以改進梯度流並且可以獲得稍微更有感染力的結果,這也是為什麼顯示的圖片都是使用平均池化生成的。

  一般來說網路中的每一層都定義了非線性濾波器組(non-linear filter bank),它們的複雜度隨著所在層的位置增加而增加。因此一個給定的輸入影象x在每一層CNN對該圖片的濾波器響應中都被編碼了。某一層有Nl個不同的濾波器,有Nl個特徵圖譜,每個特徵圖譜的大小是ml,而ml是特徵圖譜的長和寬的乘積。所以第l層的響應可以被儲存在一個矩陣FlRNl×MlFijl表示第l層的第i各濾波器的第j個位置的值。為了視覺化不同層編碼的影象資訊,我們對一個白噪聲進行梯度下降來尋找另外一個可以匹配原圖片的特徵相應的圖片。

  因此,令px分別代表原始影象和生成的影象,PlFl則分別是它們各自在第l層的特徵表示。接著我們可以關於這兩個特徵表示定義平方誤差損耗函式:

Lcontent(p,x,l)=12i,j(FijlPijl)2

  這個loss函式在第l層的偏導為:

LcontentFijl={(FlPl)ijifFijl>00ifFijl<0

  根據這個式子我們可以知道影象x對應的梯度可以通過標準的誤差反向傳播演算法求到。因此,我們可以不斷改變初始時隨機取得的影象x 直到它如同