風格遷移網路

2021-09-06 14:43:23 字數 3042 閱讀 5345

快速風格遷移的網路結構包含兩個部分。乙個是生成網路(

transformation network

),乙個是損失網路(

loss network

)。生成網路是將輸入影象進行風格遷移後輸出,損失網路用以計算生成影象的內容損失和風格損失。

對於生成網路,本質上是乙個卷積神經網路,但不採用池化層,取而代之的是用步幅卷積或微步幅卷積做網路內的上取樣或下取樣。神經網路有五個殘差塊組成,除了最末的輸出層以外,所有的非殘差卷積層都跟著乙個空間性的

instance normalization

和relu

的非線性層(

instance normalization

正則化是用來防止過擬合,

relu

防止梯度消失)。最末層使用乙個縮放的

tanh

來確保輸出影象的畫素在

[0,255]

之間。除了第一層和最後一層採用

9x9的卷積核

(kernel)

,其他所有卷積層都用

3x3的卷積核。

損失網路φ定義內容損失

(content loss)

和乙個風格損失

(style loss)

,分別衡量內容和風格上的差距。對於每一張輸入的

x我們有乙個內容目標

yc乙個風格目標

ys,對於風格轉換,內容目標

yc是輸入影象

x,輸出影象

y,應該把風格

ys結合到內容

x=yc

上。系統為每乙個目標風格訓練乙個網路,為確保所用到的損失函式能更好的衡量感知及語義上的差距,需要使用乙個預先訓練好用於影象分類的

cnn,這個

cnn已經學會感知和語義資訊編碼,這正是影象風格轉換系統的損失函式中需要做的。所以使用了乙個預訓練好用於影象分類的網路φ,來定義系統的損失函式。之後使用同樣是深度卷積網路的損失函式來訓練我們的深度卷積轉換網路。損失網路雖然也是卷積神經網路

(cnn)

,但是引數不做更新,只用來做內容損失和風格損失的計算,訓練更新的是前面的生成網路的權值引數。所以從整個網路結構上來看輸入影象通過生成網路得到轉換的影象,然後計算對應的損失,整個網路通過最小化內容和風格損失不斷地更新前面的生成網路權值。

在求損失的過程,從預訓練好的損失網路中提取高階特徵,使用感知損失函式代替逐畫素損失函式。在訓練的過程中,感知損失函式比逐畫素損失函式更適合用來衡量影象之間的相似程度。

(1)內容損失

內容的損失計算用

vgg計算得到的高階特徵來表示,因為

vgg模型本來是用於影象分類的,所以乙個訓練好的

vgg模型可以有效的提取影象的高階特徵(內容)。計算的公式如下:

如果較低的層的特徵損失最小,往往能夠生成在視覺上和y不太能區分的影象。用乙個特徵損失來訓練我們的影象轉換網路能讓輸出非常接近目標影象y,但也並不是讓它們完全的匹配。

(2)風格損失

內容損失懲罰了輸出的影象(當它偏離了目標

y時),所以同樣的,我們也希望對輸出的影象去懲罰風格上的偏離:顏色,紋理,共同的模式等方面。為了達成這樣的效果,一些研究者定義出了

gram

矩陣。在卷積神經網路中,每個特徵圖的大小一般是

mxnxc

這種大小,

mxn表示的是乙個矩陣的大小,

c表示厚度,通俗說就是有c個

mxn

這樣的矩陣疊在一起。 首先

gram

矩陣的大小是由特徵圖的厚度決定的,等於

cxc。首先把特徵圖中第

i層和第

j層取出來,得到了兩個

mxn的矩陣,然後將這兩個矩陣對應元素相乘然後求和得到

gram(i,j)

。這樣gram

中每個元素都可以表示兩層特徵圖的一種組合,就可以定義為它的風格。然後風格的差異就是兩幅圖的

gram

矩陣的差異,與內容的差異的計算方法一樣,通過這兩個矩陣的差就可以量化風格的差異。

訓練階段

y,損失網路提取影象的特徵圖,將生成

y分別與目標風格

ys和目標輸入(內容)

yc做損失計算,根據損失值來調整生成網路的權值,通過最小化損失值來達到目標效果。

執行階段

我廈的頌恩樓,結合各種風格,效果如下:

其他建築與風格結合效果如下所示:

圖2-1 單風格遷移網路

上面的效果發現,原圖的顏色被風格圖改變,我們可以嘗試不改變原來影象的顏色,只遷移風格圖的紋理,得到效果如下所示:

圖2-2 遷移紋理不遷移顏色

通過python的flask,製作出gui介面如下:

通過控制項來改變各種風格的結合,以及每個風格的比例:

圖2-4 多風格遷移介面設計(左邊風格選擇,右邊為輸出)

快速風格遷移網路

快速風格遷移的網路結構包含兩個部分。乙個是 生成網路 image transform net 乙個是 損失網路 loss network 生成網路輸入層接收乙個輸入,最終輸出層輸出也是一張 即風格轉換後的結果 模型總體分為兩個階段,訓練階段和執行階段。模型如圖所示。其中左側是生成網路,右側為損失網路...

Gram 矩陣與神經網路風格遷移

協方差矩陣 gram矩陣和協方差矩陣 gram矩陣意義 計算例項 gram矩陣是計算每個通道i的feature map與每個通道j的feature map的內積。gram matrix的每個值可以說是代表i通道的feature map與j通道的feature map的互相關程度 神經網路風格遷移中的...

風格遷移學習 GramMatrix

向量的點乘,對兩個向量執行內積運算,就是對這兩個向量對應位一一相乘之後求和的操作,內積的結果是乙個標量。內積判斷向量a和向量b之間的夾角和方向關係 a b 0 方向基本相同,夾角在0 到90 之間 a b 0 正交,相互垂直 a b 0 方向基本相反,夾角在90 到180 之間 gram矩陣是兩兩向...