天天看點

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

改進風格遷移

神經風格遷移一經提出,便引起了業界的巨大興趣,但随之人們也意識到了原始神經風格遷移的一些缺點。局限之一是風格遷移會擷取所有風格資訊,包括整個風格圖像的顔色和筆觸,并将其轉移到整個内容圖像。例如在

TensorFlow2實作神經風格遷移

中,樣式圖像中的藍色被轉移到樹木中,但是有時我們希望可以選擇隻轉移筆觸而不轉移顔色,而且隻轉移到特定區域,以進行更加精細的控制。

神經風格遷移的團隊開發了一種新算法來解決這些問題。下圖顯示了算法可以提供的控制以及結果示例:

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

神經風格遷移的團隊提出的控制措施如下:

1. 空間控制:控制内容和風格圖像中風格遷移的空間位置。這是通過在計算Gram矩陣之前将空間蒙版應用于風格特征來完成的。

2. 顔色控制:可用于保留内容圖像的顔色。為此,我們将RGB格式轉換為色彩空間,如HCL,以将亮度與其他色彩通道分開。然後,我們僅在亮度通道中執行風格遷移,然後将其與原始風格圖像中的顔色通道合并,以生成最終的風格化圖像。

3. 程度控制:管理畫筆筆觸的粒度。該過程涉及更多的過程,因為它需要多次運作風格遷移并選擇不同層次的風格特征,以便計算Gram矩陣。

改進風格遷移的兩個主要主題——提高速度、改善風格遷移,讓我們仔細研究經典算法的一些變體,以為我們将要實施的下一個項目——實時任意樣式轉換,奠定基礎。

通過前饋網絡進行更快速地風格遷移

神經風格遷移基于類似于神經網絡訓練的優化,是以即使使用GPU,速度也很慢,通常需要花幾分鐘的時間才能得到風格遷移結果。這限制了其在移動裝置上的應用,是以開發更快的風格遷移算法就有了實際的需求,前饋風格遷移應運而生。下圖顯示了采用這種架構的首批網絡之一:  

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

該體系結構實際上比上圖的架構圖看起來更簡單。此體系結構中有兩個網絡:

1. 可訓練的卷積網絡(通常稱為風格遷移網絡),用于将輸入圖像轉換為風格化圖像。可以将其實作為類似于 U-Net 或 VAE 的類似編碼器/解碼器的體系結構。

2. 固定的卷積網絡,通常是預訓練的 VGG,用于測量内容和風格損失。

類似于原始的神經風格遷移,首先使用 VGG 提取内容和風格目标,但是使用此架構将不再訓練輸入圖像,而是訓練卷積網絡将内容圖像轉換為風格化圖像。通過 VGG 提取風格化圖像的内容和風格特征,計算損失并将其反向傳播到可訓練的卷積網絡。我們可以像訓練其他 CNN 一樣訓練它。在推理階段中,我們隻需要執行一次前向計算就可以将輸入圖像轉換為風格化圖像!

雖然使用此種網絡,速度問題得到了解決,但是仍然存在問題——這樣的網絡隻能學習一種風格來進行遷移。需要為我們要執行的每種風格訓練一個網絡,這要比原始神經風格遷移的靈活性低得多。

控制遷移的風格特征

原始的神經風格遷移論文沒有解釋為什麼Gram矩陣可以用于有效提取風格特征。風格遷移的許多後續改進(例如前饋樣風格遷移)仍然延續使用了 Gram 矩陣作為風格特征方式。論文 Demystifying Neural Style Transfer 改變了這一點,其發現風格資訊本質上由 CNN 中的激活分布表示,比對激活 Gram 矩陣等效于最小化激活分布的最大平均差異 (maximum mean discrepancy, MMD)。是以,我們可以通過将圖像的激活分布與風格圖像的激活分布進行比對來執行風格遷移。

是以,Gram 矩陣不是實作風格遷移的唯一方法。我們也可以使用對抗損失,諸如 pix2pix 之類的 GAN 可以通過将生成圖像的像素分布與真實圖像進行比對來執行風格遷移。不同之處在于,GAN 試圖将像素分布的差異降到最低,而風格遷移會将其應用于網絡層激活的分布。

後來,研究人員發現我們可以僅使用激活的均值和方差來表示風格。換句話說,如果我們将兩個風格相似的圖像輸入到 VGG 中,則它們的網絡層激活将具有相似的均值和方差。是以,我們可以通過最小化生成的圖像和風格圖像之間的激活均值和方差的差異來訓練網絡以執行風格遷移。這催生了使用歸一化層控制風格的方法。

使用規範化層控制風格

控制激活統計資訊的一種簡單而有效的方法是通過在歸一化層中更改 γ 和 β 。換句話說,我們可以通過使用不同的仿射變換參數( γ 和 β )來改變風格,批規範化和執行個體規範化處理時使用相同的方程式:  

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

不同之處在于,批規範化( batch normalization, BN )計算了 (N, H, W) 次元上的均值 µ 和标準差 σ ,而執行個體規範化( instance normalization, IN )僅根據 (H, W) 進行了計算。

但是,每個規範化層隻有一個 γ 和 β 對,這限制了網絡隻能學習一種樣式。那麼,我們如何使網絡學習多種風格?可以使用多組 γ 和 β 系數,其中每組學習一個樣式。這正是條件執行個體規範化( conditional instance normalization, CIN )提出的初衷。

它建立在執行個體規範化的基礎上,但是具有多組 γ 和 β 對。每個不同的 γ 和 β 值對都用于訓練特定的風格;換句話說,它們以風格圖像為條件。條件執行個體規範化的方程式如下:

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

假設我們有 S 個不同的風格圖像,然後在每種風格的規範化層中都有 S 個 γ 和 S 個 β。除了内容圖像外,我們還将獨熱編碼的樣式标簽輸入風格遷移網絡。實際上, γ 和 β 被實作為形狀為 (S×C) 的矩陣。我們通過執行獨熱編碼标簽 (1×S) 與矩陣 (S×C) 的矩陣相乘以擷取每個風格 (1×C) 通道的 γS 和 βS,來檢索該風格的 γ 和 β。

接下來,我們就可以将風格編碼到 γ 和 β 的嵌入空間中,然後通過内插 γ 和 β 來執行風格插值:

改進神經風格遷移改進風格遷移通過前饋網絡進行更快速地風格遷移控制遷移的風格特征系列連結

系列連結

繼續閱讀