風格遷移(1)-格拉姆矩陣


風格遷移又稱風格轉換,直觀的說就是給輸入的圖像假濾鏡,但是又不同於傳統濾鏡。風格遷移基於人工智能,但是每個風格都是由真正的藝術家作品訓練。只要給定原始圖片,並且選擇藝術家的風格圖片,就能把原始圖片轉換成相應的藝術家風格的圖片。

風格遷移的要求:

1:要求生成的圖片在內容,細節上盡量與輸入圖片相似。

2:要求生成圖片在分割上盡可能與風格圖片相似。

因此我們定義兩個損失函數 content loss 和 style loss 分別衡量着兩個指標。

圖像的內容和風格含義廣泛,並且沒有嚴格的數學定義,具有很大程度的主觀性,因此很難表示。

content loss 使用逐像素計算差值,又稱pixel-wise loss,追求生成的圖片和原始的圖片逐像素的差值盡可能的小。這種做法有很多不合理的地方,還有一種感知損失(perceptual loss).可以參考這個博客:https://blog.csdn.net/stdcoutzyx/article/details/54025243

在執行風格遷移時,我們並不要求生成圖片的像素和原始圖片中的每個像素都一樣,我們最求的是生成圖片和原圖片具有相同的特征,因此我們使用中間層作為我們的目標,希望原圖片和風格遷移后的目標圖片盡可能相似。即將深層模型中的某些層的輸出作為圖像的知覺特征。

我們使用Gram矩陣來表示圖像的風格特征。對於每一張圖片C X H X W

C表示卷積核的通道數

H X W 卷積核通過學習后輸出的H X W代表這張圖片的feature map

格拉姆矩陣可以看做feature之間的偏心協方差矩陣(即沒有減去均值的協方差矩陣),在feature map中,每個數字都來自於一個特定濾波器在特定位置的卷積,因此每個數字代表一個特征的強度,而Gram計算的實際上是兩兩特征之間的相關性,哪兩個特征是同時出現的,哪兩個是此消彼長的等等,同時,Gram的對角線元素,還體現了每個特征在圖像中出現的量,因此,Gram有助於把握整個圖像的大體風格。有了表示風格的Gram Matrix,要度量兩個圖像風格的差異,只需比較他們Gram Matrix的差異即可。總之, 格拉姆矩陣用於度量各個維度自己的特性以及各個維度之間的關系。內積之后得到的多尺度矩陣中,對角線元素提供了不同特征圖各自的信息,其余元素提供了不同特征圖之間的相關信息。這樣一個矩陣,既能體現出有哪些特征,又能體現出不同特征間的緊密程度[2]。

該論壇最后還說明

Activation maps就是在feature maps后加一個激活函數

參考【3】

其中上圖第一個公式中的 F(i,j)表示第 i 個 feature map的第k 個像素點

關於Gram矩陣還有以下三點值得注意:

1 Gram矩陣的計算采用了累加的形式,拋棄了空間信息。一張圖片的像素隨機打亂之后計算得到的Gram Matrix和原圖的Gram Matrix一樣。所以認為Gram Matrix所以認為Gram Matrix拋棄了元素之間的空間信息。

2 Gram Matrix的結果與feature maps F 的尺寸無關,只與通道個數有關,無論H,W的大小如何,最后Gram Matrix的形狀都是CXC

3 對於一個C X H X W的feature maps,可以通過調整形狀和矩陣乘法運算快速計算它的Gram Matrix。即先將F調整到 C X (HW)的二維矩陣,然后再計算F 和F的轉置。結果就為Gram Matrix

Gram Matrix的特點:

注重風格紋理,忽略空間信息

參考博客及書籍:

1 深度學習框架pytorch入門及實踐 陳雲

2 https://www.zhihu.com/question/36514939/answer/67810216

3 https://www.zhihu.com/question/49805962?from=profile_question_card


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM