【翻译】Fast Patch-based Style Transfer of Arbitrary Style
基于補丁的任意風格的快速遷移
文章目錄
- Abstract
- 1. Introduction
- 2. Related Work
- 3. 風格遷移的新目標
- 3.1. 風格互換(Style Swap)
- 3.2. 可并行化的實現
- 3.3. 優化公式
- 4. 逆向網絡(Inverse Network)
- 4.1. 訓練逆向網絡
- 4.2. 前饋風格轉移過程
- 5. 實驗
- 5.1. Style Swap Results
- 5.2. CNN反轉(CNN Inversion)
- 5.3. 計算時間(Computation Time)
- 6. 討論
Abstract
藝術風格轉移是一個圖像合成問題,即用另一個圖像的風格來再現圖像的內容。最近的工作表明,通過使用預先訓練的卷積神經網絡的隱藏激活,可以實現視覺上吸引人的風格轉移。然而,現有的方法要么應用
(i)一個對任何風格的圖像都有效但非常昂貴的優化程序,要么
(ii)一個有效的前饋網絡,只允許有限數量的訓練風格。
在這項工作中,我們提出了一個更簡單的基于局部匹配的操作目標,將內容結構和風格紋理結合在預訓練網絡的單一層中。我們表明,我們的目標具有良好的特性,如更簡單的優化環境,直觀的參數調整,以及在視頻中逐幀表現的一致性。此外,我們使用80,000幅自然圖像和80,000幅繪畫來訓練一個近似于優化結果的逆向網絡。這就產生了一個高效的藝術風格轉移程序,但也允許任意的內容和風格圖像。
1. Introduction
著名藝術家通常以特定的藝術風格而聞名,這需要多年的發展。即使一旦被發現,一件藝術作品也可能需要幾天甚至幾個月的時間來創作。這促使我們去探索創造藝術圖像的有效計算策略。雖然有大量關于紋理合成方法的經典文獻,從一張空白的畫布上創造出藝術品[8, 20, 22, 35],但最近的一些方法研究了將一個圖像的理想風格轉移到另一個圖像的結構內容上的問題。這種方法被稱為藝術風格轉換法。
藝術風格的模糊概念很難被量化。早期的工作是用相似度或基于像素值的局部統計來定義風格[7, 8, 13, 14, 20, 24]。然而,最近取得令人印象深刻的視覺質量的方法來自于使用卷積神經網絡(CNN)進行特征提取[9, 10, 11, 21]。這些方法的成功甚至創造了一個可以按需對用戶提供的圖像進行風格化的移動應用市場[15, 29, 32]。
盡管有這種新的興趣,但實際的風格轉移過程是基于解決一個復雜的優化程序,這在今天的硬件上可能需要幾分鐘。一個典型的加速解決方案是訓練另一個神經網絡,在一個簡單的前饋通道中接近優化的最佳狀態[6, 17, 33, 34]。雖然速度更快,但使用這種方法的現有作品犧牲了能夠對任何給定的風格圖像進行風格轉換的通用性,因為前饋網絡不能超越其訓練的圖像集的范圍。由于這一限制,前述應用要么耗時,要么在提供的風格數量上受到限制,這取決于風格轉換的方法。
在這項工作中,我們提出了一種解決這些限制的方法:一種新的藝術風格轉移方法,它是有效的,但不局限于有限的風格集合。為了實現這一點,我們為風格轉換定義了一個新的優化目標,該目標顯然只取決于CNN的一個層(與現有的使用多層的方法相反)。新的目標導致了視覺上吸引人的結果,而這個簡單的限制允許我們使用一個 "反轉網絡 "來確定地反轉來自風格化層的激活,以產生風格化的圖像。
第2節回顧了相關的工作,而第3-4節描述了我們新的優化目標,即在一個激活層中結合風格和內容統計。然后,我們提出了一種訓練神經網絡的方法,它可以在激活層中產生一個圖像。第5節介紹了新方法的實驗,表明它具有現有公式中所沒有的理想特性。
2. Related Work
作為優化的風格轉移(Style Transfer as Optimization)。Gatys等人[11]將風格轉移作為一個優化問題,將紋理合成與內容重建結合起來。他們的表述涉及放置在預訓練的CNN的多個層上的加性損失函數,其中一些損失函數用于合成風格圖像的紋理,另一些損失函數用于重建內容圖像。梯度是通過反向傳播計算的,基于梯度的運算被用來解決風格化圖像的問題。另一種方法是在內容和風格圖像之間使用基于補丁的相似性匹配[9, 10, 21]。特別是,Li和Wand[21]構建了基于補丁的損失函數,其中每個合成補丁都有一個必須匹配的最近鄰目標補丁。這種補丁匹配損失函數然后與Gatys等人的公式相加。雖然這些方法允許任意風格的圖像,但這些方法所使用的優化框架使得生成風格化圖像的速度很慢。這對于我們要對大量的幀進行風格化的視頻來說尤其重要。
前饋風格網絡(Feed-forward Style Networks) 前面提到,可以訓練一個神經網絡,該網絡近似于Gatys等人對一種或多種固定風格的損失函數的最佳值[6, 17, 33, 34]。這產生了一個更快的方法,但這些方法需要為每個新的風格重新訓練。
視頻的風格轉移(Style Transfer for Video)。Ruder等人[30]引入了一個時間損失函數,當與Gatys等人的損失函數疊加使用時,可以對視頻進行具有時間一致性的風格轉移。他們的損失函數重新在于光流算法,用于將風格粘在附近的幀上。與逐幀應用的風格轉移相比,這導致了一個數量級的減慢。
反轉深度表示(Inverting Deep Representations) 有幾項工作為實現可視化的目標,訓練了預訓練卷積神經網絡的逆向網絡[3, 26]。其他的工作是將逆向網絡作為自動編碼器的一部分來訓練[19, 27, 36]。據我們所知,所有現有的逆向網絡都是用一個圖像數據集和一個置于RGB空間的損失函數進行訓練。
與現有的風格轉移方法相比,我們提出了一種直接構建預訓練的CNN中單層目標行為的方法。與Li和Wand[21]一樣,我們使用了一個標準來尋找激活空間中的最佳匹配斑塊。然而,我們的方法能夠直接構建整個激活目標。這種確定性的程序使我們能夠輕松地適應視頻,而不需要依靠光流來解決一致性問題。除了優化,我們還提出了一個前饋式風格轉移程序,即倒置預先訓練的CNN。與現有的前饋式風格轉移方法不同,我們的方法不局限于專門訓練的風格,可以很容易地適應任意的內容和風格印象。與現有的CNN反轉方法不同,我們的訓練方法不使用像素級損失,而是使用激活的損失。通過使用一個特殊的訓練設置(見第4.1節),這個反轉網絡甚至能夠反轉超出CNN激活通常范圍的激活。
3. 風格遷移的新目標
我們的風格轉換方法的主要組成部分是一個基于補丁的操作,用于在單層中構建目標激活,給定風格和內容圖像。我們把這個過程重新稱為圖像的 “風格轉換”,因為內容圖像被風格圖像逐片替換。我們首先在高層次上介紹這一操作,然后是關于我們實現的更多細節。
3.1. 風格互換(Style Swap)
讓C和S分別表示內容和style圖像的RGB表示,讓Φ(-)是預先訓練好的CNN的完全卷積部分所代表的函數,它將圖像從RGB映射到一些中間激活空間。在計算了激活,Φ(C )和Φ(S)之后,風格交換程序如下:
- 為內容和風格激活提取一組補丁,用{φi(C )}i∈nc和{φj(S)}j∈ns表示,其中nc和ns是提取補丁的數量。提取的斑塊應該有足夠的重疊,并包含激活的所有通道。
- 對于每個內容激活補丁,根據歸一化的交叉相關度,確定一個最匹配的風格補丁,
- 將每個內容激活補丁φi(C )與其最相近的樣式補丁φssi(C,S)進行交換。
- 重建完整的內容激活,我們用Φss(C,S)表示,通過對可能因步驟3而有不同數值的重疊陣列進行平均化。
這種操作的結果是對應于具有內容圖像結構的單一圖像的隱藏激活,但其紋理取自風格圖像。
3.2. 可并行化的實現
為了給出一個有效的實現方法,我們表明全部風格互換操作可以作為一個具有三種操作的網絡來實現:
(i)一個二維卷積層,
(ii)一個通道方式 argmax,
(iii)一個二維轉置的卷積層。
這樣,風格互換的實現就像使用現有的二維卷積和轉置卷積的有效實現一樣簡單。
為了簡明扼要地描述執行情況,我們對內容激活斑塊進行重新索引,以明確表示空間結構。特別是,我們讓d為Φ(C )的特征通道數,讓φa,b(C )表示Φ(C )a:a+s, b:b+s, 1:d的補丁,其中s是補丁大小。
請注意,內容激活補丁的歸一化項φi(C )相對于argmax操作而言是常數,因此(1)可以改寫為
由于沒有對內容激活斑塊進行歸一化處理,因此簡化了計算,并允許我們使用二維卷積層。以下三個步驟描述了我們的實現,并在圖2中得到了說明:
圖2:風格互換操作的圖示。二維卷積提取大小為3×3、步長為1的斑塊,并對歸一化的交叉關系進行分析。在進行通道的argmax操作前后,有nc=9個空間位置和ns=4個特征通道。二維轉置卷積通過將每個最佳匹配的樣式補丁放在響應的空間位置來重建完整的行為。
- 張量K可以通過使用歸一化的樣式激活補丁{φj(S)/||φj(S)||}作為卷積濾波器和Φ(C )作為輸入,通過單個二維卷積計算出來。計算出的K有nc個空間位置和ns個特征通道。在每個空間位置,Ka,b是一個內容激活斑塊和所有樣式激活斑塊之間的交叉相關的向量。
- 為了準備二維轉置卷積,我們將每個向量Ka,b重新置于一個對應于最佳匹配風格激活斑塊的單熱向量。
- 構建Φss(C,S)的最后一個操作是二維轉置卷積,以K為輸入,以非正常化的風格激活斑塊{φj(S)}為過濾器。在每個空間位置,只有最匹配的風格激活補丁在輸出中,因為其他補丁被乘以零。
請注意,轉置的卷積會將重疊斑塊的值加起來。為了平均這些值,我們對輸出的每個間隔位置進行元素除法,即重疊斑塊的數量。因此,我們不需要規定(3)中的argmax有一個唯一的解決方案,因為多個 argmax 解決方案可以簡單地解釋為添加更多的重疊補丁。
3.3. 優化公式
風格化圖像的像素表示可以通過在激活空間上放置一個損失函數與目標激活Φss(C,S)來計算。與先前關于風格轉移的工作[11, 21]類似,我們使用平方誤差損失,并將我們的優化目標定義為:
其中,我們說合成圖像的維度是h乘w乘d,||-||F是Frobenius規范,`TV(-)是圖像生成方法中廣泛使用的總變化正則化項[1, 17, 26]。由于Φ(-)包含多個對圖像進行降采樣的maxpooling操作,我們將這個正則化作為一個自然的圖像先驗,為重新升采樣的圖像獲得空間上更平滑的結果。總變異正則化如下:
由于函數Φ(-)是預訓練的CNN的一部分,并且至少是一次可微分的,(4)可以使用標準的基于子梯度的優化方法來計算。
4. 逆向網絡(Inverse Network)
不幸的是,在視頻風格化等應用中,解決優化問題以計算風格化圖像的成本可能太高。我們可以通過使用其他神經網絡近似優化來提高運算速度。一旦經過訓練,這個網絡就可以更快地生成風格化圖像,我們將特別訓練這個網絡的通用性,使其能夠使用新的內容和新的風格圖像。
我們的逆向網絡的主要目的是為任何目標激活接近(4)中損失函數的最優。因此,我們將最優的反函數定義為:
其中f代表一個確定性的函數,H是一個代表目標激活的運行變量。總變量正則化項被添加為類似于(4)的自然圖像先驗。
4.1. 訓練逆向網絡
由于預先訓練的卷積神經網絡的特性,出現了幾個問題。
非注入式(Non-injective)。定義Φ(-)的CNN包含convolutional, maxpooling, 和ReLU層。這些函數是多對一的,因此沒有明確的反函數。與現有的使用逆向網絡的工作相似[4, 25, 36],我們改用參數化的神經網絡來訓練逆向關系的近似。
其中θ表示神經網絡f的參數,Hi是來自大小為n的數據集的激活特征。這個目標函數導致了神經網絡的無監督訓練,因為(4)的最佳值不需要知道。我們將逆向網絡結構的描述放在附錄中。
非射影的(Non-surjective)。由于插值的原因,風格互換操作產生的目標激活可能在Φ(-)的范圍之外。這意味著,如果反演網絡只用真實圖像進行訓練,那么反演網絡可能只能反演Φ(-)范圍內的激活。由于我們希望反轉網絡能夠反轉風格互換的激活,所以我們增加了訓練集以包括這些激活。更確切地說,給定一組訓練圖像(和它們相應的激活),我們用基于圖像對的風格互換的激活來增強這個訓練集。
4.2. 前饋風格轉移過程
一旦經過訓練,逆向網絡就可以用來取代優化程序。因此,我們提出的前饋程序包括以下步驟:
這個過程如圖4所示。如第3.2節所述,風格互換可以作為一個(不可微分的)卷積神經網絡來實現。因此,整個前饋程序可以被看作是一個具有單獨訓練部分的神經網絡。與現有的前饋方法[6, 17, 33, 34]相比,我們的前饋程序最大的優勢是能夠使用新的風格圖像,只需要一個訓練好的逆向網絡。
圖4:我們提出了第一個可用于任意風格圖像的風格轉換前饋方法。我們用一個建設性的程序(風格互換)來模擬風格轉換,并訓練一個反轉網絡來生成圖像。
5. 實驗
在本節中,我們分析了所提出的風格轉移和反轉方法的特性。我們使用Torch7框架[2]來實現我們的方法2,并使用先前工作的現有開源實現[16, 21, 30]進行比較。
5.1. Style Swap Results
目標層。圖3顯示了VGG-19網絡中不同層的風格互換的效果。在這個圖中,RGB圖像是通過第3節中描述的優化計算出來的。我們看到,雖然我們可以直接在RGB空間中進行風格交換,但其結果不過是重新著色而已。當我們選擇一個在網絡中更深的目標層時,風格圖像的紋理會更加明顯。我們發現,在 "relu3 1 "層上進行風格互換可以提供最令人愉悅的視覺效果,同時在結構上與內容保持一致。在下面的實驗和反演網絡訓練中,我們把我們的方法限制在 "relu3 1 "層。定性結果顯示在圖10中。
圖3:在VGG-19[31]的不同層中風格互換的效果,也是在RGB空間中。由于VGG-19的命名慣例,"reluX 1 "指的是(X -1)-th maxpooling層之后的第一個ReLU層。風格互換操作使用大小為3×3、跨度為1的補丁,然后用優化方法構建RGB圖像。
一致性。我們的風格互換方法將內容和風格信息串聯成一個單一的目標特征向量,與其他方法相比,導致了一個更容易的優化表述。因此,我們發現,與現有的公式相比,我們的優化算法能夠以更少的迭代次數達到最優,同時持續地達到相同的最優。圖5和圖6顯示了在隨機初始化的情況下,我們的公式與現有作品之間的優化差異。這里我們看到,隨機初始化對風格化的結果幾乎沒有影響,表明我們的局部優化比其他風格的轉移目標少得多。
圖5:與現有的優化公式相比,我們的方法取得了一致的結果。我們看到Gatys等人的公式[11]有多個局部最優,而我們能夠在隨機初始化的情況下持續實現相同風格的轉移效果。圖6顯示了這個數量。
圖6:在優化過程中,40個隨機初始化的RGB像素的標準偏差顯示。線條顯示的是平均值,陰影部分是在平均值的一個標準差之內。垂直的虛線表示優化的結束。圖5顯示了優化結果的例子。
直接適應于視頻。在對視頻逐幀進行風格化時,這種一致性屬性是很有利的。相同的幀將產生相同的風格化結果,而連續的幀將以類似的方式被風格化。因此,我們的方法能夠適應視頻,而不需要像光流[30]那樣的明確膠合程序。我們將風格化的視頻放在代碼庫中。
簡單直觀的調校。在提議的方法中,調整風格化程度(與保留內容相比)的一個自然方法是修改補丁的大小。圖7定性地顯示了補丁大小和風格交換結果之間的關系。隨著補丁大小的增加,更多的內容圖像的結構被丟失并被風格圖像的紋理所取代。
圖7:我們可以通過調整補丁的大小在內容結構和風格紋理之間進行權衡。風格圖像,星空(上)和小世界I(下),顯示在圖10中。
5.2. CNN反轉(CNN Inversion)
在這里,我們描述了我們對一個反向網絡的訓練,該網絡可以計算出預先訓練好的VGG-19網絡的近似反向函數[31]。更具體地說,我們從輸入層到 "relu3 1 "層對截斷的網絡進行訓練。該網絡結構被放在附錄中。
數據集。我們使用微軟COCO(MSCOCO)數據集[23]和來自wikiart.org并由Kaggle[5]托管的繪畫數據集進行訓練。每個數據集分別有大約80,000張自然圖像和繪畫。由于典型的內容圖像是自然圖像,而風格圖像是繪畫,我們將這兩個數據集結合起來,使網絡能夠學習重新創建這兩類圖像的結構和紋理。此外,自然圖像和繪畫的明確分類為第4.1節中描述的擴展提供了相應的內容和風格候選。
訓練。我們將每張圖片的大小調整為256×256像素(對應于64×64大小的激活),并對每個數據集進行大約2個周期的訓練。請注意,即使我們限制了訓練圖像的大小(和響應的激活),逆向網絡是完全卷積的,在訓練后可以應用于任意大小的激活。
我們通過從自然圖像中提取2個激活樣本和從繪畫中提取2個樣本來構建每個minibatch。我們用4個風格互換的激活來增強minibatch,使用minibatch中的所有自然圖像和繪畫對。我們在(7)的基礎上使用反推法計算子梯度,總方差正則化系數λ=10-6(該方法對這個選擇并不特別敏感),我們使用亞當優化器[18]更新網絡的參數,固定學習率為10-3。
結果。圖8顯示了使用MSCOCO的2000張全尺寸驗證圖像和6張全尺寸風格圖像的定量近似結果。盡管只在256×256的圖像上進行了訓練,但我們對任意全尺寸的圖像都能取得合理的結果。我們還與一個具有相同結構但沒有經過增強訓練的逆向網絡進行比較。正如預期的那樣,在訓練期間從未看到樣式交換激活的網絡比具有增強訓練集的網絡表現更差。
圖8:我們比較了在2000張可變大小的驗證圖像和6張可變大小的風格圖像上,使用3×3的補丁尺寸,由操作計時器和我們的逆向網絡實現的平均損失(7)。在訓練過程中,出現在繪畫數據集中的風格圖像被移除。
5.3. 計算時間(Computation Time)
現有風格轉換方法的計算時間列于表1。與基于優化的方法相比,我們的優化公式更容易解決,每次迭代所需的時間更少,這可能是由于只使用了預訓練的VGG-19網絡的一個層。其他方法使用多層,也比我們使用的層數更深。
表1:可以處理任意風格圖像的風格轉移方法的平均計算時間。時間是在GeForce GTX 980 Ti上拍攝的分辨率為300×500的圖像。請注意,基于優化的方法的迭代次數只能被視為一個非常粗略的估計。
我們在圖9a和9c中顯示了我們前饋程序的不同部分所花費的計算時間的百分比。對于任何非微不足道的圖像尺寸,風格互換程序比其他神經網絡需要更多時間。這是由于風格互換程序包含兩個卷積層,過濾器的數量是風格補丁的數量。補丁的數量與圖像的像素數呈線性增長,其常數取決于匯集層的數量和提取補丁的步幅。因此,樣式圖像大小對計算時間的影響最大,這并不奇怪(如圖9a和9b所示)。
有趣的是,即使在內容圖像尺寸增加時,計算時間似乎也停止了增加(圖9d),這可能是由于實現了并行性。這表明我們的程序可以處理大的圖像尺寸,只要風格補丁的數量是可控的。也許應該對風格補丁進行聚類,以減少補丁的數量,或者使用其他的實現方法,如快速近似近鄰搜索方法[12, 28]。
圖9:計算時間隨著(a,b)風格圖像大小的增加和(c,d)內容圖像大小的增加而增加。不可變的圖像大小保持在500×500。如(a,c)所示,大部分的計算都花在樣式交換程序上。
6. 討論
我們提出了一種新的基于CNN的藝術風格轉換方法,其目的是既快速又能適應任意的風格。我們的方法通過將內容圖像的紋理與風格圖像的紋理互換,將內容和風格的形成并入CNN的單一層。我們方法的簡單性使我們能夠訓練一個逆向網絡,該網絡不僅能夠在更短的時間內獲得近似的結果,而且還能在其訓練的風格集之外進行泛化。盡管有單層的限制,我們的方法仍然可以產生視覺上令人愉悅的圖像。此外,該方法有一個直觀的調整參數(補丁大小),其一致性允許簡單地逐幀應用于視頻。
雖然我們的前饋方法在速度上無法與Johnson等人[17]的前饋方法競爭,但應該指出,我們的方法最大的優勢是能夠使用新的風格圖像進行風格化,而Johnson等人的方法需要為每個風格圖像訓練一個新的神經網絡。我們已經表明,我們的逆向方法可以在其訓練集之外進行泛化(圖8),而另一個有用的應用是能夠改變風格圖像的大小而不需要重新訓練逆向網絡。
所提出的風格互換程序的一些缺點包括缺乏全局風格測量和缺乏相鄰斑塊的相似度測量,無論是在空間域還是時間域。這些簡化為提高效率而犧牲了質量,但在逐幀應用于視頻時,偶爾會導致局部閃爍的效果。在保持我們算法的高效和通用性的同時,尋找提高質量的方法可能是可取的。
總結
以上是生活随笔為你收集整理的【翻译】Fast Patch-based Style Transfer of Arbitrary Style的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java里的时间转换
- 下一篇: 162. Find Peak Eleme