目錄
- 基礎知識-向量的內積
- Gram matrix介紹
- Gram matrix的應用-風格遷移
一、基礎知識-向量的內積
1.1 向量的內積定義:也叫向量的點乘,對兩個向量執行內積運算,就是對這兩個向量對應位一一相乘之后求和的操作,內積的結果是一個標量。
1.2 實例:
a和b的內積公式為:
1.3 作用:
內積判斷向量a和向量b之間的夾角和方向關系
- a·b>0 方向基本相同,夾角在0°到90°之間
- a·b=0 正交,相互垂直
- a·b<0 方向基本相反,夾角在90°到180°之間
Gram矩陣是兩兩向量的內積組成,所以Gram矩陣可以反映出該組向量中各個向量之間的某種關系。
二、Gram matrix介紹
2.1 定義
n維歐式空間中任意k個向量之間兩兩的內積所組成的矩陣,稱為這k個向量的格拉姆矩陣(Gram matrix),很明顯,這是一個對稱矩陣。
更加直觀的理解:
2.2 計算和特征表示
輸入圖像的feature map為[ ch, h, w]。我們經過flatten(即是將h*w進行平鋪成一維向量)和矩陣轉置操作,可以變形為[ ch, h*w]和[ h*w, ch]的矩陣。再對兩個作內積得到Gram Matrices。 (藍色條表示每個通道flatten后特征點,最后得到 [ch *ch ]的G矩陣)
2.3 進一步理解
格拉姆矩陣可以看做feature之間的偏心協方差矩陣(即沒有減去均值的協方差矩陣),在feature map中,每個數字都來自於一個特定濾波器在特定位置的卷積,因此每個數字代表一個特征的強度,而Gram計算的實際上是兩兩特征之間的相關性,哪兩個特征是同時出現的,哪兩個是此消彼長的等等。
格拉姆矩陣用於度量各個維度自己的特性以及各個維度之間的關系。內積之后得到的多尺度矩陣中,對角線元素提供了不同特征圖各自的信息,其余元素提供了不同特征圖之間的相關信息。這樣一個矩陣,既能體現出有哪些特征,又能體現出不同特征間的緊密程度。
關鍵點:gram矩陣是計算每個通道 i 的feature map與每個通道 j 的feature map的內積。gram matrix的每個值可以說是代表 I 通道的feature map與 j 通道的feature map的互相關程度。
三、Gram matrix的應用-風格遷移
深度學習中經典的風格遷移大體流程是:
1. 准備基准圖像和風格圖像
2. 使用深層網絡分別提取基准圖像(加白噪聲)和風格圖像的特征向量(或者說是特征圖feature map)
3. 分別計算兩個圖像的特征向量的Gram矩陣,以兩個圖像的Gram矩陣的差異最小化為優化目標,不斷調整基准圖像,使風格不斷接近目標風格圖像
關鍵的一個是在網絡中提取的特征圖,一般來說淺層網絡提取的是局部的細節紋理特征,深層網絡提取的是更抽象的輪廓、大小等信息。這些特征總的結合起來表現出來的感覺就是圖像的風格,由這些特征向量計算出來的的Gram矩陣,就可以把圖像特征之間隱藏的聯系提取出來,也就是各個特征之間的相關性高低。
如果兩個圖像的特征向量的Gram矩陣的差異較小,就可以認定這兩個圖像風格是相近的。有了表示風格的Gram Matrix,要度量兩個圖像風格的差異,只需比較他們Gram Matrix的差異即可。
具體可見另一篇文章《風格遷移論文理解--A Neural Algorithm of Artistic Style》展開的介紹。