[譯] 紋理網絡:在前饋網絡中進行紋理合成與風格化

題目:Texture Networks: Feed-forward Synthesis of Textures and Stylized Images

效果圖

(轉載請注明出處:[譯] 紋理網絡:在前饋網絡中進行紋理合成與風格化 (zhwhong) )


Abstract

摘要:Gatys 等人近日證實,深度網絡可以產生漂亮的紋理,也可以用單一的紋理樣例來風格化一張圖片。然而,他們的方法需要經過一個漫長而且極占內存的梯度下降優化過程。我們在此提出一個替代的方法,可以把計算的負擔轉移到一個單獨的學習階段。給定一個紋理樣例,我們的方法能訓練一個緊湊的前饋卷積網絡來生成多個相同的紋理任意大小的樣品,并將一個給定的圖像轉換成具有藝術風格的另一個圖像。此結論的網絡是非常輕量級的,但可以產生質量媲美 gatys 等人的紋理,且提升了數百倍的速度。寬泛的說,我們強調的用復雜且具有表現力的代價函數來訓練前饋網絡模型這一方法,是非常強大和具有靈活性的。

一.簡介

一些最近的工作證明深度神經網絡在面臨圖像方面的挑戰時是具備優秀能力的。大部分的生成網絡是用隨機種子開始做前饋計算,而Gatys等人發現了非常令人震撼的結果,通過對網絡進行描述性的研究,比如圖像統計。他們的的想法是減少圖像生成的隨機抽樣以匹配確定的統計特征。在紋理合成這塊,參考數據是一個單一的可見紋理圖,目標是產生一個該紋理的樣例圖。在風格化這塊,目標是同時匹配的第一圖像的風格,(用一些低級別的統計數據來捕獲),和第二圖像的內容(用高級別的統計數據來捕獲)。通過這種方法,一個圖像的風格可以在不改變內容的前提下被另一個風格取代。

匹配統計特征的工作在實踐中表現不錯,概念上是簡單的,且實驗證明,用在圖像分類等問題上的現成的神經網絡(如VGG)可以直接拿來做圖像的產生。然而Gatys等人想的這個辦法也是有短板的,建立在梯度下降漫長迭代的基礎上的方案,必須依靠反向傳播的過程來逐步改變像素點的值,直到出現期望的分布。這樣迭代的過程甚至在GPU上都需要幾秒鐘去產生一個很小尺寸的圖片,換成大尺寸圖片后還可能面臨內存不夠用的問題,需要占用更多的內存。而與之相對立,本文提出的前饋網絡生成器則更高效率,因為它只需要一個簡單的簡單的對網絡求值,不需要背負反向傳播時的高昂代價。

在這篇論文中,我們重點關注前饋網絡生成器在紋理合成及圖像風格化方面的能力。我們的工作主要集中在三個部分,第一,我們首次證實前饋網絡生成器的方法能產生質量和多樣性與Gatys等人提出的方法相媲美的效果。第二,我們提出的生成方法能做到兩個數量級的提速和一個數量級的內存效率提升。用一個單一的緊湊的前饋網絡帶來的高性能,促使我們有能力去將風格化轉移到視頻及手機應用上。第三,我們設計了一個非常適合風格化任務的多尺寸生成器結構。

由此產生的完全卷積網絡(即我們稱之為紋理網絡)可以生成任意大小的紋理和處理任意大小的圖像。我們的方法也代表了一個有趣的訓練概念,即簡單的前饋架構配上復雜且具有表現力的損失函數。我們相信,其他一些有趣的結果,可以使用這個原則來產生。

這篇論文里的其他部分,講述了圖像和紋理生成技巧的概述(Sect2),詳細描述了我們的方法(Sect3)提供了在廣泛的有挑戰性的紋理集圖片上的擴展(Sect4)

二. 背景及相關工作

1.用神經網絡產生圖片

一般情況下,生成一個圖像x的過程,可以看做從一個特定的分布P(x)開始的樣品繪制問題。在紋理合成部分,一個分布是由一張紋理樣例x0確定的,因此我們可以將紋理合成的過程寫作:

在風格轉換上,這個特定的分布是由一張代表風格的圖像X0和第二張代表可見內容的圖像X1共同決定的,所以可以將風格轉換的過程記為:

(Mahendran & Vedaldi,2015;Gatys et al.,2015a;b)將這個問題簡化成一個找到一個具有特征的預圖片,構成一個梯度下降的問題。尤其是,為了從一個樣例圖片X0綜合一個紋理,預圖片可以表示為:

重要的是預圖片:

往往不是唯一的,預采樣是充滿多樣性的,在實踐中,樣品采用局部優化算法從隨機初始化Z出發,生成的圖像就是函數的輸出:

這樣的結果是一個分布:

很難描述,但很容易采樣,有很好統計特征,能產生令人愉悅的視覺效果和多元化的圖像。(Mahendran & Vedaldi,2015)和(Gatys et al.,2015a;b)都把它們的統計數據建立在深度神經網絡層的響應上。我們的方法復用了Gatys提出的基于特征圖譜之間聯系的方法。

2. 描述性紋理建模

這個方法所描述的方法與許多著名的視覺紋理模型有很強的聯系。對于紋理,它是常見的假設----P(x)是一個固定的馬爾可夫隨機場(MRF)。既然這樣,紋理是遍歷的,人們也會考慮本地空間不變統計。

其中i表示空間坐標,F通常是一組線性濾波器的輸出。ψ是一個直方圖算子。然后,空間平均本地統計的原型紋理x0接近其樣本平均數:

Zhu等人得框架模型用了這個事實歸納出最大交叉熵分布

λ是參數,來配合他們的經驗估計。

這個框架的缺點在于從最大熵分布取樣很困難,要解決這個限制,需通過直接找到匹配所需的統計的圖像X來匹配。 zhu等人使用線性濾波器,小波和直方圖來建立他們的紋理統計,(Mahendran&Vedaldi,2015;Gatys et al.,2015a;a)通過預訓練的深度網絡提取統計信息,不同的是,他們認為風格化不是紋理合成的問題。

3. 生成器網絡

一個選擇是使用神經網絡作為描述器,構建生成器網絡X = G(z)直接把一個隨機或確定性參數Z向量當作輸入來產生圖片。如(dosovitskiy et al.,2015)的方法,學習的映射從確定性參數Z(例如拍攝對象的類型和觀點)的圖像,這是通過盡量擬合神經網絡來減少

的差異,對于已知的圖片參數組(Xi,Zi),雖然這可能產生視覺上很有吸引力的結果,但它需要提前知道(x, z)之間的關系并不能支持多樣性。另一種方法是考慮一個函數g(Z),參數Z是未知的,并從(簡單)隨機分布中采樣。網絡的目標是將這些隨機值映射到似是而非的圖像x = G(Z)。這就需要我們衡量樣品的質量,這通常表示為X和一組示例圖像X1之間的距離X1~Xn。關鍵的挑戰是距離必須能夠概括明顯可用的例子,以保護樣本的多樣性。生成對抗網絡(GAN;(Goodfellow et al.,2014))解決了這個問題,通過訓練,結合生成器網絡g(z),第二對抗網絡f(x),試圖區分樣本g(z)和自然圖像樣本。然后f可以被用來作為一個衡量質量的樣品, g可以被訓練來優化它。LAPGAN(Denton et al.,2015)把GAN以應用到了一個卷積網絡的拉普拉斯金字塔,DCGAN(Radford et al., 2015) 進一步優化了生成對抗網絡GAN,從非常大的數據集中學習。

4. 矩匹配網絡

最大熵模型(Zhu et al.,1998)與最大的平均差(MMD)的觀念密切相關(MMD)在(Gretton et al.,2006)中有所介紹。關鍵是觀察某個確定分布的預期值

找出獨一無二的確定分布p,從它派生的損失函數通過比較網絡樣本的統計平均值

的方法來替代GAN。他們用它去訓練矩匹配網絡(MMN)并且應用它產生小的圖片(例如手寫數字集),我們的網絡接近于矩匹配網絡,不過用了非常特殊的統計并且考慮了與Li等人完全不同的應用。

三.紋理網絡

我們現在詳細描述本文所提出的方法。在較高層次來看(見圖2),我們的方法是訓練一個前饋的生成器網絡G(generator network),采用噪聲樣本Z作為輸入并生成紋理樣本g(z)作為輸出。對于風格的轉移,我們擴展這個紋理網絡,同時采取噪聲采樣Z和內容圖像Y,然后輸出一個新的圖像g(y, z)此時紋理已被應用到Y作為一個可見的風格。每一個紋理或風格都要訓練一個獨立的的生成器網絡,一旦訓練好,它可以通過一個有效的前饋的方式,合成任意數量的任意大小的圖像。在訓練的生成網絡g時的一個關鍵挑戰就是構建一個損失函數,可以自動評估所產生的圖像的質量。例如,GAN的核心思想是通過生成器網絡來學習這個損失。我們在Sect 3.1展示了一個非常強大的損失函數可以從預先訓練好的固定網絡中引入統計描述來獲取,正如(gatys et al.,2015a;B)中所示。考慮到損失,我們接下來討論生成器網絡的架構,用于紋理合成(Sect 3.2)并將其推廣到圖像風格化(Sect 3.3)。

圖2所提出的架構的概述(紋理網絡)。我們訓練一個生成器網絡(左),使用的代價函數是基于一個固定的預先訓練的描述符網絡(右)的超強大的代價函數。在兩個網絡中,只有左側的生成器網絡在被更新,并且在之后被用于紋理或圖像合成。卷積塊包含多個卷積層和非線性激活和采樣及通道的連接。生成器網絡的不同分支操作在不同的層面,是由尺寸不同的噪聲張量激活而來。

3.1 紋理和內容代價函數

我們的代價函數來自于Gatys等人的論文,比較圖像數據是通過一個預先訓練好的CNN(一般是VGG系列的一款)來衡量的,這個預訓練好的CNN本來是供圖像分類的。這個描述器CNN在此用來衡量紋理原型x0和生成圖片x之間的不匹配程度。用

表示第i個特征通道,通過描述器中第l層的卷積層在圖片x上的表現得出。矩陣
被定義為特征圖片的內積

考慮到這個網絡是一個卷積網絡,要計算要對任何位置的特征i, j 做計算。因此

擁有相同的一般結構,作為本地固定特征的無序的統計,是可以作為紋理描述符存在的。在實驗中,Gatys等人用包含VGG中部分層的矩陣集合來衡量紋理特征,這樣在圖x和紋理x0之間的的代價就用下式計算:

除了紋理上的差距(texture loss),Gatys還用了一個content loss(由Mahendran& Vedaldi,2015中提出),這個content loss比較了圖片在某個確定的卷積層上的輸出(不計算進一步的統計數據如矩陣)

Nl是特征通道在VGG第l層的通道數,與紋理差距相比最關鍵的不同之處在于:內容差距保留了原圖的空間位置信息,因此這種Loss函數更適合代表內容信息而不是紋理信息。類似于Gatys等人,我們將使用紋理損失(style loss)配合訓練紋理合成用的生成器網絡,我們使用一個紋理損失(style loss)和內容損失(content loss)的加權組合,配合訓練用來做圖像風格化的生成器網絡。在后者的情況下,內容層不應該保留跟紋理層一樣淺層的東西,只有高層的內容應該被保留。

3.2 生成器網絡之紋理合成

我們現在討論用于紋理合成的生成器的結構和訓練過程,把生成器網絡的參數記為θ,這個網絡被訓練成用來講一個噪聲向量z轉換成一個由紋理確定的分布Z。

網絡結構:我們實驗了好幾種結構用來做生成器網絡g。最簡單的是一串卷積,非線性激活和上采樣層,從一個噪聲向量z起點,終止于制造出一張圖片。雖然這種類型的模型能產生合理的結果,我們發現,多尺度架構的結果具有更小的紋理損失和更好的感知質量,同時使用較少的參數以至于訓練速度更快。圖2包含了我們的多尺度架構的一個高層次的表示,將在之后詳細介紹。紋理X0是一個tensor,shape=(M,M,3)包含了三個顏色通道,為了計算簡單,假設分辨率M是2的冪,輸入的噪聲z是由K個隨機tensor zi組成,

,我們往往用M=256 K=5,這個K個tensor都是獨立同分布的,均勻分布的抽樣。每個隨機噪聲張量是由一列卷積和非線性激活層首先處理,然后兩兩上采樣,再作為附加通道連接在一起,最后全分辨率的張量最終用一個1x1的濾鏡映射到RGB圖像x上。在圖2中,每一個卷積塊都包含了三個卷積層,每個層都跟著一個Relu激活層,這些卷積層分別為3x3, 3x3 和1x1的感受野。步長stride為1,用循環卷積來解決邊緣問題,這個很適合用于紋理。特征圖譜的數量,等于filter的數量,從最小8通道到最大40通道,參數個數為65K左右,可以壓縮到占用300kb內存。上采樣層用了簡單的最鄰近插值(我們嘗試過全卷積,效果不好),我們發現批量正則化層能很大的助力訓練。就放在每個卷積層的后面,重要的是,還要放在連接層前面,因為沿著不同網絡來的梯度需要通過批量正則化來平衡一下。學習:學習優化的過程用了隨機梯度下降(SGD)算法,在每一次迭代時,SGD繪制一個小批量的噪聲向量zk,對生成的網絡進行前向評估,得到相應的圖像

,利用描述器網絡對其進行評估,獲取紋理矩陣

,最終計算Loss。(要知道
)是固定的)在此之后開始反向傳播,生成器的參數在反向傳播時做計算,根據紋理損失上的梯度用來更新參數。LAPGAN也用了多尺度的方法,不過是分層進行訓練的,然而我們的生成器是端到端的在訓練。

3.3圖像風格化

為了把這個方法應用到圖像風格化上,我們做了一些改變,第一,這個生成器網絡

會被修改成:輸入一個噪聲變量z和一個圖片y的疊加,網絡被訓練成輸出一個圖像x,x在內容上靠近y,在風格上靠近x0。舉個例子,y可以是某人的照片,x0可以是一張印象派名畫。網絡結構:結構跟用來做紋理合成的是一樣的,唯一的重要差別就在于,噪聲向量zi,i=1K,要把輸入圖片y做為額外的通道聯結上去(對y進行下采樣獲取不同尺寸),我們后來發現,把K從5改成6會帶來更好的結果。**學習:**學習的過程是采樣噪聲向量ziZ自然圖像yi~Y,然后調整生成器的參數θ,使得content Loss和 style loss的和最小:

這里Z是和紋理合成時一樣分布的一個噪聲。Y是自然圖像的經驗分布,α是一個比例參數,為texture/style和content的比例。在訓練中,我們發現學習令人驚訝的非常容易過擬合,而且它足以近似于自然圖像y的分布,在一個非常小的圖像池中。事實上,我們的結果中比較有質量的都用了很多的樣例圖片,我們把這樣的事實歸納為:卷積結構使用本地操作,因為擁有相同的局部結構,只是圖像Y、內容風格比例在變化,所以對于本地操作來說,想要匹配所有的紋理會非常的困難。盡管有這樣的限制,所產生的風格化的圖像通常有很好的感知質量,雖然有些風格我們的確不可能通過優化原有的方法來得到好結果。

Figure 3  與Gatys的效果對比

四. 實驗記錄更多的技術細節

生成器網絡的權重用Xavier的方式初始化,訓練用Torch7實現Adam,迭代2000次,初始的學習速率為0.1,迭代1000次以后開始以每200次0.7的比例衰減。batch-size設置為16。和Gatys的論文中說的一樣,紋理損失texture loss用{'relu1_1','relu2_1','relu3_1','relu4_1','relu5_1'},VGG19模型,內容損失用{‘relu4_2’}。完全訓練好一個模型需要兩個小時,用NVIDIA Tesla K40,如果只需要獲得可接受的結果,則需要的時間更短,只需要很少的迭代。

紋理合成:我們把我們的方法和Gatys做了一些比較,我們還跟DCGAN比了,還跟還跟Portilla比了。圖4呈現了這四種方法比較之后的結果,從質量上來說,我們的生成器CNN和Gatys的結果是差不多的,比另外兩種方法產生的質量要好。然而生成器CNN更加的高效率(看Sect4.1),圖1包括了更多的比較(生成器網絡和Gatys及其他方法的對比)

Figure 4  四種方法在紋理合成上的對比

風格轉換:訓練集,自然圖像是從ImageNet ILSVRC2012的數據集中隨機抽取的。至于Gatys等人得傳統方法,我們發現風格化的結果是對α比例很敏感的(style/content的比例)。在測試的時候這個參數在我們的方法中不能調整,但是我們發現這個比例依舊可以通過調整輸入噪聲z的大小來調整(看圖5)

Figure 5  輸入噪聲z占比的調整

我們把我們的方法跟Gatys比較了,用了一些風格和內容圖片,發現結果是非常具有可比性的。有代表性的比較,包括固定參數,是包括在圖3中的,更多的補充材料,其他質量報告的結果記錄在了圖7中。

4.1 速度和內存消耗

我們把我們的方法和迭代優化的方法比較速度,通過衡量到達指定loss時各方法需要多少時間。圖6展示了迭代優化的方法需要大概10秒鐘去產生一個樣品x,而我們的方法僅需要20ms,達成了500倍提速,這能很好的支持一些即時應用比如視頻處理。產生如此顯著的差別有兩個原因:1.生成器網絡比VGG19小太多,所以每次迭代的時候要快的多,我們的方法需要一個單獨的網絡來評估,通過避免反向傳播,我們的方法也減少了很多內存需求,我們的方法生成256x256的圖片消耗256MB, Gatys消耗1100MB。

五. 討論

我們提出了一個新的深度學習方法的紋理合成和圖像化的思想,顯而易見的,這個方法可以用來產生一些復雜紋理及圖片,用前饋網絡的方式。能和使用反向傳播的Gatys的方法擁有相同搞得質量。這個思路的成功在于突出了前饋網絡在復雜數據生成、復雜問題解決上的合適性。這一成功的關鍵是使用復雜的損失函數,設計不同的前饋架構,作為“專家”評估的前饋生成器的性能。因為我們的方法獲得了有很好效果的紋理合成,今后我們計劃研究更好的損失函數來讓紋理質量更好,實現了更令人印象深刻的結果。

Reference

補充材料

生成器結構
左側第一列是style,上方第一行是content
256x256大小訓練的,但可以用來生成任意尺寸的圖片

(注:感謝您的閱讀,希望本文對您有所幫助。如果覺得不錯歡迎分享轉載,但請先點擊 這里 獲取授權。本文由 版權印 提供保護,禁止任何形式的未授權違規轉載,謝謝!)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容