快速風格遷移的網路結構包含兩個部分。乙個是「
生成網路
」(image transform net),乙個是「
損失網路
」(loss network)。
生成網路輸入層接收乙個輸入,最終輸出層輸出也是一張(即風格轉換後的結果)。模型總體分為兩個階段,訓練階段和執行階段。模型如圖所示。 其中左側是生成網路,右側為損失網路。
訓練階段:選定一張風格。訓練過程中,將資料集中的輸入網路,生成網路生成結果y,損失網路提取影象的特徵圖,將生成y分別與目標風格ys和目標輸入(內容)yc做損失計算,根據損失值來調整生成網路的權值,通過最小化損失值來達到目標效果。
執行階段:給定一張,將其輸入已經訓練好的生成網路,輸出這張風格轉換後的結果。
生成網路
對於生成網路,本質上是乙個卷積神經網路,這裡的生成網路是乙個深度殘差網路,不用任何的池化層,取而代之的是用步幅卷積或微步幅卷積做網路內的上取樣或者下取樣。
這裡的神經網路有五個殘差塊組成。除了最末的輸出層以外,所有的非殘差卷積層都跟著乙個空間性的instance-normalization,和relu的非線性層,instance-normalization正則化是用來防止過擬合的。
最末層使用乙個縮放的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模型可以有效的提取影象的高階特徵(內容)。計算的公式如下:
(2)風格損失
內容損失懲罰了輸出的影象(當它偏離了目標y時),所以同樣的,我們也希望對輸出的影象去懲罰風格上的偏離:顏色,紋理,共同的模式,等方面。為了達成這樣的效果,一些研究人員等人提出了一種風格重建的損失函式:讓φj(x)代表網路φ的第j層,輸入是x。特徵圖譜的形狀就是cjxhjxwj、定義矩陣gj(x)為cjxcj矩陣(特徵矩陣)其中的元素來自於:
風格遷移網路
快速風格遷移的網路結構包含兩個部分。乙個是生成網路 transformation network 乙個是損失網路 loss network 生成網路是將輸入影象進行風格遷移後輸出,損失網路用以計算生成影象的內容損失和風格損失。對於生成網路,本質上是乙個卷積神經網路,但不採用池化層,取而代之的是用步幅...
android中的深度學習 快速風格遷移
1.效果 2.專案相關 3.缺點1.什麼是深度學習 2.訓練和測試 3.總結 深度學習到底是怎麼學習的呢?我們可以看見我們的訓練資料是經過人的處理的,那麼深度學習的過程就是將人的處理過程固化到我們的神經網路中,最終讓神經網路來代替人工處理的過程。4.上面只是介紹深度學習的基本流程,如果要更深入的了解...
Gram 矩陣與神經網路風格遷移
協方差矩陣 gram矩陣和協方差矩陣 gram矩陣意義 計算例項 gram矩陣是計算每個通道i的feature map與每個通道j的feature map的內積。gram matrix的每個值可以說是代表i通道的feature map與j通道的feature map的互相關程度 神經網路風格遷移中的...