4.4特殊應用:人臉識別和神經網絡風格轉換
覺得有用的話,歡迎一起討論相互學習~
4.6什么是神經網絡風格轉換neural style transfer
- 將原圖片作為內容圖片Content,風格圖片Style,生成的圖片用Generated image 表示。
4.7深度卷積神經網絡在學什么What are deep ConvNets learning
Zeiler, Matthew D., and Rob Fergus. "Visualizing and understanding convolutional networks." European conference on computer vision. Springer, Cham, 2014.
- 假設你在學習的神經網絡結構如圖:
- 將訓練集中的所有圖片都經過神經網絡,然后弄明白哪一張圖片最大限度的激活了神經網絡中的特定單元。
- 原文如下:
- Pick a unit in layer 1.Find the nine image patches that maximize the unit's activation.
- Repeat for other units.
- 個人理解:
- 對於第一層卷積層,將數據集中的所有圖片都通過第一層卷積層。輸出其通過第一層卷積層后的數值,挑選出最大的九個數值對應的九張圖片塊(個人理解為是一張圖片經過感受野所得到的子圖片)。將這個算法運用到第一個卷積層上的所有神經元上,輸出一個縮略特征圖。
- 對於第一層卷積層,將數據集中的所有圖片都通過第一層卷積層。輸出其通過第一層卷積層后的數值,挑選出最大的九個數值對應的九張圖片塊(個人理解為是一張圖片經過感受野所得到的子圖片)。將這個算法運用到第一個卷積層上的所有神經元上,輸出一個縮略特征圖。
- 原文如下:
- 其中更深層次的神經元可以看見數據集原始圖像中更大的區域,可以假設,每一個神經元都會影響神經網絡更深層的輸出
Layer1
Layer2
Layer3
Layer4
Layer5
4.8神經風格遷移系統Cost function
Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.
- 對於神經網絡風格遷移系統,判斷所生成的圖片G的好壞很重要,需要有一個函數J作為損失函數(cost function)用來評價風格遷移的好壞。
- 首先將J(G)風格遷移損失函數切分為兩個部分一個是內容圖片部分(Content),另一個是生成圖片的部分(Generated image G).然后會把結果加上一個風格代價函數,一個關於(Style)S和(Generated image)G圖片的函數--用來描述風格圖片S和生成圖片G的相似度。
- 然后使用\(\alpha\)和\(\beta\)兩個參數來權衡內容代價和風格代價之間的權重。
-
\[J(G)=\alpha J_{Content}(C,G)+\beta J_{style}(S,G) \]
算法流程
- 初始化生成圖像G:
- 尺寸為\(100*100*3\),或者是\(500*500*3\)或者是任何你想要的尺寸。
- 使用梯度下降最小化損失函數J(G)
- 即 $$G=G-\frac{\alpha}{2G}J(G)$$
示例
- 如果原始圖像為如下左圖,風格圖片為如下右圖:
- 圖片迭代改變過程如下圖所示:
4.9神經網絡風格遷移內容代價函數 Content cost function
圖像內容代價函數
Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.
\[J(G)=\alpha J_{Content}(C,G)+\beta J_{style}(S,G) \]
- 使用第l個隱藏層上的值來計算內容代價函數
- 如果l值很小,那么生成的圖像在像素上很像內容圖像
- 如果使用的l很大,那么生成的圖像會偏風格化,而模糊原始圖像的內容
- 所以一般l不會選的太深也不會太淺,會選擇在網絡中層數的中間位置
- 使用\(a^{[l](C)}和a^{[l](G)}\)表示層數l的激活值。
- 如果這兩個值相似,則表示這兩張圖片上的內容相似
- \(J_{content}(C,G)=(a^{[l](C)}-a^{[l](G)})^{2}\)
4.9神經網絡風格遷移風格代價函數 Content cost function
Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.
- 假設使用神經網絡模型中的深度l作為風格的深度測量
- 則把第l層不同通道之間激活值的相關系數作為風格--Define style as correlation between activations across channels.
- 對於一個具有5個通道的激活值特征圖而言,不同通道對應位置可以組成激活函數值對。通過不同通道上下對應位置的激活函數值對可以計算不同通道之間的相關系數。
- 不同的通道對應不同的特征子圖,對應不同卷積核上神經元識別的特征結果
- 兩個通道的激活值具有很大的相關性,意思是:而。當兩個神經元的激活值具有很大的
圖像風格詮釋
- 紅色框中的神經元識別的是具有豎直條紋的特征
- 黃色框中的神經元識別的是具有橙色紋理的特征
- 假如紅色和黃色框中的激活值具有很大的相關性,表明具有豎直條紋的子圖很可能是橙色紋理的
- 如果相關性不大,表明豎直條紋的子圖很大概率不是橙色的
- 相關性即是表明兩個特征同時出現的概率
圖像風格矩陣
- 為了研究風格圖像或者生成圖像的風格,使用第l層神經元的激活值來測量圖片的風格。
- i,j,k分別表示該位置的高度和寬度以及對應的通道數,則第l層,(i,j,k)位置處的激活函數值可被表示為:\(a^{[l]}_{(i,j,k)}\)
- 用\(G^{[L](S)}_{K,K'}\)表示S代表風格圖片風格計算,L表示在第L層上計算圖像風格,K和K'是用來計算相關性的L層的兩個通道。風格圖片的風格計算公式可如下表示:
\[G^{[L](S)}_{K,K'}=\sum^{n^{[l]}_{H}}_{i=1}\sum^{n^{[l]}_{W}}_{j=1}a^{[l](S)}_{i,j,k}a^{[l](S)}_{i,j,k'} \]
生成圖像的風格計算公式可如下表示:
\[G^{[L](G)}_{K,K'}=\sum^{n^{[l]}_{H}}_{i=1}\sum^{n^{[l]}_{W}}_{j=1}a^{[l](G)}_{i,j,k}a^{[l](G)}_{i,j,k'} \]
- 在線性代數中,圖像風格矩陣(Style matrix)也被稱為“Gram matrix”,\(G^{[l]}\)是最終計算出的圖像風格,其大小為\(n^{[l]}_{c} * n^{[l]}_{c}\)正方形的矩陣,其中\(n^{[l]}_{c}\)表示第l層特征圖的通道數。即\(G^{[l]}\)會由\(G^{[L](S)}_{K,K'}\)生成,其中參數k和k'會遍歷\(n^{[l]}_{c}\),即L層上特征圖中的所有通道。
圖像風格代價函數
- 當然如果對每一層都是用風格代價函數會讓結果變得更好,此時表達式可表示為:
\[J_{style}(S,G)=\sum_{l}\lambda^{[l]}J_{style}^{[l]}(S,G) \]
- 其中,S表示風格圖像,G表示生成圖像,l表示遍歷所有層,\(\lambda\)表示一些額外的超參數,這樣能夠在考慮風格切換的代價函數時同時考慮淺層的低級和更深層的高級特征。
風格遷移總體代價函數
- 如果在所有層上都計算風格遷移的內容和風格代價函數,則其可表示為:
\[J(G)=\alpha J_{content}(C,G)+\beta J_{style}(S,G) \]